Schémata dat pro trénování modelů počítačového zpracování obrazu pomocí automatizovaného strojového učení
PLATÍ PRO:Rozšíření Azure CLI ml v2 (aktuální)Python SDK azure-ai-ml v2 (aktuální)
Naučte se formátovat soubory JSONL pro spotřebu dat v automatizovaných experimentech ML pro úlohy počítačového zpracování obrazu během trénování a odvozování.
Schéma dat pro trénování
Azure Machine Learning AutoML pro obrázky vyžaduje přípravu vstupních dat obrázků ve formátu JSONL (Řádky JSON). Tato část popisuje vstupní formáty dat nebo schéma pro klasifikaci obrázků ve více třídách, klasifikaci obrázků s více popisky, detekci objektů a segmentaci instancí. Poskytneme také ukázku konečného trénovacího nebo ověřovacího souboru JSON Lines.
Klasifikace obrázků (binární/více tříd)
Vstupní formát a schéma dat na každém řádku JSON:
{
"image_url":"azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/<path_to_image>",
"image_details":{
"format":"image_format",
"width":"image_width",
"height":"image_height"
},
"label":"class_name",
}
Key | Popis | Příklad |
---|---|---|
image_url |
Umístění image v úložišti dat služby Azure Machine Learning my-subscription-id musí být nahrazeno předplatným Azure, kde se nacházejí image. Další informace o předplatných Azure najdete tady. my-resource-group my-workspace my-datastore Podobně by měl být nahrazen názvem skupiny prostředků, názvem pracovního prostoru a názvem úložiště dat. path_to_image by měla být úplná cesta k obrázku v úložišti dat.Required, String |
"azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg" |
image_details |
Podrobnosti o obrázkuOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
Typ obrázku (podporují se všechny dostupné formáty obrázků v knihovně Pillow ).Optional, String from {"jpg", "jpeg", "png", "jpe", "jfif","bmp", "tif", "tiff"} |
"jpg" or "jpeg" or "png" or "jpe" or "jfif" or "bmp" or "tif" or "tiff" |
width |
Šířka obrázkuOptional, String or Positive Integer |
"400px" or 400 |
height |
Výška obrázkuOptional, String or Positive Integer |
"200px" or 200 |
label |
Třída nebo popisek obrázkuRequired, String |
"cat" |
Příklad souboru JSONL pro klasifikaci obrázků s více třídami:
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg", "image_details":{"format": "jpg", "width": "400px", "height": "258px"}, "label": "can"}
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_02.jpg", "image_details": {"format": "jpg", "width": "397px", "height": "296px"}, "label": "milk_bottle"}
.
.
.
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_n.jpg", "image_details": {"format": "jpg", "width": "1024px", "height": "768px"}, "label": "water_bottle"}
Více popisků klasifikace obrázků
Následuje příklad formátu a schématu vstupních dat v každém řádku JSON pro klasifikaci obrázků.
{
"image_url":"azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/<path_to_image>",
"image_details":{
"format":"image_format",
"width":"image_width",
"height":"image_height"
},
"label":[
"class_name_1",
"class_name_2",
"class_name_3",
"...",
"class_name_n"
]
}
Key | Popis | Příklad |
---|---|---|
image_url |
Umístění image v úložišti dat služby Azure Machine Learning my-subscription-id musí být nahrazeno předplatným Azure, kde se nacházejí image. Další informace o předplatných Azure najdete tady. my-resource-group my-workspace my-datastore Podobně by měl být nahrazen názvem skupiny prostředků, názvem pracovního prostoru a názvem úložiště dat. path_to_image by měla být úplná cesta k obrázku v úložišti dat.Required, String |
"azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg" |
image_details |
Podrobnosti o obrázkuOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
Typ obrázku (podporují se všechny formáty obrázků dostupné v knihovně Pillow ).Optional, String from {"jpg", "jpeg", "png", "jpe", "jfif", "bmp", "tif", "tiff"} |
"jpg" or "jpeg" or "png" or "jpe" or "jfif" or "bmp" or "tif" or "tiff" |
width |
Šířka obrázkuOptional, String or Positive Integer |
"400px" or 400 |
height |
Výška obrázkuOptional, String or Positive Integer |
"200px" or 200 |
label |
Seznam tříd a popisků na obrázkuRequired, List of Strings |
["cat","dog"] |
Příklad souboru JSONL pro více popisků klasifikace obrázků:
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg", "image_details":{"format": "jpg", "width": "400px", "height": "258px"}, "label": ["can"]}
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_02.jpg", "image_details": {"format": "jpg", "width": "397px", "height": "296px"}, "label": ["can","milk_bottle"]}
.
.
.
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_n.jpg", "image_details": {"format": "jpg", "width": "1024px", "height": "768px"}, "label": ["carton","milk_bottle","water_bottle"]}
Detekce objektů
Následuje příklad souboru JSONL pro detekci objektů.
{
"image_url":"azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/<path_to_image>",
"image_details":{
"format":"image_format",
"width":"image_width",
"height":"image_height"
},
"label":[
{
"label":"class_name_1",
"topX":"xmin/width",
"topY":"ymin/height",
"bottomX":"xmax/width",
"bottomY":"ymax/height",
"isCrowd":"isCrowd"
},
{
"label":"class_name_2",
"topX":"xmin/width",
"topY":"ymin/height",
"bottomX":"xmax/width",
"bottomY":"ymax/height",
"isCrowd":"isCrowd"
},
"..."
]
}
Tady
xmin
= x souřadnice levého horního rohu ohraničujícího rámečkuymin
= souřadnice y levého horního rohu ohraničujícího rámečkuxmax
= x souřadnice pravého dolního rohu ohraničujícího rámečkuymax
= souřadnice y pravého dolního rohu ohraničujícího rámečku
Key | Popis | Příklad |
---|---|---|
image_url |
Umístění image v úložišti dat služby Azure Machine Learning my-subscription-id musí být nahrazeno předplatným Azure, kde se nacházejí image. Další informace o předplatných Azure najdete tady. my-resource-group my-workspace my-datastore Podobně by měl být nahrazen názvem skupiny prostředků, názvem pracovního prostoru a názvem úložiště dat. path_to_image by měla být úplná cesta k obrázku v úložišti dat.Required, String |
"azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg" |
image_details |
Podrobnosti o obrázkuOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
Typ obrázku (podporují se všechny formáty obrázků dostupné v knihovně Pillow . Ale pro YOLO jsou podporovány pouze formáty obrázků povolené opencv )Optional, String from {"jpg", "jpeg", "png", "jpe", "jfif", "bmp", "tif", "tiff"} |
"jpg" or "jpeg" or "png" or "jpe" or "jfif" or "bmp" or "tif" or "tiff" |
width |
Šířka obrázkuOptional, String or Positive Integer |
"499px" or 499 |
height |
Výška obrázkuOptional, String or Positive Integer |
"665px" or 665 |
label (vnější klíč) |
Seznamoch label, topX, topY, bottomX, bottomY, isCrowd Required, List of dictionaries |
[{"label": "cat", "topX": 0.260, "topY": 0.406, "bottomX": 0.735, "bottomY": 0.701, "isCrowd": 0}] |
label (vnitřní klíč) |
Třída/popisek objektu v ohraničujícím rámečkuRequired, String |
"cat" |
topX |
Poměr souřadnic x levého horního rohu ohraničujícího rámečku a šířky obrázkuRequired, Float in the range [0,1] |
0.260 |
topY |
Poměr souřadnice y levého horního rohu ohraničujícího rámečku a výšky obrázkuRequired, Float in the range [0,1] |
0.406 |
bottomX |
Poměr souřadnic x pravého dolního rohu ohraničujícího rámečku a šířky obrázkuRequired, Float in the range [0,1] |
0.735 |
bottomY |
Poměr souřadnic y pravého dolního rohu ohraničujícího rámečku a výšky obrázkuRequired, Float in the range [0,1] |
0.701 |
isCrowd |
Určuje, jestli je ohraničující rámeček kolem davu objektů. Pokud je nastaven tento speciální příznak, při výpočtu metriky přeskočíme tento konkrétní ohraničující rámeček.Optional, Bool |
0 |
Příklad souboru JSONL pro detekci objektů:
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg", "image_details": {"format": "jpg", "width": "499px", "height": "666px"}, "label": [{"label": "can", "topX": 0.260, "topY": 0.406, "bottomX": 0.735, "bottomY": 0.701, "isCrowd": 0}]}
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_02.jpg", "image_details": {"format": "jpg", "width": "499px", "height": "666px"}, "label": [{"label": "carton", "topX": 0.172, "topY": 0.153, "bottomX": 0.432, "bottomY": 0.659, "isCrowd": 0}, {"label": "milk_bottle", "topX": 0.300, "topY": 0.566, "bottomX": 0.891, "bottomY": 0.735, "isCrowd": 0}]}
.
.
.
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_n.jpg", "image_details": {"format": "jpg", "width": "499px", "height": "666px"}, "label": [{"label": "carton", "topX": 0.0180, "topY": 0.297, "bottomX": 0.380, "bottomY": 0.836, "isCrowd": 0}, {"label": "milk_bottle", "topX": 0.454, "topY": 0.348, "bottomX": 0.613, "bottomY": 0.683, "isCrowd": 0}, {"label": "water_bottle", "topX": 0.667, "topY": 0.279, "bottomX": 0.841, "bottomY": 0.615, "isCrowd": 0}]}
Segmentace instancí
Například segmentace automatizovaného strojového učení podporuje jako vstup a výstup pouze mnohoúhelník, žádné masky.
Následuje příklad souboru JSONL, například segmentace.
{
"image_url":"azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/<path_to_image>",
"image_details":{
"format":"image_format",
"width":"image_width",
"height":"image_height"
},
"label":[
{
"label":"class_name",
"isCrowd":"isCrowd",
"polygon":[["x1", "y1", "x2", "y2", "x3", "y3", "...", "xn", "yn"]]
}
]
}
Key | Popis | Příklad |
---|---|---|
image_url |
Umístění image v úložišti dat služby Azure Machine Learning my-subscription-id musí být nahrazeno předplatným Azure, kde se nacházejí image. Další informace o předplatných Azure najdete tady. my-resource-group my-workspace my-datastore Podobně by měl být nahrazen názvem skupiny prostředků, názvem pracovního prostoru a názvem úložiště dat. path_to_image by měla být úplná cesta k obrázku v úložišti dat.Required, String |
"azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg" |
image_details |
Podrobnosti o obrázkuOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
Typ obrázkuOptional, String from {"jpg", "jpeg", "png", "jpe", "jfif", "bmp", "tif", "tiff" } |
"jpg" or "jpeg" or "png" or "jpe" or "jfif" or "bmp" or "tif" or "tiff" |
width |
Šířka obrázkuOptional, String or Positive Integer |
"499px" or 499 |
height |
Výška obrázkuOptional, String or Positive Integer |
"665px" or 665 |
label (vnější klíč) |
Seznam masek, kde každá maska je slovníkem label, isCrowd, polygon coordinates Required, List of dictionaries |
[{"label": "can", "isCrowd": 0, "polygon": [[0.577, 0.689, 0.562, 0.681, 0.559, 0.686]]}] |
label (vnitřní klíč) |
Třída/popisek objektu v masceRequired, String |
"cat" |
isCrowd |
Určuje, jestli je maska kolem davu objektů.Optional, Bool |
0 |
polygon |
Souřadnice mnohoúhelníku pro objektRequired, List of list for multiple segments of the same instance. Float values in the range [0,1] |
[[0.577, 0.689, 0.567, 0.689, 0.559, 0.686]] |
Příklad souboru JSONL pro segmentaci instancí:
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_01.jpg", "image_details": {"format": "jpg", "width": "499px", "height": "666px"}, "label": [{"label": "can", "isCrowd": 0, "polygon": [[0.577, 0.689, 0.567, 0.689, 0.559, 0.686, 0.380, 0.593, 0.304, 0.555, 0.294, 0.545, 0.290, 0.534, 0.274, 0.512, 0.2705, 0.496, 0.270, 0.478, 0.284, 0.453, 0.308, 0.432, 0.326, 0.423, 0.356, 0.415, 0.418, 0.417, 0.635, 0.493, 0.683, 0.507, 0.701, 0.518, 0.709, 0.528, 0.713, 0.545, 0.719, 0.554, 0.719, 0.579, 0.713, 0.597, 0.697, 0.621, 0.695, 0.629, 0.631, 0.678, 0.619, 0.683, 0.595, 0.683, 0.577, 0.689]]}]}
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_02.jpg", "image_details": {"format": "jpg", "width": "499px", "height": "666px"}, "label": [{"label": "carton", "isCrowd": 0, "polygon": [[0.240, 0.65, 0.234, 0.654, 0.230, 0.647, 0.210, 0.512, 0.202, 0.403, 0.182, 0.267, 0.184, 0.243, 0.180, 0.166, 0.186, 0.159, 0.198, 0.156, 0.396, 0.162, 0.408, 0.169, 0.406, 0.217, 0.414, 0.249, 0.422, 0.262, 0.422, 0.569, 0.342, 0.569, 0.334, 0.572, 0.320, 0.585, 0.308, 0.624, 0.306, 0.648, 0.240, 0.657]]}, {"label": "milk_bottle", "isCrowd": 0, "polygon": [[0.675, 0.732, 0.635, 0.731, 0.621, 0.725, 0.573, 0.717, 0.516, 0.717, 0.505, 0.720, 0.462, 0.722, 0.438, 0.719, 0.396, 0.719, 0.358, 0.714, 0.334, 0.714, 0.322, 0.711, 0.312, 0.701, 0.306, 0.687, 0.304, 0.663, 0.308, 0.630, 0.320, 0.596, 0.32, 0.588, 0.326, 0.579]]}]}
.
.
.
{"image_url": "azureml://subscriptions/my-subscription-id/resourcegroups/my-resource-group/workspaces/my-workspace/datastores/my-datastore/paths/image_data/Image_n.jpg", "image_details": {"format": "jpg", "width": "499px", "height": "666px"}, "label": [{"label": "water_bottle", "isCrowd": 0, "polygon": [[0.334, 0.626, 0.304, 0.621, 0.254, 0.603, 0.164, 0.605, 0.158, 0.602, 0.146, 0.602, 0.142, 0.608, 0.094, 0.612, 0.084, 0.599, 0.080, 0.585, 0.080, 0.539, 0.082, 0.536, 0.092, 0.533, 0.126, 0.530, 0.132, 0.533, 0.144, 0.533, 0.162, 0.525, 0.172, 0.525, 0.186, 0.521, 0.196, 0.521 ]]}, {"label": "milk_bottle", "isCrowd": 0, "polygon": [[0.392, 0.773, 0.380, 0.732, 0.379, 0.767, 0.367, 0.755, 0.362, 0.735, 0.362, 0.714, 0.352, 0.644, 0.352, 0.611, 0.362, 0.597, 0.40, 0.593, 0.444, 0.494, 0.588, 0.515, 0.585, 0.621, 0.588, 0.671, 0.582, 0.713, 0.572, 0.753 ]]}]}
Schéma dat pro online bodování
V této části dokumentujeme formát vstupních dat potřebný k předpovědím pomocí nasazeného modelu.
Vstupní formát
Následující formát JSON je vstupní formát potřebný ke generování předpovědí u libovolné úlohy pomocí koncového bodu modelu specifického pro úkol.
{
"input_data": {
"columns": [
"image"
],
"data": [
"image_in_base64_string_format"
]
}
}
Tento kód JSON je slovník s vnějším klíčem input_data
a vnitřními klíči columns
, data
jak je popsáno v následující tabulce. Koncový bod přijímá řetězec JSON ve výše uvedeném formátu a převede ho na datový rámec ukázek požadovaných skriptem bodování. Každý vstupní obrázek v oddílu request_json["input_data"]["data"]
json je řetězec kódovaný v base64.
Key | Popis |
---|---|
input_data (vnější klíč) |
Jedná se o vnější klíč v požadavku JSON. input_data je slovník, který přijímá vstupní ukázky obrázků. Required, Dictionary |
columns (vnitřní klíč) |
Názvy sloupců, které se mají použít k vytvoření datového rámce. Přijímá pouze jeden sloupec s image názvem sloupce.Required, List |
data (vnitřní klíč) |
Seznam obrázků s kódováním Base64 Required, List |
Po nasazení modelu mlflow můžeme pomocí následujícího fragmentu kódu získat předpovědi pro všechny úlohy.
# Create request json
import base64
sample_image = os.path.join(dataset_dir, "images", "1.jpg")
def read_image(image_path):
with open(image_path, "rb") as f:
return f.read()
request_json = {
"input_data": {
"columns": ["image"],
"data": [base64.encodebytes(read_image(sample_image)).decode("utf-8")],
}
}
import json
request_file_name = "sample_request_data.json"
with open(request_file_name, "w") as request_file:
json.dump(request_json, request_file)
resp = ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name=deployment.name,
request_file=request_file_name,
)
Výstupní formát
Předpovědi vytvořené na koncových bodech modelu se řídí odlišnou strukturou v závislosti na typu úlohy. Tato část zkoumá formáty výstupních dat pro více tříd, klasifikaci obrázků s více popisky, detekci objektů a úlohy segmentace instancí.
Následující schémata platí, když vstupní požadavek obsahuje jednu image.
Klasifikace obrázků (binární/více tříd)
Koncový bod pro klasifikaci obrázků vrátí všechny popisky v datové sadě a skóre pravděpodobnosti pro vstupní obrázek v následujícím formátu. visualizations
a attributions
souvisí s vysvětlitelností a pokud je požadavek určen pouze pro bodování, nebudou tyto klíče zahrnuty do výstupu. Další informace o vysvětlitelnosti vstupního a výstupního schématu klasifikace obrázků najdete v části vysvětlení klasifikace obrázků.
[
{
"probs": [
2.098e-06,
4.783e-08,
0.999,
8.637e-06
],
"labels": [
"can",
"carton",
"milk_bottle",
"water_bottle"
]
}
]
Více popisků klasifikace obrázků
U více popisků klasifikace obrázků vrátí koncový bod modelu popisky a jejich pravděpodobnosti. visualizations
a attributions
souvisí s vysvětlitelností a pokud je požadavek určen pouze pro bodování, nebudou tyto klíče zahrnuty do výstupu. Další informace o vysvětlitelnosti vstupního a výstupního schématu pro klasifikaci více popisků najdete v části vysvětlení klasifikace obrázků s více popisky.
[
{
"probs": [
0.997,
0.960,
0.982,
0.025
],
"labels": [
"can",
"carton",
"milk_bottle",
"water_bottle"
]
}
]
Detekce objektů
Model rozpoznávání objektů vrací několik polí s jejich souřadnicemi vlevo nahoře a vpravo dole spolu s popiskem pole a skóre spolehlivosti.
[
{
"boxes": [
{
"box": {
"topX": 0.224,
"topY": 0.285,
"bottomX": 0.399,
"bottomY": 0.620
},
"label": "milk_bottle",
"score": 0.937
},
{
"box": {
"topX": 0.664,
"topY": 0.484,
"bottomX": 0.959,
"bottomY": 0.812
},
"label": "can",
"score": 0.891
},
{
"box": {
"topX": 0.423,
"topY": 0.253,
"bottomX": 0.632,
"bottomY": 0.725
},
"label": "water_bottle",
"score": 0.876
}
]
}
]
Segmentace instancí
V segmentaci instancí se výstup skládá z několika polí s jejich souřadnicemi vlevo nahoře a vpravo dole, popisky, skóre spolehlivosti a mnohoúhelníky (ne masky). Tady jsou hodnoty mnohoúhelníku ve stejném formátu, který jsme probírali v části schématu.
[
{
"boxes": [
{
"box": {
"topX": 0.679,
"topY": 0.491,
"bottomX": 0.926,
"bottomY": 0.810
},
"label": "can",
"score": 0.992,
"polygon": [
[
0.82, 0.811, 0.771, 0.810, 0.758, 0.805, 0.741, 0.797, 0.735, 0.791, 0.718, 0.785, 0.715, 0.778, 0.706, 0.775, 0.696, 0.758, 0.695, 0.717, 0.698, 0.567, 0.705, 0.552, 0.706, 0.540, 0.725, 0.520, 0.735, 0.505, 0.745, 0.502, 0.755, 0.493
]
]
},
{
"box": {
"topX": 0.220,
"topY": 0.298,
"bottomX": 0.397,
"bottomY": 0.601
},
"label": "milk_bottle",
"score": 0.989,
"polygon": [
[
0.365, 0.602, 0.273, 0.602, 0.26, 0.595, 0.263, 0.588, 0.251, 0.546, 0.248, 0.501, 0.25, 0.485, 0.246, 0.478, 0.245, 0.463, 0.233, 0.442, 0.231, 0.43, 0.226, 0.423, 0.226, 0.408, 0.234, 0.385, 0.241, 0.371, 0.238, 0.345, 0.234, 0.335, 0.233, 0.325, 0.24, 0.305, 0.586, 0.38, 0.592, 0.375, 0.598, 0.365
]
]
},
{
"box": {
"topX": 0.433,
"topY": 0.280,
"bottomX": 0.621,
"bottomY": 0.679
},
"label": "water_bottle",
"score": 0.988,
"polygon": [
[
0.576, 0.680, 0.501, 0.680, 0.475, 0.675, 0.460, 0.625, 0.445, 0.630, 0.443, 0.572, 0.440, 0.560, 0.435, 0.515, 0.431, 0.501, 0.431, 0.433, 0.433, 0.426, 0.445, 0.417, 0.456, 0.407, 0.465, 0.381, 0.468, 0.327, 0.471, 0.318
]
]
}
]
}
]
Formát dat pro online bodování a vysvětlení (XAI)
Důležité
Tato nastavení jsou aktuálně ve verzi Public Preview. Poskytují se bez smlouvy o úrovni služeb. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.
Upozorňující
Vysvětlení je podporováno pouze pro klasifikaci s více třídami a klasifikaci více popisků. Pokud při generování vysvětlení online koncového bodu narazíte na problémy s vypršením časového limitu, vygenerujte vysvětlení pomocí dávkového bodovacího poznámkového bloku (SDK v1 ).
V této části dokumentujeme formát vstupních dat potřebný k předpovědím a vygenerujeme vysvětlení predikovaných tříd nebo tříd pomocí nasazeného modelu. Pro vysvětlení není potřeba žádné samostatné nasazení. Ke generování vysvětlení je možné využít stejný koncový bod pro online bodování. Stačí předat některé další vysvětlující parametry související se vstupním schématem a získat vizualizace vysvětlení a/nebo matice skóre přisuzování (vysvětlení na úrovni pixelů).
Podporované metody vysvětlení:
- XRAI (xrai)
- Integrované přechody (integrated_gradients)
- GradCAM s asistencí (guided_gradcam)
- BackPropagation s asistencí (guided_backprop)
Vstupní formát (XAI)
Následující vstupní formáty jsou podporovány pro generování předpovědí a vysvětlení pro všechny úlohy klasifikace pomocí koncového bodu modelu specifického pro jednotlivé úlohy. Po nasazení modelu můžeme pomocí následujícího schématu získat předpovědi a vysvětlení.
{
"input_data": {
"columns": ["image"],
"data": [json.dumps({"image_base64": "image_in_base64_string_format",
"model_explainability": True,
"xai_parameters": {}
})
]
}
}
Spolu s obrázkem jsou ve vstupním schématu vyžadovány dva další parametry (model_explainability
a xai_parameters
) k vygenerování vysvětlení.
Key | Popis | Výchozí hodnota |
---|---|---|
image_base64 |
vstupní obrázek ve formátu base64Required, String |
- |
model_explainability |
Ať už chcete vygenerovat vysvětlení, nebo jenom bodováníOptional, Bool |
False |
xai_parameters |
Pokud model_explainability je true, pak xai_parameters je slovník obsahující vysvětlující algoritmus související parametry s xai_algorithm , visualizations attributions zeptejte se klíčů. Optional, Dictionary Pokud xai_parameters se nepředá, xrai použije se algoritmus vysvětlitelnosti s výchozí hodnotou. |
{"xai_algorithm": "xrai", "visualizations": True, "attributions": False} |
xai_algorithm |
Název algoritmu vysvětlitelnosti, který se má použít. Podporované algoritmy XAI jsou {xrai , integrated_gradients , guided_gradcam , } guided_backprop Optional, String |
xrai |
visualizations |
Zda se mají vrátit vizualizace vysvětlení. Optional, Bool |
True |
attributions |
Určuje, jestli se mají vrátit přisuzování funkcí. Optional, Bool |
False |
confidence_score_threshold_multilabel |
Prahová hodnota skóre spolehlivosti pro výběr hlavních tříd pro generování vysvětlení v klasifikaci s více popisky Optional, Float |
0.5 |
Následující tabulka popisuje podporovaná schémata pro vysvětlení.
Typ | Schéma |
---|---|
Odvození jedné image ve formátu base64 | Dictionary with image_base64 as key and value is base64 encoded image, model_explainability key with True nebo False and xai_parameters dictionary with XAI algorithm specific parameters Required, Json String Works for one or more images |
Každý vstupní obrázek v request_json
níže definovaném kódu je řetězec s kódováním base64 připojený k seznamu request_json["input_data"]["data"]
:
import base64
import json
# Get the details for online endpoint
endpoint = ml_client.online_endpoints.get(name=online_endpoint_name)
sample_image = "./test_image.jpg"
# Define explainability (XAI) parameters
model_explainability = True
xai_parameters = {"xai_algorithm": "xrai",
"visualizations": True,
"attributions": False}
def read_image(image_path):
with open(image_path, "rb") as f:
return f.read()
# Create request json
request_json = {
"input_data": {
"columns": ["image"],
"data": [json.dumps({"image_base64": base64.encodebytes(read_image(sample_image)).decode("utf-8"),
"model_explainability": model_explainability,
"xai_parameters": xai_parameters})],
}
}
request_file_name = "sample_request_data.json"
with open(request_file_name, "w") as request_file:
json.dump(request_json, request_file)
resp = ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name=deployment.name,
request_file=request_file_name,
)
predictions = json.loads(resp)
Výstupní formát (XAI)
Předpovědi vytvořené v koncových bodech modelu se řídí různými schématy v závislosti na typu úlohy. Tato část popisuje formáty výstupních dat pro úlohy klasifikace obrázků s více třídami s více popisky.
Pro případ dvou vstupních obrázků jsou definována následující schémata.
Klasifikace obrázků (binární/více tříd)
Výstupní schéma je stejné jako výše popsané s tím rozdílem, že visualizations
a attributions
hodnoty klíčů jsou zahrnuty, pokud byly tyto klíče nastaveny v True
požadavku.
Pokud model_explainability
je v vstupním požadavku nastavena True
hodnota , visualizations
attributions
bude výstup obsahovat visualizations
a attributions
. Další podrobnosti o těchto parametrech jsou vysvětleny v následující tabulce. Vizualizace a přisuzování se generují vůči třídě, která má nejvyšší skóre pravděpodobnosti.
Výstupní klíč | Popis |
---|---|
visualizations |
Jeden obrázek ve formátu řetězce base64 s typem Optional, String |
attributions |
multidimenzionální pole s skóre přisuzování pixelů obrazce [3, valid_crop_size, valid_crop_size] Optional, List |
[
{
"probs": [
0.006,
9.345e-05,
0.992,
0.003
],
"labels": [
"can",
"carton",
"milk_bottle",
"water_bottle"
],
"visualizations": "iVBORw0KGgoAAAAN.....",
"attributions": [[[-4.2969e-04, -1.3090e-03, 7.7791e-04, ..., 2.6677e-04,
-5.5195e-03, 1.7989e-03],
.
.
.
[-5.8236e-03, -7.9108e-04, -2.6963e-03, ..., 2.6517e-03,
1.2546e-03, 6.6507e-04]]]
}
]
Více popisků klasifikace obrázků
Jediným rozdílem ve výstupním schématu klasifikace více popisků v porovnání s klasifikací s více třídami je, že na každém obrázku může být více tříd, pro které lze vygenerovat vysvětlení. visualizations
Je tedy seznam řetězců obrázků base64 a attributions
je seznam skóre přisuzování pro každou vybranou třídu na základě hodnoty confidence_score_threshold_multilabel
(výchozí hodnota je 0,5).
Pokud model_explainability
je v vstupním požadavku nastavena True
hodnota , visualizations
attributions
bude výstup obsahovat visualizations
a attributions
. Další podrobnosti o těchto parametrech jsou vysvětleny v následující tabulce. Vizualizace a atribuce jsou generovány pro všechny třídy, které mají skóre pravděpodobnosti větší nebo rovno confidence_score_threshold_multilabel
.
Výstupní klíč | Popis |
---|---|
visualizations |
Seznam imagí ve formátu řetězce base64 s typem Optional, String |
attributions |
Seznam multidimenzionálních polí s skóre přisuzování podle pixelů pro každou třídu, kde má každý multidimenzionální pole tvar [3, valid_crop_size, valid_crop_size] Optional, List |
Upozorňující
Při generování vysvětlení online koncového bodu nezapomeňte vybrat pouze několik tříd na základě skóre spolehlivosti, abyste se vyhnuli problémům s vypršením časového limitu koncového bodu nebo použili koncový bod s typem instance GPU. Pokud chcete vygenerovat vysvětlení pro velký počet tříd v klasifikaci více popisků, projděte si poznámkový blok dávkového bodování (SDK v1).
[
{
"probs": [
0.994,
0.994,
0.843,
0.166
],
"labels": [
"can",
"carton",
"milk_bottle",
"water_bottle"
],
"visualizations": ["iVBORw0KGgoAAAAN.....", "iVBORw0KGgoAAAAN......", .....],
"attributions": [
[[[-4.2969e-04, -1.3090e-03, 7.7791e-04, ..., 2.6677e-04,
-5.5195e-03, 1.7989e-03],
.
.
.
[-5.8236e-03, -7.9108e-04, -2.6963e-03, ..., 2.6517e-03,
1.2546e-03, 6.6507e-04]]],
.
.
.
]
}
]
Detekce objektů
Upozorňující
XAI se nepodporuje. Takže se vrátí pouze skóre. Příklad bodování najdete v části online bodování.
Segmentace instancí
Upozorňující
XAI se nepodporuje. Takže se vrátí pouze skóre. Příklad bodování najdete v části online bodování.
Poznámka:
Obrázky použité v tomto článku pocházejí z datové sady Fridge Objects, copyright © Microsoft Corporation a k dispozici v computervision-recipes/01_training_introduction.ipynb v rámci licence MIT.