Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

Amazon Lookout for Vision 的图像增强管道

亚马逊Lookout for Vision 提供基于机器学习 (ML) 的异常检测服务来识别正常图像(即物体图像 也完全不需要 缺陷)与异常图像(即物体图像 缺陷)、异常类型(例如,丢失的一块)以及这些异常的位置。 因此,Lookout for Vision 在寻求工业质量检测自动化解决方案(例如,检测异常产品)的客户中很受欢迎。 然而,客户的数据集通常面临两个问题:

  1. 具有异常的图像数量可能非常少,并且可能达不到 Lookout for Vision 规定的异常/缺陷类型最小值 (~20)。
  2. 正常图像可能没有足够的多样性,并且可能会导致模型在环境条件(例如生产中的光照变化)发生变化时失败

为了克服这些问题,这篇文章介绍了一种针对这两个问题的图像增强管道:它提供了一种通过移除图像中的对象来生成合成异常图像的方法,并通过引入受控的增强(例如高斯噪声、色调、饱和度、像素)来生成额外的正常图像值缩放等。我们使用 伊姆高格 库引入增强来为第二个问题生成额外的异常和正常图像。 我们用 亚马逊 Sagemaker 地面真相 生成对象移除掩码和 喇嘛 算法去除对象的第一个问题是使用图像修复(object removal)技术。

帖子的其余部分组织如下。 在第 3 节中,我们介绍了普通图像的图像增强管道。 在第 4 节中,我们介绍了异常图像的图像增强管道(也称为合成缺陷生成)。 第 5 节说明了使用增强数据集的 Lookout for Vision 训练结果。 第 6 节演示了在合成数据上训练的 Lookout for Vision 模型如何针对真实缺陷执行操作。 在第 7 节中,我们讨论了此解决方案的成本估算。 我们在这篇文章中使用的所有代码都可以访问 相关信息.

一、方案概述

ML图

下图是 Lookout for Vision 异常定位模型训练的拟议图像增强流水线图:

上图从收集一系列图像开始(步骤 1)。 我们通过增强正常图像(步骤 3)和使用对象移除算法(步骤 2、5-6)来增强数据集。 然后,我们以 Amazon Lookout for Vision 可以使用的格式打包数据(步骤 7-8)。 最后,在第 9 步中,我们使用打包后的数据来训练 Lookout for Vision 定位模型。

这种图像增强管道使客户能够灵活地在有限的样本数据集中生成合成缺陷,并为正常图像添加更多数量和多样性。 它将提升 Lookout for Vision 服务的性能,解决客户数据不足的问题,并使自动化质量检查过程更加顺畅。

2. 数据准备

从这里到帖子结束,我们使用公众号 FICS-PCB:用于自动印刷电路板视觉检测的多模态图像数据集 根据 a 许可的数据集 知识共享署名 4.0 国际 (CC BY 4.0) 许可 来说明图像增强管道以及随之而来的 Lookout for Vision 训练和测试。 该数据集旨在支持自动化 PCB 视觉检测系统的评估。 它是在佛罗里达大学的安全与保证 (SCAN) 实验室收集的。 可以访问 相关信息.

我们从假设客户仅提供 PCB 板的单个正常图像(s10 PCB 样本)作为数据集开始。 可以看出如下:

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

3. 普通图像的图像增强

Lookout for Vision 服务要求每种缺陷类型至少有 20 个正常图像和 20 个异常图像。 由于样本数据中只有一张正常图像,我们必须使用图像增强技术生成更多正常图像。 从 ML 的角度来看,使用不同的增强技术提供多个图像转换可以提高模型的准确性和鲁棒性。

我们会用的 伊姆高格 用于普通图像的图像增强。 Imgaug 是一个开源 python 包,可让您在 ML 实验中增强图像。

首先,我们将安装 伊姆高格 图书馆在 亚马逊SageMaker 笔记本电脑。

pip install imgaug

接下来,我们可以安装名为“IPyPlot”的 python 包。

pip install ipyplot

然后,我们使用变换对原始图像进行图像增强,包括 GammaContrast, SigmoidContrastLinearContrast,并在图像上添加高斯噪声。

