Beeldanalyse cognitieve vaardigheid

Note

Azure AI Zoeken is beschikbaar via de Azure-portal, REST API's en Azure-SDK's. Het vormt ook een basis voor Foundry IQ, de beheerde kennislaag die bedrijfsinhoud transformeert in herbruikbare, machtigingsbewuste knowledge bases voor agents in de Microsoft Foundry-portal.

De vaardigheid Beeldanalyse haalt een rijke set visuele kenmerken uit op basis van de beeldinhoud. Je kunt bijvoorbeeld een bijschrift genereren van een afbeelding, tags genereren of beroemdheden en herkenningspunten identificeren. Dit artikel is de referentiedocumentatie voor de vaardigheid Beeldanalyse . Zie Tekst en informatie uit afbeeldingen extraheren voor gebruiksinstructies.

Deze vaardigheid maakt gebruik van de machine learning-modellen van Azure Vision in Foundry Tools. Beeldanalyse werkt aan beelden die aan de volgende eisen voldoen:

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

Ondersteunde databronnen voor OCR en beeldanalyse zijn blobs in Azure Blob Storage en Azure Data Lake Storage (ADLS) Gen2, en afbeeldingsinhoud in Microsoft OneLake. Afbeeldingen kunnen op zichzelf staande bestanden zijn of ingesloten afbeeldingen in een PDF of andere bestanden.

Deze vaardigheid wordt geïmplementeerd met 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 de vaardigheid aangepaste web-API.

Note

Deze vaardigheid is gebonden aan Foundry Tools en vereist een declarabele bron voor transacties die meer dan 20 documenten per indexer per dag bedragen. Uitvoering van ingebouwde vaardigheden wordt in rekening gebracht tegen de bestaande Prijs van Foundry Tools Standard.

Daarnaast is beeldextractie declareerbaar met Azure AI Zoeken.

@odata.type

Microsoft.Skills.Vision.ImageAnalysisSkill

Vaardigheidsparameters

Parameters zijn hoofdlettergevoelig.

Parameternaam Description
defaultLanguageCode Een string die aangeeft welke taal terug moet komen. De service geeft herkenningsresultaten terug in een bepaalde taal. Als deze parameter niet is gespecificeerd, is de standaardwaarde "en".

Ondersteunde talen omvatten een subset van algemeen beschikbare talen van Azure Vision. Wanneer een taal met algemene beschikbaarheid wordt geïntroduceerd in Azure Vision, is er een verwachte vertraging voordat ze volledig in deze vaardigheid zijn geïntegreerd.
visualFeatures Een array van strings die aangeven welke visuele kenmerken moeten terugkeren. Geldige soorten visuele kenmerken zijn onder andere:
  • volwassen - detecteert of de afbeelding pornografisch is (toont naaktheid of een seksuele handeling), bloederig (toont extreem geweld of bloed) of suggestief (ook bekend als gewaagde inhoud).
  • Merken - Detecteert verschillende merken binnen een afbeelding, inclusief de ongeveer locatie.
  • categorieën - categoriseert beeldinhoud volgens een taxonomie gedefinieerd door Foundry Tools.
  • Beschrijving - beschrijft de beeldinhoud met een volledige zin in ondersteunde talen.
  • Gezichten - Detecteert of er gezichten aanwezig zijn. Indien aanwezig, genereert coördinaten, geslacht en leeftijd.
  • objecten - detecteert verschillende objecten binnen een afbeelding, waaronder de benaderde locatie.
  • Tags - Tags de afbeelding met een gedetailleerde lijst woorden gerelateerd aan de inhoud van de afbeelding.
Namen van visuele kenmerken zijn hoofdlettergevoelig. Zowel kleur- als imageType visuele functies zijn verouderd, maar je kunt deze functionaliteit bereiken via een aangepaste vaardigheid. Raadpleeg de documentatie Azure Vision Image Analysis waarop visuele kenmerken worden ondersteund met elke defaultLanguageCode.
details Een array van strings die aangeven welke domeinspecifieke details moeten worden teruggegeven. Geldige soorten visuele kenmerken zijn onder andere:
  • Beroemdheden - Herkent beroemdheden als ze op de afbeelding worden gedetecteerd.
  • Herkenningspunten - Identificeert herkenningspunten als ze in de afbeelding worden gedetecteerd.

