Umiejętność poznawcza analizy obrazów
Umiejętność Analiza obrazów wyodrębnia bogaty zestaw funkcji wizualnych na podstawie zawartości obrazu. Możesz na przykład wygenerować podpis na podstawie obrazu, wygenerować tagi lub zidentyfikować osobistości i punkty orientacyjne. Ten artykuł zawiera dokumentację referencyjną umiejętności analizy obrazów. Aby uzyskać instrukcje użycia, zobacz Wyodrębnianie tekstu i informacji z obrazów .
Ta umiejętność korzysta z modeli uczenia maszynowego udostępnianych przez usługę Azure AI Vision w usługach azure AI. Analiza obrazu działa w przypadku obrazów, które spełniają następujące wymagania:
- Obraz musi być przedstawiony w formacie JPEG, PNG, GIF lub BMP
- Rozmiar pliku obrazu musi być mniejszy niż 4 megabajty (MB)
- Wymiary obrazu muszą być większe niż 50x50 pikseli
Ta umiejętność jest implementowana przy użyciu interfejsu API analizy obrazów sztucznej inteligencji w wersji 3.2. Jeśli twoje rozwiązanie wymaga wywołania nowszej wersji tego interfejsu API usługi (na przykład w wersji 4.0), rozważ zaimplementowanie niestandardowej umiejętności interfejsu API sieci Web.
Uwaga
Ta umiejętność jest powiązana z usługami azure AI i wymaga rozliczanego zasobu dla transakcji, które przekraczają 20 dokumentów na indeksator dziennie. Wykonanie wbudowanych umiejętności jest naliczane za istniejące usługi Azure AI z płatnością zgodnie z rzeczywistym użyciem.
Ponadto wyodrębnianie obrazów jest rozliczane za pomocą usługi Azure AI Search.
@odata.type
Microsoft.Skills.Vision.ImageAnalysisSkill
Parametry umiejętności
W parametrach jest rozróżniana wielkość liter.
Nazwa parametru | opis |
---|---|
defaultLanguageCode |
Ciąg wskazujący język do zwrócenia. Usługa zwraca wyniki rozpoznawania w określonym języku. Jeśli ten parametr nie zostanie określony, wartość domyślna to "en". Obsługiwane języki obejmują podzbiór ogólnie dostępnych języków usługi Azure AI Vision. Gdy język jest nowo wprowadzony ze stanem ogólnej dostępności w usłudze AI Vision, oczekiwane jest opóźnienie, zanim zostaną one w pełni zintegrowane w ramach tej umiejętności. |
visualFeatures |
Tablica ciągów wskazująca typy funkcji wizualizacji do zwrócenia. Prawidłowe typy funkcji wizualizacji obejmują:
defaultLanguageCode elementu . |
details |
Tablica ciągów wskazująca, które szczegóły specyficzne dla domeny mają być zwracane. Prawidłowe typy funkcji wizualizacji obejmują:
|
Dane wejściowe umiejętności
Nazwa danych wejściowych | opis |
---|---|
image |
Typ złożony. Obecnie działa tylko z polem "/document/normalized_images" utworzonym przez indeksator obiektów blob platformy Azure, gdy imageAction jest ustawiona wartość inną niż none . |
Dane wyjściowe umiejętności
Nazwa danych wyjściowych | opis |
---|---|
adult |
Dane wyjściowe to pojedynczy obiekt dla dorosłych typu złożonego, składający się z pól logicznych (isAdultContent , isGoryContent , isRacyContent ) i podwójnych wyników typu (adultScore , goreScore , racyScore ). |
brands |
Dane wyjściowe to tablica obiektów marki , gdzie obiekt jest typem złożonym składającym się name z (ciągu) i confidence wyniku (dwukrotnie). Zwraca również wartość z czterema współrzędnymi rectangle pola ograniczenia (x , y , , w h , w pikselach) wskazującymi umieszczenie wewnątrz obrazu. W przypadku prostokąta x i y są w lewym górnym rogu. Lewy dolny to x , y+h . W prawym górnym rogu znajduje się x+w . y Prawy dolny to x+w , y+h . |
categories |
Dane wyjściowe to tablica obiektów kategorii, gdzie każdy obiekt kategorii jest typem złożonym składającym się z name (ciągu), score (podwójne) i opcjonalnego detail zawierającego szczegóły osobistości lub punktów orientacyjnych. Zobacz taksonomię kategorii, aby uzyskać pełną listę nazw kategorii. Szczegół jest zagnieżdżonym typem złożonym. Szczegóły osobistości składają się z nazwy, wyniku ufności i pola ograniczenia twarzy. Punkt orientacyjny składa się z nazwy i współczynnika ufności. |
description |
Dane wyjściowe to pojedynczy obiekt opisu typu złożonego, składający się z list tags i caption (tablica składająca się z Text (ciąg) i confidence (double)). |
faces |
Typ złożony składający się z age , gender i faceBoundingBox o czterech współrzędnych pola ograniczenia (w pikselach) wskazujących położenie wewnątrz obrazu. Współrzędne to top , , left width , height . |
objects |
Dane wyjściowe to tablica obiektów funkcji wizualizacji. Każdy obiekt jest typem złożonym, składającym się z object (ciągu), confidence (podwójnej), rectangle (z czterema współrzędnymi pola ograniczenia wskazującymi położenie wewnątrz obrazu) oraz elementem parent zawierającym nazwę obiektu i pewność siebie . |
tags |
Dane wyjściowe to tablica obiektów imageTag , gdzie obiekt tagu jest typem złożonym składającym się z name (ciągu), hint (ciągu) i confidence (double). Dodanie wskazówki jest rzadkie. Jest generowany tylko wtedy, gdy tag jest niejednoznaczny. Na przykład obraz oznaczony jako "curling" może mieć wskazówkę "sportu", aby lepiej wskazać jego zawartość. |
Przykładowa definicja umiejętności
{
"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"
}
]
}
Przykładowy indeks
W przypadku pojedynczych obiektów (takich jak adult
i description
) można utworzyć ich strukturę w indeksie, Collection(Edm.ComplexType)
aby zwracać adult
i description
zwracać dane wyjściowe dla wszystkich z nich. Aby uzyskać więcej informacji na temat mapowania danych wyjściowych na pola indeksu, zobacz Spłaszczanie informacji z typów złożonych.
{
"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
}
]
}
]
}
Przykładowe mapowanie pól wyjściowych
Pole docelowe może być polem złożonym lub kolekcją. Definicja indeksu określa wszystkie pola podrzędne.
"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"
}
Odmiana mapowań pól wyjściowych (właściwości zagnieżdżone)
Możesz zdefiniować mapowania pól wyjściowych na właściwości niższego poziomu, takie jak tylko gwiazdy lub punkty orientacyjne. W takim przypadku upewnij się, że schemat indeksu ma pole zawierające poszczególne szczegóły.
"outputFieldMappings": [
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/celebrities/*",
"targetFieldName": "celebrities"
},
{
"sourceFieldName": "/document/normalized_images/*/categories/detail/landmarks/*",
"targetFieldName": "landmarks"
}
Przykładowe dane wejściowe
{
"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
}
}
}
]
}
Przykładowe dane wyjściowe
{
"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
}
}
]
}
}
]
}
Przypadki błędów
W następujących przypadkach błędów nie są wyodrębniane żadne elementy.
Kod błędu | opis |
---|---|
NotSupportedLanguage |
Podany język nie jest obsługiwany. |
InvalidImageUrl |
Adres URL obrazu jest nieprawidłowo sformatowany lub niedostępny. |
InvalidImageFormat |
Dane wejściowe nie są prawidłowym obrazem. |
InvalidImageSize |
Obraz wejściowy jest za duży. |
NotSupportedVisualFeature |
Określony typ funkcji jest nieprawidłowy. |
NotSupportedImage |
Nieobsługiwany obraz, na przykład pornografia dziecięca. |
InvalidDetails |
Nieobsługiwany model specyficzny dla domeny. |
Jeśli wystąpi błąd podobny do "One or more skills are invalid. Details: Error in skill #<num>: Outputs are not supported by skill: Landmarks"
, sprawdź ścieżkę. Zarówno gwiazdy, jak i punkty orientacyjne są właściwościami w obszarze detail
.
"categories":[
{
"name":"building_",
"score":0.97265625,
"detail":{
"landmarks":[
{
"name":"Forbidden City",
"confidence":0.92013400793075562
}
]