图像数据要求 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

图像数据要求

SageMaker 澄清处理作业为解释图像提供支持。本主题提供对图像数据的数据格式要求。有关处理图像数据的信息,请参见computer vision

图像数据集包含一个或多个图像文件。要识别 Clarify SageMaker 处理任务的输入数据集,请将ProcessingInput命名dataset或分析配置dataset_uri参数设置为图像文件的 Amazon S3 URI 前缀。

下表列出了支持的图像文件格式和文件扩展名。

图像格式 文件扩展名

JPEG

jpg、jpeg

PNG

png

将分析配置 dataset_type 参数设置为 application/x-image。由于该类型不是特定的图像文件格式,因此将使用 content_type 来决定图像文件的格式和扩展名。

Cl SageMaker arify 处理任务将每个图像文件加载到三维NumPy数组中以进行进一步处理。这三个维度包括每个像素的高度、宽度和RGB值。

C SageMaker larify 处理任务将图像的原始RGB数据转换为兼容的图像格式,例如JPEG。它会在将数据发送到端点进行预测之前执行此操作。支持的图像格式如下。

数据格式 MIME键入 文件扩展名

JPEG

image/jpeg

jpg、jpeg

PNG

image/png

png

NPY

application/x-npy

以上全部

使用分析配置参数 content_type 指定请求负载的数据格式。如果未提供 content_type,则数据格式默认为 image/jpeg

收到推理端点调用的响应后,Clarify 处理任务会 SageMaker 反序列化响应有效负载,然后从中提取预测。

图像分类问题

响应负载的数据格式应由分析配置参数 accept_type 指定。如果未提供 accept_type,则数据格式默认为 application/json。支持的格式与表格数据部分中表格数据的端点响应中描述的格式相同。

使用图像分类算法进行推理有关 SageMaker 内置图像分类算法的示例,请参阅,该算法接受单个图像,然后返回一个概率值(分数)数组,每个概率值对应一个类别。

如下表所示,当content_type参数设置为时application/jsonlines,响应就是一个JSON对象。

端点请求负载 端点响应负载(字符串表示形式)

单个图像

'{"prediction":[0.1,0.6,0.3]}'

在前面的示例中,将probability参数设置为JMESPath表达式 “预测” 以提取分数。

当设置为时application/json,响应就是一个JSON对象,如下表所示。content_type

端点请求负载 端点响应负载(字符串表示形式)

单个图像

'[0.1,0.6,0.3]'

在前面的示例中,设置probability为JMESPath表达式 “[*]” 以提取数组的所有元素。在前面的示例中,提取了 [0.1, 0.6, 0.3]。或者,如果跳过设置 probability 配置参数,则还会提取数组的所有元素。这是因为整个负载都被反序列化为预测。

对象检测问题

分析配置accept_type默认为,application/json并且唯一支持的格式是物体检测推理格式。有关响应格式的更多信息,请参阅响应格式

下表是输出数组的端点响应示例。数组的每个元素都是一个值数组,其中包含检测到的对象的类索引、置信度分数和边界框坐标。

端点请求负载 端点响应负载(字符串表示形式)

单个图像(一个对象)

'[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244]]'

单个图像(两个对象)

'[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475]]'

下表是来自端点的响应示例,该端点输出一个带有引用数组的键的JSON对象。将分析配置 probability 设置为键 "prediction" 以提取值。

端点请求负载 端点响应负载(字符串表示形式)

单个图像(一个对象)

'{"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244]]}'

单个图像(两个对象)

'{"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475]]}'

预先检查图像数据的端点请求和响应

我们建议您将模型部署到 SageMaker 实时推理终端节点,然后向该终端节点发送请求。手动检查请求和响应。确保两者都符合图像数据的端点请求部分和图像数据的端点响应部分中的要求。

以下两个代码示例说明了如何发送请求并检查图像分类问题和对象检测问题的响应。

图像分类问题

以下示例代码指示端点读取PNG文件,然后对其进行分类。

aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-sagemaker-image-classification \ --content-type "image/png" \ --accept "application/json" \ --body fileb://./test.png \ /dev/stderr 1>/dev/null

在前面的代码示例中,响应输出如下。

[0.1,0.6,0.3]

对象检测问题

以下示例代码指示端点读取JPEG文件,然后检测其中的对象。

aws sagemaker-runtime invoke-endpoint \ --endpoint-name test-endpoint-sagemaker-object-detection \ --content-type "image/jpg" \ --accept "application/json" \ --body fileb://./test.jpg \ /dev/stderr 1>/dev/null

在前面的代码示例中,响应输出如下。

{"prediction":[[4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],[0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475],[4.0, 0.32643985450267792, 0.3677481412887573, 0.034883320331573486, 0.6318609714508057, 0.5967587828636169],[8.0, 0.22552496790885925, 0.6152569651603699, 0.5722782611846924, 0.882301390171051, 0.8985623121261597],[3.0, 0.42260299175977707, 0.019305512309074402, 0.08386176824569702, 0.39093565940856934, 0.9574796557426453]]}