Invoer van vaardigheden

Invoernaam Description
image Complexe Type Werkt momenteel alleen met het veld "/document/normalized_images", geproduceerd door de Azure blob-indexer wanneer imageAction is ingesteld op een andere waarde dan none.

Uitvoer van vaardigheden

Uitvoernaam Description
adult Output is een enkel volwassen object van een complex type, bestaande uit booleaanse velden (isAdultContent, isGoryContent, isRacyContent) en dubbele type-scores (adultScore, goreScore, , racyScore).
brands Output is een array van merkobjecten , waarbij het object een complex type is bestaande uit name (string) en een confidence score (double). Het geeft ook een rectangle met vier coördinaten van begrenzende doosen (x, y, w, h, , in pixels) terug die de plaatsing binnen de afbeelding aangeven. Voor de rechthoek, x en y zijn linksboven. Linksonder is x, y+h. Rechtsboven is x+w, y. Rechtsonder is x+w, y+h.
categories Output is een array van categorieobjecten , waarbij elk categorieobject een complex type is bestaande uit een name (string), score (dubbel), en optioneel detail dat celebrity- of mijlpaaldetails bevat. Zie de categorie-taxonomie voor de volledige lijst met categorienamen. Een detail is een genest complex type. Een beroemdheidsdetail bestaat uit een naam, een zelfstandscore en een facebounding-box. Een belangrijk detail bestaat uit een naam en een betrouwbaarheidsscore.
description Output is een object van één beschrijving van een complex type, bestaande uit lijsten van tags en caption (een array bestaande uit Text (string) en confidence (double)).
faces Complex type bestaande uit age, gender, en faceBoundingBox met vier begrenzende dooscoördinaten (in pixels) die de plaatsing binnen het beeld aangeven. Coördinaten zijn top, left, width, . height
objects Output is een array van visuele feature-objecten. Elk object is een complex type, bestaande uit object (string), (double), confidencerectangle (met vier coördinaten van bounding boxen die plaatsing binnen de afbeelding aangeven), en een parent die een objectnaam en betrouwbaarheid bevat.
tags Output is een array van imageTag-objecten , waarbij een tagobject een complex type is bestaande uit name (string), hint (string) en confidence (double). Het toevoegen van een hint is zeldzaam. Het wordt alleen gegenereerd als een tag ambigu is. Een afbeelding die bijvoorbeeld als "curling" is getagd, kan een hint van "sport" bevatten om de inhoud beter aan te geven.

Definitie van een voorbeeldvaardigheid

{
    "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 losse objecten (zoals adult en description), kun je ze in de index structureren als een Collection(Edm.ComplexType) om terug te geven adult en description voor ze allemaal te outputten. Voor meer informatie over het mappen van uitvoer naar indexvelden, zie Afvlakken van informatie van complexe types.

{
    "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 uitvoerveldmapping

Het doelveld kan een complex veld of verzameling zijn. De indexdefinitie specificeert elke deelveld.

"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 uitvoerveldafbeeldingen (geneste eigenschappen)

Je kunt outputveldafbeeldingen definiëren naar lagere eigenschappen, zoals alleen beroemdheden of herkenningspunten. Zorg er in dat geval voor dat je 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
              }
           }
        ]
      }
    }
  ]
}

Foutgevallen

In de volgende foutgevallen worden geen elementen geëxtraheerd.

Foutcode Description
NotSupportedLanguage De aangeboden taal wordt niet ondersteund.
InvalidImageUrl De afbeeldings-URL is slecht opgemaakt of niet toegankelijk.
InvalidImageFormat Invoergegevens zijn geen geldige afbeelding.
InvalidImageSize Invoerafbeelding is te groot.
NotSupportedVisualFeature Het opgegeven type functie is niet geldig.
NotSupportedImage Niet-ondersteunde afbeelding, bijvoorbeeld kinderporno.
InvalidDetails Niet-ondersteund domeinspecifiek model.

Als je de foutmelding krijgt die vergelijkbaar is met "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks", controleer het pad. Zowel beroemdheden als bezienswaardigheden vallen onder detail.

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

Zie ook