Keterampilan kognitif Analisis Gambar

Note

Pencarian Azure AI tersedia melalui portal Azure, REST API, dan Azure SDK. Ini juga mendukung Foundry IQ, lapisan pengetahuan terkelola yang mengubah konten perusahaan menjadi pangkalan pengetahuan yang dapat digunakan kembali dan sadar izin untuk agen di portal Microsoft Foundry.

Keterampilan Analisis Gambar mengekstrak serangkaian fitur visual yang kaya berdasarkan konten gambar. Misalnya, Anda dapat membuat keterangan dari gambar, membuat tag, atau mengidentifikasi selebriti dan landmark. Artikel ini adalah dokumentasi referensi untuk keterampilan Analisis Gambar . Lihat Mengekstrak teks dan informasi dari gambar untuk petunjuk penggunaan.

Keterampilan ini menggunakan model pembelajaran mesin yang disediakan oleh Azure Vision in Foundry Tools. Analisis Gambar bekerja 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 Microsoft 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 API Web Kustom.

Note

Keterampilan ini terikat pada Alat Pengecoran dan memerlukan sumber daya yang dapat ditagih untuk transaksi yang melebihi 20 dokumen per pengindeks per hari. Eksekusi keterampilan bawaan dibebankan pada harga Foundry Tools Standard yang ada.

Selain itu, ekstraksi gambar dapat dapat ditagih oleh Pencarian Azure AI.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Parameter keterampilan

Parameter peka huruf besar/kecil.

Nama Parameter Deskripsi
defaultLanguageCode String yang menunjukkan bahasa yang akan dikembalikan. Layanan mengembalikan hasil pengenalan dalam bahasa tertentu. Jika parameter ini tidak ditentukan, nilai defaultnya adalah "en".

Bahasa yang didukung mencakup subkumpulan bahasa yang tersedia secara umum dari Azure Vision. Ketika bahasa baru diperkenalkan dengan status ketersediaan umum ke dalam Azure Vision, ada penundaan yang diharapkan sebelum mereka sepenuhnya terintegrasi dalam keterampilan ini.
visualFeatures Array string yang menunjukkan jenis fitur visual yang akan ditampilkan. Jenis fitur visual yang valid meliputi:
  • dewasa - mendeteksi apakah gambar tersebut pornografi (menggambarkan ketelanjangan atau tindakan seks), berdarah (menggambarkan kekerasan atau darah yang ekstrem) atau sugestif (juga dikenal sebagai konten berapi-api).
  • merek - mendeteksi berbagai merek dalam gambar, termasuk perkiraan lokasi.
  • kategori - mengkategorikan konten gambar sesuai dengan taksonomi yang ditentukan oleh Foundry Tools.
  • Deskripsi - menjelaskan konten gambar dengan kalimat lengkap dalam bahasa yang didukung.
  • wajah - mendeteksi apakah wajah ada. Jika ada, menghasilkan koordinat, jenis kelamin dan usia.
  • objek - mendeteksi berbagai objek dalam gambar, termasuk perkiraan lokasi.
  • Tag - Tandai gambar dengan daftar terperinci kata-kata yang terkait dengan konten gambar.
Nama fitur visual peka huruf besar/kecil. Fitur visual color dan imageType tidak digunakan lagi, tetapi Anda dapat mengakses fungsionalitas ini melalui skill kustom. Lihat dokumentasi Analisis Gambar Visi Azure di mana fitur visual didukung dengan setiap defaultLanguageCode.
details Array string yang menunjukkan detail khusus domain mana yang akan ditampilkan. Jenis fitur visual yang valid meliputi:
  • Selebriti - Mengidentifikasi selebriti jika terdeteksi dalam gambar.
  • Landmark - Mengidentifikasi landmark jika terdeteksi dalam gambar.

Masukan 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.

Keluaran Keterampilan

Nama output Deskripsi
adult Output adalah objek dewasa tunggal dari tipe kompleks, yang terdiri dari bidang boolean (isAdultContent, isGoryContent, ) isRacyContentdan skor tipe ganda (adultScore, goreScore, ). racyScore
brands Output adalah array objek merek , di mana objek tersebut adalah jenis kompleks yang terdiri dari name (string) dan skor confidence (ganda). Ini juga mengembalikan dengan rectangle empat koordinat kotak pembatas (x, y, , wh, dalam piksel) yang menunjukkan penempatan di dalam gambar. Untuk persegi panjang, x dan y berada di 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 terdiri dari ( name string), score (ganda), dan opsional detail yang berisi detail selebriti atau landmark. Lihat taksonomi kategori untuk daftar lengkap nama kategori. Detail adalah jenis kompleks bersarang. Detail selebriti terdiri dari nama, skor kepercayaan diri, dan kotak pembatas wajah. Detail tengara terdiri dari nama dan skor 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 (double)).
faces Jenis kompleks yang terdiri dari age, gender, dan faceBoundingBox memiliki empat koordinat kotak pembatas (dalam piksel) yang menunjukkan penempatan di dalam gambar. Koordinat adalah top, left, , widthheight.
objects Output adalah array objek fitur visual. Setiap objek adalah jenis kompleks, yang terdiri dari object (string), confidence (ganda), rectangle (dengan empat koordinat kotak pembatas yang menunjukkan penempatan di dalam gambar), dan yang parent berisi nama objek dan keyakinan .
tags Output adalah array objek imageTag , di mana objek tag adalah jenis kompleks yang terdiri dari name (string), hint (string), dan confidence (double). Penambahan petunjuk jarang terjadi. Itu hanya dibuat jika tag ambigu. Misalnya, gambar yang ditandai sebagai "curling" mungkin memiliki sedikit "olahraga" untuk menunjukkan kontennya dengan lebih baik.

Contoh 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 pengembalian Collection(Edm.ComplexType)adult dan description output untuk semuanya. Untuk informasi selengkapnya tentang memetakan 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 keluaran

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 pada pemetaan bidang output (properti bertingkat)

Anda dapat menentukan pemetaan bidang output ke properti tingkat rendah, 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 contoh

{
    "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
                }
            }
        }
    ]
}

Contoh keluaran

{
  "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 diekstraksi.

Kode Kesalahan Deskripsi
NotSupportedLanguage Bahasa yang disediakan tidak didukung.
InvalidImageUrl URL gambar diformat dengan buruk atau tidak dapat diakses.
InvalidImageFormat Data input bukanlah gambar yang valid.
InvalidImageSize Gambar input terlalu besar.
NotSupportedVisualFeature Jenis fitur yang ditentukan tidak valid.
NotSupportedImage Gambar yang tidak didukung, misalnya, pornografi anak.
InvalidDetails Model khusus domain yang 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 selebriti maupun landmark adalah properti di bawah detail.

"categories":[  
      {  
         "name":"building_",
         "score":0.97265625,
         "detail":{  
            "landmarks":[  
               {  
                  "name":"Forbidden City",
                  "confidence":0.92013400793075562
               }
            ]

Baca juga