Share via


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

A KÖVETKEZŐKRE VONATKOZIK:Azure CLI ml extension v2 (aktuális)Python SDK azure-ai-ml v2 (aktuális)

Megtudhatja, hogyan formázhatja JSONL-fájljait adatfelhasználásra automatizált gépi tanulási kísérletekben a számítógépes látási feladatokhoz a betanítás és a 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 bemeneti adatformátumokat vagy sémákat ismerteti a többosztályos képbesoroláshoz, a többrétegű képbesoroláshoz, az objektumészleléshez és a példány szegmentálásához. A JSON Lines végleges betanítási vagy érvényesítési JSON-fájljának mintáját is meg fogjuk adni.

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 a rendszerképeket tartalmazó Azure-előfizetésnek kell lecserélnie. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpen my-resource-group, my-workspacea helyett my-datastoreaz erőforráscsoport nevét, a munkaterület nevét és az adattár nevét kell lecserélni.
path_to_image a teljes elérési útnak kell lennie az adattárban lévő képhez.
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ép típusa (a Párnatá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ép osztálya/címkéje
Required, String
"cat"

Példa egy JSONL-fájlra a többosztályos rendszerképek besorolá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": "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épbesorolásra.

Képbesorolás többcímke

Az alábbiakban egy példa látható az egyes JSON-sorok bemeneti adatformátumára/sémájára a képbesoroláshoz.

{
   "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 a rendszerképeket tartalmazó Azure-előfizetésnek kell lecserélnie. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpen my-resource-group, my-workspacea helyett my-datastoreaz erőforráscsoport nevét, a munkaterület nevét és az adattár nevét kell lecserélni.
path_to_image a teljes elérési útnak kell lennie az adattárban lévő képhez.
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ép típusa (a Párnatá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 Osztályok/címkék listája a képen
Required, List of Strings
["cat","dog"]

Példa egy JSONL-fájlra a többcímke képbesorolá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"]}

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

Objektumészlelés

Az alábbiakban egy JSONL-példafájlt talál 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 a rendszerképeket tartalmazó Azure-előfizetésnek kell lecserélnie. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpen my-resource-group, my-workspacea helyett my-datastoreaz erőforráscsoport nevét, a munkaterület nevét és az adattár nevét kell lecserélni.
path_to_image a teljes elérési útnak kell lennie az adattárban lévő képhez.
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ép típusa (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 mező 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 és a kép magasságának aránya
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 y koordinátájának és a kép magasságá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, kihagyjuk ezt az adott határolókeretet a metrika kiszámításakor.
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 kép az objektumészlelésre.

Példányszegmentálás

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

Az alábbiakban egy példa JSONL-fájlt láthat, például szegmentálást.

{
   "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 a rendszerképeket tartalmazó Azure-előfizetésnek kell lecserélnie. Az Azure-előfizetésekről itt talál további információt. Hasonlóképpen my-resource-group, my-workspacea helyett my-datastoreaz erőforráscsoport nevét, a munkaterület nevét és az adattár nevét kell lecserélni.
path_to_image a teljes elérési útnak kell lennie az adattárban lévő képhez.
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) Az objektum osztálya/címkéje a maszkban
Required, String
"cat"
isCrowd Azt jelzi, hogy a maszk az objektumok 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 a példány szegmentálására.

Adatséma az 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égpont használatával történő előrejelzések létrehozásához szükséges bemeneti formátum.

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

Ez a json egy külső és belső kulcsokat input_datacolumnstartalmazó szótár, data az alábbi táblázatban leírtak szerint. A végpont elfogad egy json-sztringet a fenti formátumban, és a pontozási szkript által igényelt minta adatkeretté alakítja. A json szakasz minden request_json["input_data"]["data"] bemeneti képe 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 oszlopot image fogad el oszlopnévként.
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 végrehajtott 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éposztályozá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éjének és a bemeneti kép valószínűségi pontszámainak értékét 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ázhatóságát ismertető szakaszt.

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

Képbesorolás többcímkés

A többcímkés képbesorolás esetén a modellvégpont a címkéket és azok valószínűségeit 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öbbcímkés besorolás magyarázhatósági bemeneti és kimeneti sémájára vonatkozó további információkért lásd a képbesorolás többcímkés besorolásának magyarázhatóságát ismertető szakaszt.

[
   {
      "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 skálázott bal felső és jobb alsó koordinátákkal, valamint a dobozcímkével és a megbízhatósági pontszámmal.

[
   {
      "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 példányszegmentálásban a kimenet több mezőből áll, a bal felső és a jobb alsó koordinátákkal, címkékkel, megbízhatósági pontszámokkal és sokszögekkel (nem maszkokkal). Itt a sokszögértékek a sémaszakaszban ismertetett formátumban vannak.

[
    {
       "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 az 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ásiszint-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 besoroláshoz és a többcímkés besoroláshoz támogatott. Az online végpont magyarázatainak létrehozásakor, ha időtúllépési problémákba ütközik, használjon kötegelt pontozási jegyzetfüzetet (SDK v1) a magyarázatok létrehozásához.

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 extra magyarázhatósággal kapcsolatos paramétert a bemeneti sémában, és le kell kérnünk a magyarázatok vizualizációit és/vagy a hozzárendelési pontszám mátrixait (képpontszintű magyarázatokat).

Támogatott magyarázó módszerek:

Bemeneti formátum (XAI)

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

{
   "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 szeretne létrehozni, akár csak a pontozást
Optional, Bool
False
xai_parameters Ha model_explainability igaz, akkor xai_parameters egy szótár, amely magyarázó algoritmussal kapcsolatos paramétereket tartalmaz a következővel xai_algorithm: , visualizations, attributions ask keys.
Optional, Dictionary
Ha xai_parameters nincs átadva, akkor a xrai magyarázó algoritmus az alapértelmezett értékkel 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_gradcam, guided_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 generáljon 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ékként használt image_base64 szótár base64 kódolású kép,
model_explainability key with True or False and xai_parameters dictionary with XAI algorithm specific parameters
Required, Json String
Works for one or more images

Az alábbi kódban definiált bemeneti kép minden bemeneti képe 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 végrehajtott 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 lemezké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 , azzal a különbségtel, hogy visualizations a és attributions a kulcsértékeket is tartalmazza, ha ezek a kulcsok a kérelemben lettek beállítva True .

Ha model_explainabilitya , attributionsvisualizationsértékre van állítva True a bemeneti kérelemben, akkor a kimenet a következő leszvisualizations: és attributions. A paraméterekkel kapcsolatos további részleteket az alábbi táblázat ismerteti. A vizualizációk és a hozzárendelések a legnagyobb valószínűségi pontszámmal rendelkező osztályon jönnek létre.

Kimeneti kulcs Description
visualizations Egy kép base64 sztringformátumban, típussal
Optional, String
attributions többdimenziós tömb képpontok alapján, alakzatok hozzárendelési pontszámaival [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]]]
    }
]

Képbesorolás többcímkés

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. visualizations Tehát a base64 képsztringek listája, és attributions az egyes kijelölt osztályok hozzárendelési pontszámainak listája az confidence_score_threshold_multilabel alapján (az alapértelmezett érték 0,5).

Ha model_explainabilitya , attributionsvisualizationsértékre van állítva True a bemeneti kérelemben, akkor a kimenet a következő leszvisualizations: és attributions. A paraméterekkel kapcsolatos további részleteket az alábbi táblázat ismerteti. A vizualizációk és a hozzárendelések az összes olyan osztályhoz létrejönnek, amelyek valószínűségi pontszáma nagyobb vagy egyenlő.confidence_score_threshold_multilabel

Kimeneti kulcs Description
visualizations A base64 típusú sztringformátumú képek listája
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 alakzatból áll [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 használja a végpontot GPU-példánytípussal. A többcímkés besorolású osztályok nagy számával kapcsolatos magyarázatok létrehozásához 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

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

Példányszegmentálás

Figyelmeztetés

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

Megjegyzés

A cikkben használt képek a Microsoft Corporation, © a Hűtőszekrény objektumok adatkészletbő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