import imageio
import imgaug as ia
import imgaug.augmenters as iaa
import ipyplot
input_img = imageio.imread('s10.png')
noise=iaa.AdditiveGaussianNoise(10,40)
input_noise=noise.augment_image(input_img)
contrast=iaa.GammaContrast((0.5, 2.0))
contrast_sig = iaa.SigmoidContrast(gain=(5, 10), cutoff=(0.4, 0.6))
contrast_lin = iaa.LinearContrast((0.6, 0.4))
input_contrast = contrast.augment_image(input_img)
sigmoid_contrast = contrast_sig.augment_image(input_img)
linear_contrast = contrast_lin.augment_image(input_img)
images_list=[input_img, input_contrast,sigmoid_contrast,linear_contrast,input_noise]
labels = ['Original', 'Gamma Contrast','SigmoidContrast','LinearContrast','Gaussian Noise Image']
ipyplot.plot_images(images_list,labels=labels,img_width=180)

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

由于我们至少需要 20 张正常图像,而且越多越好,因此我们为上面显示的 10 种转换中的每一种转换生成了 4 张增强图像作为我们的正常图像数据集。 未来,我们还计划将图像转换为位于不同位置和不同角度,以便训练模型对物体相对于固定相机的位置不太敏感。

4. 异常图像增强的合成缺陷生成

在本节中,我们提出了一个合成缺陷生成管道,以增加数据集中具有异常的图像数量。 请注意,与我们从现有正常样本创建新正常样本的上一节相反,在这里,我们从正常样本创建新的异常图像。 对于数据集中完全缺少此类图像的客户来说,这是一个很有吸引力的功能,例如,移除普通 PCB 板的组件。 这个合成缺陷生成管道包含三个步骤:首先,我们使用 Amazon SageMaker Ground Truth 从源(正常)图像生成合成掩码。 在这篇文章中,我们针对特定的缺陷类型:缺失组件。 此掩码生成提供掩码图像和清单文件。 其次,必须修改清单文件并将其转换为 SageMaker 端点的输入文件。 第三,将输入文件输入到对象移除 SageMaker 端点,该端点负责移除正常图像中由蒙版指示的部分。 此端点提供生成的异常图像。

4.1 使用 Amazon SageMaker Ground Truth 生成合成缺陷掩码

用于数据标记的 Amazon Sagemaker Ground Truth

Amazon SageMaker Ground Truth 是一种数据标记服务,可以轻松标记数据并让您可以选择使用人工注释器 亚马逊Mechanical Turk、第三方供应商或您自己的私人劳动力。 你可以关注 本教程 设置标签作业。

在本节中,我们将展示我们如何使用 亚马逊SageMaker地面真相 标记要在下一步中删除的普通图像中的特定“组件”。 请注意,这篇文章的一个关键贡献是我们没有以传统方式使用 Amazon SageMaker Ground Truth(即标记训练图像)。 在这里,我们用它来生成一个掩码,以便将来在正常图像中移除。 正常图像中的这些去除会产生合成缺陷。

出于本文的目的,在我们的标签工作中,我们将从 PCB 板上人为地移除最多三个组件:IC、电阻器 1 和电阻器 2。 作为标注员进入标注作业后,您可以选择标注名称并在要作为合成缺陷从图像中移除的组件周围绘制任意形状的遮罩。 请注意,您不能在此实验的标签名称中包含“_”,因为我们在后面的代码中使用“_”来分隔缺陷名称中的不同元数据。

在下图中,我们在 IC(集成电路)周围画了一个绿色遮罩,在电阻 1 周围画了一个蓝色遮罩,在电阻 2 周围画了一个橙色遮罩。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

我们选择后 提交 按钮,Amazon SageMaker Ground Truth 将生成一个白色背景的输出掩码和一个清单文件,如下所示:
Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

