Share via


Otomatik makine öğrenmesi ile görüntü işleme modellerini eğitmek için veri şemaları

ŞUNLAR IÇIN GEÇERLIDIR:Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Eğitim ve çıkarım sırasında görüntü işleme görevleri için otomatik ML denemelerinde JSONL dosyalarınızı veri tüketimi için biçimlendirmeyi öğrenin.

Eğitim için veri şeması

Görüntüler için Azure Machine Learning AutoML, giriş görüntüsü verilerinin JSONL (JSON Çizgileri) biçiminde hazırlanmasını gerektirir. Bu bölümde, çok sınıflı görüntü sınıflandırması, görüntü sınıflandırması çok etiketli, nesne algılama ve örnek segmentasyonu için giriş veri biçimleri veya şeması açıklanmaktadır. Ayrıca son eğitim veya doğrulama JSON Satırları dosyasının bir örneğini de sağlayacağız.

Görüntü sınıflandırması (ikili/çok sınıflı)

Her JSON Satırına veri biçimi/şeması girin:

{
   "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",
}
Anahtar Description Örnek
image_url Azure Machine Learning veri deposunda görüntü konumu.
my-subscription-id görüntülerin bulunduğu Azure aboneliğiyle değiştirilmelidir. Azure abonelikleri hakkında daha fazla bilgiyi burada bulabilirsiniz. Benzer şekilde my-resource-group, , my-datastoremy-workspacesırasıyla kaynak grubu adı, çalışma alanı adı ve veri deposu adı ile değiştirilmelidir.
path_to_image veri deposundaki görüntünün tam yolu olmalıdır.
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 Görüntü ayrıntıları
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Görüntü türü ( Yastık kitaplığındaki tüm kullanılabilir Görüntü biçimleri desteklenir)
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 Resmin genişliği
Optional, String or Positive Integer
"400px" or 400
height Resmin yüksekliği
Optional, String or Positive Integer
"200px" or 200
label Görüntünün sınıfı/etiketi
Required, String
"cat"

Çok sınıflı görüntü sınıflandırması için JSONL dosyası örneği:

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

Çok sınıflı görüntü sınıflandırması için görüntü örneği.

Görüntü sınıflandırması çok etiketli

Aşağıda, görüntü sınıflandırması için her JSON Satırında giriş veri biçimi/şeması örneği verilmiştir.

{
   "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"
        
   ]
}
Anahtar Description Örnek
image_url Azure Machine Learning veri deposunda görüntü konumu.
my-subscription-id görüntülerin bulunduğu Azure aboneliğiyle değiştirilmelidir. Azure abonelikleri hakkında daha fazla bilgiyi burada bulabilirsiniz. Benzer şekilde my-resource-group, , my-datastoremy-workspacesırasıyla kaynak grubu adı, çalışma alanı adı ve veri deposu adı ile değiştirilmelidir.
path_to_image veri deposundaki görüntünün tam yolu olmalıdır.
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 Görüntü ayrıntıları
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Görüntü türü ( Yastık kitaplığında bulunan tüm Görüntü biçimleri desteklenir)
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 Resmin genişliği
Optional, String or Positive Integer
"400px" or 400
height Resmin yüksekliği
Optional, String or Positive Integer
"200px" or 200
label Görüntüdeki sınıfların/etiketlerin listesi
Required, List of Strings
["cat","dog"]

Görüntü Sınıflandırması Çoklu etiketi için JSONL dosyası örneği:

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

Çok etiketli görüntü sınıflandırması için görüntü örneği.

Nesne algılama

Aşağıda, nesne algılama için örnek bir JSONL dosyası verilmiştir.

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

Burada

  • xmin = sınırlayıcı kutunun sol üst köşesinin x koordinatı
  • ymin = sınırlayıcı kutunun sol üst köşesinin y koordinatı
  • xmax = sınırlayıcı kutunun sağ alt köşesinin x koordinatı
  • ymax = sınırlayıcı kutunun sağ alt köşesinin y koordinatı
