Kognitiv skicklighet för bildanalys

Kunskapen Bildanalys extraherar en omfattande uppsättning visuella funktioner baserat på bildinnehållet. Du kan till exempel generera en bildtext från en bild, generera taggar eller identifiera kändisar och landmärken. Den här artikeln är referensdokumentationen för kunskapen för bildanalys . Se Extrahera text och information från bilder för användningsinstruktioner.

Den här färdigheten använder maskininlärningsmodellerna som tillhandahålls av Azure AI Vision i Azure AI-tjänster. Bildanalys fungerar endast på bilder som uppfyller följande krav:

  • Bilden måste visas i JPEG-, PNG-, GIF- eller BMP-format
  • Filstorleken måste vara mindre än 4 megabyte (MB)
  • Bildens dimensioner måste vara större än 50 x 50 bildpunkter

Den här färdigheten implementeras med hjälp av AI Image Analysis API version 3.2. Om din lösning kräver att du anropar en nyare version av tjänst-API:et (till exempel version 4.0) kan du överväga att implementera den anpassade webb-API:ns kunskaper.

Kommentar

Den här kompetensen är bunden till Azure AI-tjänster och kräver en fakturerbar resurs för transaktioner som överstiger 20 dokument per indexerare och dag. Körning av inbyggda kunskaper debiteras enligt det befintliga priset för Betala per användning för Azure AI-tjänster.

Dessutom kan bildextrahering faktureras av Azure AI Search.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Kompetensparametrar

Parametrar är skiftlägeskänsliga.

Parameternamn beskrivning
defaultLanguageCode En sträng som anger vilket språk som ska returneras. Tjänsten returnerar igenkänningsresultat på ett angivet språk. Om den här parametern inte anges är standardvärdet "en".

Språk som stöds innehåller en delmängd av allmänt tillgängliga språk i Azure AI Vision. När ett språk nyligen introduceras med allmän tillgänglighetsstatus i AI Vision-tjänsten förväntas det dröja innan de är helt integrerade i den här kompetensen.
visualFeatures En matris med strängar som anger vilka typer av visuella funktioner som ska returneras. Giltiga visuella funktionstyper är:
  • vuxen – upptäcker om bilden är pornografisk (visar nakenhet eller en sexakt), blodig (skildrar extremt våld eller blod) eller suggestivt (även kallat vågat innehåll).
  • varumärken – identifierar olika märken i en bild, inklusive den ungefärliga platsen.
  • kategorier – kategoriserar bildinnehåll enligt en taxonomi som definieras av Azure AI-tjänster.
  • description – beskriver bildinnehållet med en fullständig mening på språk som stöds.
  • ansikten – identifierar om ansikten finns. Om det finns genererar koordinater, kön och ålder.
  • objekt – identifierar olika objekt i en bild, inklusive den ungefärliga platsen.
  • tags – taggar bilden med en detaljerad lista med ord relaterade till bildinnehållet.
Namn på visuella funktioner är skiftlägeskänsliga. Både färg - och imageType-visuella funktioner har blivit inaktuella, men du kan komma åt den här funktionen via en anpassad färdighet. Se dokumentationen för Azure AI Vision Image Analysis om vilka visuella funktioner som stöds med varje defaultLanguageCode.
details En matris med strängar som anger vilken domänspecifik information som ska returneras. Giltiga visuella funktionstyper är:
  • kändisar – identifierar kändisar om de identifieras i bilden.
  • landmärken – identifierar landmärken om de identifieras i bilden.

Kunskapsindata

Indatanamn beskrivning
image Komplex typ. För närvarande fungerar endast med fältet "/document/normalized_images", som skapas av Azure Blob Indexer när imageAction är inställt på ett annat värde än none.

Kunskapsutdata

Utdatanamn beskrivning
adult Utdata är ett enskilt vuxet objekt av en komplex typ som består av booleska fält (isAdultContent, , isGoryContentisRacyContent) och dubbla typpoäng (adultScore, goreScore, racyScore).
brands Utdata är en matris med varumärkesobjekt , där objektet är en komplex typ som består av name (sträng) och en confidence poäng (dubbel). Den returnerar också en rectangle med fyra koordinater för avgränsningsrutor (x, , yw, h, i bildpunkter) som anger placering inuti bilden. För rektangeln x och y längst upp till vänster. Längst ned till vänster är x, y+h. Överst till höger är x+w, y. Längst ned till höger är x+w, y+h.
categories Utdata är en matris med kategoriobjekt , där varje kategoriobjekt är en komplex typ som består av en name (sträng), score (dubbel) och valfri detail som innehåller kändis- eller landmärkesinformation. Se kategoritaxonomi för den fullständiga listan över kategorinamn. En detalj är en kapslad komplex typ. En kändisdetalj består av ett namn, en konfidenspoäng och en ansiktsgränsruta. En landmärkesdetalj består av ett namn och en konfidenspoäng.
description Utdata är ett enskilt beskrivningsobjekt av en komplex typ, som består av listor över tags och caption (en matris som består av Text (sträng) och confidence (dubbel)).
faces Komplex typ som består av age, genderoch faceBoundingBox har fyra koordinater för avgränsningsrutor (i bildpunkter) som anger placering inuti bilden. Koordinaterna är top, left, width, height.
objects Utdata är en matris med visuella funktionsobjekt. Varje objekt är en komplex typ som består av object (sträng), confidence (dubbel), rectangle (med fyra koordinater för avgränsningsrutor som anger placering inuti bilden) och en parent som innehåller ett objektnamn och en konfidens .
tags Utdata är en matris med imageTag-objekt , där ett taggobjekt är en komplex typ som består av name (sträng), hint (sträng) och confidence (dubbel). Tillägg av en ledtråd är sällsynt. Den genereras bara om en tagg är tvetydig. En bild som är taggad som "curling" kan till exempel ha en antydan till "sport" för att bättre ange innehållet.

Exempel på kompetensdefinition

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

Exempelindex

För enskilda objekt (till exempel adult och description) kan du strukturera dem i indexet som en Collection(Edm.ComplexType) för att returnera adult och description mata ut för dem alla. Mer information om hur du mappar utdata till indexfält finns i Platta ut information från komplexa typer.

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

Exempel på mappning av utdatafält

Målfältet kan vara ett komplext fält eller en komplex samling. Indexdefinitionen anger eventuella underfält.

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

Variation i utdatafältmappningar (kapslade egenskaper)

Du kan definiera utdatafältmappningar till egenskaper på lägre nivå, till exempel bara kändisar eller landmärken. I det här fallet kontrollerar du att indexschemat har ett fält som innehåller varje detalj specifikt.

"outputFieldMappings": [
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
        "targetFieldName": "celebrities"
    },
    {
        "sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
        "targetFieldName": "landmarks"
    }

Exempelindata

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

Exempelutdata

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

Felfall

I följande felfall extraheras inga element.

Felkod beskrivning
NotSupportedLanguage Det angivna språket stöds inte.
InvalidImageUrl Bild-URL är dåligt formaterad eller inte tillgänglig.
InvalidImageFormat Indata är inte en giltig bild.
InvalidImageSize Indatabilden är för stor.
NotSupportedVisualFeature Den angivna funktionstypen är inte giltig.
NotSupportedImage Bild som inte stöds, till exempel barnpornografi.
InvalidDetails Domänspecifik modell som inte stöds.

Om du får felet liknande "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"kontrollerar du sökvägen. Både kändisar och landmärken är egenskaper under detail.

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

Se även