Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

Amazon Lookout for Vision용 이미지 확대 파이프라인

비전을위한 Amazon Lookout ML(Machine Learning) 기반 이상 징후 탐지 서비스를 제공하여 정상 이미지(즉, 사물의 이미지)를 식별 없이 결함) 대 비정상 이미지(즉, 물체의 이미지) 결함), 이상 유형(예: 누락된 조각) 및 이러한 이상 위치. 따라서 Lookout for Vision은 산업 품질 검사(예: 비정상적인 제품 감지)를 위한 자동화 솔루션을 찾는 고객들 사이에서 인기가 있습니다. 그러나 고객의 데이터 세트는 일반적으로 두 가지 문제에 직면합니다.

  1. 이상이 있는 이미지의 수는 매우 적을 수 있으며 Lookout for Vision에서 부과한 이상/결함 유형 최소값(~20)에 도달하지 못할 수 있습니다.
  2. 일반 이미지는 다양성이 충분하지 않을 수 있으며 프로덕션에서 조명 변경과 같은 환경 조건이 변경되면 모델이 실패할 수 있습니다.

이러한 문제를 극복하기 위해 이 게시물에서는 두 가지 문제를 모두 대상으로 하는 이미지 확대 파이프라인을 소개합니다. 이미지에서 개체를 제거하여 합성 이상 이미지를 생성하는 방법을 제공하고 가우시안 노이즈, 색조, 채도, 픽셀과 같은 제어된 확대를 도입하여 추가 정상 이미지를 생성합니다. 값 스케일링 등. 우리는 이미지 두 번째 문제에 대한 추가 비정상 및 정상 이미지를 생성하기 위해 확대를 도입하는 라이브러리입니다. 우리는 사용 아마존 세이지메이커 Ground Truth 개체 제거 마스크를 생성하고 라마승 이미지 인페인팅(객체 제거) 기법을 사용하여 첫 번째 문제에 대한 객체를 제거하는 알고리즘입니다.

나머지 게시물은 다음과 같이 구성됩니다. 섹션 3에서는 일반 이미지에 대한 이미지 확대 파이프라인을 제시합니다. 섹션 4에서는 비정상 이미지(일명 합성 결함 생성)에 대한 이미지 확대 파이프라인을 제시합니다. 섹션 5는 증강 데이터 세트를 사용한 Lookout for Vision 교육 결과를 보여줍니다. 섹션 6에서는 합성 데이터에 대해 훈련된 Lookout for Vision 모델이 실제 결함에 대해 어떻게 작동하는지 보여줍니다. 섹션 7에서는 이 솔루션의 비용 추정에 대해 설명합니다. 이 게시물에 사용한 모든 코드에 액세스할 수 있습니다. 여기에서 지금 확인해 보세요..

1. 솔루션 개요

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: 자동 인쇄 회로 기판 육안 검사를 위한 다중 모드 이미지 데이터 세트 에 따라 라이선스가 부여된 데이터 세트 Creative Commons Attribution 4.0 International(CC BY 4.0) 라이선스 이미지 확대 파이프라인과 그에 따른 Lookout for Vision 교육 및 테스트를 설명합니다. 이 데이터 세트는 자동화된 PCB 육안 검사 시스템의 평가를 지원하도록 설계되었습니다. 플로리다 대학의 SCAN(SeCurity and Assurance) 연구소에서 수집되었습니다. 액세스할 수 있습니다. 여기에서 지금 확인해 보세요..

우리는 고객이 데이터 세트로 PCB 보드의 단일 일반 이미지(s10 PCB 샘플)만 제공한다는 가설로 시작합니다. 다음과 같이 볼 수 있습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

3. 일반 이미지에 대한 이미지 확대

Lookout for Vision 서비스에는 결함 유형당 최소 20개의 일반 이미지와 20개의 이상 이미지가 필요합니다. 샘플 데이터에는 하나의 일반 이미지만 있기 때문에 이미지 확대 기술을 사용하여 더 많은 일반 이미지를 생성해야 합니다. ML 관점에서 다양한 증강 기술을 사용하여 여러 이미지 변환을 제공하면 모델의 정확도와 견고성을 향상시킬 수 있습니다.

