Schémata dat pro trénování modelů počítačového zpracování obrazu pomocí automatizovaného strojového učení (v1)
PLATÍ PRO: Python SDK azureml v1
Důležité
Některé příkazy Azure CLI v tomto článku používají azure-cli-ml
rozšíření (nebo v1) pro Azure Machine Learning. Podpora rozšíření v1 skončí 30. září 2025. Do tohoto data můžete nainstalovat a používat rozšíření v1.
Doporučujeme přejít na ml
rozšíření (nebo v2) před 30. zářím 2025. Další informace o rozšíření v2 najdete v tématu Rozšíření Azure Machine Learning CLI a Python SDK v2.
Důležité
Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována 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.
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":"AmlDatastore://data_directory/../Image_name.image_format",
"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 LearningRequired, String |
"AmlDatastore://data_directory/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": "AmlDatastore://image_data/Image_01.jpg", "image_details":{"format": "jpg", "width": "400px", "height": "258px"}, "label": "can"}
{"image_url": "AmlDatastore://image_data/Image_02.jpg", "image_details": {"format": "jpg", "width": "397px", "height": "296px"}, "label": "milk_bottle"}
.
.
.
{"image_url": "AmlDatastore://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":"AmlDatastore://data_directory/../Image_name.image_format",
"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 LearningRequired, String |
"AmlDatastore://data_directory/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": "AmlDatastore://image_data/Image_01.jpg", "image_details":{"format": "jpg", "width": "400px", "height": "258px"}, "label": ["can"]}
{"image_url": "AmlDatastore://image_data/Image_02.jpg", "image_details": {"format": "jpg", "width": "397px", "height": "296px"}, "label": ["can","milk_bottle"]}
.
.
.
{"image_url": "AmlDatastore://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":"AmlDatastore://data_directory/../Image_name.image_format",
"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čku -
ymin
= souřadnice y levého horního rohu ohraničujícího rámečku -
xmax
= x souřadnice pravého dolního rohu ohraničujícího rámečku -
ymax
= 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 LearningRequired, String |
"AmlDatastore://data_directory/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": "AmlDatastore://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": "AmlDatastore://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": "AmlDatastore://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 pro segmentaci instance.
{
"image_url":"AmlDatastore://data_directory/../Image_name.image_format",
"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 LearningRequired, String |
"AmlDatastore://data_directory/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": "AmlDatastore://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": "AmlDatastore://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": "AmlDatastore://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 ]]}]}
Formát dat pro odvozování
V této části dokumentujeme formát vstupních dat potřebný k předpovědím při použití nasazeného modelu. Jakýkoli výše uvedený formát obrázku je přijat s typem application/octet-stream
obsahu .
Vstupní formát
Následuje vstupní formát potřebný ke generování predikcí u libovolné úlohy pomocí koncového bodu modelu specifického pro úkol. Po nasazení modelu můžeme pomocí následujícího fragmentu kódu získat předpovědi pro všechny úlohy.
# input image for inference
sample_image = './test_image.jpg'
# load image data
data = open(sample_image, 'rb').read()
# set the content type
headers = {'Content-Type': 'application/octet-stream'}
# if authentication is enabled, set the authorization header
headers['Authorization'] = f'Bearer {key}'
# make the request and display the response
response = requests.post(scoring_uri, data, headers=headers)
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í.
Klasifikace obrázku
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.
{
"filename":"/tmp/tmppjr4et28",
"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.
{
"filename":"/tmp/tmpsdzxlmlm",
"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.
{
"filename":"/tmp/tmpdkg2wkdy",
"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.
{
"filename":"/tmp/tmpi8604s0h",
"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
]
]
}
]
}
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.