مخططات البيانات لتدريب نماذج الرؤية الحاسوبية باستخدام التعلم الآلي

ينطبق على:ملحق التعلم الآلي من 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
(المفتاح الداخلي)
قائمة بالصور المرمزة base64
Required, 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) لإنشاء تفسيرات.

في هذا القسم، نوثق تنسيق بيانات الإدخال المطلوب لإجراء تنبؤات وإنشاء تفسيرات للفئة/الفئات المتوقعة باستخدام نموذج تم نشره. لا توجد حاجة إلى توزيع منفصل للشرح. يمكن استخدام نفس نقطة النهاية لتسجيل النقاط عبر الإنترنت لإنشاء تفسيرات. نحتاج فقط إلى تمرير بعض المعلمات الإضافية ذات الصلة بالشرح في مخطط الإدخال والحصول على مرئيات التفسيرات و/أو مصفوفات درجة الإسناد (تفسيرات مستوى البكسل).

أساليب الشرح المدعومة:

تنسيق الإدخال (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 صورة الإدخال بتنسيق base64
Required, 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_gradcamguided_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 مع معلمات محددة لخوارزمية XAI
Required, 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 ، visualizationsattributions إلى في طلب الإدخال، فسيكون للإخراج 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 ، visualizationsattributions إلى في طلب الإدخال، فسيكون للإخراج 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.

الخطوات التالية