Kemampuan kognitif Analisis Gambar
Kemampuan Analisis Gambar mengekstrak serangkaian fitur visual yang kaya berdasarkan konten gambar. Contohnya, Anda dapat membuat keterangan dari gambar, menghasilkan tag, atau mengidentifikasi selebritas dan landmark. Artikel ini adalah dokumentasi referensi untuk keterampilan Analisis Gambar. Lihat Mengekstrak teks dan informasi dari gambar untuk instruksi penggunaan.
Keterampilan ini menggunakan model pembelajaran mesin yang disediakan oleh Azure AI Vision di layanan Azure AI. Image Analysis berfungsi pada gambar yang memenuhi persyaratan berikut:
- Gambar harus disajikan dalam format JPEG, PNG, GIF, atau BMP
- Ukuran file gambar harus kurang dari 4 megabyte (MB)
- Dimensi gambar harus lebih besar dari 50 x 50 piksel
Sumber data yang didukung untuk OCR dan analisis gambar adalah blob di Azure Blob Storage dan Azure Data Lake Storage (ADLS) Gen2, dan konten gambar di OneLake. Gambar dapat berupa file mandiri atau gambar yang disematkan dalam PDF atau file lainnya.
Keterampilan ini diimplementasikan menggunakan API Analisis Gambar AI versi 3.2. Jika solusi Anda memerlukan panggilan versi API layanan yang lebih baru (seperti versi 4.0), pertimbangkan untuk menerapkan melalui keterampilan kustom Api Web.
Catatan
Keterampilan ini terikat ke layanan Azure AI dan memerlukan sumber daya yang dapat ditagih untuk transaksi yang melebihi 20 dokumen per pengindeks per hari. Eksekusi keterampilan bawaan dibebankan pada harga prabayar layanan Azure AI yang ada.
Selain itu, ekstraksi gambar dapat ditagih oleh Azure AI Search.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Parameter keterampilan
Parameternya peka huruf besar/kecil.
Nama Parameter | Deskripsi |
---|---|
defaultLanguageCode |
String yang menunjukkan bahasa untuk dikembalikan. Layanan mengembalikan hasil pengenalan dalam bahasa tertentu. Jika parameter ini tidak ditentukan, nilai defaultnya adalah "en". Bahasa yang didukung mencakup subset bahasa yang tersedia secara umum dari Azure AI Vision. Ketika bahasa baru diperkenalkan dengan status ketersediaan umum ke dalam layanan Visi AI, diharapkan ada penundaan sebelum mereka sepenuhnya terintegrasi dalam keterampilan ini. |
visualFeatures |
Larik string yang menunjukkan tipe fitur visual untuk yang akan ditampilkan. Jenis fitur visual yang valid meliputi:
defaultLanguageCode . |
details |
Larik string yang menunjukkan detail spesifik domain mana yang akan dikembalikan. Jenis fitur visual yang valid meliputi:
|
Input keterampilan
Masukkan nama | Deskripsi |
---|---|
image |
Jenis Kompleks. Saat ini hanya berfungsi dengan bidang "/document/normalized_images", yang dihasilkan oleh pengindeks blob Azure saat imageAction diatur ke nilai selain none . |
Output keterampilan
Nama output | Deskripsi |
---|---|
adult |
Output adalah objek dewasa tunggal dari jenis kompleks, yang terdiri dari bidang boolean (isAdultContent , , isRacyContent isGoryContent ) dan skor jenis ganda (adultScore , goreScore , racyScore ). |
brands |
Output adalah array objek merek , di mana objek adalah jenis kompleks yang terdiri name dari (string) dan confidence skor (ganda). Ini juga mengembalikan dengan empat koordinat kotak pembatas rectangle (x , , y , h w , dalam piksel) yang menunjukkan penempatan di dalam gambar. Untuk persegi panjang, x dan y adalah kiri atas. Kiri bawah adalah x , y+h . Kanan atas adalah x+w , y . Kanan bawah adalah x+w , y+h . |
categories |
Output adalah array objek kategori , di mana setiap objek kategori adalah jenis kompleks yang name terdiri dari (string), score (ganda), dan opsional detail yang berisi detail selebriti atau landmark. Lihat taksonomi kategori untuk daftar lengkap nama kategori. Detail adalah jenis kompleks berlapis. Detail selebriti terdiri dari nama, skor keyakinan, dan kotak pembatas wajah. Detail landmark terdiri dari skor nama dan keyakinan. |
description |
Output adalah objek deskripsi tunggal dari jenis kompleks, yang terdiri dari daftar tags dan caption (array yang terdiri dari Text (string) dan confidence (ganda)). |
faces |
Jenis kompleks yang terdiri age dari , gender , dan faceBoundingBox memiliki empat koordinat kotak pembatas (dalam piksel) yang menunjukkan penempatan di dalam gambar. Koordinat adalah top , left , width , height . |
objects |
Output adalah array objek fitur visual. Setiap objek adalah jenis kompleks, terdiri object dari (string), confidence (ganda), rectangle (dengan empat koordinat kotak pembatas yang menunjukkan penempatan di dalam gambar), dan parent yang berisi nama objek dan keyakinan . |
tags |
Output adalah array objek imageTag , di mana objek tag adalah jenis kompleks yang terdiri name dari (string), hint (string), dan confidence (ganda). Penambahan petunjuk jarang terjadi. Ini hanya dihasilkan jika tag ambigu. Misalnya, gambar yang ditandai sebagai "curling" mungkin memiliki petunjuk "olahraga" untuk menunjukkan kontennya dengan lebih baik. |
Sampel definisi keterampilan
{
"description": "Extract image analysis.",
"@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
"context": "/document/normalized_images/*",
"defaultLanguageCode": "en",
"visualFeatures": [
"adult",
"brands",
"categories",
"description",
"faces",
"objects",
"tags"
],
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "adult"
},
{
"name": "brands"
},
{
"name": "categories"
},
{
"name": "description"
},
{
"name": "faces"
},
{
"name": "objects"
},
{
"name": "tags"
}
]
}
Indeks sampel CLI
Untuk objek tunggal (seperti adult
dan description
), Anda dapat menyusunnya dalam indeks sebagai Collection(Edm.ComplexType)
untuk mengembalikan adult
dan description
menghasilkan untuk semuanya. Untuk informasi selengkapnya tentang pemetaan output ke bidang indeks, lihat Meratakan informasi dari jenis kompleks.
{
"fields": [
{
"name": "metadata_storage_name",
"type": "Edm.String",
"key": true,
"searchable": true,
"filterable": false,
"facetable": false,
"sortable": true
},
{
"name": "metadata_storage_path",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false,
"sortable": true
},
{
"name": "content",
"type": "Edm.String",
"sortable": false,
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "adult",
"type": "Edm.ComplexType",
"fields": [
{
"name": "isAdultContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "isGoryContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "isRacyContent",
"type": "Edm.Boolean",
"searchable": false,
"filterable": true,
"facetable": true
},
{
"name": "adultScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "goreScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "racyScore",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "brands",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "rectangle",
"type": "Edm.ComplexType",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "w",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "h",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "categories",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "score",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "detail",
"type": "Edm.ComplexType",
"fields": [
{
"name": "celebrities",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "faceBoundingBox",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "landmarks",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
}
]
},
{
"name": "description",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "tags",
"type": "Collection(Edm.String)",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "captions",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "text",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "faces",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "age",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "gender",
"type": "Edm.String",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "faceBoundingBox",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "top",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "left",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "width",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "height",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "objects",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "object",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "rectangle",
"type": "Edm.ComplexType",
"fields": [
{
"name": "x",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "y",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "w",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
},
{
"name": "h",
"type": "Edm.Int32",
"searchable": false,
"filterable": false,
"facetable": false
}
]
},
{
"name": "parent",
"type": "Edm.ComplexType",
"fields": [
{
"name": "object",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
},
{
"name": "tags",
"type": "Collection(Edm.ComplexType)",
"fields": [
{
"name": "name",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "hint",
"type": "Edm.String",
"searchable": true,
"filterable": false,
"facetable": false
},
{
"name": "confidence",
"type": "Edm.Double",
"searchable": false,
"filterable": false,
"facetable": false
}
]
}
]
}
Contoh pemetaan bidang output
Bidang target dapat berupa bidang atau koleksi yang kompleks. Definisi indeks menentukan subbidang apa pun.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/adult",
"targetFieldName": "adult"
},
{
"sourceFieldName": "/document/normalized_images/*/brands/*",
"targetFieldName": "brands"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/*",
"targetFieldName": "categories"
},
{
"sourceFieldName": "/document/normalized_images/*/description",
"targetFieldName": "description"
},
{
"sourceFieldName": "/document/normalized_images/*/faces/*",
"targetFieldName": "faces"
},
{
"sourceFieldName": "/document/normalized_images/*/objects/*",
"targetFieldName": "objects"
},
{
"sourceFieldName": "/document/normalized_images/*/tags/*",
"targetFieldName": "tags"
}
Variasi pemetaan bidang output (properti berlapis)
Anda dapat menentukan pemetaan bidang output ke properti tingkat bawah, seperti hanya selebriti atau landmark. Dalam hal ini, pastikan skema indeks Anda memiliki bidang untuk berisi setiap detail secara khusus.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Input sampel
{
"values": [
{
"recordId": "1",
"data": {
"image": {
"data": "BASE64 ENCODED STRING OF A JPEG IMAGE",
"width": 500,
"height": 300,
"originalWidth": 5000,
"originalHeight": 3000,
"rotationFromOriginal": 90,
"contentOffset": 500,
"pageNumber": 2
}
}
}
]
}
Sampel output
{
"values": [
{
"recordId": "1",
"data": {
"categories": [
{
"name": "abstract_",
"score": 0.00390625
},
{
"name": "people_",
"score": 0.83984375,
"detail": {
"celebrities": [
{
"name": "Satya Nadella",
"faceBoundingBox": [
{
"x": 273,
"y": 309
},
{
"x": 395,
"y": 309
},
{
"x": 395,
"y": 431
},
{
"x": 273,
"y": 431
}
],
"confidence": 0.999028444
}
],
"landmarks": [ ]
}
}
],
"adult": {
"isAdultContent": false,
"isRacyContent": false,
"isGoryContent": false,
"adultScore": 0.0934349000453949,
"racyScore": 0.068613491952419281,
"goreScore": 0.08928389008070282
},
"tags": [
{
"name": "person",
"confidence": 0.98979085683822632
},
{
"name": "man",
"confidence": 0.94493889808654785
},
{
"name": "outdoor",
"confidence": 0.938492476940155
},
{
"name": "window",
"confidence": 0.89513939619064331
}
],
"description": {
"tags": [
"person",
"man",
"outdoor",
"window",
"glasses"
],
"captions": [
{
"text": "Satya Nadella sitting on a bench",
"confidence": 0.48293603002174407
}
]
},
"faces": [
{
"age": 44,
"gender": "Male",
"faceBoundingBox": [
{
"x": 1601,
"y": 395
},
{
"x": 1653,
"y": 395
},
{
"x": 1653,
"y": 447
},
{
"x": 1601,
"y": 447
}
]
}
],
"objects": [
{
"rectangle": {
"x": 25,
"y": 43,
"w": 172,
"h": 140
},
"object": "person",
"confidence": 0.931
}
],
"brands":[
{
"name":"Microsoft",
"confidence": 0.903,
"rectangle":{
"x":20,
"y":97,
"w":62,
"h":52
}
}
]
}
}
]
}
Kasus kesalahan
Dalam kasus kesalahan berikut, tidak ada elemen yang diekstrak.
Kode Kesalahan | Deskripsi |
---|---|
NotSupportedLanguage |
Bahasa yang disediakan tidak didukung. |
InvalidImageUrl |
URL gambar terformat dengan buruk atau tidak dapat diakses. |
InvalidImageFormat |
Data input bukan gambar yang valid. |
InvalidImageSize |
Gambar input terlalu besar. |
NotSupportedVisualFeature |
Jenis fitur yang ditentukan tidak valid. |
NotSupportedImage |
Gambar tidak didukung, contohnya, pornografi anak. |
InvalidDetails |
Model khusus domain tidak didukung. |
Jika Anda mendapatkan kesalahan yang mirip dengan "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"
, periksa jalurnya. Baik selebritas maupun landmark adalah properti dari detail
.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]