Megosztás a következőn keresztül:


Adatséma a számítógépes látásmodellek automatizált gépi tanulással való betanítása érdekében

ÉRVÉNYES:Azure CLI ml-bővítmény v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Megtudhatja, hogyan formázhatja JSONL-fájljait adatfelhasználás céljából automatizált gépi tanulási kísérletekben számítógépes látási feladatokhoz a betanítás és következtetés során.

Adatséma betanításhoz

Az Azure Machine Learning AutoML for Images JSONL (JSON Lines) formátumban történő előkészítéséhez bemeneti képadatokra van szükség. Ez a szakasz a többosztályos képbesorolás, a többcímke képbesorolása, az objektumészlelés és a példányszegmentálás bemeneti adatformátumát vagy sémáját ismerteti. A végleges betanítási vagy érvényesítési JSON-sorok fájlját is megadjuk.

Képbesorolás (bináris/többosztályos)

Bemeneti adatformátum/séma az egyes JSON-sorokban:

{
   "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",
}
Kulcs Leírás Példa
image_url Kép helye az Azure Machine Learning-adattárban.
my-subscription-id helyett az Azure-előfizetést kell lecserélni, ahol a rendszerképek találhatók. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpenmy-resource-group, my-workspacemy-datastore az erőforráscsoport neve, a munkaterület neve és az adattár neve is lecserélhető.
path_to_image az adattár teljes képelérési útvonalának kell lennie.
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 Kép részletei
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Képtípus (a Párnatár összes elérhető képformátuma támogatott)
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 A kép szélessége
Optional, String or Positive Integer
"400px" or 400
height A kép magassága
Optional, String or Positive Integer
"200px" or 200
label A kép osztálya/címkéje
Required, String
"cat"

Példa egy JSONL-fájlra a többosztályos rendszerkép-besoroláshoz:

{"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"}

Példa kép a többosztályos képosztályozásra.

Többcímke képbesorolása

Az alábbiakban egy példa látható a képosztályozáshoz használt JSON-sorok bemeneti adatformátumára/sémájára.

{
   "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"
        
   ]
}
Kulcs Leírás Példa
image_url Kép helye az Azure Machine Learning-adattárban.
my-subscription-id helyett az Azure-előfizetést kell lecserélni, ahol a rendszerképek találhatók. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpenmy-resource-group, my-workspacemy-datastore az erőforráscsoport neve, a munkaterület neve és az adattár neve is lecserélhető.
path_to_image az adattár teljes képelérési útvonalának kell lennie.
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 Kép részletei
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Képtípus (a Párna könyvtárban elérhető összes képformátum támogatott)
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 A kép szélessége
Optional, String or Positive Integer
"400px" or 400
height A kép magassága
Optional, String or Positive Integer
"200px" or 200
label A képen szereplő osztályok/címkék listája
Required, List of Strings
["cat","dog"]

Példa egy JSONL-fájlra a többcímke képosztályozásához:

{"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"]}

Példa kép a többcímke képbesorolására.

Objektumészlelés

Az alábbiakban egy példa JSONL-fájlt láthat az objektumészleléshez.

{
   "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"
      },
      "..."
   ]
}

Itt

  • xmin = a határolókeret bal felső sarkának x koordinátája
  • ymin = a határolókeret bal felső sarkának y koordinátája
  • xmax = a határolókeret jobb alsó sarkának x koordinátája
  • ymax = a határolókeret jobb alsó sarkának y koordinátája
Kulcs Leírás Példa
image_url Kép helye az Azure Machine Learning-adattárban.
my-subscription-id helyett az Azure-előfizetést kell lecserélni, ahol a rendszerképek találhatók. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpenmy-resource-group, my-workspacemy-datastore az erőforráscsoport neve, a munkaterület neve és az adattár neve is lecserélhető.
path_to_image az adattár teljes képelérési útvonalának kell lennie.
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 Kép részletei
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Képtípus (a Párnatárban elérhető összes képformátum támogatott. A YOLO esetében azonban csak az opencv által engedélyezett képformátumok támogatottak)
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 A kép szélessége
Optional, String or Positive Integer
"499px" or 499
height A kép magassága
Optional, String or Positive Integer
"665px" or 665
label (külső kulcs) Határolókeretek listája, ahol minden doboz a bal felső és a jobb alsó koordináták szótára 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 (belső kulcs) Az objektum osztálya/címkéje a határolókeretben
Required, String
"cat"
topX A határolókeret bal felső sarkának x koordinátájának és a kép szélességének aránya
Required, Float in the range [0,1]
0.260
topY A határolókeret bal felső sarkának y koordinátájának aránya és a kép magassága
Required, Float in the range [0,1]
0.406
bottomX A határolókeret jobb alsó sarkának x koordinátájának és a kép szélességének aránya
Required, Float in the range [0,1]
0.735
bottomY A határolókeret jobb alsó sarkának és a kép magasságának y koordinátájának aránya
Required, Float in the range [0,1]
0.701
isCrowd Azt jelzi, hogy a határolókeret az objektumok tömegében van-e. Ha ez a speciális jelző be van állítva, a metrikák kiszámításakor kihagyjuk ezt az adott határolókeretet.
Optional, Bool
0

