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-datastore my-workspace sı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ğiOptional, String or Positive Integer |
"400px" or 400 |
height |
Resmin yüksekliğiOptional, String or Positive Integer |
"200px" or 200 |
label |
Görüntünün sınıfı/etiketiRequired, 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"}
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-datastore my-workspace sı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ğiOptional, String or Positive Integer |
"400px" or 400 |
height |
Resmin yüksekliğiOptional, String or Positive Integer |
"200px" or 200 |
label |
Görüntüdeki sınıfların/etiketlerin listesiRequired, 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"]}
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-datastore my-workspace sı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ğiOptional, String or Positive Integer |
"499px" or 499 |
height |
Resmin yüksekliğiOptional, 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 listesiRequired, 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ı/etiketiRequired, 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ğiRequired, 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ğiRequired, 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ğiRequired, 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ğiRequired, 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}]}
Ö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-datastore my-workspace sı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ğiOptional, String or Positive Integer |
"499px" or 499 |
height |
Resmin yüksekliğiOptional, 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ı/etiketiRequired, String |
"cat" |
isCrowd |
Maskenin nesne kalabalığının etrafında olup olmadığını gösterirOptional, Bool |
0 |
polygon |
Nesne için çokgen koordinatlarRequired, 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 ]]}]}
Ç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ı columns
data
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ürRequired, 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 listesiRequired, 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:
- XRAI (xrai)
- Tümleşik Gradyanlar (integrated_gradients)
- Destekli GradCAM (guided_gradcam)
- Destekli BackPropagation (guided_backprop)
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_algorithm visualizations ilgili 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ükRequired, Json String Works for one or more images |
aşağıdaki kodda tanımlanan içindeki request_json
her 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_explainability
True
, çıktıda ve attributions
olurvisualizations
. 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_explainability
True
, çıktıda ve attributions
olurvisualizations
. 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_multilabel
oluşturulur.
Çıkış anahtarı | Description |
---|---|
visualizations |
Base64 dize biçimindeki türdeki görüntülerin listesiOptional, 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.