Anahtar Description Örnek
image_url Azure Machine Learning veri deposunda görüntü konumu.
my-subscription-id görüntülerin bulunduğu Azure aboneliğiyle değiştirilmelidir. Azure abonelikleri hakkında daha fazla bilgiyi burada bulabilirsiniz. Benzer şekilde my-resource-group, , my-datastoremy-workspacesırasıyla kaynak grubu adı, çalışma alanı adı ve veri deposu adı ile değiştirilmelidir.
path_to_image veri deposundaki görüntünün tam yolu olmalıdır.
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 Görüntü ayrıntıları
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Görüntü türü ( Pillow kitaplığında bulunan tüm Görüntü biçimleri desteklenir. Ancak YOLO için yalnızca opencv tarafından izin verilen görüntü biçimleri desteklenir)
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 Resmin genişliği
Optional, String or Positive Integer
"499px" or 499
height Resmin yüksekliği
Optional, String or Positive Integer
"665px" or 665
label (dış anahtar) Her kutunun sol üst ve sağ alt koordinatlarının sözlüğü olduğu sınırlayıcı kutuların label, topX, topY, bottomX, bottomY, isCrowd listesi
Required, List of dictionaries
[{"label": "cat", "topX": 0.260, "topY": 0.406, "bottomX": 0.735, "bottomY": 0.701, "isCrowd": 0}]
label (iç tuş) Sınırlayıcı kutudaki nesnenin sınıfı/etiketi
Required, String
"cat"
topX Sınırlayıcı kutunun sol üst köşesinin x koordinatının oranı ve görüntünün genişliği
Required, Float in the range [0,1]
0.260
topY Sınırlayıcı kutunun sol üst köşesinin y koordinatının oranı ve resmin yüksekliği
Required, Float in the range [0,1]
0.406
bottomX Sınırlayıcı kutunun sağ alt köşesinin x koordinatının oranı ve görüntünün genişliği
Required, Float in the range [0,1]
0.735
bottomY Sınırlayıcı kutunun sağ alt köşesinin y koordinatının oranı ve görüntünün yüksekliği
Required, Float in the range [0,1]
0.701
isCrowd Sınırlayıcı kutunun nesne kalabalığının etrafında olup olmadığını gösterir. Bu özel bayrak ayarlanırsa, ölçümü hesaplarken bu sınırlayıcı kutuyu atlarız.
Optional, Bool
0

Nesne algılama için JSONL dosyası örneği:

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

Nesne algılama için görüntü örneği.

Örneği segmentlere ayırma

Örneğin segmentlere ayırma için otomatik ML yalnızca giriş ve çıkış olarak çokgeni destekler, maskeleri desteklemez.

Aşağıda segmentasyon gibi örnek bir JSONL dosyası verilmiştir.

{
   "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"]]
      }
   ]
}
Anahtar Description Örnek
image_url Azure Machine Learning veri deposunda görüntü konumu.
my-subscription-id görüntülerin bulunduğu Azure aboneliğiyle değiştirilmelidir. Azure abonelikleri hakkında daha fazla bilgiyi burada bulabilirsiniz. Benzer şekilde my-resource-group, , my-datastoremy-workspacesırasıyla kaynak grubu adı, çalışma alanı adı ve veri deposu adı ile değiştirilmelidir.
path_to_image veri deposundaki görüntünün tam yolu olmalıdır.
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 Görüntü ayrıntıları
Optional, Dictionary
"image_details":{"format": "jpg", "width": "400px", "height": "258px"}
format Görüntü türü
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 Resmin genişliği
Optional, String or Positive Integer
"499px" or 499
height Resmin yüksekliği
Optional, String or Positive Integer
"665px" or 665
label (dış anahtar) Her maskenin bir sözlüğü olduğu maskelerin listesi 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 (iç tuş) Maskedeki nesnenin sınıfı/etiketi
Required, String
"cat"
isCrowd Maskenin nesne kalabalığının etrafında olup olmadığını gösterir
Optional, Bool
0
polygon Nesne için çokgen koordinatlar
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]]