Példa egy JSONL-fájlra az objektumészleléshez:

{"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}]}

Példa az objektumészlelésre.

Példányszegmentálás

A szegmentálás esetében az automatizált gépi tanulás például csak a sokszöget támogatja bemenetként és kimenetként, maszkok nélkül.

Az alábbi példa egy JSONL-fájl, például szegmentálás.

{
   "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"]]
      }
   ]
}
Kulcs Leírás Példa
image_url Kép helye az Azure Machine Learning-adattárban.
my-subscription-id helyett az Azure-előfizetést kell lecserélni, ahol a rendszerképek találhatók. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpenmy-resource-group, my-workspacemy-datastore az erőforráscsoport neve, a munkaterület neve és az adattár neve is lecserélhető.
path_to_image az adattár teljes képelérési útvonalának kell lennie.
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 Kép részletei
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Lemezkép típusa
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 A kép szélessége
Optional, String or Positive Integer
"499px" or 499
height A kép magassága
Optional, String or Positive Integer
"665px" or 665
label (külső kulcs) A maszkok listája, ahol az egyes maszkok a 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 (belső kulcs) A maszkban lévő objektum osztálya/címkéje
Required, String
"cat"
isCrowd Azt jelzi, hogy a maszk a tárgyak tömegében van-e
Optional, Bool
0
polygon Az objektum sokszög koordinátái
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élda egy JSONL-fájlra a példányszegmentáláshoz:

{"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 ]]}]}

Példa példa a példány szegmentálására.

Adatséma online pontozáshoz

Ebben a szakaszban dokumentáljuk az üzembe helyezett modellel történő előrejelzéshez szükséges bemeneti adatformátumot.

Bemeneti formátum

A következő JSON a tevékenységspecifikus modellvégpontot használó tevékenységek előrejelzéseinek létrehozásához szükséges bemeneti formátum.

{
   "input_data": {
      "columns": [
         "image"
      ],
      "data": [
         "image_in_base64_string_format"
      ]
   }
}

Ez a json egy szótár külső kulccsal input_data és belső kulcsokkal columns, data az alábbi táblázatban leírtak szerint. A végpont elfogad egy json-sztringet a fenti formátumban, és átalakítja a pontozási szkript által megkövetelt minták adatkeretébe. A json szakasz minden bemeneti képe request_json["input_data"]["data"] egy base64 kódolású sztring.

Kulcs Leírás
input_data
(külső kulcs)
Ez egy külső kulcs a JSON-kérelemben. input_data egy olyan szótár, amely fogadja a bemeneti képmintákat
Required, Dictionary
columns
(belső kulcs)
Adatkeret létrehozásához használandó oszlopnevek. Csak egy oszlopnevet tartalmazó image oszlopot fogad el.
Required, List
data
(belső kulcs)
Base64 kódolású rendszerképek listája
Required, List

Az mlflow-modell üzembe helyezése után az alábbi kódrészlet használatával előrejelzéseket kaphatunk az összes tevékenységhez.

# 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,
)

Kimeneti formátum

A modellvégpontokon készített előrejelzések a tevékenység típusától függően eltérő struktúrát követnek. Ez a szakasz a többosztályos, többcímkés képbesorolási, objektumészlelési és példányszegmentálási feladatok kimeneti adatformátumait ismerteti.

A következő sémák akkor alkalmazhatók, ha a bemeneti kérelem egy képet tartalmaz.

Képbesorolás (bináris/többosztályos)

A képbesorolás végpontja az adathalmaz összes címkéit és a bemeneti kép valószínűségi pontszámait adja vissza az alábbi formátumban. visualizations és attributions a magyarázhatósághoz kapcsolódnak, és ha a kérés csak pontozásra vonatkozik, ezek a kulcsok nem lesznek belefoglalva a kimenetbe. A képbesorolás magyarázhatósági bemeneti és kimeneti sémájára vonatkozó további információkért tekintse meg a képbesorolás magyarázatát ismertető szakaszt.

