Fitur pengelompokan wajah dari Intelligent Media Management (IMM) memungkinkan Anda mengelompokkan gambar yang berisi wajah serupa dalam dataset. Fitur ini cocok untuk skenario seperti album pribadi di cloud drive, deteksi orang asing dalam pengawasan rumah, dan manajemen pelanggan di industri New Retail. Setelah melakukan pengelompokan wajah, Anda dapat menanyakan semua gambar yang berisi wajah orang tertentu dalam sebuah kluster.
Skenario
Album pribadi di cloud drive
Pengelompokan wajah mengelompokkan foto berdasarkan wajah di cloud drive dan menghasilkan album individu per orang.
Pengawasan rumah
Pengelompokan wajah mencatat wajah anggota keluarga. Wajah seorang asing tidak dapat dikelompokkan ke dalam kluster wajah yang ada dan memicu peringatan. Hal ini membantu Anda mengidentifikasi dan menangani orang-orang dan kejadian berbahaya pada kesempatan pertama serta memastikan keamanan anggota keluarga Anda.
Manajemen pelanggan di New Retail
Pengelompokan wajah dapat digunakan untuk menghapus duplikat foto pelanggan dan mendapatkan jumlah lalu lintas pelanggan yang akurat, yang dapat digunakan untuk menganalisis preferensi pembelian pelanggan untuk pemasaran yang tepat.
Prasyarat
Metadata gambar yang akan dikelompokkan harus diindeks ke dalam dataset yang sesuai. Anda dapat mengindeks metadata secara otomatis dengan memanggil CreateBinding untuk mengikat bucket ke dataset, atau mengindeks metadata secara manual dengan memanggil IndexFileMeta atau BatchIndexFileMeta. Operasi CreateDataset juga dapat digunakan.
Setidaknya terdapat tiga gambar wajah dari orang yang sama dalam dataset yang memenuhi persyaratan berikut:
Area wajah dari sebuah gambar harus lebih besar dari 75 × 75 piksel.
Nilai absolut dari masing-masing tiga elemen dalam parameter HeadPose harus kurang dari 30.
Nilai parameter FaceQuality harus lebih besar dari 0,8.
Anda dapat memanggil operasi GetFileMeta untuk menanyakan pose kepala dan kualitas wajah.
Setelah kluster wajah dibuat, wajah yang tidak memenuhi persyaratan sebelumnya juga dapat ditambahkan ke kluster yang sama. Untuk FAQ tentang pengelompokan wajah, lihat FAQ tentang manajemen gambar.
Buat tugas pengelompokan wajah
Panggil operasi CreateFigureClusteringTask untuk membuat tugas pengelompokan wajah guna mengelompokkan wajah orang yang berbeda dalam gambar berdasarkan individu. Contoh berikut menunjukkan cara melakukan pengelompokan wajah pada gambar dalam dataset test-dataset.
Operasi ini hanya menghasilkan kluster dan tidak mengubah gambar.
Informasi tugas disimpan selama tujuh hari setelah tugas dimulai. Informasi tugas tidak dapat diperoleh setelah periode tujuh hari berakhir. Anda dapat menggunakan salah satu metode berikut untuk menanyakan informasi tugas:
Di wilayah tempat proyek IMM berada, konfigurasikan langganan Simple Message Queue (SMQ) untuk menerima notifikasi informasi tugas. Untuk informasi lebih lanjut, lihat Contoh pesan asinkron. Untuk informasi tentang SDK MNS, lihat Langkah 4: Terima dan hapus pesan.
Di wilayah tempat proyek IMM berada, buat instance ApsaraMQ for RocketMQ 4.0, topik, dan grup untuk menerima notifikasi tugas. Untuk informasi lebih lanjut, lihat Contoh pesan asinkron. Untuk informasi tentang cara menggunakan ApsaraMQ for RocketMQ, lihat Gunakan SDK klien HTTP untuk mengirim dan berlangganan pesan normal.
Di wilayah tempat proyek IMM berada, gunakan EventBridge untuk menerima notifikasi informasi tugas. Untuk informasi lebih lanjut, lihat Peristiwa IMM.
Contoh permintaan
{
"ProjectName": "test-project",
"DatasetName": "test-dataset"
}Contoh respons
{
"TaskId": "CreateFigureClusteringTask-ba5784b8-f61e-485d-8ea0-****",
"RequestId": "42F4F8FD-006D-0EF0-8F2A-****",
"EventId": "140-1L5dh6eSUErqdxV1ZvJ****"
}Jika respons mirip dengan konten sebelumnya, tugas pengelompokan wajah berhasil dibuat.
Contoh kode
Tanyakan kluster wajah
Setelah tugas pengelompokan wajah dibuat, Anda dapat memanggil operasi QueryFigureClusters untuk menanyakan informasi tentang kluster, seperti jumlah kluster dan jumlah gambar dalam setiap kluster. Contoh berikut menunjukkan cara menanyakan informasi tentang kluster wajah dalam dataset test-dataset.
Contoh permintaan
{
"ProjectName": "test-project",
"DatasetName": "test-dataset"
}Contoh respons
{
"FigureClusters": [
{
"AverageAge": 27.125,
"Cover": {
"Addresses": [],
"AudioCovers": [],
"AudioStreams": [],
"CroppingSuggestions": [],
"Figures": [
{
"Attractive": 0.9980000257492065,
"Beard": "none",
"BeardConfidence": 0.9959999918937683,
"Boundary": {
"Height": 270,
"Left": 573,
"Top": 104,
"Width": 202
},
"FaceQuality": 1.0,
"FigureId": "d7365ab8-1378-4bec-83cb-eccad8d11e0b",
"FigureType": "face",
"Glasses": "none",
"GlassesConfidence": 0.9990000128746033,
"Hat": "none",
"HatConfidence": 1.0,
"HeadPose": {
"Pitch": -0.7369999885559082,
"Roll": 2.5399999618530273,
"Yaw": 9.138999938964844
},
"Mask": "none",
"MaskConfidence": 0.7269999980926514,
"Mouth": "open",
"MouthConfidence": 0.9959999918937683,
"Sharpness": 1.0
}
],
"ImageHeight": 683,
"ImageWidth": 1024,
"Labels": [],
"OCRContents": [],
"ObjectId": "170ffdeb36cec846f4214c78a0f3a0d4b7e37d0305370216ae780f7b8c72f871",
"Subtitles": [],
"URI": "oss://bucket1/photos/2.jpg",
"VideoStreams": []
},
"CreateTime": "2022-07-12T16:41:19.336825716+08:00",
"DatasetName": "dataset1",
"FaceCount": 16,
"Gender": "female",
"ImageCount": 16,
"MaxAge": 30.0,
"MinAge": 23.0,
"ObjectId": "Cluster-7bdbcedb-bd79-42e7-a1e2-b29a48532bd6",
"ObjectType": "figure-cluster",
"OwnerId": "*****",
"ProjectName": "test-project",
"UpdateTime": "2022-09-19T17:08:59.374781532+08:00",
"VideoCount": 0
},
{
"AverageAge": 24.200000762939453,
"Cover": {
"Addresses": [],
"AudioCovers": [],
"AudioStreams": [],
"CroppingSuggestions": [],
"Figures": [
{
"Attractive": 0.9990000128746033,
"Beard": "none",
"BeardConfidence": 0.9990000128746033,
"Boundary": {
"Height": 266,
"Left": 301,
"Top": 218,
"Width": 196
},
"FaceQuality": 0.8859999775886536,
"FigureId": "f58bbdce-f3d1-4674-be6b-43d4b47c08e1",
"FigureType": "face",
"Glasses": "none",
"GlassesConfidence": 1.0,
"Hat": "none",
"HatConfidence": 1.0,
"HeadPose": {
"Pitch": 13.963000297546387,
"Roll": -12.21399974822998,
"Yaw": -6.2210001945495605
},
"Mask": "none",
"MaskConfidence": 0.7490000128746033,
"Mouth": "open",
"MouthConfidence": 0.9940000176429749,
"Sharpness": 1.0
}
],
"ImageHeight": 1024,
"ImageWidth": 683,
"Labels": [],
"OCRContents": [],
"ObjectId": "b9c80e51aa95072413e2a0a6e5262644bc3cba14a4754f54f3fa9850c4d244f1",
"Subtitles": [],
"URI": "oss://bucket1/photos/11.jpg",
"VideoStreams": []
},
"CreateTime": "2022-09-19T17:08:59.374932448+08:00",
"DatasetName": "test-dataset",
"FaceCount": 5,
"Gender": "female",
"ImageCount": 5,
"MaxAge": 26.0,
"MinAge": 22.0,
"ObjectId": "Cluster-856be781-bf5a-46d7-8494-8d7c44f5e282",
"ObjectType": "figure-cluster",
"OwnerId": "*****",
"ProjectName": "test-project",
"UpdateTime": "2022-09-19T17:08:59.374932448+08:00",
"VideoCount": 0
}
],
"NextToken": "",
"TotalCount": 2,
"RequestId": "42B3DD92-FE0D-09B7-B582-*****"
}Respons menunjukkan bahwa gambar yang berisi wajah dikelompokkan menjadi 2 kluster: Cluster-7bdbcedb-bd79-42e7-a1e2-b29a48532bd6 yang berisi 16 gambar dan Cluster-856be781-bf5a-46d7-8494-8d7c44f5e282 yang berisi 5 gambar.
Contoh kode
Tanyakan gambar dalam kluster wajah
Anda dapat memanggil operasi SimpleQuery untuk menanyakan gambar dalam kluster tertentu. Contoh berikut menunjukkan cara menanyakan gambar dalam kluster Cluster-7bdbcedb-bd79-42e7-a1e2-b29a48532bd6 yang termasuk dalam dataset test-dataset:
Contoh permintaan
{
"ProjectName": "test-project",
"DatasetName": "test-dataset",
"Query": "{\"Field\": \"Figures.FigureClusterId\", \"Operation\": \"eq\", \"Value\": \"Cluster-7bdbcedb-bd79-42e7-a1e2-b29a48532bd6\"}",
"MaxResults": 100
}Contoh respons
Kluster mencakup banyak gambar. Konten berikut menunjukkan informasi tentang hanya satu gambar.
{
"Aggregations": [],
"Files": [
{
"Addresses": [],
"AudioCovers": [],
"AudioStreams": [],
"ContentMd5": "ViAbCBHAZgNU4zvs5****==",
"ContentType": "image/jpeg",
"CreateTime": "2022-07-12T15:57:47.792615815+08:00",
"CroppingSuggestions": [],
"DatasetName": "test-dataset",
"ETag": "\"56201B0811C0660354E33BECE4C****\"",
"EXIF": "****",
"Figures": [
{
"FaceQuality": 1.0,
"FigureClusterId": "Cluster-7bdbcedb-bd79-42e7-a1e2-b29a48532bd6",
"FigureConfidence": 1.0,
"FigureId": "cd9139bf-f339-4ec2-b5fd-****",
"FigureType": "face",
"Glasses": "none",
"GlassesConfidence": 0.9990000128746033,
"Hat": "none",
"HatConfidence": 1.0,
"HeadPose": {
"Pitch": -0.8999999761581421,
"Roll": 1.1660000085830688,
"Yaw": 7.932000160217285
},
"Mask": "none",
"MaskConfidence": 0.6830000281333923,
"Mouth": "close",
"MouthConfidence": 0.7879999876022339,
"Sharpness": 1.0,
...
}
],
"FileHash": "\"56201B0811C0660354E33BECE****\"",
"FileModifiedTime": "2022-07-12T15:56:41+08:00",
"Filename": "3.jpg",
"ImageHeight": 1024,
"ImageScore": {
"OverallQualityScore": 0.7490000128746033
},
"ImageWidth": 683,
"Labels": [
{
"CentricScore": 0.8349999785423279,
"LabelConfidence": 1.0,
"LabelLevel": 2,
"LabelName": "\u716e\u7247\u62cd\u6444",
"Language": "zh-Hans",
"ParentLabelName": "\u827a\u672f\u54c1"
},
...
],
"MediaType": "image",
"OCRContents": [],
"OSSCRC64": "3400224321778591044",
"OSSObjectType": "Normal",
"OSSStorageClass": "Standard",
"OSSTaggingCount": 0,
"ObjectACL": "default",
"ObjectId": "d132a61122c659f6fc1b42ecee1662aff358c7f1720027bead225****",
"ObjectType": "file",
"Orientation": 1,
"OwnerId": "****",
"ProduceTime": "2014-02-21T00:03:36+08:00",
"ProjectName": "test-project",
"Size": 187674,
"Subtitles": [],
"URI": "oss://bucket1/1.jpg",
"UpdateTime": "2022-07-12T16:41:19.336736388+08:00",
"VideoStreams": []
},
...
],
"NextToken": "",
"RequestId": "84E4D242-8D15-0312-B976-****"
}Eksperimen respons sebelumnya menunjukkan informasi tentang gambar oss://bucket1/1.jpg dalam kluster.