Örnek Segmentasyonu için JSONL dosyası örneği:

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

Örnek segmentasyonu için görüntü örneği.

Çevrimiçi puanlama için veri şeması

Bu bölümde, dağıtılan modeli kullanarak tahminde bulunmak için gereken giriş veri biçimini belgeleyeceğiz.

Giriş biçimi

Aşağıdaki JSON, göreve özgü model uç noktasını kullanarak herhangi bir görevde tahmin oluşturmak için gereken giriş biçimidir.

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

Bu json, aşağıdaki tabloda açıklandığı gibi dış anahtar input_data ve iç tuşları columnsdata olan bir sözlüktür. Uç nokta, yukarıdaki biçimde bir json dizesini kabul eder ve puanlama betiğinin gerektirdiği örneklerden oluşan bir veri çerçevesine dönüştürür. json bölümündeki her giriş görüntüsü request_json["input_data"]["data"]base64 ile kodlanmış bir dizedir.

Anahtar Description
input_data
(dış anahtar)
JSON isteğinde bir dış anahtardır. input_data giriş görüntüsü örneklerini kabul eden bir sözlüktür
Required, Dictionary
columns
(iç tuş)
Veri çerçevesi oluşturmak için kullanılacak sütun adları. Sütun adı olarak image yalnızca bir sütun kabul eder.
Required, List
data
(iç tuş)
Base64 ile kodlanmış görüntülerin listesi
Required, List

Mlflow modelini dağıttığımızda, tüm görevler için tahminler almak için aşağıdaki kod parçacığını kullanabiliriz.

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

Çıkış biçimi

Model uç noktaları üzerinde yapılan tahminler, görev türüne bağlı olarak farklı bir yapıyı izler. Bu bölümde, çok sınıflı, çok etiketli görüntü sınıflandırması, nesne algılama ve örnek segmentasyon görevleri için çıkış veri biçimleri araştırılır.

Giriş isteği bir görüntü içerdiğinde aşağıdaki şemalar geçerlidir.

Görüntü sınıflandırması (ikili/çok sınıflı)

Görüntü sınıflandırması uç noktası, veri kümesindeki tüm etiketleri ve giriş görüntüsü için olasılık puanlarını aşağıdaki biçimde döndürür. visualizations ve attributions açıklanabilirlik ile ilgilidir ve istek yalnızca puanlama için olduğunda, bu anahtarlar çıkışa dahil edilmeyecektir. Görüntü sınıflandırması için açıklanabilirlik girişi ve çıkış şeması hakkında daha fazla bilgi için görüntü sınıflandırması için açıklanabilirlik bölümüne bakın.

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

Görüntü sınıflandırması çok etiketli

Çok etiketli görüntü sınıflandırması için model uç noktası etiketleri ve olasılıklarını döndürür. visualizations ve attributions açıklanabilirlik ile ilgilidir ve istek yalnızca puanlama için olduğunda, bu anahtarlar çıkışa dahil edilmeyecektir. Çok etiketli sınıflandırma için açıklanabilirlik girişi ve çıkış şeması hakkında daha fazla bilgi için, görüntü sınıflandırması çok etiketli için açıklanabilirlik bölümüne bakın.

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

Nesne algılama

Nesne algılama modeli, ölçeklendirilmiş sol üst ve sağ alt koordinatlarının yanı sıra kutu etiketi ve güvenilirlik puanıyla birlikte birden çok kutu döndürür.

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

Örneği segmentlere ayırma

Örnek segmentasyonunda çıkış, ölçeklendirilmiş sol üst ve sağ alt koordinatları, etiketleri, güvenilirlik puanları ve çokgenleri (maskeler değil) ile birden çok kutudan oluşur. Burada, çokgen değerler şema bölümünde ele aldığımız biçimdedir.

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