{"source-ref":"s3://pcbtest22/label/s10.png","s10-label-ref":"s3://pcbtest22/label/s10-label/annotations/consolidated-annotation/output/0_2022-09-08T18:01:51.334016.png","s10-label-ref-metadata":{"internal-color-map":{"0":{"class-name":"BACKGROUND","hex-color":"#ffffff","confidence":0},"1":{"class-name":"IC","hex-color":"#2ca02c","confidence":0},"2":{"class-name":"resistor_1","hex-color":"#1f77b4","confidence":0},"3":{"class-name":"resistor_2","hex-color":"#ff7f0e","confidence":0}},"type":"groundtruth/semantic-segmentation","human-annotated":"yes","creation-date":"2022-09-08T18:01:51.498525","job-name":"labeling-job/s10-label"}}

请注意,到目前为止我们还没有生成任何异常图像。 我们只是标记了将被人为移除的三个组件,移除它们会产生异常图像。 稍后,我们将同时使用 (1) 上面的掩码图像和 (2) 清单文件中的信息作为异常图像生成管道的输入。 下一节介绍如何为 SageMaker 终端节点准备输入。

4.2 为 SageMaker 端点准备输入

将 Amazon SageMaker Ground Truth 清单转换为 SageMaker 端点输入文件

首先,我们建立一个 亚马逊简单存储服务(Amazon S3) bucket 存储图像增强管道的所有输入和输出。 在帖子中,我们使用名为 qualityinspection. 然后我们生成所有增强的正常图像并将它们上传到这个 S3 存储桶。

from PIL import Image 
import os 
import shutil 
import boto3

s3=boto3.client('s3')

# make the image directory
dir_im="images"
if not os.path.isdir(dir_im):
    os.makedirs(dir_im)
# create augmented images from original image
input_img = imageio.imread('s10.png')

for i in range(10):
    noise=iaa.AdditiveGaussianNoise(scale=0.2*255)
    contrast=iaa.GammaContrast((0.5,2))
    contrast_sig = iaa.SigmoidContrast(gain=(5,20), cutoff=(0.25, 0.75))
    contrast_lin = iaa.LinearContrast((0.4,1.6))
      
    input_noise=noise.augment_image(input_img)
    input_contrast = contrast.augment_image(input_img)
    sigmoid_contrast = contrast_sig.augment_image(input_img)
    linear_contrast = contrast_lin.augment_image(input_img)
      
    im_noise = Image.fromarray(input_noise)
    im_noise.save(f'{dir_im}/input_noise_{i}.png')

    im_input_contrast = Image.fromarray(input_contrast)
    im_input_contrast.save(f'{dir_im}/contrast_sig_{i}.png')

    im_sigmoid_contrast = Image.fromarray(sigmoid_contrast)
    im_sigmoid_contrast.save(f'{dir_im}/sigmoid_contrast_{i}.png')

    im_linear_contrast = Image.fromarray(linear_contrast)
    im_linear_contrast.save(f'{dir_im}/linear_contrast_{i}.png')
    
# move original image to image augmentation folder
shutil.move('s10.png','images/s10.png')
# list all the images in the image directory
imlist =  [file for file in os.listdir(dir_im) if file.endswith('.png')]

# upload augmented images to an s3 bucket
s3_bucket='qualityinspection'
for i in range(len(imlist)):
    with open('images/'+imlist[i], 'rb') as data:
        s3.upload_fileobj(data, s3_bucket, 'images/'+imlist[i])

# get the image s3 locations
im_s3_list=[]
for i in range(len(imlist)):
    image_s3='s3://qualityinspection/images/'+imlist[i]
    im_s3_list.append(image_s3)

接下来,我们从 Amazon SageMaker Ground Truth 下载掩码并将其上传到该 S3 存储桶中名为“mask”的文件夹。

# download Ground Truth annotation mask image to local from the Ground Truth s3 folder
s3.download_file('pcbtest22', 'label/S10-label3/annotations/consolidated-annotation/output/0_2022-09-09T17:25:31.918770.png', 'mask.png')
# upload mask to mask folder
s3.upload_file('mask.png', 'qualityinspection', 'mask/mask.png')

之后,我们从 Amazon SageMaker Ground Truth 标记作业下载清单文件并将其读取为 json 行。

import json
#download output manifest to local
s3.download_file('pcbtest22', 'label/S10-label3/manifests/output/output.manifest', 'output.manifest')
# read the manifest file
with open('output.manifest','rt') as the_new_file:
    lines=the_new_file.readlines()
    for line in lines:
        json_line = json.loads(line)

