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
Ondersteunde gegevensbronnen voor OCR en afbeeldingsanalyse zijn blobs in Azure Blob Storage en Azure Data Lake Storage (ADLS) Gen2 en afbeeldingsinhoud in OneLake. Afbeeldingen kunnen zelfstandige bestanden of ingesloten afbeeldingen zijn in een PDF-bestand of andere bestanden.
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:
defaultLanguageCode functies worden ondersteund. |
details |
Een matrix met tekenreeksen die aangeven welke domeinspecifieke details moeten worden geretourneerd. Geldige visuele functietypen zijn onder andere:
|
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 , h in 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 , gender en 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
}
]