Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构

这篇具有很好参考价值的文章主要介绍了Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

了解如何设置Azure Machine Learning JSONL 文件格式,以便在训练和推理期间在计算机视觉任务的自动化 ML 实验中使用数据。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。文章来源地址https://www.toymoban.com/news/detail-753827.html

Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构,azure,机器学习,microsoft,人工智能

一、用于训练的数据架构

Azure 机器学习的图像 AutoML 要求以 JSONL(JSON 行)格式准备输入图像数据。 本部分介绍多类图像分类、多标签图像分类、对象检测和实例分段的输入数据格式或架构。 我们还将提供最终训练或验证 JSON 行文件的示例。

图像分类(二进制/多类)

每个 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 Azure 机器学习数据存储中的图像位置。
my-subscription-id 需要替换为图像所在的 Azure 订阅。 若要详细了解 Azure 订阅,请单击此处。 类似地,my-resource-groupmy-workspacemy-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 图像类型(支持 Pillow 库中所有可用的图像格式)
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"}

Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构,azure,机器学习,microsoft,人工智能

多标签图像分类

下面是每个 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 Azure 机器学习数据存储中的图像位置。
my-subscription-id 需要替换为图像所在的 Azure 订阅。 若要详细了解 Azure 订阅,请单击此处。 类似地,my-resource-groupmy-workspacemy-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 图像类型(支持 Pillow 库中所有可用的图像格式)
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"]}

Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构,azure,机器学习,microsoft,人工智能

对象检测

下面是用于对象检测的示例 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 Azure 机器学习数据存储中的图像位置。
my-subscription-id 需要替换为图像所在的 Azure 订阅。 若要详细了解 Azure 订阅,请单击此处。 类似地,my-resource-groupmy-workspacemy-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 图像类型(支持 Pillow 库中提供的所有图像格式。但对于 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}]}

Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构,azure,机器学习,microsoft,人工智能

实例分段

对于实例分段,自动化 ML 仅支持多边形作为输入和输出,不支持掩码。

下面是实例分段的示例 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 Azure 机器学习数据存储中的图像位置。
my-subscription-id 需要替换为图像所在的 Azure 订阅。 若要详细了解 Azure 订阅,请单击此处。 类似地,my-resource-groupmy-workspacemy-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 ]]}]}

Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构,azure,机器学习,microsoft,人工智能

二、用于联机评分的数据架构

在本部分中,我们将记录在使用部署的模型时进行预测所需的输入数据格式。

输入格式

以下 JSON 是使用特定于任务的模型终结点对任何任务生成预测所需的输入格式。

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

此 json 为具有外部键 input_data 和内部键 columnsdata 的字典,如下表所述。 终结点接受采用上述格式的 json 字符串,并将其转换为评分脚本所需的示例的数据帧。 Json 的 request_json["input_data"]["data"] 部分中的每个输入图像都是 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,
)

输出格式

根据任务类型,对模型终结点进行的预测遵循不同的结构。 本部分将探讨多类、多标签图像分类、对象检测和实例分段任务的输出数据格式。

当输入请求包含一个图像时,以下架构适用。

图像分类(二进制/多类)

图像分类的终结点返回数据集中的所有标签及其在输入图像中的概率分数,格式如下: visualizationsattributions 与可解释性相关,并且当请求仅用于评分时,输出中将不会包括这些键。 有关图像分类的可解释性输入和输出架构的详细信息,请参阅[图像分类的可解释性部分]。

[
   {
      "probs": [
         2.098e-06,
         4.783e-08,
         0.999,
         8.637e-06
      ],
      "labels": [
         "can",
         "carton",
         "milk_bottle",
         "water_bottle"
      ]
   }
]
多标签图像分类

对于多标签图像分类,模型终结点返回标签及其概率。 visualizationsattributions 与可解释性相关,并且当请求仅用于评分时,输出中将不会包括这些键。 有关多标签分类的可解释性输入和输出架构的详细信息,请参阅[图像分类多标签的可解释性部分]。