[
   {
      "probs": [
         2.098e-06,
         4.783e-08,
         0.999,
         8.637e-06
      ],
      "labels": [
         "can",
         "carton",
         "milk_bottle",
         "water_bottle"
      ]
   }
]

Többcímke képbesorolása

A többcímke képbesorolása esetén a modellvégpont a címkéket és azok valószínűségét adja vissza. visualizations és attributions a magyarázhatósághoz kapcsolódnak, és ha a kérés csak pontozásra vonatkozik, ezek a kulcsok nem lesznek belefoglalva a kimenetbe. A többfeliratos besorolás magyarázhatósági bemeneti és kimeneti sémájára vonatkozó további információkért tekintse meg a képbesorolás többcímkés szakaszának magyarázhatóságát.

[
   {
      "probs": [
         0.997,
         0.960,
         0.982,
         0.025
      ],
      "labels": [
         "can",
         "carton",
         "milk_bottle",
         "water_bottle"
      ]
   }
]

Objektumészlelés

Az objektumészlelési modell több dobozt ad vissza a bal felső és a jobb alsó skálázású koordinátákkal, valamint a dobozcímkék és a megbízhatósági pontszámokkal.

[
   {
      "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
         }
      ]
   }
]

Példányszegmentálás

A kimenet például több mezőből áll, amelyek bal felső és jobb alsó koordinátái, címkéi, megbízhatósági pontszámai és sokszögei (nem maszkok). Itt a sokszögértékek megegyeznek a sémaszakaszban tárgyalt formátummal.

[
    {
       "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
                ]
             ]
          }
       ]
    }
]

Adatformátum online pontozáshoz és magyarázhatósághoz (XAI)

Fontos

Ezek a beállítások jelenleg nyilvános előzetes verzióban érhetők el. Ezek szolgáltatásszint-szerződés nélkül érhetők el. Előfordulhat, hogy néhány funkció nem támogatott, vagy korlátozott képességekkel rendelkezik. További információ: Kiegészítő használati feltételek a Microsoft Azure előzetes verziójú termékeihez.

Figyelmeztetés

A magyarázhatóság csak a többosztályos és a többcímkés besorolás esetében támogatott. Amikor magyarázatokat hoz létre az online végponton, ha időtúllépési problémákat tapasztal, a kötegelt pontozási jegyzetfüzet (SDK v1) használatával hozhat létre magyarázatokat.

Ebben a szakaszban dokumentáljuk az előrejelzések készítéséhez és az előrejelzett osztály/osztályok magyarázatának létrehozásához szükséges bemeneti adatformátumot egy üzembe helyezett modell használatával. A magyarázhatósághoz nincs szükség külön üzembe helyezésre. Ugyanez a végpont használható az online pontozáshoz magyarázatok létrehozásához. Csak át kell adnunk néhány további magyarázhatósághoz kapcsolódó paramétert a bemeneti sémában, és be kell szereznünk a magyarázatok és/vagy a hozzárendelési pontszám mátrixainak vizualizációit (képpontszintű magyarázatok).

Támogatott magyarázó módszerek:

Bemeneti formátum (XAI)

Az alábbi bemeneti formátumok támogatják az előrejelzések és magyarázatok létrehozását bármely besorolási feladathoz feladatspecifikus modellvégpont használatával. A modell üzembe helyezése után az alábbi sémával kaphatunk előrejelzéseket és magyarázatokat.

{
   "input_data": {
      "columns": ["image"],
      "data": [json.dumps({"image_base64": "image_in_base64_string_format", 
                           "model_explainability": True,
                           "xai_parameters": {}
                         })
      ]
   }
}

A kép mellett két további paraméterre (model_explainability és xai_parameters) van szükség a bemeneti sémában a magyarázatok létrehozásához.

Kulcs Leírás Alapértelmezett érték
image_base64 bemeneti kép base64 formátumban
Required, String
-
model_explainability Akár magyarázatokat hoz létre, akár csak a pontozást
Optional, Bool
False
xai_parameters Ha model_explainability igaz, akkor xai_parameters a magyarázó algoritmushoz kapcsolódó paramétereket tartalmazó szótár a következővelxai_algorithm: , visualizationsattributions kérdezze meg a kulcsokat.
Optional, Dictionary
Ha xai_parameters nincs átadva, akkor a xrai magyarázó algoritmus az alapértelmezett értékével lesz használva
{"xai_algorithm": "xrai", "visualizations": True, "attributions": False}
xai_algorithm A használandó magyarázó algoritmus neve. A támogatott XAI-algoritmusok a következők: {xrai, integrated_gradients, , guided_gradcamguided_backprop}
Optional, String
xrai
visualizations A magyarázatok vizualizációinak visszaadása.
Optional, Bool
True
attributions A funkció-hozzárendelések visszaadása.
Optional, Bool
False
confidence_score_threshold_multilabel A megbízhatósági pontszám küszöbértéke a felső osztályok kiválasztásához, hogy magyarázatokat hozzon létre a többcímkés besorolásban.
Optional, Float
0.5

