Sdílet prostřednictvím


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-mlrozšíř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 mlrozšíř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 Learning
Required, String
"AmlDatastore://data_directory/Image_01.jpg"
image_details Podrobnosti o obrázku
Optional, 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ázku
Optional, String or Positive Integer
"400px" or 400
height Výška obrázku
Optional, String or Positive Integer
"200px" or 200
label Třída nebo popisek obrázku
Required, 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"}

Příklad obrázku pro více tříd klasifikace obrázků

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 Learning
Required, String
"AmlDatastore://data_directory/Image_01.jpg"
image_details Podrobnosti o obrázku
Optional, 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ázku
Optional, String or Positive Integer
"400px" or 400
height Výška obrázku
Optional, String or Positive Integer
"200px" or 200
label Seznam tříd a popisků na obrázku
Required, 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"]}

Příklad obrázku pro více popisků klasifikace obrázků

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 Learning
Required, String
"AmlDatastore://data_directory/Image_01.jpg"
image_details Podrobnosti o obrázku
Optional, 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ázku
Optional, String or Positive Integer
"499px" or 499
height Výška obrázku
Optional, 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čku
Required, String
"cat"
topX Poměr souřadnic x levého horního rohu ohraničujícího rámečku a šířky obrázku
Required, 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ázku
Required, 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ázku
Required, 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ázku
Required, 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}]}

Příklad obrázku pro detekci objektů

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 Learning
Required, String
"AmlDatastore://data_directory/Image_01.jpg"
image_details Podrobnosti o obrázku
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Typ obrázku
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ázku
Optional, String or Positive Integer
"499px" or 499
height Výška obrázku
Optional, 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 masce
Required, String
"cat"
isCrowd Určuje, jestli je maska kolem davu objektů.
Optional, Bool
0
polygon Souřadnice mnohoúhelníku pro objekt
Required, 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 ]]}]}

Příklad segmentace instance

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-streamobsahu .

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.

Další kroky