[
   {
      "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) 的数据格式

本部分阐述了在使用部署的模型时进行预测并为预测的类生成解释所需的输入数据格式。 无需单独部署即可生成解释。 在线评分的相同终结点可用于生成解释。 我们只需要在输入架构中传递一些额外的可解释性相关参数即可获得解释和/或属性分数矩阵(像素级解释)的可视化效果。

支持的可解释性方法:

  • XRAI (xrai)
  • 集成渐变 (integrated_gradients)
  • 引导式 GradCAM (guided_gradcam)
  • 引导式反向传播 (guided_backprop)

输入格式 (XAI)

支持以下输入格式,以使用特定于任务的模型终结点生成对任何分类任务的预测和解释。 部署模型后,我们可以使用以下架构来获取预测和解释。

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

除了图像,输入架构中还需要两个额外的参数(model_explainabilityxai_parameters)才能生成解释。

密钥 说明 默认值
image_base64 base64 格式的输入图像
Required, String -
model_explainability 是生成解释还是仅生成评分
Optional, Bool False
xai_parameters 如果 model_explainability 为 True,则 xai_parameters 是一个字典,其中包含可解释性算法相关参数,并以 xai_algorithmvisualizationsattributions 为键。
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 字典具有 XAI 算法特定参数
Required, Json String
Works for one or more images

request_json 中的每个输入图像(在以下代码中定义)都是附加到列表 request_json["input_data"]["data"] 的 base64 编码字符串:

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)

根据任务类型,对模型终结点进行的预测遵循不同的架构。 本部分介绍多类、多标签图像分类任务的输出数据格式。

以下架构是针对两个输入图像的情况定义的。

图像分类(二进制/多类)

除包含 visualizationsattributions 键值(如果这些键在请求中设为 True)以外,输出架构[与上述架构相同]。

如果在输入请求中将 model_explainabilityvisualizationsattributions 设置为 True,则输出将具有 visualizationsattributions。 下表解释了有关这些参数的更多详细信息。 将针对概率分数最高的类生成可视化效果和属性。

输出键 说明
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_explainabilityvisualizationsattributions 设置为 True,则输出将具有 visualizationsattributions。 下表解释了有关这些参数的更多详细信息。 针对概率分数大于或等于 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 不受支持。 因此只返回分数。 有关评分示例,请参阅[在线评分部分]。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

到了这里,关于Azure 机器学习 - 使用自动化机器学习训练计算机视觉模型的数据架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyCaret:低代码自动化的机器学习工具

    随着ChatGPT和AI画图的大火,机器学习作为实现人工智能的底层技术被大众越来越多的认知,基于机器学习的产品也越来越多。传统的机器学习实现方法需要较强的编程能力和数据科学基础,这使得想零基础尝试机器学习变得非常困难。 机器学习、深度学习和人工智能(AI)的

    2024年02月04日
    浏览(68)
  • 实现自动化测试中的AI与机器学习支持

    自动化测试是软件开发过程中不可或缺的一部分,它可以有效地提高软件质量,降低开发成本。然而,随着软件系统的复杂性不断增加,传统的自动化测试方法已经无法满足需求。因此,研究人员和企业开始关注AI和机器学习技术,以提高自动化测试的效率和准确性。 在本文

    2024年02月20日
    浏览(33)
  • Azure 机器学习 - 使用 Visual Studio Code训练图像分类 TensorFlow 模型

    了解如何使用 TensorFlow 和 Azure 机器学习 Visual Studio Code 扩展训练图像分类模型来识别手写数字。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理

    2024年02月06日
    浏览(39)
  • 人工智能未来:如何应对自动化和机器学习的冲击

    人工智能(Artificial Intelligence, AI)是一种计算机科学的分支,旨在模仿人类智能的思维和行为。AI的目标是创建智能机器,使它们能够执行人类智能的任务,包括学习、理解自然语言、识别图像、解决问题、自主决策等。随着数据量的增加、计算能力的提升和算法的创新,人工智

    2024年02月19日
    浏览(48)
  • Azure 机器学习 - 使用 ONNX 对来自 AutoML 的计算机视觉模型进行预测

    本文介绍如何使用 Open Neural Network Exchange (ONNX) 对从 Azure 机器学习中的自动机器学习 (AutoML) 生成的计算机视觉模型进行预测。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云

    2024年02月05日
    浏览(32)
  • Azure通过自动化账户实现对资源变更

    参考文档:https://docs.azure.cn/zh-cn/automation/quickstarts/create-azure-automation-account-portal 保存,并在测试窗格里面进行测试 若没有问题,点击发布。 添加runbook S1为定价层 官方文档: https://docs.azure.cn/zh-cn/automation/troubleshoot/runbooks

    2024年02月14日
    浏览(35)
  • 自动化机器学习流水线:基于Spring Boot与AI机器学习技术的融合探索

    🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式+人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导、简历面试辅导、技术架构设计优化、开发外包等服

    2024年04月27日
    浏览(26)
  • AutoKeras(Python自动化机器学习)多模态数据和多任务

    AutoKeras 拓扑 常规机器学习:scikit-learn示例探索性数据分析和数据预处理,线性回归,决策树 图像分类ResNet模型示例,合成数据集DenseNet模型示例 绘图线性回归和决策树模型 使用Python工具seaborn、matplotlib、pandas、scikit-learn进行特征分析,数据处理 Tensorflow和Keras实现多测感知器

    2024年02月21日
    浏览(36)
  • optuna,一个好用的Python机器学习自动化超参数优化库

    🏷️ 个人主页 :鼠鼠我捏,要死了捏的主页  🏷️ 付费专栏 :Python专栏 🏷️ 个人学习笔记,若有缺误,欢迎评论区指正   超参数优化是机器学习中的重要问题,它涉及在训练模型时选择最优的超参数组合,以提高模型的性能和泛化能力。Optuna是一个用于自动化超参数优

    2024年02月20日
    浏览(37)
  • Azure DevOps(三)Azure Pipeline 自动化将程序包上传到 Azure Blob Storage

    结合前几篇文章,我们了解到 Azure Pipeline 完美的解决了持续集成,自动编译。同时也兼顾了 Sonarqube 作为代码扫描工具。接下来另外一个问题出现了,Azure DevOps 由于有人员限制,项目上不能给非开发人员或者外包成员开权限,这个时候就需要将编译好的程序包上传到公共网盘

    2024年02月02日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包