مخططات البيانات لتدريب نماذج الرؤية الحاسوبية باستخدام التعلم الآلي
ينطبق على:ملحق التعلم الآلي من Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)
تعرف على كيفية تنسيق ملفات JSONL الخاصة بك لاستهلاك البيانات في تجارب التعلم الآلي التلقائية لمهام رؤية الكمبيوتر أثناء التدريب والاستدلال.
مخطط البيانات للتدريب
يتطلب التعلم الآلي من Microsoft Azure للصور إعداد بيانات الصورة المدخلة بتنسيق JSONL (خطوط JSON). يصف هذا القسم تنسيقات بيانات الإدخال أو المخطط لتصنيف الصور متعدد الفئات، وتصنيف الصور متعدد التسميات، واكتشاف العناصر، وتجزئة المثيل. سنقدم أيضًا عينة من ملف JSON Lines للتدريب النهائي أو التحقق من الصحة.
تصنيف الصورة (ثنائي/متعدد الفئات)
إدخال تنسيق/ مخطط بيانات في كل سطر JSON:
{
"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",
}
المفتاح | الوصف | مثال |
---|---|---|
image_url |
موقع الصورة في مخزن بيانات التعلم الآلي من Microsoft Azure. my-subscription-id يجب استبداله باشتراك Azure حيث توجد الصور. يمكن العثور على مزيد من المعلومات حول اشتراكات Azure هنا. وبالمثل my-resource-group ، my-workspace وmy-datastore يجب استبدال باسم مجموعة الموارد واسم مساحة العمل واسم مخزن البيانات على التوالي. path_to_image يجب أن يكون المسار الكامل للصورة على مخزن البيانات.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 |
تفاصيل الصورOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
نوع الصورة (جميع تنسيقات الصور المتوفرة في مكتبة الوسادة مدعومة)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 |
عرض الصورةOptional, String or Positive Integer |
"400px" or 400 |
height |
ارتفاع الصورةOptional, String or Positive Integer |
"200px" or 200 |
label |
فئة/ تسمية الصورةRequired, String |
"cat" |
مثال لملف JSONL لتصنيف الصور متعدد الفئات:
{"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"}
تصنيف الصورة متعدد التسميات
فيما يلي مثال على تنسيق/ مخطط بيانات الإدخال في كل سطر JSON لتصنيف الصور.
{
"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"
]
}
المفتاح | الوصف | مثال |
---|---|---|
image_url |
موقع الصورة في مخزن بيانات التعلم الآلي من Microsoft Azure. my-subscription-id يجب استبداله باشتراك Azure حيث توجد الصور. يمكن العثور على مزيد من المعلومات حول اشتراكات Azure هنا. وبالمثل my-resource-group ، my-workspace وmy-datastore يجب استبدال باسم مجموعة الموارد واسم مساحة العمل واسم مخزن البيانات على التوالي. path_to_image يجب أن يكون المسار الكامل للصورة على مخزن البيانات.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 |
تفاصيل الصورOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
نوع الصورة (جميع تنسيقات الصور متوفرة في مكتبة الوسادة مدعومة)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 |
عرض الصورةOptional, String or Positive Integer |
"400px" or 400 |
height |
ارتفاع الصورةOptional, String or Positive Integer |
"200px" or 200 |
label |
قائمة الفئات/ التسميات في الصورةRequired, List of Strings |
["cat","dog"] |
مثال على ملف JSONL لتصنيف الصور متعدد التصنيفات:
{"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"]}
الكشف عن العنصر
فيما يلي مثال لملف JSONL لاكتشاف العناصر.
{
"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"
},
"..."
]
}
هنا،
xmin
= الإحداثي x للزاوية العلوية اليسرى من مربع الإحاطةymin
= الإحداثي y للزاوية العلوية اليسرى من مربع الإحاطةxmax
= الإحداثي x للزاوية السفلية اليمنى من مربع الإحاطةymax
= الإحداثي y للزاوية السفلية اليمنى من مربع الإحاطة
المفتاح | الوصف | مثال |
---|---|---|
image_url |
موقع الصورة في مخزن بيانات التعلم الآلي من Microsoft Azure. my-subscription-id يجب استبداله باشتراك Azure حيث توجد الصور. يمكن العثور على مزيد من المعلومات حول اشتراكات Azure هنا. وبالمثل my-resource-group ، my-workspace وmy-datastore يجب استبدال باسم مجموعة الموارد واسم مساحة العمل واسم مخزن البيانات على التوالي. path_to_image يجب أن يكون المسار الكامل للصورة على مخزن البيانات.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 |
تفاصيل الصورOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
نوع الصورة (كل تنسيقات الصور المتوفرة في مكتبة الوسائد مدعومة. ولكن بالنسبة إلى YOLO، يتم دعم تنسيقات الصور المسموح بها بواسطة opencv فقط)Optional, String from {"jpg", "jpeg", "png", "jpe", "jfif", "bmp", "tif", "tiff"} |
"jpg" or "jpeg" or "png" or "jpe" or "jfif" or "bmp" or "tif" or "tiff" |
width |
عرض الصورةOptional, String or Positive Integer |
"499px" or 499 |
height |
ارتفاع الصورةOptional, String or Positive Integer |
"665px" or 665 |
label (مفتاح خارجي) |
قائمة بمربعات الإحاطة، حيث يكون كل مربع عبارة عن قاموس 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 (المفتاح الداخلي) |
فئة/ تسمية العنصر في مربع الإحاطةRequired, String |
"cat" |
topX |
نسبة الإحداثي x للزاوية العلوية اليسرى من مربع الإحاطة وعرض الصورةRequired, Float in the range [0,1] |
0.260 |
topY |
نسبة الإحداثي y للزاوية العلوية اليسرى من مربع الإحاطة وارتفاع الصورةRequired, Float in the range [0,1] |
0.406 |
bottomX |
نسبة الإحداثي x للزاوية السفلية اليمنى من مربع الإحاطة وعرض الصورةRequired, Float in the range [0,1] |
0.735 |
bottomY |
نسبة الإحداثي y في الزاوية اليمنى السفلية من مربع الإحاطة وارتفاع الصورةRequired, Float in the range [0,1] |
0.701 |
isCrowd |
يشير إلى ما إذا كان الصندوق الإحاطة حول حشد العناصر. إذا تم تعيين هذه الإشارة الخاصة، فإننا نتخطى مربع الإحاطة هذا عند حساب القياس.Optional, Bool |
0 |
مثال على ملف JSONL لاكتشاف العنصر:
{"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}]}
تجزئة مثيل الصورة
بالنسبة لتجزئة المثيل، لا يدعم التعلم الآلي المؤتمت إلا المضلع كمدخلات ومخرجات، دون أقنعة.
فيما يلي مثال على ملف JSONL، على سبيل المثال، التجزئة.
{
"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"]]
}
]
}
المفتاح | الوصف | مثال |
---|---|---|
image_url |
موقع الصورة في مخزن بيانات التعلم الآلي من Microsoft Azure. my-subscription-id يجب استبداله باشتراك Azure حيث توجد الصور. يمكن العثور على مزيد من المعلومات حول اشتراكات Azure هنا. وبالمثل my-resource-group ، my-workspace وmy-datastore يجب استبدال باسم مجموعة الموارد واسم مساحة العمل واسم مخزن البيانات على التوالي. path_to_image يجب أن يكون المسار الكامل للصورة على مخزن البيانات.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 |
تفاصيل الصورOptional, Dictionary |
"image_details":{"format": "jpg", "width": "400px", "height": "258px"} |
format |
نوع الصورة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 |
عرض الصورةOptional, String or Positive Integer |
"499px" or 499 |
height |
ارتفاع الصورةOptional, String or Positive Integer |
"665px" or 665 |
label (مفتاح خارجي) |
قائمة الأقنعة، حيث كل قناع هو قاموس لـ 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 (المفتاح الداخلي) |
فئة/ تسمية العنصر في القناعRequired, String |
"cat" |
isCrowd |
يشير إلى ما إذا كان القناع حول حشد العناصرOptional, Bool |
0 |
polygon |
إحداثيات المضلع للعنصر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]] |
مثال لملف JSONL لتجزئة المثيل:
{"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 ]]}]}
مخطط البيانات لتسجيل النقاط عبر الإنترنت
في هذا القسم، نوثق تنسيق بيانات الإدخال المطلوب لإجراء تنبؤات باستخدام نموذج تم نشره.
تنسيق الإدخال
JSON التالي هو تنسيق الإدخال المطلوب لإنشاء تنبؤات على أي مهمة باستخدام نقطة نهاية نموذج خاصة بالمهمة.
{
"input_data": {
"columns": [
"image"
],
"data": [
"image_in_base64_string_format"
]
}
}
هذا json هو قاموس مع مفتاح input_data
خارجي ومفاتيح columns
داخلية ، data
كما هو موضح في الجدول التالي. تقبل نقطة النهاية سلسلة json بالتنسيق أعلاه وتحولها إلى إطار بيانات من العينات المطلوبة من قبل البرنامج النصي لتسجيل النقاط. كل صورة إدخال في request_json["input_data"]["data"]
قسم json هي سلسلة مشفرة base64.
المفتاح | الوصف |
---|---|
input_data (مفتاح خارجي) |
إنه مفتاح خارجي في طلب json. input_data هو قاموس يقبل عينات صورة الإدخالRequired, Dictionary |
columns (المفتاح الداخلي) |
أسماء الأعمدة لاستخدامها لإنشاء إطار بيانات. يقبل عمودا واحدا فقط باسم image العمود.Required, List |
data (المفتاح الداخلي) |
قائمة بالصور المرمزة base64Required, List |
بعد نشر نموذج mlflow، يمكننا استخدام القصاصة البرمجية التالية للحصول على تنبؤات لجميع المهام.
# 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,
)
نموذج الإخراج
تتبع التنبؤات التي يتم إجراؤها على نقاط النهاية النموذجية بنية مختلفة اعتمادًا على نوع المهمة. يستكشف هذا القسم تنسيقات بيانات الإخراج لتصنيف الصور متعدد الفئات ومتعدد التسميات وكشف العناصر ومهام تجزئة المثيل.
تنطبق المخططات التالية عندما يحتوي طلب الإدخال على صورة واحدة.
تصنيف الصورة (ثنائي/متعدد الفئات)
تُرجع نقطة النهاية لتصنيف الصور جميع التسميات في مجموعة البيانات ودرجات الاحتمالية الخاصة بها لصورة الإدخال بالتنسيق التالي. visualizations
وترتبط attributions
بقابلية الشرح وعندما يكون الطلب لتسجيل النقاط فقط، لن يتم تضمين هذه المفاتيح في الإخراج. لمزيد من المعلومات حول مخطط الإدخال والإخراج القابل للشرح لتصنيف الصور، راجع قسم قابلية التفسير لتصنيف الصور.
[
{
"probs": [
2.098e-06,
4.783e-08,
0.999,
8.637e-06
],
"labels": [
"can",
"carton",
"milk_bottle",
"water_bottle"
]
}
]
تصنيف الصورة متعدد التسميات
بالنسبة لتصنيف الصور متعدد التسميات، تقوم نقطة نهاية النموذج بإرجاع التسميات واحتمالاتها. visualizations
وترتبط attributions
بقابلية الشرح وعندما يكون الطلب لتسجيل النقاط فقط، لن يتم تضمين هذه المفاتيح في الإخراج. لمزيد من المعلومات حول مخطط الإدخال والإخراج القابل للشرح للتصنيف متعدد التسميات، راجع قسم قابلية التفسير لتصنيف الصور متعدد التسميات.
[
{
"probs": [
0.997,
0.960,
0.982,
0.025
],
"labels": [
"can",
"carton",
"milk_bottle",
"water_bottle"
]
}
]
الكشف عن العنصر
يقوم نموذج كشف العناصر بإرجاع مربعات متعددة بإحداثياتها المتدرجة أعلى اليسار وأسفل اليمين جنبًا إلى جنب مع تسمية الصندوق ودرجة الثقة.
[
{
"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
}
]
}
]
تجزئة مثيل الصورة
وفي تجزئة المثيل، يتكون الإخراج من مربعات متعددة مع إحداثياتها ذات المتدرجة أعلى اليسار وأسفل اليمين والتسميات ودرجات الثقة والمضلعات (وليس الأقنعة). هنا، تكون قيم المضلع بنفس التنسيق الذي ناقشناه في قسم المخطط.
[
{
"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
]
]
}
]
}
]
تنسيق البيانات لتسجيل النقاط عبر الإنترنت وقابلية الشرح (XAI)
هام
هذه الإعدادات موجودة حاليا في المعاينة العامة. يتم توفيرها دون اتفاقية على مستوى الخدمة. بعض الميزات ربما لا تكون مدعمة أو بها بعض القدرات المقيدة. لمزيد من المعلومات، راجع شروط الاستخدام التكميلية لمعاينات Microsoft Azure.
تحذير
يتم دعم قابلية الشرح فقط للتصنيف متعدد الفئاتوالتصنيف متعدد التسميات. أثناء إنشاء تفسيرات على نقطة النهاية عبر الإنترنت، إذا واجهت مشكلات في المهلة، فاستخدم دفتر ملاحظات تسجيل الدفعات (SDK v1) لإنشاء تفسيرات.
في هذا القسم، نوثق تنسيق بيانات الإدخال المطلوب لإجراء تنبؤات وإنشاء تفسيرات للفئة/الفئات المتوقعة باستخدام نموذج تم نشره. لا توجد حاجة إلى توزيع منفصل للشرح. يمكن استخدام نفس نقطة النهاية لتسجيل النقاط عبر الإنترنت لإنشاء تفسيرات. نحتاج فقط إلى تمرير بعض المعلمات الإضافية ذات الصلة بالشرح في مخطط الإدخال والحصول على مرئيات التفسيرات و/أو مصفوفات درجة الإسناد (تفسيرات مستوى البكسل).
أساليب الشرح المدعومة:
- XRAI (xrai)
- تدرجات متكاملة (integrated_gradients)
- GradCAM الإرشادي (guided_gradcam)
- Guided BackPropagation (guided_backprop)
تنسيق الإدخال (XAI)
يتم دعم تنسيقات الإدخال التالية لإنشاء تنبؤات وتفسيرات حول أي مهمة تصنيف باستخدام نقطة نهاية نموذج خاصة بالمهمة. بعد توزيع النموذج، يمكننا استخدام المخطط التالي للحصول على تنبؤات وتفسيرات.
{
"input_data": {
"columns": ["image"],
"data": [json.dumps({"image_base64": "image_in_base64_string_format",
"model_explainability": True,
"xai_parameters": {}
})
]
}
}
جنبا إلى جنب مع الصورة، هناك معلمتان إضافيتان (model_explainability
و xai_parameters
) مطلوبة في مخطط الإدخال لإنشاء تفسيرات.
المفتاح | الوصف | القيمة الافتراضية |
---|---|---|
image_base64 |
صورة الإدخال بتنسيق base64Required, String |
- |
model_explainability |
ما إذا كنت تريد إنشاء تفسيرات أو مجرد تسجيل النقاطOptional, Bool |
False |
xai_parameters |
إذا كان model_explainability True، فهو xai_parameters قاموس يحتوي على معلمات ذات صلة لخوارزمية الشرح مع xai_algorithm ، visualizations ، attributions واسأل المفاتيح. Optional, Dictionary إذا xai_parameters لم يتم تمريرها، فسيتم xrai استخدام خوارزمية الشرح بقيمتها الافتراضية |
{"xai_algorithm": "xrai", "visualizations": True, "attributions": False} |
xai_algorithm |
اسم خوارزمية الشرح المراد استخدامها. خوارزميات XAI المدعومة هي {xrai , , integrated_gradients , guided_gradcam guided_backprop }Optional, String |
xrai |
visualizations |
ما إذا كنت تريد إرجاع مرئيات التفسيرات. Optional, Bool |
True |
attributions |
ما إذا كنت تريد إرجاع إسنادات الميزات أم لا. Optional, Bool |
False |
confidence_score_threshold_multilabel |
حد درجة الثقة لتحديد الفئات العليا لإنشاء تفسيرات في التصنيف متعدد التسميات. Optional, Float |
0.5 |
يصف الجدول التالي المخططات المدعومة للشرح.
النوع | المخطط |
---|---|
الاستدلال على صورة واحدة بتنسيق base64 | القاموس مع image_base64 كمفتاح وقيمة هو صورة مشفرة base64،model_explainability مفتاح مع True أو False والقاموس xai_parameters مع معلمات محددة لخوارزمية XAIRequired, Json String Works for one or more images |
كل صورة إدخال في request_json
، المعرفة في التعليمات البرمجية أدناه، هي سلسلة مشفرة base64 ملحقة بالقائمة 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)
تنسيق الإخراج (XAI)
تتبع التنبؤات التي تم إجراؤها على نقاط نهاية النموذج مخططا مختلفا اعتمادا على نوع المهمة. يصف هذا القسم تنسيقات بيانات الإخراج لمهام تصنيف الصور متعددة الفئات ومتعددة التسميات.
يتم تعريف المخططات التالية لحالة صورتي إدخال.
تصنيف الصورة (ثنائي/متعدد الفئات)
مخطط الإخراج هو نفسه الموضح أعلاه باستثناء أنه visualizations
يتم تضمين قيم المفاتيح، attributions
إذا تم تعيين هذه المفاتيح إلى True
في الطلب.
إذا model_explainability
تم تعيين True
، visualizations
attributions
إلى في طلب الإدخال، فسيكون للإخراج visualizations
وattributions
. يتم شرح مزيد من التفاصيل حول هذه المعلمات في الجدول التالي. يتم إنشاء المرئيات والإسنادات مقابل فئة تحتوي على أعلى درجة احتمالية.
مفتاح الإخراج | الوصف |
---|---|
visualizations |
صورة واحدة بتنسيق سلسلة base64 بنوعOptional, String |
attributions |
صفيف متعدد الأبعاد مع درجات الإسناد الحكيم للبكسل من الشكل [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]]]
}
]
تصنيف الصورة متعدد التسميات
الفرق الوحيد في مخطط الإخراج للتصنيف متعدد التسميات مقارنة بالتصنيف متعدد الفئات هو أنه يمكن أن تكون هناك فئات متعددة في كل صورة يمكن إنشاء تفسيرات لها. لذلك، visualizations
هي قائمة سلاسل الصور base64 وهي attributions
قائمة درجات الإسناد مقابل كل فئة محددة confidence_score_threshold_multilabel
استنادا إلى (الافتراضي هو 0.5).
إذا model_explainability
تم تعيين True
، visualizations
attributions
إلى في طلب الإدخال، فسيكون للإخراج visualizations
وattributions
. يتم شرح مزيد من التفاصيل حول هذه المعلمات في الجدول التالي. يتم إنشاء المرئيات والإسنادات مقابل جميع الفئات التي تحتوي على درجة الاحتمال أكبر من أو تساوي confidence_score_threshold_multilabel
.
مفتاح الإخراج | الوصف |
---|---|
visualizations |
قائمة الصور بتنسيق سلسلة base64 بنوعOptional, String |
attributions |
قائمة الصفائف متعددة الأبعاد مع درجات الإسناد الحكيم بكسل مقابل كل فئة، حيث يكون كل صفيف متعدد الأبعاد من الشكل [3, valid_crop_size, valid_crop_size] Optional, List |
تحذير
أثناء إنشاء تفسيرات على نقطة النهاية عبر الإنترنت، تأكد من تحديد عدد قليل فقط من الفئات استنادا إلى درجة الثقة لتجنب مشكلات المهلة على نقطة النهاية أو استخدام نقطة النهاية مع نوع مثيل GPU. لإنشاء تفسيرات لعدد كبير من الفئات في التصنيف متعدد التسميات، راجع دفتر ملاحظات تسجيل الدفعات (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]]],
.
.
.
]
}
]
الكشف عن العنصر
تحذير
XAI غير مدعوم. لذلك، يتم إرجاع الدرجات فقط. للحصول على مثال تسجيل النقاط، راجع قسم تسجيل النقاط عبر الإنترنت.
تجزئة مثيل الصورة
تحذير
XAI غير مدعوم. لذلك، يتم إرجاع الدرجات فقط. للحصول على مثال تسجيل النقاط، راجع قسم تسجيل النقاط عبر الإنترنت.
ملاحظة
الصور المستخدمة في هذه المقالة هي من مجموعة بيانات العناصر وحقوق النشر © Microsoft Corporation ومتاحة في computervision-recipes/01_training_introduction.ipynb بموجب ترخيص MIT.