最后,我们生成一个输入字典,其中记录了输入图像的S3位置、mask位置、mask信息等,将其保存为txt文件,然后上传到目标S3 bucket的'input'文件夹中。

# create input dictionary
input_dat=dict()
input_dat['input-image-location']=im_s3_list
input_dat['mask-location']='s3://qualityinspection/mask/mask.png'
input_dat['mask-info']=json_line['S10-label3-ref-metadata']['internal-color-map']
input_dat['output-bucket']='qualityinspection'
input_dat['output-project']='synthetic_defect'

# Write the input as a txt file and upload it to s3 location
input_name='input.txt'
with open(input_name, 'w') as the_new_file:
    the_new_file.write(json.dumps(input_dat))
s3.upload_file('input.txt', 'qualityinspection', 'input/input.txt')

以下是示例输入文件:

{"input-image-location": ["s3://qualityinspection/images/s10.png", ... "s3://qualityinspection/images/contrast_sig_1.png"], "mask-location": "s3://qualityinspection/mask/mask.png", "mask-info": {"0": {"class-name": "BACKGROUND", "hex-color": "#ffffff", "confidence": 0}, "1": {"class-name": "IC", "hex-color": "#2ca02c", "confidence": 0}, "2": {"class-name": "resistor1", "hex-color": "#1f77b4", "confidence": 0}, "3": {"class-name": "resistor2", "hex-color": "#ff7f0e", "confidence": 0}}, "output-bucket": "qualityinspection", "output-project": "synthetic_defect"}

4.3 创建异步 SageMaker 端点以生成具有缺失组件的合成缺陷

4.3.1喇嘛模型

为了从原始图像中删除组件,我们使用了一个名为 LaMa 的开源 PyTorch 模型 LaMa:使用傅立叶卷积进行分辨率稳健的大掩膜修复. 它是由三星 AI 开发的具有傅立叶卷积的分辨率鲁棒的大型蒙版修复模型。 该模型的输入是图像和黑白蒙版,输出是蒙版内的对象被移除的图像。 我们使用 Amazon SageMaker Ground Truth 创建原始蒙版,然后根据需要将其转换为黑白蒙版。 LaMa模型应用演示如下:

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

4.3.2 介绍 Amazon SageMaker 异步推理 

Amazon SageMaker 异步推理 是一个新的推理选项 亚马逊SageMaker 对传入请求进行排队并异步处理它们。 异步推理使用户能够通过在没有请求要处理时将实例计数自动缩放为零来节省成本。 这意味着您只需在端点处理请求时付费。 新的异步推理选项非常适合请求大小较大(高达 1GB)且推理处理时间为几分钟的工作负载。 部署和调用端点的代码是 相关信息.

4.3.3 端点部署

要部署异步端点,首先我们必须获得 IAM角色 并设置一些环境变量。

from sagemaker import get_execution_role
from sagemaker.pytorch import PyTorchModel
import boto3

role = get_execution_role()
env = dict()
env['TS_MAX_REQUEST_SIZE'] = '1000000000'
env['TS_MAX_RESPONSE_SIZE'] = '1000000000'
env['TS_DEFAULT_RESPONSE_TIMEOUT'] = '1000000'
env['DEFAULT_WORKERS_PER_MODEL'] = '1'

正如我们之前提到的,我们使用的是开源 PyTorch 模型 LaMa:使用傅立叶卷积进行分辨率稳健的大掩膜修复 并且预训练好的模型已经上传到 s3://qualityinspection/model/big-lama.tar.gz。 该 image_uri 指向具有所需框架和 python 版本的 docker 容器。

model = PyTorchModel(
    entry_point="./inference_defect_gen.py",
    role=role,
    source_dir = './',
    model_data='s3://qualityinspection/model/big-lama.tar.gz',
    image_uri = '763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-inference:1.11.0-gpu-py38-cu113-ubuntu20.04-sagemaker',
    framework_version="1.7.1",
    py_version="py3",
    env = env,
    model_server_workers=1
)

然后,我们必须在创建端点配置时指定额外的异步推理特定配置参数。