Çevrimiçi Puanlama ve Açıklanabilirlik için veri biçimi (XAI)

Önemli

Bu ayarlar şu anda genel önizleme aşamasındadır. Hizmet düzeyi sözleşmesi olmadan sağlanırlar. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir. Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Uyarı

Açıklanabilirlik yalnızca çok sınıflı sınıflandırma ve çok etiketli sınıflandırma için desteklenir. Çevrimiçi uç noktada açıklamalar oluştururken zaman aşımı sorunlarıyla karşılaşırsanız, açıklama oluşturmak için toplu puanlama not defterini (SDK v1) kullanın.

Bu bölümde, tahminde bulunmak için gereken giriş veri biçimini belgeleyeceğiz ve dağıtılan modeli kullanarak tahmin edilen sınıf/sınıflar için açıklamalar oluşturacağız. Açıklanabilirlik için ayrı bir dağıtım gerekmez. Çevrimiçi puanlama için aynı uç nokta, açıklamalar oluşturmak için kullanılabilir. Giriş şemasında fazladan açıklanabilirlik ile ilgili bazı parametreleri geçirmemiz ve açıklamaların ve/veya ilişkilendirme puan matrislerinin (piksel düzeyi açıklamaları) görselleştirmelerini almalıyız.

Desteklenen açıklanabilirlik yöntemleri:

Giriş biçimi (XAI)

Aşağıdaki giriş biçimleri, göreve özgü model uç noktasını kullanarak herhangi bir sınıflandırma görevinde tahminler ve açıklamalar oluşturmak için desteklenir. Modeli dağıttığımızda tahminleri ve açıklamaları almak için aşağıdaki şemayı kullanabiliriz.

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

Görüntüyle birlikte, giriş şemasında açıklama oluşturmak için gereken iki ek parametre (model_explainability ve xai_parameters) vardır.

Anahtar Description Varsayılan değer
image_base64 base64 biçiminde giriş görüntüsü
Required, String
-
model_explainability Açıklamaların mı yoksa yalnızca puanlamanın mı oluşturulacağı
Optional, Bool
False
xai_parameters True isemodel_explainability, xai_parameters ile açıklanabilirlik algoritmasıyla xai_algorithmvisualizationsilgili parametreleri içeren bir sözlüktür, attributions anahtarlara sorun.
Optional, Dictionary
xai_parameters Geçirilmezse, xrai açıklanabilirlik algoritması varsayılan değeriyle kullanılır
{"xai_algorithm": "xrai", "visualizations": True, "attributions": False}
xai_algorithm Kullanılacak Açıklanabilirlik algoritmasının adı. Desteklenen XAI algoritmaları şunlardır: {xrai, integrated_gradients, guided_gradcam, guided_backprop}
Optional, String
xrai
visualizations Açıklamaların görselleştirmelerinin döndürülip döndürülmeyeceği.
Optional, Bool
True
attributions Özellik ilişkilendirmelerinin iade edilip edilmeyeceği.
Optional, Bool
False
confidence_score_threshold_multilabel Çok etiketli sınıflandırmada açıklamalar oluşturmak üzere en üst sınıfları seçmek için güvenilirlik puanı eşiği.
Optional, Float
0.5

Aşağıdaki tabloda, açıklanabilirlik için desteklenen şemalar açıklanmaktadır.

Tür Şema
Base64 biçiminde tek bir görüntüde çıkarım image_base64 Anahtar ve değer olarak ile sözlük base64 kodlanmış görüntüdür,
model_explainability Doğru veya Yanlış ile anahtar ve xai_parameters XAI algoritmasına özgü parametreler içeren sözlük
Required, Json String
Works for one or more images