우리는 이미지 일반 이미지의 이미지 확대를 위해. Imgaug는 ML 실험에서 이미지를 보강할 수 있는 오픈 소스 Python 패키지입니다.

먼저 다음을 설치하겠습니다. 이미지 에 있는 도서관 아마존 세이지 메이커 공책.

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)

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

최소 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는 데이터에 쉽게 레이블을 지정하고 다음을 통해 휴먼 어노테이터를 사용할 수 있는 옵션을 제공하는 데이터 레이블 지정 서비스입니다. 아마존 기계 터크, 타사 공급업체 또는 귀사의 개인 인력. 당신은 따를 수 있습니다 이 튜토리얼 라벨링 작업을 설정합니다.

이 섹션에서는 사용 방법을 보여줍니다. 아마존 세이지 메이커 그라운드 진실 다음 단계에서 제거할 일반 이미지의 특정 "구성 요소"를 표시합니다. 이 게시물의 주요 기여는 Amazon SageMaker Ground Truth를 기존 방식(즉, 교육 이미지에 레이블 지정)으로 사용하지 않는다는 것입니다. 여기서는 일반 이미지에서 나중에 제거할 마스크를 생성하는 데 사용합니다. 일반 이미지에서 이러한 제거는 합성 결함을 생성합니다.

이 게시물의 목적을 위해 레이블 지정 작업에서 PCB 보드에서 최대 1개의 구성 요소인 IC, 저항기2 및 저항기XNUMX를 인위적으로 제거합니다. 레이블 지정 작업에 레이블 지정 작업을 입력한 후 레이블 이름을 선택하고 합성 결함으로 이미지에서 제거하려는 구성 요소 주위에 모든 모양의 마스크를 그릴 수 있습니다. 이 실험의 레이블 이름에 '_'를 포함할 수 없습니다. 코드 후반부에서 결함 이름의 다른 메타데이터를 구분하기 위해 '_'를 사용하기 때문입니다.

다음 그림에서 IC(집적 회로) 주변에 녹색 마스크, 저항 1 주변에 파란색 마스크, 저항 2 주변에 주황색 마스크를 그립니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

선택한 후 제출 버튼을 누르면 Amazon SageMaker Ground Truth는 흰색 배경의 출력 마스크와 다음과 같은 매니페스트 파일을 생성합니다.
Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