Az alábbi táblázat a magyarázhatóság támogatott sémáit ismerteti.

Típus Séma
Következtetés egy képre base64 formátumban A kulcsként és értékkel rendelkező image_base64 szótár alap64 kódolású rendszerkép,
model_explainability kulcs igaz vagy hamis xai_parameters és szótár XAI-algoritmusspecifikus paraméterekkel
Required, Json String
Works for one or more images

Az alábbi kódban definiált bemeneti kép request_jsonegy base64 kódolású sztring, amely hozzá van fűzve a listához 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)

Kimeneti formátum (XAI)

A modellvégpontokon készített előrejelzések a tevékenység típusától függően eltérő sémát követnek. Ez a szakasz a többosztályos, többcímkés képbesorolási feladatok kimeneti adatformátumait ismerteti.

Két bemeneti rendszerkép esetében az alábbi sémák vannak definiálva.

Képbesorolás (bináris/többosztályos)

A kimeneti séma megegyezik a fent leírtakkal, kivéve, ha visualizations attributions ezek a kulcsok True szerepelnek a kérelemben.

Ha a bemeneti kérelemben az érték van beállítvaTrue, akkor a kimenet a visualizations következő lesz: és attributions. visualizationsattributions model_explainability Ezekről a paraméterekről az alábbi táblázatban olvashat bővebben. A vizualizációk és a hozzárendelések olyan osztályon jönnek létre, amely a legnagyobb valószínűségi pontszámmal rendelkezik.

Kimeneti kulcs Leírás
visualizations Egy kép base64-es sztringformátumban, típussal
Optional, String
attributions többdimenziós tömb képpontalapú hozzárendelési pontszámokkal [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]]]
    }
]

Többcímke képbesorolása

A többcímke-besorolás kimeneti sémájában az egyetlen különbség a többosztályos besoroláshoz képest, hogy minden képen több osztály is lehet, amelyek magyarázatai létrehozhatók. Ez tehát a base64 képsztringek listája, visualizations és attributions a hozzárendelési pontszámok listája az egyes kijelölt osztályokkal szemben a confidence_score_threshold_multilabel 0,5-ös érték alapján.

Ha a bemeneti kérelemben az érték van beállítvaTrue, akkor a kimenet a visualizations következő lesz: és attributions. visualizationsattributions model_explainability Ezekről a paraméterekről az alábbi táblázatban olvashat bővebben. A vizualizációk és a hozzárendelések az összes olyan osztályhoz létrejönnek, amelyeknél a valószínűségi pontszám nagyobb vagy egyenlő confidence_score_threshold_multilabel.

Kimeneti kulcs Leírás
visualizations Base64 sztringformátumú képek listája típussal
Optional, String
attributions Többdimenziós tömbök listája az egyes osztályokhoz tartozó képpontalapú hozzárendelési pontszámokkal, ahol minden többdimenziós tömb alakzat [3, valid_crop_size, valid_crop_size]
Optional, List

Figyelmeztetés

Miközben magyarázatokat hoz létre az online végponton, győződjön meg arról, hogy csak néhány osztályt választ ki a megbízhatósági pontszám alapján, hogy elkerülje az időtúllépési problémákat a végponton, vagy gpu-példánytípussal használja a végpontot. Ha sok osztály magyarázatát szeretné létrehozni többcímkés besorolásban, tekintse meg a kötegelt pontozási jegyzetfüzetet (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]]],
                        .
                        .
                        .
                       ]
    }
]

Objektumészlelés

Figyelmeztetés

A XAI nem támogatott. Tehát csak a pontszámok lesznek visszaadva. A pontozási példákért tekintse meg az online pontozási szakaszt.

Példányszegmentálás

Figyelmeztetés

A XAI nem támogatott. Tehát csak a pontszámok lesznek visszaadva. A pontozási példákért tekintse meg az online pontozási szakaszt.

Feljegyzés

A cikkben használt képek a Fridge Objects adatkészletből, a Microsoft Corporation szerzői jogából © származnak, és a computervision-recipes/01_training_introduction.ipynb címen érhetők el az MIT licenc alapján.

Következő lépések