from sagemaker.async_inference.async_inference_config import AsyncInferenceConfig
bucket = 'qualityinspection'
prefix = 'async-endpoint'
async_config = AsyncInferenceConfig(output_path=f"s3://{bucket}/{prefix}/output",max_concurrent_invocations_per_instance=10)

接下来,我们通过运行以下代码在 ml.g4dn.xlarge 实例上部署端点:

predictor = model.deploy(
    initial_instance_count=1,
    instance_type='ml.g4dn.xlarge',
    model_server_workers=1,
    async_inference_config=async_config
)

大约 6-8 分钟后,端点创建成功,并将显示在 SageMaker 控制台中。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

4.3.4 调用端点

接下来,我们使用之前生成的输入 txt 文件作为端点的输入,并使用以下代码调用端点:

import boto3
runtime= boto3.client('runtime.sagemaker')
response = runtime.invoke_endpoint_async(EndpointName='pytorch-inference-2022-09-16-02-04-37-888',
                                   InputLocation='s3://qualityinspection/input/input.txt')

上面的命令会立即结束执行。 但是,推理将持续几分钟,直到它完成所有任务并返回 S3 存储桶中的所有输出。

4.3.5 查看端点推理结果 

选择终结点​​后,您将看到 Monitor 会话。 选择“查看日志”以在控制台中检查推理结果。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

两条日志记录将显示在日志流中。 那个叫 data-log 将显示最终的推理结果,而另一条日志记录将显示推理的详细信息,通常用于调试目的。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

如果推理请求成功,您将看到以下消息: Inference request succeeded.在数据日志中,还可以在消息中获取总模型延迟、总处理时间等信息。 如果推理失败,再查看其他日志进行调试。 您还可以通过轮询推理请求的状态来检查结果。 了解有关 Amazon SageMaker 异步推理的更多信息 相关信息.

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

4.3.6 使用端点生成缺少组件的合成缺陷

我们将在端点完成四个任务:

  1. Lookout for Vision 异常定位服务要求训练数据集中的每个图像存在一个缺陷,以优化模型性能。 因此,我们必须通过颜色过滤来分离端点中不同缺陷的掩码。
    Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。
  2. 拆分训练/测试数据集以满足以下要求:
    • 训练数据集至少有 10 个正常图像和 10 个异常图像
    • 火车数据集中的一个缺陷/图像
    • 测试数据集至少有 10 个正常图像和 10 个异常图像
    • 测试数据集允许每个图像存在多个缺陷
  3. 生成合成缺陷并将它们上传到目标 S3 位置。

我们为训练数据集每张图像生成一个缺陷,每类生成 20 多个缺陷,对于测试数据集,每张图像生成 1-3 个缺陷,每类生成 20 多个缺陷。

以下是源图像及其合成缺陷的示例,其中缺少三个组件:IC、电阻器 1 和电阻器 2。

原始图像

原始图像

40_im_mask_IC_resistor1_resistor2.jpg(缺陷名称表示缺少元件)

40_im_mask_IC_resistor1_resistor2.jpg(缺陷名称表示缺少元件)

  1.  为记录所有上述信息的训练/测试数据集生成清单文件。

最后,我们将生成训练/测试清单来记录信息,例如合成缺陷 S3 位置、掩模 S3 位置、缺陷类别、掩模颜色等。

以下是清单中异常图像和正常图像的示例 json 行。

对于异常:

{"source-ref": "s3://qualityinspection/synthetic_defect/anomaly/train/6_im_mask_IC.jpg", "auto-label": 11, "auto-label-metadata": {"class-name": "anomaly", "type": "groundtruth/image-classification"}, "anomaly-mask-ref": "s3://qualityinspection/synthetic_defect/mask/MixMask/mask_IC.png", "anomaly-mask-ref-metadata": {"internal-color-map": {"0": {"class-name": "IC", "hex-color": "#2ca02c", "confidence": 0}}, "type": "groundtruth/semantic-segmentation"}}

对于普通图像:

{"source-ref": "s3://qualityinspection/synthetic_defect/normal/train/25_im.jpg", "auto-label": 12, "auto-label-metadata": {"class-name": "normal", "type": "groundtruth/image-classification"}}

