Share via


Cognitieve vaardigheid afbeeldingsanalyse

Met de vaardigheid Afbeeldingsanalyse wordt een uitgebreide set visuele functies geëxtraheerd op basis van de inhoud van de afbeelding. U kunt bijvoorbeeld een bijschrift genereren op basis van een afbeelding, tags genereren of beroemdheden en oriëntatiepunten identificeren. Dit artikel is de referentiedocumentatie voor de vaardigheid Afbeeldingsanalyse . Zie Tekst en informatie extraheren uit afbeeldingen voor gebruiksinstructies.

Deze vaardigheid maakt gebruik van de machine learning-modellen die worden geleverd door Azure AI Vision in Azure AI-services. Afbeeldingsanalyse werkt voor afbeeldingen die voldoen aan de volgende vereisten:

  • De afbeelding moet worden weergegeven in JPEG-, PNG-, GIF- of BMP-indeling
  • De afbeelding moet kleiner zijn dan 4 megabyte (MB)
  • De afmetingen van de afbeelding moet groter zijn dan 50 x 50 pixels

Deze vaardigheid wordt geïmplementeerd met behulp van de AI Image Analysis API versie 3.2. Als voor uw oplossing een nieuwere versie van die service-API moet worden aangeroepen (zoals versie 4.0), kunt u overwegen om te implementeren via aangepaste vaardigheden voor web-API's.

Notitie

Deze vaardigheid is gebonden aan Azure AI-services en vereist een factureerbare resource voor transacties die groter zijn dan 20 documenten per indexeerfunctie per dag. Voor de uitvoering van ingebouwde vaardigheden worden kosten in rekening gebracht voor de bestaande betalen per gebruik-prijs van Azure AI-services.

Daarnaast kan afbeeldingsextractie worden gefactureerd door Azure AI Search.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Vaardigheidsparameters

Parameters zijn hoofdlettergevoelig.

Parameternaam Beschrijving
defaultLanguageCode Een tekenreeks die de taal aangeeft die moet worden geretourneerd. De service retourneert herkenningsresultaten in een opgegeven taal. Als deze parameter niet is opgegeven, is de standaardwaarde 'en'.

Ondersteunde talen bevatten een subset van algemeen beschikbare talen van Azure AI Vision. Wanneer een taal nieuw is geïntroduceerd met de status van algemene beschikbaarheid in de AI Vision-service, is er verwachte vertraging voordat deze volledig zijn geïntegreerd in deze vaardigheid.
visualFeatures Een matrix met tekenreeksen die de typen visuele functies aangeeft die moeten worden geretourneerd. Geldige visuele functietypen zijn onder andere:
  • volwassen - detecteert of de afbeelding pornografisch is (toont naaktheid of een sekshandel), gory (toont extreem geweld of bloed) of suggestief (ook wel racy content genoemd).
  • merken - detecteert verschillende merken binnen een afbeelding, inclusief de geschatte locatie.
  • categorieën : categoriseert afbeeldingsinhoud op basis van een taxonomie die is gedefinieerd door Azure AI-services.
  • beschrijving : beschrijft de inhoud van de afbeelding met een volledige zin in ondersteunde talen.
  • gezichten : detecteert of gezichten aanwezig zijn. Indien aanwezig, worden coördinaten, geslacht en leeftijd gegenereerd.
  • objecten : detecteert verschillende objecten in een afbeelding, inclusief de geschatte locatie.
  • tags : tags voor de afbeelding met een gedetailleerde lijst met woorden die betrekking hebben op de inhoud van de afbeelding.
Namen van visuele functies zijn hoofdlettergevoelig. De visuele functies color en imageType zijn afgeschaft, maar u hebt toegang tot deze functionaliteit via een aangepaste vaardigheid. Raadpleeg de documentatie van Azure AI Vision-afbeeldingsanalyse over welke visuele functies met elk van deze defaultLanguageCodefuncties worden ondersteund.
details Een matrix met tekenreeksen die aangeven welke domeinspecifieke details moeten worden geretourneerd. Geldige visuele functietypen zijn onder andere:
  • beroemdheden : identificeert beroemdheden als deze zijn gedetecteerd in de afbeelding.
  • oriëntatiepunten: identificeert oriëntatiepunten als deze zijn gedetecteerd in de afbeelding.

Invoer van vaardigheden

