模型训练问题排查 - Amazon Lookout for Vision

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

模型训练问题排查

清单文件或训练图像存在的问题可能会导致模型训练失败。在重新训练模型之前,请检查以下潜在问题。

异常标签颜色与掩码图像中异常的颜色不匹配

如果要训练图像分割模型,则清单文件中异常标签的颜色必须与掩码图像中的颜色相匹配。清单文件中图像的JSON行包含元数据 (internal-color-map),用于告诉 Amazon Lookout for Vision 哪种颜色对应于异常标签。例如,下一JSON行中scratch异常标签的颜色为#2ca02c

{ "source-ref": "s3://path-to-image", "anomaly-label": 1, "anomaly-label-metadata": { "class-name": "anomaly", "creation-date": "2021-10-12T14:16:45.668", "human-annotated": "yes", "job-name": "labeling-job/classification-job", "type": "groundtruth/image-classification", "confidence": 1 }, "anomaly-mask-ref": "s3://path-to-image", "anomaly-mask-ref-metadata": { "internal-color-map": { "0": { "class-name": "BACKGROUND", "hex-color": "#ffffff", "confidence": 0.0 }, "1": { "class-name": "scratch", "hex-color": "#2ca02c", "confidence": 0.0 }, "2": { "class-name": "dent", "hex-color": "#1f77b4", "confidence": 0.0 } }, "type": "groundtruth/semantic-segmentation", "human-annotated": "yes", "creation-date": "2021-11-23T20:31:57.758889", "job-name": "labeling-job/segmentation-job" } }

如果掩码图像中的颜色与 hex-color 中的值不匹配,则训练会失败,您需要更新清单文件。

更新清单文件中的颜色值
  1. 使用文本编辑器,打开用于创建数据集的清单文件。

  2. 对于每JSON行(图像),检查internal-color-map字段内的颜色(hex-color)是否与蒙版图像中异常标签的颜色相匹配。

    您可以从 anomaly-mask-ref 字段中获取掩码图像的位置。将图像下载到您的计算机,然后使用以下代码获取图像中的颜色。

    from PIL import Image img = Image.open('path to local copy of mask file') colors = img.convert('RGB').getcolors() #this converts the mode to RGB for color in colors: print('#%02x%02x%02x' % color[1])
  3. 对于每张颜色分配不正确的图像,请更新该图像JSON行中的hex-color字段。

  4. 保存更新后的清单文件。

  5. 从项目中删除现有数据集。

  6. 使用更新后的清单文件,在项目中创建新数据集。

  7. 训练模型。

或者,对于步骤 5 和 6,您可以通过调用UpdateDatasetEntries操作并为要更新的图像提供更新的JSON行来更新数据集中的单个图像。有关代码示例,请参阅 添加更多图像 (SDK)

蒙版图像不是PNG格式化的

如果您正在训练图像分割模型,则掩模图像必须是PNG格式化的。如果您根据清单文件创建数据集,请确保您在中引用的掩码图像anomaly-mask-ref是PNG格式。如果蒙版图像不是PNG格式化的,则需要将其转换为PNG格式。仅将图像文件的扩展名重命名为 .png 是不够的。

你在 Amazon Lookout for Vision 控制台或使用 Ground Truth 任务创建 SageMaker 的蒙版图像是PNG以格式创建的。您不需要更改这些图像的格式。

更正清单文件中的非PNG格式掩码图像
  1. 使用文本编辑器,打开用于创建数据集的清单文件。

  2. 对于每JSON行(图像),请确保图像anomaly-mask-ref引用PNG格式图像。有关更多信息,请参阅 创建清单文件

  3. 保存更新后的清单文件。

  4. 从项目中删除现有数据集。

  5. 使用更新后的清单文件,在项目中创建新数据集。

  6. 训练模型。

分割或分类标签不准确或缺失

标签缺失或不准确可能会导致训练失败,或者创建性能不佳的模型。我们建议您标注数据集中的所有图像。如果您不标注所有图像,并且模型训练失败,或者您的模型性能不佳,请添加更多图像。

请检查以下事项:

  • 如果要创建分割模型,则掩码必须紧密覆盖数据集图像上的异常。要检查数据集中的掩码,请在项目的数据集图库中查看图像。如有必要,请重绘图像掩码。有关更多信息,请参阅 分割图像(控制台)

  • 确保对数据集图像中的异常图像进行分类。如果要创建图像分割模型,请确保异常图像具有异常标签和图像掩码。

    记住要创建什么类型的模型(分割分类)非常重要。分类模型在异常图像上不需要图像掩码。请勿向计划用于分类模型的数据集图像添加掩码。

    更新缺失的标签
    1. 打开项目的数据集图库。

    2. 筛选未标注的图像以查看哪些图像没有标签。

    3. 请执行以下操作之一:

      • 如果要创建图像分类模型,请对每张未标注的图像进行分类

      • 如果要创建图像分割模型,请对每张未标注的图像进行分类和分割

    4. 如果要创建图像分割模型,请为所有缺少掩码的已分类异常图像添加掩码。

    5. 训练模型。

如果您选择不修复质量不佳或缺失的标签,我们建议您添加更多已标注的图像,或者从数据集中移除受影响的图像。您可以通过控制台或使用UpdateDatasetEntries操作添加更多内容。有关更多信息,请参阅 向您的数据集中添加图像

如果您选择移除图像,则必须重新创建不含受影响图像的数据集,因为您无法从数据集中删除图像。有关更多信息,请参阅 从数据集中移除图像