{"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 Simple Storage Service(Amazon S3) 이미지 확대 파이프라인의 모든 입력 및 출력을 저장하는 버킷입니다. 게시물에서는 S3 버킷 이름을 사용합니다. 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 위치, 마스크 위치, 마스크 정보 등을 기록하는 입력 사전을 생성하고 txt 파일로 저장한 다음 대상 S3 버킷 '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에서 개발한 Fourier 컨볼루션을 사용한 해상도 강건한 대형 마스크 인페인팅 모델입니다. 모델의 입력은 이미지와 흑백 마스크이며 출력은 마스크 내부의 개체가 제거된 이미지입니다. Amazon SageMaker Ground Truth를 사용하여 원본 마스크를 만든 다음 필요에 따라 흑백 마스크로 변환합니다. LaMa 모델 적용은 다음과 같이 시연됩니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

4.3.2 Amazon SageMaker 비동기 추론 소개 

Amazon SageMaker 비동기 추론 의 새로운 추론 옵션입니다. 아마존 세이지 메이커 들어오는 요청을 대기열에 넣고 비동기식으로 처리합니다. 비동기식 추론을 사용하면 처리할 요청이 없을 때 인스턴스 수를 1으로 자동 확장하여 사용자가 비용을 절약할 수 있습니다. 즉, 엔드포인트가 요청을 처리할 때만 비용을 지불하면 됩니다. 새로운 비동기 추론 옵션은 요청 크기가 크고(최대 XNUMXGB) 추론 처리 시간이 몇 분 정도인 워크로드에 이상적입니다. 끝점을 배포하고 호출하는 코드는 다음과 같습니다. 여기에서 지금 확인해 보세요..

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 버전이 있는 도커 컨테이너를 가리킵니다.

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 콘솔에 표시됩니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

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 엔드포인트의 추론 결과 확인 

엔드포인트를 선택하면 모니터 세션이 표시됩니다. 콘솔에서 추론 결과를 확인하려면 '로그 보기'를 선택합니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

두 개의 로그 레코드가 로그 스트림에 표시됩니다. 명명 된 사람 data-log 최종 추론 결과를 표시하고 다른 로그 레코드는 일반적으로 디버그 목적으로 사용되는 추론의 세부 정보를 표시합니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

추론 요청이 성공하면 다음 메시지가 표시됩니다. Inference request succeeded.데이터 로그에서 총 모델 대기 시간, 총 처리 시간 등의 정보를 메시지로 가져옵니다. 추론이 실패하면 다른 로그를 확인하여 디버그하십시오. 추론 요청의 상태를 폴링하여 결과를 확인할 수도 있습니다. Amazon SageMaker 비동기 추론에 대해 자세히 알아보십시오. 여기에서 지금 확인해 보세요..

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

4.3.6 끝점을 사용하여 구성 요소가 누락된 합성 결함 생성

끝점에서 다음 네 가지 작업을 완료합니다.

  1. Lookout for Vision 이상 지역화 서비스는 모델 성능을 최적화하기 위해 훈련 데이터 세트의 이미지당 하나의 결함이 필요합니다. 따라서 색상 필터링을 통해 끝점에서 서로 다른 결함에 대한 마스크를 분리해야 합니다.
    Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.
  2. 다음 요구 사항을 충족하도록 학습/테스트 데이터 세트를 분할합니다.
    • 최소 10개의 일반 이미지와 10개의 변칙 데이터 세트
    • 기차 데이터 세트의 결함/이미지 XNUMX개
    • 테스트 데이터 세트에 대해 최소 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 버킷에 저장됩니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

5 Vision 모델 교육 및 결과에 대한 Lookout

5.1 프로젝트를 설정하고 데이터 세트를 업로드하고 모델 교육을 시작합니다. 

  1. 먼저, Vision에서 Lookout for Vision으로 이동할 수 있습니다. AWS Console 프로젝트를 생성합니다.
    Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.
  2. 그런 다음 선택하여 훈련 데이터 세트를 생성할 수 있습니다. SageMaker Ground Truth로 레이블이 지정된 이미지 가져오기 SageMaker 끝점에서 생성된 기차 데이터 세트 매니페스트의 Amazon S3 위치를 제공합니다.
    Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.
  3. 다음으로 다음을 선택하여 테스트 데이터 세트를 생성할 수 있습니다. SageMaker Ground Truth로 레이블이 지정된 이미지 가져오기 다시 SageMaker 엔드포인트에서 생성된 테스트 데이터 세트 매니페스트의 Amazon S3 위치를 제공합니다.
    Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.
    .......Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.
    ....
  4. 학습 및 테스트 데이터 세트가 성공적으로 업로드되면 다음을 선택할 수 있습니다. 모델 학습 오른쪽 상단 모서리에 있는 버튼을 클릭하여 변칙 지역화 모델 교육을 트리거합니다.
    ......
  5. 실험에서 모델이 학습을 완료하는 데 XNUMX시간보다 약간 더 오래 걸렸습니다. 상태가 학습 완료로 표시되면 모델 링크를 선택하여 결과를 확인할 수 있습니다.
    ....
    Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

5.2 모델 학습 결과

5.2.1 모델 성능 지표 

에서 선택한 후 모델 1 위와 같이 100% Precision, 100% Recall, 100% F1 점수에서 모델 성능이 꽤 좋은 것을 알 수 있습니다. 또한 레이블(누락된 구성 요소)당 성능을 확인할 수 있으며 세 레이블 모두의 F1 점수가 93% 이상이고 평균 IoU가 85% 이상임을 알게 되어 기쁩니다. 이 결과는 게시물에서 시연한 이 작은 데이터 세트에 대해 만족스럽습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

5.2.2 테스트 데이터 세트에서 합성 결함 탐지의 시각화. 

다음 이미지와 같이 각 이미지는 normal or anomaly 신뢰 점수가 있는 레이블. 이상이 있는 경우 이미지의 비정상적인 영역 위에 결함 유형마다 다른 색상으로 마스크를 표시합니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

다음은 테스트 데이터 세트에서 결합된 누락된 구성 요소(이 경우 세 가지 결함)의 예입니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

다음으로 모델을 다음으로 컴파일하고 패키징할 수 있습니다. AWS IoT 그린그래스 이 게시물의 지침을 따르는 구성 요소, GPU를 사용하지 않고 엣지에서 Amazon Lookout for Vision을 사용하여 이상 위치 식별, 그리고 모델에 대한 추론을 실행합니다.

6. 실제 결함에 대해 합성 데이터로 훈련된 Lookout for Vision 모델 테스트

합성 결함에 대해 훈련된 모델이 실제 결함에 대해 잘 수행할 수 있는지 테스트하기 위해 다음에서 데이터 세트(aliens-dataset)를 선택했습니다. 여기에서 지금 확인해 보세요. 실험을 실행합니다.

먼저, 생성된 합성 결함과 실제 결함을 비교합니다. 왼쪽 이미지는 헤드가 없는 실제 결함이고 오른쪽 이미지는 ML 모델을 사용하여 헤드가 제거된 생성된 결함입니다.

진짜 결함

진짜 결함

합성 결함

합성 결함

둘째, Lookout for Vision의 시험 탐지를 사용하여 실제 결함에 대해 모델을 테스트합니다. 테스트 이미지를 S3 버킷에 저장하고 Amazon S3에서 가져오거나 컴퓨터에서 이미지를 업로드할 수 있습니다. 그런 다음 선택 이상 징후 감지 탐지를 실행합니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

마지막으로 실제 결함의 예측 결과를 볼 수 있습니다. 합성 결함에 대해 훈련된 모델은 이 실험에서 실제 결함을 정확하게 결함시킬 수 있습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

합성 결함에 대해 훈련된 모델은 실제 결함, 특히 이 샘플 데이터 세트보다 훨씬 더 복잡한 회로 기판에서 항상 잘 수행되지 않을 수 있습니다. 실제 결함이 있는 모델을 다시 학습시키려면 레이블이 지정된 주황색 버튼을 선택할 수 있습니다. 기계 예측 확인 예측 결과의 오른쪽 상단에서 다음과 같이 확인하십시오. 옳은 or 부정확 한.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

그런 다음 모델 성능을 향상시키기 위해 오른쪽 상단 모서리에 있는 주황색 버튼을 선택하여 검증된 이미지와 레이블을 교육 데이터 세트에 추가할 수 있습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.

7. 비용 산정 

Lookout for Vision을 위한 이 이미지 증대 파이프라인은 매우 비용 효율적입니다. 위에 표시된 예에서 Amazon SageMaker Ground Truth Labeling, Amazon SageMaker 노트북, SageMaker 비동기 엔드포인트 배포 및 추론 비용은 몇 달러에 불과합니다. Lookout for Vision 서비스의 경우 사용한 만큼만 지불하면 됩니다. 청구서를 결정하는 세 가지 구성 요소는 모델 학습 요금(교육 시간), 클라우드에서 이상 감지 요금(클라우드 추론 시간) 및/또는 에지에서 이상 감지 요금(에지 추론 단위)입니다. 실험에서 Lookout for Vision 모델은 교육을 완료하는 데 2.00시간보다 약간 더 오래 걸렸으며 비용은 교육 시간당 $XNUMX입니다. 또한 나열된 가격으로 클라우드 또는 에지에서 추론을 위해 훈련된 모델을 사용할 수 있습니다. 여기에서 지금 확인해 보세요..

8. 정리

불필요한 비용이 발생하지 않도록 콘솔을 사용하여 포스트에서 실습을 실행하는 동안 생성한 엔드포인트 및 리소스를 삭제하십시오.

  1. SageMaker 콘솔을 열고 다음 리소스를 삭제합니다.
    • 엔드포인트. 엔드포인트를 삭제하면 ML 컴퓨팅 인스턴스 또는 이를 지원하는 인스턴스도 삭제됩니다.
      1. $XNUMX Million 미만 추론선택한다.  종점.
      2. 예제에서 생성한 엔드포인트를 선택하고 다음을 선택합니다. 행위, 다음을 선택하십시오. ..
    • 끝점 구성입니다.
      1. $XNUMX Million 미만 추론선택한다.  끝점 구성.
      2. 예제에서 생성한 엔드포인트 구성을 선택하고 다음을 선택합니다. 행위, 다음을 선택하십시오. ..
    • 모델.
      1. $XNUMX Million 미만 추론선택한다.  모델.
      2. 예제에서 생성한 모델을 선택하고 다음을 선택합니다. 행위, 다음을 선택하십시오. ..
    • 노트북 인스턴스. 노트북 인스턴스를 삭제하기 전에 중지하십시오.
      1. $XNUMX Million 미만 수첩선택한다.  노트북 인스턴스.
      2. 예제에서 생성한 노트북 인스턴스를 선택하고 다음을 선택합니다. 행위, 다음을 선택하십시오. 중지. 노트북 인스턴스를 중지하는 데 몇 분 정도 걸립니다. 때 Status 변경 사항 중단, 다음 단계로 이동하십시오.
      3. 왼쪽 메뉴에서 행위, 다음을 선택하십시오. ..
  2. 열기 Amazon S3 콘솔을 클릭한 다음 모델 아티팩트 및 학습 데이터 세트를 저장하기 위해 생성한 버킷을 삭제합니다.
  3. 열기 Amazon CloudWatch 콘솔로 시작하는 이름을 가진 모든 로그 그룹을 삭제합니다. /aws/sagemaker/.

다음 코드를 실행하여 SageMaker 노트북에서 엔드포인트를 삭제할 수도 있습니다.

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 탐색으로 시작 여기에서 지금 확인해 보세요..


저자에 관하여

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.카라 양 AWS Professional Services의 데이터 과학자입니다. 그녀는 AWS 클라우드 서비스를 통해 고객이 비즈니스 목표를 달성하도록 지원하는 데 열정적이며 조직이 제조, 자동차, 환경 지속 가능성 및 항공 우주와 같은 여러 산업에서 엔드 투 엔드 AI/ML 솔루션을 구축하도록 지원했습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.Octavi Obiols-세일즈 Associate Solutions Architect로 인증된 딥 러닝(DL) 및 머신 러닝 전문 전산 과학자입니다. 클라우드와 에지 모두에 대한 광범위한 지식을 갖춘 그는 엔드 투 엔드 AI 솔루션 구축을 통해 비즈니스 성과를 가속화하는 데 도움을 줍니다. Octavi는 University of California, Irvine에서 전산 과학 박사 학위를 취득했으며 그곳에서 DL+HPC 알고리즘의 최신 기술을 추진했습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.파비안 베니테즈-퀴로즈 AWS Professional Services의 IoT Edge 데이터 과학자입니다. 그는 오하이오 주립 대학에서 컴퓨터 비전 및 패턴 인식 박사 학위를 받았습니다. Fabian은 고객이 IoT 장치 및 클라우드에서 짧은 대기 시간으로 기계 학습 모델을 실행하도록 돕는 일에 참여하고 있습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.마니쉬 탈레자 AWS IoT 솔루션의 수석 제품 관리자입니다. 그는 고객이 클라우드와 엣지에서 AWS IoT 및 ML 서비스를 사용하여 혁신적인 솔루션을 구축하도록 돕는 일에 열정적입니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.양유신 AWS Machine Learning Specialty 인증을 받은 AWS의 AI/ML 설계자입니다. 그녀는 고객이 예측 유지 관리, 컴퓨터 비전 및 강화 학습을 포함한 엔드 투 엔드 AI/ML 솔루션을 구축하여 결과를 가속화할 수 있도록 지원합니다. Yuxin은 Stanford University에서 딥 러닝 및 빅 데이터 분석에 중점을 둔 석사 학위를 취득했습니다.

Vision PlatoBlockchain 데이터 인텔리전스를 위한 Amazon Lookout의 이미지 증대 파이프라인. 수직 검색. 일체 포함.잉마오 티모시 리 AWS의 데이터 과학자입니다. 그는 11개월 전에 AWS에 합류했으며 광범위한 서비스 및 기계 학습 기술을 사용하여 다양한 고객을 위한 솔루션을 구축합니다. 그는 전기 공학 박사 학위를 보유하고 있습니다. 여가 시간에는 야외 게임, 자동차 경주, 수영, 피리 부는 새끼를 타고 나라를 가로질러 하늘을 탐험하는 것을 즐깁니다.

 

타임 스탬프 :

더보기 AWS 기계 학습