Invoernaam Beschrijving
image Complex Type. Werkt momenteel alleen met het veld /document/normalized_images, geproduceerd door de Azure Blob-indexeerfunctie wanneer imageAction deze is ingesteld op een andere waarde dan none.

Uitvoer van vaardigheden

Uitvoernaam Beschrijving
adult Uitvoer is één volwassen object van een complex type, bestaande uit booleaanse velden (isAdultContent, isGoryContent, isRacyContent) en dubbele type scores (adultScore, goreScore, ). racyScore
brands Uitvoer is een matrix van merkobjecten , waarbij het object een complex type is dat bestaat uit name (tekenreeks) en een confidence score (dubbel). Het retourneert ook een rectangle met vier begrenzingsvakcoördinaten (x, y, w, hin pixels) die de plaatsing in de afbeelding aangeven. Voor de rechthoek x en y zijn de linkerbovenhoek. Linksonder is x, y+h. Rechtsboven is x+w, y. Rechtsonder is x+w, y+h.
categories Uitvoer is een matrix van categorieobjecten , waarbij elk categorieobject een complex type is dat bestaat uit een name (tekenreeks), score (dubbel) en optioneel detail dat beroemdheden of oriëntatiepunten bevat. Zie de categorietaxonomie voor de volledige lijst met categorienamen. Een detail is een genest complex type. Een beroemdheidsdetail bestaat uit een naam, betrouwbaarheidsscore en begrenzingsvak voor gezichten. Een oriëntatiepuntdetails bestaan uit een naam en betrouwbaarheidsscore.
description Uitvoer is één beschrijvingsobject van een complex type, bestaande uit lijsten van tags en caption (een matrix die bestaat uit Text (tekenreeks) en confidence (dubbel)).
faces Complex type dat bestaat uit age, genderen faceBoundingBox vier begrenzingsvakcoördinaten (in pixels) die de plaatsing in de afbeelding aangeven. Coördinaten zijntop, left, , width. height
objects Uitvoer is een matrix met visuele functieobjecten. Elk object is een complex type dat bestaat uit object (tekenreeks), confidence (dubbel) rectangle (met vier begrenzingsvakcoördinaten die de plaatsing in de afbeelding aangeven) en een parent objectnaam en betrouwbaarheid bevat.
tags Uitvoer is een matrix van imageTag-objecten , waarbij een tagobject een complex type is dat bestaat uit name (tekenreeks), hint (tekenreeks) en confidence (dubbel). Het toevoegen van een hint is zeldzaam. Deze wordt alleen gegenereerd als een tag niet eenduidig is. Een afbeelding die is getagd als 'curling', kan bijvoorbeeld een hint van 'sport' hebben om de inhoud beter aan te geven.

Voorbeelddefinitie van vaardigheid

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

Voorbeeldindex

Voor afzonderlijke objecten (zoals adult en description) kunt u ze in de index structuren als resultaat Collection(Edm.ComplexType) adult en description uitvoer voor alle objecten. Zie Voor meer informatie over het toewijzen van uitvoer aan indexvelden informatie over het afvlakken van complexe typen.

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

Voorbeeld van toewijzing van uitvoervelden

Het doelveld kan een complex veld of een verzameling zijn. Met de indexdefinitie worden subvelden opgegeven.

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

Variatie op uitvoerveldtoewijzingen (geneste eigenschappen)

U kunt uitvoerveldtoewijzingen definiëren voor eigenschappen op lager niveau, zoals alleen beroemdheden of oriëntatiepunten. Zorg er in dit geval voor dat uw indexschema een veld bevat dat elk detail specifiek bevat.

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

Voorbeeldinvoer

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

Voorbeelduitvoer

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

Foutcases

In de volgende foutgevallen worden geen elementen geëxtraheerd.

Foutcode Beschrijving
NotSupportedLanguage De opgegeven taal wordt niet ondersteund.
InvalidImageUrl Afbeeldings-URL is onjuist opgemaakt of niet toegankelijk.
InvalidImageFormat Invoergegevens zijn geen geldige afbeelding.
InvalidImageSize De invoerafbeelding is te groot.
NotSupportedVisualFeature Het opgegeven functietype is niet geldig.
NotSupportedImage Niet-ondersteunde afbeelding, bijvoorbeeld kinderporno.
InvalidDetails Niet-ondersteund domeinspecifiek model.

Als u de fout ziet die vergelijkbaar is met "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", controleert u het pad. Zowel beroemdheden als oriëntatiepunten zijn eigenschappen onder detail.

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

Zie ook