aşağıdaki kodda tanımlanan içindeki request_jsonher giriş görüntüsü, listeye request_json["input_data"]["data"]eklenen base64 kodlanmış bir dizedir:

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)

Çıkış biçimi (XAI)

Model uç noktaları üzerinde yapılan tahminler, görev türüne bağlı olarak farklı şemayı izler. Bu bölümde, çok sınıflı, çok etiketli görüntü sınıflandırma görevleri için çıkış veri biçimleri açıklanmaktadır.

İki giriş görüntüsü örneği için aşağıdaki şemalar tanımlanmıştır.

Görüntü sınıflandırması (ikili/çok sınıflı)

Çıkış şeması yukarıda açıklananla aynıdır, ancak visualizations istekte bu anahtarlar olarak ayarlandıysa True ve attributions anahtar değerleri dahil edilir.

giriş isteğinde , attributions olarak ayarlanırsamodel_explainabilityTrue, çıktıda ve attributionsolurvisualizations. visualizations Bu parametrelerle ilgili diğer ayrıntılar aşağıdaki tabloda açıklanmıştır. Görselleştirmeler ve ilişkilendirmeler, en yüksek olasılık puanına sahip bir sınıfta oluşturulur.

Çıkış anahtarı Description
visualizations Base64 dize biçiminde türe sahip tek görüntü
Optional, String
attributions şeklin piksel düzeyinde ilişkilendirme puanlarına sahip çok boyutlu dizi [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]]]
    }
]

Görüntü sınıflandırması çok etiketli

Çok etiketli sınıflandırmanın çıkış şemasında çok sınıflı sınıflandırmaya kıyasla tek fark, her görüntüde açıklamaların oluşturulabileceği birden çok sınıf olmasıdır. Bu nedenle, visualizations base64 görüntü dizelerinin listesidir ve attributions (varsayılan değer 0,5'tir) temelinde seçilen her sınıfa confidence_score_threshold_multilabel karşılık gelen ilişkilendirme puanlarının listesidir.

giriş isteğinde , attributions olarak ayarlanırsamodel_explainabilityTrue, çıktıda ve attributionsolurvisualizations. visualizations Bu parametrelerle ilgili diğer ayrıntılar aşağıdaki tabloda açıklanmıştır. Görselleştirmeler ve atıflar, olasılık puanı değerinden büyük veya değerine eşit olan tüm sınıflar için confidence_score_threshold_multilabeloluşturulur.

Çıkış anahtarı Description
visualizations Base64 dize biçimindeki türdeki görüntülerin listesi
Optional, String
attributions Her bir çok boyutlu dizinin şekilli olduğu her sınıfa karşı piksel düzeyinde ilişkilendirme puanlarına sahip çok boyutlu dizilerin listesi [3, valid_crop_size, valid_crop_size]
Optional, List

Uyarı

Çevrimiçi uç noktada açıklamalar oluştururken, uç noktada zaman aşımı sorunlarını önlemek veya uç noktayı GPU örnek türüyle kullanmak için güvenilirlik puanına göre yalnızca birkaç sınıf seçtiğinizden emin olun. Çok etiketli sınıflandırmada çok sayıda sınıfa yönelik açıklamalar oluşturmak için toplu puanlama not defterine (SDK v1) bakın.

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

Nesne algılama

Uyarı

XAI desteklenmez. Bu nedenle, yalnızca puanlar döndürülür. Puanlama örneği için çevrimiçi puanlama bölümüne bakın.

Örneği segmentlere ayırma

Uyarı

XAI desteklenmez. Bu nedenle, yalnızca puanlar döndürülür. Puanlama örneği için çevrimiçi puanlama bölümüne bakın.

Not

Bu makalede kullanılan görüntüler Buzdolabı Nesneleri veri kümesinden, telif hakkı © Microsoft Corporation'dan alınmaktadır ve MIT Lisansı altında computervision-recipes/01_training_introduction.ipynb adresinde bulunabilir.

Sonraki adımlar