Fitur deteksi wajah yang didukung oleh Intelligent Media Management (IMM) mendeteksi wajah dalam gambar dan mengekstraksi atribut seperti usia, jenis kelamin, serta ekspresi wajah. Fitur ini mendukung deteksi beberapa wajah dalam satu gambar.
Ikhtisar
Deteksi wajah menggunakan AI gambar untuk mengidentifikasi wajah dalam sebuah gambar dan mengembalikan atribut untuk setiap wajah yang terdeteksi.

Informasi wajah mencakup ID wajah, usia, jenis kelamin, suasana hati, daya tarik, kualitas wajah, dan atribut wajah (posisi, orientasi kepala, kacamata, jenggot, serta masker).
Kasus penggunaan
-
Pengenalan wajah: Deteksi dan bandingkan wajah terhadap database untuk autentikasi dan kontrol akses.
-
Autentikasi wajah: Verifikasi identitas pengguna untuk skenario seperti membuka kunci ponsel dan verifikasi pembayaran.
-
Analisis ekspresi wajah: Analisis ekspresi wajah untuk analisis sentimen, interaksi manusia-komputer, dan karakter virtual.
Catatan-
Latar belakang yang ramai: Latar belakang kompleks dapat mengganggu deteksi fitur wajah.
-
Oklusi wajah: Wajah yang saling tumpang tindih dalam gambar dapat mengurangi akurasi deteksi.
-
Cara menggunakan
Prasyarat
-
Buat bucket di OSS dan unggah file yang ingin Anda proses ke bucket tersebut.
-
Buat dan ikat proyek IMM. Anda dapat mengikat proyek di Konsol OSS atau dengan memanggil Operasi API. Proyek IMM harus berada di wilayah yang sama dengan bucket.
Deteksi wajah
Contoh berikut menunjukkan cara mendeteksi wajah menggunakan SDK OSS. Untuk bahasa lain, sesuaikan parameter yang sesuai.
Java
Diperlukan OSS SDK for Java versi 3.17.4 atau lebih baru.
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyuncs.exceptions.ClientException;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class Demo1 {
public static void main(String[] args) throws ClientException, ClientException {
// Tentukan endpoint wilayah tempat bucket berada.
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
String region = "cn-hangzhou";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
// Tentukan nama bucket.
String bucketName = "examplebucket";
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar. Contoh: exampledir/example.jpg.
String key = "example.jpg";
// Buat instance OSSClient.
// Panggil metode shutdown untuk melepaskan sumber daya ketika OSSClient tidak lagi digunakan.
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
// Buat instruksi pemrosesan untuk menggunakan deteksi wajah.
GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, key);
getObjectRequest.setProcess("image/faces");
// Gunakan metode getObject dan teruskan instruksi pemrosesan melalui parameter process.
OSSObject ossObject = ossClient.getObject(getObjectRequest);
// Baca dan tampilkan hasil kueri.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = ossObject.getObjectContent().read(buffer)) != -1) {
baos.write(buffer, 0, bytesRead);
}
String imageFaces = baos.toString("UTF-8");
System.out.println("Image Faces:");
System.out.println(imageFaces);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
} finally {
// Matikan instance OSSClient.
ossClient.shutdown();
}
}
}
Python
Diperlukan OSS SDK for Python versi 2.18.4 atau lebih baru.
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan endpoint wilayah tempat bucket berada.
endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'
# Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
region = 'cn-hangzhou'
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
# Jika gambar disimpan di direktori root, masukkan nama gambar. Jika tidak, tentukan path lengkapnya.
key = 'example.jpg'
# Buat instruksi pemrosesan untuk menggunakan deteksi wajah.
process = 'image/faces'
try:
# Gunakan metode get_object dan teruskan instruksi pemrosesan melalui parameter process.
result = bucket.get_object(key, process=process)
# Baca dan tampilkan hasil kueri.
image_faces = result.read().decode('utf-8')
print("Image Faces:")
print(image_faces)
except oss2.exceptions.OssError as e:
print("Error:", e)
Go
Diperlukan OSS SDK for Go versi 3.0.2 atau lebih baru.
package main
import (
"fmt"
"io"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
// Dapatkan kredensial akses sementara dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
provider, err := oss.NewEnvironmentVariableCredentialsProvider()
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Buat instance OSSClient.
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Sesuaikan dengan endpoint aktual Anda.
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada. Contoh: cn-hangzhou.
client, err := oss.New("https://oss-cn-hangzhou.aliyuncs.com", "", "", oss.SetCredentialsProvider(&provider), oss.AuthVersion(oss.AuthV4), oss.Region("cn-hangzhou"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Tentukan nama bucket. Contoh: examplebucket.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar. Contoh: exampledir/example.jpg.
// Gunakan metode oss.Process untuk membuat instruksi pemrosesan guna menggunakan deteksi wajah.
body, err := bucket.GetObject("example.jpg", oss.Process("image/faces"))
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
defer body.Close()
data, err := io.ReadAll(body)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
fmt.Println("data:", string(data))
}
PHP
Diperlukan OSS SDK for PHP versi 2.7.0 atau lebih baru.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
try {
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';
// Tentukan nama bucket. Contoh: examplebucket.
$bucket = 'examplebucket';
// Jika gambar disimpan di direktori root bucket, masukkan nama gambar. Jika tidak disimpan di direktori root bucket, Anda harus menentukan path lengkap gambar. Contoh: exampledir/example.jpg.
$key = 'example.jpg';
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
// Tentukan ID wilayah Alibaba Cloud tempat bucket berada.
"region" => "cn-hangzhou"
);
$ossClient = new OssClient($config);
// Buat instruksi pemrosesan untuk menggunakan deteksi wajah.
$options[$ossClient::OSS_PROCESS] = "image/faces";
$result = $ossClient->getObject($bucket,$key,$options);
var_dump($result);
} catch (OssException $e) {
printf($e->getMessage() . "\n");
return;
}
Parameter
Aksi: image/faces
Untuk rincian bidang tanggapan, lihat referensi API DetectImageFaces.
Operasi API terkait
Untuk memanggil RESTful API secara langsung, sertakan perhitungan signature dalam kode Anda. Gunakan metode (Direkomendasikan) Sertakan signature V4 untuk header Authorization.
Proses gambar dengan menambahkan parameter x-oss-process ke operasi GetObject. GetObject.
Contoh permintaan
GET /example.jpg?x-oss-process=image/faces HTTP/1.1
Host: image-demo.oss-cn-hangzhou.aliyuncs.com
Date: Fri, 21 Jul 2023 08:57:30 GMT
Authorization: SignatureValue
Contoh respons sukses
HTTP/1.1 200 OK
Server: AliyunOSS
Date: Fri, 21 Jul 2023 08:57:30 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 161
Connection: keep-alive
x-oss-request-id: 628E2481184E20F26C000009
x-oss-transfer-acc-type: acc-none
x-oss-data-location: oss-cn-hangzhou-a
ETag: "D0F162350DA037F4DC2A142B2E116BD0"
Last-Modified: Wed, 25 May 2022 12:20:34 GMT
x-oss-object-type: Normal
x-oss-hash-crc64ecma: 2040549661341440100
x-oss-storage-class: Standard
x-oss-server-time: 12437
{
"RequestId": "5F2389FE-A5E3-076F-B071-43A33DB0D716",
"Figures": [{
"Beard": "none",
"MaskConfidence": 0.7509999871253967,
"Gender": "male",
"Boundary": {
"Left": 280,
"Top": 36,
"Height": 87,
"Width": 70
},
"BeardConfidence": 0.9980000257492065,
"FigureId": "d39651db-9dc4-469f-8834-d2fcf30e179e",
"Mouth": "open",
"Emotion": "none",
"Age": 12,
"MouthConfidence": 0.5669999718666077,
"FigureType": "face",
"GenderConfidence": 0.9509999752044678,
"HeadPose": {
"Pitch": -12.309000015258789,
"Roll": -11.362000465393066,
"Yaw": 3.443000078201294
},
"Mask": "none",
"EmotionConfidence": 0.9950000047683716,
"HatConfidence": 0.9879999756813049,
"GlassesConfidence": 1,
"Sharpness": 0.8870000243186951,
"FigureClusterId": "figure-cluster-id-unavailable",
"FaceQuality": 0.8289999961853027,
"Attractive": 0.12099999934434891,
"AgeSD": 5,
"Glasses": "none",
"FigureConfidence": 0.9990000128746033,
"Hat": "hat"
}
]
}
Penagihan
Deteksi wajah dikenai biaya dari OSS dan IMM:
-
OSS: Harga OSS
API
Item yang dapat ditagih
Deskripsi
GetObject
Permintaan GET
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.
lalu lintas keluar melalui Internet
Jika Anda memanggil operasi GetObject menggunakan titik akhir publik, seperti oss-cn-hangzhou.aliyuncs.com, atau titik akhir percepatan, seperti oss-accelerate.aliyuncs.com, Anda akan dikenai biaya lalu lintas keluar melalui Internet berdasarkan ukuran data.
Pengambilan objek IA
Jika objek IA diambil, Anda akan dikenai biaya pengambilan data IA berdasarkan ukuran data IA yang diambil.
Akselerasi transfer
Jika Anda mengaktifkan akselerasi transfer dan menggunakan titik akhir percepatan untuk mengakses bucket Anda, Anda akan dikenai biaya akselerasi transfer berdasarkan ukuran data.
HeadObject
Permintaan GET
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.
-
IMM: Item yang dapat ditagih IMM
PentingMulai pukul 11.00 pada 28 Juli 2025 (UTC+8), harga layanan deteksi wajah IMM tetap tidak berubah, tetapi nama item yang dapat ditagih diubah dari ImageFace menjadi ImageDetect. Untuk informasi selengkapnya, lihat Pemberitahuan penyesuaian penagihan IMM.
API
Item yang dapat ditagih
Deskripsi
DetectImageFaces
ImageDetect
Anda dikenai biaya permintaan berdasarkan jumlah permintaan yang berhasil.
Batasan
-
Hanya pemrosesan sinkron (x-oss-process) yang didukung.
-
Akses anonim akan ditolak.