4.3.7 Amazon S3 文件夹结构

端点的输入和输出以以下结构存储在目标 S3 存储桶中:

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

5 Lookout for Vision模型训练及结果

5.1 建立项目,上传数据集,开始模型训练。 

  1. 首先,您可以从 AWS控制台 并创建一个项目。
    Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。
  2. 然后,您可以通过选择创建训练数据集 导入由 SageMaker Ground Truth 标记的图像 并提供 SageMaker 端点生成的训练数据集清单的 Amazon S3 位置。
    Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。
  3. 接下来,您可以通过选择创建测试数据集 导入由 SageMaker Ground Truth 标记的图像 再次提供 SageMaker 端点生成的测试数据集清单的 Amazon S3 位置。
    Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。
    .......Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。
    ....
  4. 训练和测试数据集上传成功后,可以选择 火车模型 右上角的按钮触发异常定位模型训练。
    ......
  5. 在我们的实验中,模型完成训练的时间略长于一小时。 当状态显示训练完成时,您可以选择模型链接来查看结果。
    ....
    Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

5.2 模型训练结果

5.2.1 模型性能指标 

在选择之后 型号1 如上图,我们从100% Precision、100% Recall、100% F1 score可以看出模型表现相当不错。 我们还可以检查每个标签(缺失组件)的性能,我们会很高兴地发现所有三个标签的 F1 分数都在 93% 以上,平均 IoU 都在 85% 以上。 这个结果对于我们在帖子中展示的这个小数据集来说是令人满意的。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

5.2.2 测试数据集中综合缺陷检测的可视化。 

如下图所示,每张图片都会被缺陷为 normal or anomaly 带有置信度分数的标签。 如果它是异常,那么它会在图像中的异常区域上显示一个遮罩,每种缺陷类型具有不同的颜色。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

以下是测试数据集中缺失组件(本例中为三个缺陷)的组合示例:

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

接下来,您可以将模型编译并打包为 AWS IoT Greengrass 遵循这篇文章中的说明的组件, 在不使用 GPU 的情况下,在边缘使用 Amazon Lookout for Vision 识别异常位置,并对模型运行推理。

6. 针对真实缺陷测试在合成数据上训练的 Lookout for Vision 模型

为了测试在合成缺陷上训练的模型是否可以很好地应对真实缺陷,我们从中选择了一个数据集(aliens-dataset) 相关信息 进行实验。

首先,我们比较生成的合成缺陷和真实缺陷。 左图是缺少头部的真实缺陷,右图是使用 ML 模型去除头部后生成的缺陷。

真正的缺陷

真正的缺陷

综合缺陷

综合缺陷

其次,我们使用 Lookout for Vision 中的试验检测来针对真实缺陷测试模型。 您可以将测试图像保存在 S3 存储桶中并从 Amazon S3 导入它们,或者从您的计算机上传图像。 然后,选择 检测异常 运行检测。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

最后,您可以看到真实缺陷的预测结果。 在这个实验中,在合成缺陷上训练的模型可以准确地检测出真实的缺陷。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

在合成缺陷上训练的模型可能并不总是在真实缺陷上表现良好,尤其是比这个样本数据集复杂得多的电路板。 如果你想重新训练有真正缺陷的模型,那么你可以选择标记为橙色的按钮 验证机器预测 在预测结果的右上角,然后勾选为 正确: or 不正确.

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

然后您可以通过选择右上角的橙色按钮将经过验证的图像和标签添加到训练数据集中,以增强模型性能。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。

7.成本估算 

这个用于 Lookout for Vision 的图像增强管道非常划算。 在上面显示的示例中,Amazon SageMaker Ground Truth Labeling、Amazon SageMaker notebook 和 SageMaker 异步终端节点部署和推理只需花费几美元。 对于 Lookout for Vision 服务,您只需为使用量付费。 账单由三个部分决定:模型训练费用(训练小时数)、云异常检测费用(云推理小时数)和/或边缘异常检测费用(边缘推理单元)。 在我们的实验中,Lookout for Vision 模型完成训练的时间略长于一个小时,每个训练小时的成本为 2.00 美元。 此外,您可以使用已训练的模型在云端或边缘进行推理,并列出价格 相关信息.

8。 清理

为避免产生不必要的费用,请使用控制台删除您在运行帖子中的练习时创建的端点和资源。

  1. 打开 SageMaker 控制台并删除以下资源:
    • 端点。 删除端点还会删除支持它的一个或多个 ML 计算实例。
      1. 下 推理,选择 端点.
      2. 选择您在示例中创建的端点,选择 行动,然后选择 删除.
    • 端点配置。
      1. 下 推理,选择 端点配置.
      2. 选择您在示例中创建的端点配置,选择 行动,然后选择 删除.
    • 该模型。
      1. 下 推理,选择 型号.
      2. 选择您在示例中创建的模型,选择 行动,然后选择 删除.
    • 笔记本实例。 在删除笔记本实例之前,请将其停止。
      1. 下 笔记本,选择 笔记本实例.
      2. 选择您在示例中创建的笔记本实例,选择 行动,然后选择  Stop 停止. 笔记本实例需要几分钟才能停止。 当。。。的时候 Status 改变为 停止,继续进行下一步。
      3.  行动,然后选择 删除.
  2. 打开 Amazon S3控制台,然后删除您为存储模型工件和训练数据集而创建的存储桶。
  3. 打开 亚马逊 CloudWatch 控制台, 然后删除名称以 /aws/sagemaker/.

您还可以通过运行以下代码从 SageMaker notebook 中删除终端节点:

import boto3
sm_boto3 = boto3.client("sagemaker")
sm_boto3.delete_endpoint(EndpointName='endpoint name')

9。 结论

在这篇文章中,我们演示了如何使用 Amazon SageMaker Ground Truth 注释合成缺陷掩模,如何使用不同的图像增强技术将一张正常图像转换为所需数量的正常图像,创建异步 SageMaker 端点并准备输入文件端点,以及调用端点。 最后,我们演示了如何使用训练/测试清单来训练 Lookout for Vision 异常定位模型。 这个提议的管道可以扩展到其他 ML 模型以生成合成缺陷,您需要做的就是在 SageMaker 端点中自定义模型和推理代码。

首先探索用于自动化质量检测的 Lookout for Vision 相关信息.


作者简介

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。卡拉扬 是 AWS 专业服务的数据科学家。 她热衷于通过 AWS 云服务帮助客户实现其业务目标,并帮助组织构建跨多个行业的端到端 AI/ML 解决方案,例如制造、汽车、环境可持续性和航空航天。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。Octavi Obiols-销售 是一位专门研究深度学习 (DL) 和机器学习的计算科学家,并获得助理解决方案架构师认证。 凭借在云和边缘方面的广泛知识,他通过构建端到端 AI 解决方案帮助加速业务成果。 Octavi 在加州大学尔湾分校获得了计算科学博士学位,在那里他推动了 DL+HPC 算法的最新发展。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。法比安·贝尼特斯-基罗斯 是 AWS 专业服务的 IoT Edge 数据科学家。 他拥有俄亥俄州立大学的计算机视觉和模式识别博士学位。 Fabian 参与帮助客户在 IoT 设备和云中以低延迟运行他们的机器学习模型。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。马尼什·塔雷哈 是 AWS 物联网解决方案的首席产品经理。 他热衷于帮助客户在云端和边缘使用 AWS IoT 和 ML 服务构建创新解决方案。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。杨玉新 是 AWS 的 AI/ML 架构师,获得 AWS 机器学习专业认证。 她通过构建端到端 AI/ML 解决方案(包括预测性维护、计算机视觉和强化学习)帮助客户加速取得成果。 Yuxin 在斯坦福大学获得硕士学位,在那里她专注于深度学习和大数据分析。

Amazon Lookout for Vision PlatoBlockchain 数据智能的图像增强管道。 垂直搜索。 人工智能。李英茂 是 AWS 的数据科学家。 他在 11 个月前加入 AWS,并使用广泛的服务和机器学习技术为各种客户构建解决方案。 他拥有电气工程博士学位。 闲暇时,他喜欢户外游戏、赛车、游泳,还喜欢驾驶风笛幼崽越野探索天空。

 

时间戳记:

更多来自 AWS机器学习