Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Bildeforstørrelsespipeline for Amazon Lookout for Vision

Amazon Lookout for Vision tilbyr en maskinlæringsbasert (ML)-basert anomalideteksjonstjeneste for å identifisere normale bilder (dvs. bilder av objekter) uten defekter) kontra anomale bilder (dvs. bilder av objekter med defekter), typer anomalier (f.eks. manglende del), og plasseringen av disse anomaliene. Derfor er Lookout for Vision populær blant kunder som ser etter automatiserte løsninger for industriell kvalitetsinspeksjon (f.eks. oppdage unormale produkter). Imidlertid møter kundenes datasett vanligvis to problemer:

  1. Antall bilder med uregelmessigheter kan være svært lavt og vil kanskje ikke nå minimum avvik/defekttype pålagt av Lookout for Vision (~20).
  2. Normale bilder har kanskje ikke nok mangfold og kan føre til at modellen svikter når miljøforhold som belysning endres i produksjonen

For å overvinne disse problemene, introduserer dette innlegget en bildeforstørrelsespipeline som retter seg mot begge problemene: Den gir en måte å generere syntetiske uregelmessige bilder ved å fjerne objekter i bilder og genererer ytterligere normale bilder ved å introdusere kontrollert forsterkning som gaussisk støy, fargetone, metning, piksel verdiskalering etc. Vi bruker imgaug biblioteket for å introdusere utvidelse for å generere flere unormale og normale bilder for det andre problemet. Vi bruker Amazon Sagemaker Ground Truth å generere objektfjerningsmasker og LaMa algoritme for å fjerne objekter for det første problemet ved å bruke teknikker for maling av bilder (objektfjerning).

Resten av innlegget er organisert som følger. I del 3 presenterer vi bildeforstørrelsespipelinen for vanlige bilder. I seksjon 4 presenterer vi bildeforsterkningsrørledningen for unormale bilder (alias syntetisk defektgenerering). Del 5 illustrerer treningsresultatene for Lookout for Vision ved å bruke det utvidede datasettet. Del 6 viser hvordan Lookout for Vision-modellen som er trent på syntetiske data, presterer mot reelle defekter. I avsnitt 7 snakker vi om kostnadsestimat for denne løsningen. All koden vi brukte for dette innlegget er tilgjengelig her..

1. Løsningsoversikt

ML diagram

Følgende er diagrammet over den foreslåtte pipeline for bildeforsterkning for opplæring i Lookout for Vision-avvikslokaliseringsmodell:

Diagrammet ovenfor starter med å samle en serie bilder (trinn 1). Vi utvider datasettet ved å utvide de normale bildene (trinn 3) og ved å bruke algoritmer for fjerning av objekter (trinn 2, 5-6). Vi pakker deretter dataene i et format som kan konsumeres av Amazon Lookout for Vision (trinn 7-8). Til slutt, i trinn 9, bruker vi de pakkede dataene til å trene opp en Lookout for Vision-lokaliseringsmodell.

Denne bildeforstørrelsespipelinen gir kundene fleksibilitet til å generere syntetiske defekter i det begrensede prøvedatasettet, samt legge til mer mengde og variasjon til normale bilder. Det ville øke ytelsen til Lookout for Vision-tjenesten, løse problemet med mangel på kundedata og gjøre den automatiserte kvalitetsinspeksjonsprosessen jevnere.

2. Dataklargjøring

Herfra til slutten av innlegget bruker vi offentligheten FICS-PCB: Et multimodalt bildedatasett for automatisk inspeksjon av trykte kretskort datasett lisensiert under a Creative Commons Attribution 4.0 International (CC BY 4.0)-lisens for å illustrere pipeline for bildeforstørrelse og den påfølgende Lookout for Vision-trening og testing. Dette datasettet er utviklet for å støtte evaluering av automatiserte PCB visuelle inspeksjonssystemer. Det ble samlet inn på laboratoriet SeCurity and Assurance (SCAN) ved University of Florida. Den kan nås her..

Vi starter med hypotesen om at kunden bare gir et enkelt normalt bilde av et PCB-kort (en s10 PCB-prøve) som datasettet. Det kan sees som følger:

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

3. Bildeforstørrelse for vanlige bilder

Lookout for Vision-tjenesten krever minst 20 normale bilder og 20 anomalier per defekttype. Siden det bare er ett normalt bilde fra eksempeldataene, må vi generere mer normale bilder ved hjelp av bildeforstørrelsesteknikker. Fra ML-standpunkt kan mating av flere bildetransformasjoner ved hjelp av forskjellige forstørrelsesteknikker forbedre nøyaktigheten og robustheten til modellen.

Vi skal bruke imgaug for bildeforstørrelse av vanlige bilder. Imgaug er en åpen kildekode python-pakke som lar deg utvide bilder i ML-eksperimenter.

Først skal vi installere imgaug bibliotek i en Amazon SageMaker notisbok.

pip install imgaug

Deretter kan vi installere python-pakken kalt 'IPyPlot'.

pip install ipyplot

Deretter utfører vi bildeforstørrelse av det originale bildet ved hjelp av transformasjoner inkludert GammaContrast, SigmoidContrastog LinearContrast, og legger til gaussisk støy på bildet.

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)

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Siden vi trenger minst 20 normale bilder, og jo flere jo bedre, genererte vi 10 utvidede bilder for hver av de 4 transformasjonene vist ovenfor som vårt normale bildedatasett. I fremtiden planlegger vi også å transformere bildene som skal plasseres på forskjellige steder og forskjellige engler, slik at den trente modellen kan være mindre følsom for plasseringen av objektet i forhold til det faste kameraet.

4. Syntetisk defektgenerering for forsterkning av unormale bilder

I denne delen presenterer vi en pipeline for generering av syntetiske defekter for å øke antallet bilder med anomalier i datasettet. Merk at i motsetning til forrige seksjon hvor vi lager nye normale prøver fra eksisterende normale prøver, her lager vi nye anomalibilder fra normale prøver. Dette er en attraktiv funksjon for kunder som fullstendig mangler denne typen bilder i datasettene sine, for eksempel fjerning av en komponent av det vanlige PCB-kortet. Denne pipelinen for generering av syntetiske defekter har tre trinn: Først genererer vi syntetiske masker fra kildebilder (normale) ved å bruke Amazon SageMaker Ground Truth. I dette innlegget retter vi oss mot en spesifikk defekttype: manglende komponent. Denne maskegenereringen gir et maskebilde og en manifestfil. For det andre må manifestfilen endres og konverteres til en inngangsfil for et SageMaker-endepunkt. Og for det tredje blir inndatafilen lagt inn til et SageMaker-endepunkt for objektfjerning som er ansvarlig for å fjerne delene av det normale bildet som er angitt av masken. Dette endepunktet gir det resulterende unormale bildet.

4.1 Generer syntetiske defektmasker ved å bruke Amazon SageMaker Ground Truth

Amazon Sagemaker Ground Truth for datamerking

Amazon SageMaker Ground Truth er en datamerkingstjeneste som gjør det enkelt å merke data og gir deg muligheten til å bruke menneskelige annotatorer gjennom Amazon Mekanisk Turk, tredjepartsleverandører eller din egen private arbeidsstyrke. Du kan følge denne opplæringen for å sette opp en merkejobb.

I denne delen viser vi hvordan vi bruker Amazon SageMaker Ground Truth for å merke spesifikke "komponenter" i vanlige bilder som skal fjernes i neste trinn. Merk at et sentralt bidrag til dette innlegget er at vi ikke bruker Amazon SageMaker Ground Truth på sin tradisjonelle måte (det vil si å merke treningsbilder). Her bruker vi den til å generere en maske for fremtidig fjerning i normale bilder. Disse fjerningene i normale bilder vil generere syntetiske defekter.

For formålet med dette innlegget vil vi i merkingsjobben vår kunstig fjerne opptil tre komponenter fra PCB-kortet: IC, resistor1 og resistor2. Etter å ha gått inn i merkejobben som etiketteringsmaskin, kan du velge etikettnavnet og tegne en maske av en hvilken som helst form rundt komponenten du vil fjerne fra bildet som en syntetisk defekt. Merk at du ikke kan inkludere «_» i etikettnavnet for dette eksperimentet, siden vi bruker «_» for å skille forskjellige metadata i defektnavnet senere i koden.

I det følgende bildet tegner vi en grønn maske rundt IC (Integrated Circuit), en blå maske rundt motstand 1 og en oransje maske rundt motstand 2.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Etter at vi har valgt send knappen, vil Amazon SageMaker Ground Truth generere en utdatamaske med hvit bakgrunn og en manifestfil som følger:
Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

{"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"}}

Merk at vi så langt ikke har generert noen unormale bilder. Vi har nettopp merket de tre komponentene som vil bli kunstig fjernet og hvis fjerning vil generere unormale bilder. Senere vil vi bruke både (1) maskebildet ovenfor og (2) informasjonen fra manifestfilen som input for den unormale bildegenereringspipelinen. Den neste delen viser hvordan du forbereder inndata for SageMaker-endepunktet.

4.2 Forbered inndata for SageMaker-endepunkt

Transformer Amazon SageMaker Ground Truth-manifestet som en SageMaker-endepunktinndatafil

Først setter vi opp en Amazon Simple Storage Service (Amazon S3) bøtte for å lagre alle inndata og utdata for bildeforstørrelsesrørledningen. I innlegget bruker vi en S3 bøtte som heter qualityinspection. Deretter genererer vi alle de utvidede normale bildene og laster dem opp til denne S3-bøtten.

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)

Deretter laster vi ned masken fra Amazon SageMaker Ground Truth og laster den opp til en mappe kalt "maske" i den S3-bøtten.

# 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')

Etter det laster vi ned manifestfilen fra Amazon SageMaker Ground Truth-merkejobben og leser den som json-linjer.

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)

Til slutt genererer vi en inndataordbok som registrerer inngangsbildets S3-plassering, maskeplassering, maskeinformasjon, etc., lagrer den som txt-fil, og laster den deretter opp til S3-bøtte-input-mappen.

# 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')

Følgende er en eksempelinndatafil:

{"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 Opprett asynkront SageMaker-endepunkt for å generere syntetiske defekter med manglende komponenter

4.3.1 LaMa-modell

For å fjerne komponenter fra det originale bildet, bruker vi en åpen kildekode PyTorch-modell kalt LaMa fra LaMa: Oppløsningsrobust stor maskemaling med Fourier-omviklinger. Det er en oppløsningsrobust modell for stor maske i maling med Fourier-omviklinger utviklet av Samsung AI. Inndataene for modellen er et bilde og en svart-hvitt maske, og utgangen er et bilde med objektene inne i masken fjernet. Vi bruker Amazon SageMaker Ground Truth for å lage den originale masken, og deretter transformere den til en svart-hvitt maske etter behov. LaMa-modellapplikasjonen demonstreres som følgende:

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

4.3.2 Introduserer Amazon SageMaker Asynkron inferens 

Amazon SageMaker Asynchronous Inference er et nytt slutningsalternativ i Amazon SageMaker som setter innkommende forespørsler i kø og behandler dem asynkront. Asynkron inferens gjør det mulig for brukere å spare kostnader ved å autoskalere forekomsttellingen til null når det ikke er noen forespørsler å behandle. Dette betyr at du kun betaler når endepunktet ditt behandler forespørsler. Det nye alternativet for asynkron slutning er ideell for arbeidsbelastninger der forespørselsstørrelsene er store (opptil 1 GB) og behandlingstiden for slutninger er i størrelsesorden minutter. Koden for å distribuere og påkalle endepunktet er her..

4.3.3 Utrulling av endepunkt

For å distribuere det asynkrone endepunktet, må vi først hente IAM-rolle og sett opp noen miljøvariabler.

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'

Som vi nevnte før, bruker vi åpen kildekode PyTorch-modell LaMa: Oppløsningsrobust stor maskemaling med Fourier-omviklinger og den ferdigtrente modellen er lastet opp til s3://qualityinspection/model/big-lama.tar.gz. De image_uri peker på en docker-beholder med de nødvendige rammeverk- og pythonversjonene.

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
)

Deretter må vi spesifisere flere asynkrone slutningsspesifikke konfigurasjonsparametere mens vi oppretter endepunktkonfigurasjonen.

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)

Deretter distribuerer vi endepunktet på en ml.g4dn.xlarge-forekomst ved å kjøre følgende kode:

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

Etter ca. 6-8 minutter er endepunktet opprettet, og det vil vises i SageMaker-konsollen.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

4.3.4 Åpne endepunktet

Deretter bruker vi input txt-filen vi genererte tidligere som input til endepunktet og påkaller endepunktet ved å bruke følgende kode:

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')

Kommandoen ovenfor vil fullføre kjøringen umiddelbart. Inferensen vil imidlertid fortsette i flere minutter til den fullfører alle oppgavene og returnerer alle utdataene i S3-bøtten.

4.3.5 Sjekk slutningsresultatet til endepunktet 

Etter at du har valgt endepunktet, vil du se Monitor-økten. Velg "Se logger" for å sjekke slutningsresultatene i konsollen.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

To loggposter vil vises i loggstrømmer. Den som heter data-log vil vise det endelige slutningsresultatet, mens den andre loggposten vil vise detaljene om slutningen, som vanligvis brukes til feilsøkingsformål.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Hvis slutningsforespørselen lykkes, vil du se meldingen: Inference request succeeded.i dataloggen og få også informasjon om total modelllatens, total prosesstid osv. i meldingen. Hvis slutningen mislykkes, sjekk den andre loggen for å feilsøke. Du kan også sjekke resultatet ved å spørre statusen til slutningsforespørselen. Lær mer om Amazon SageMaker Asynchronous inference her..

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

4.3.6 Generering av syntetiske defekter med manglende komponenter ved bruk av endepunktet

Vi skal fullføre fire oppgaver i endepunktet:

  1. Lookout for Vision-anomalilokaliseringstjenesten krever én defekt per bilde i treningsdatasettet for å optimalisere modellytelsen. Derfor må vi skille maskene for ulike defekter i endepunktet ved fargefiltrering.
    Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  2. Del opp tog-/testdatasett for å tilfredsstille følgende krav:
    • minst 10 normale bilder og 10 anomalier for togdatasett
    • én defekt/bilde i togdatasett
    • minst 10 normale bilder og 10 anomalier for testdatasettet
    • flere defekter per bilde er tillatt for testdatasettet
  3. Generer syntetiske defekter og last dem opp til S3-målstedene.

Vi genererer én defekt per bilde og mer enn 20 defekter per klasse for togdatasett, samt 1-3 defekter per bilde og mer enn 20 feil per klasse for testdatasettet.

Følgende er et eksempel på kildebildet og dets syntetiske defekter med tre komponenter: IC, resistor1 og resistor 2 mangler.

originalt bilde

originalt bilde

40_im_mask_IC_resistor1_resistor2.jpg (defektnavnet indikerer de manglende komponentene)

40_im_mask_IC_resistor1_resistor2.jpg (defektnavnet indikerer de manglende komponentene)

  1.  Generer manifestfiler for tog-/testdatasett som registrerer all informasjonen ovenfor.

Til slutt vil vi generere tog-/testmanifester for å registrere informasjon, for eksempel syntetisk defekt S3-plassering, maske S3-plassering, defektklasse, maskefarge, etc.

Følgende er eksempler på json-linjer for en anomali og et normalt bilde i manifestet.

For uregelmessigheter:

{"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"}}

For normalt bilde:

{"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-mappestruktur

Inndata og utdata fra endepunktet lagres i mål S3-bøtten i følgende struktur:

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

5 Se etter trening og resultat for Visjonsmodell

5.1 Sett opp et prosjekt, last opp datasett og start modellopplæring. 

  1. Først kan du gå til Lookout for Vision fra AWS-konsoll og lage et prosjekt.
    Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  2. Deretter kan du opprette et opplæringsdatasett ved å velge Importer bilder merket av SageMaker Ground Truth og gi Amazon S3-plasseringen til togdatasettmanifestet generert av SageMaker-endepunktet.
    Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
  3. Deretter kan du opprette et testdatasett ved å velge Importer bilder merket av SageMaker Ground Truth igjen, og gi Amazon S3-plasseringen til testdatasettets manifest generert av SageMaker-endepunktet.
    Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    .......Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.
    ....
  4. Etter at tog- og testdatasettene er lastet opp, kan du velge Togmodell knappen øverst til høyre for å utløse opplæringen av anomalilokaliseringsmodellen.
    ......
  5. I vårt eksperiment tok modellen litt lengre tid enn én time å fullføre opplæringen. Når statusen viser at treningen er fullført, kan du velge modelllenken for å sjekke resultatet.
    ....
    Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

5.2 Resultat av modelltrening

5.2.1 Modellytelsesmålinger 

Etter å ha valgt på modell 1 som vist ovenfor, kan vi se fra 100 % presisjon, 100 % tilbakekalling og 100 % F1-poengsum at modellytelsen er ganske god. Vi kan også sjekke ytelsen per etikett (manglende komponent), og vi vil gjerne finne at alle tre etikettenes F1-score er over 93 %, og gjennomsnittlig IoU er over 85 %. Dette resultatet er tilfredsstillende for dette lille datasettet som vi demonstrerte i innlegget.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

5.2.2 Visualisering av oppdagelse av syntetiske defekter i testdatasettet. 

Som det følgende bildet viser, vil hvert bilde bli defektert som en normal or anomaly merke med en konfidensscore. Hvis det er en anomali, vil den vise en maske over det unormale området i bildet med en annen farge for hver defekttype.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Følgende er et eksempel på kombinerte manglende komponenter (tre defekter i dette tilfellet) i testdatasettet:

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Deretter kan du kompilere og pakke modellen som en AWS IoT Greengrass komponent etter instruksjonene i dette innlegget, Identifiser plasseringen av uregelmessigheter ved å bruke Amazon Lookout for Vision på kanten uten å bruke en GPU, og kjøre slutninger om modellen.

6. Test Lookout for Vision-modellen trent på syntetiske data mot reelle defekter

For å teste om modellen som er trent på den syntetiske defekten kan fungere godt mot reelle defekter, plukket vi et datasett (aliens-dataset) fra her. å kjøre et eksperiment.

Først sammenligner vi den genererte syntetiske defekten og den virkelige defekten. Det venstre bildet er en reell defekt med et manglende hode, og det høyre bildet er en generert defekt med hodet fjernet ved hjelp av en ML-modell.

Virkelig defekt

Virkelig defekt

Syntetisk defekt

Syntetisk defekt

For det andre bruker vi prøvedeteksjonene i Lookout for Vision for å teste modellen mot den virkelige feilen. Du kan enten lagre testbildene i S3-bøtten og importere dem fra Amazon S3 eller laste opp bilder fra datamaskinen din. Deretter velger du Oppdage avvik for å kjøre deteksjonen.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Til slutt kan du se prediksjonsresultatet av den virkelige defekten. Modellen trent på syntetiske defekter kan defekte den virkelige defekten nøyaktig i dette eksperimentet.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Modellen som er trent på syntetiske defekter fungerer kanskje ikke alltid bra på reelle defekter, spesielt kretskort som er mye mer kompliserte enn dette prøvedatasettet. Hvis du vil omskolere modellen med reelle defekter, kan du velge den oransje knappen merket Bekreft maskinspådommer i øvre høyre hjørne av prediksjonsresultatet, og sjekk det deretter som Riktig or stemmer ikke.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Deretter kan du legge til det bekreftede bildet og etiketten til treningsdatasettet ved å velge den oransje knappen i øvre høyre hjørne for å forbedre modellens ytelse.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

7. Kostnadsestimat 

Denne bildeforstørrelsespipelinen for Lookout for Vision er svært kostnadseffektiv. I eksemplet vist ovenfor koster Amazon SageMaker Ground Truth Labeling, Amazon SageMaker notebook og SageMaker asynkron endepunktdistribusjon og slutning bare noen få dollar. For Lookout for Vision-tjenesten betaler du kun for det du bruker. Det er tre komponenter som bestemmer regningen din: gebyrer for opplæring av modellen (treningstimer), gebyrer for å oppdage uregelmessigheter i skyen (timer i skyen), og/eller gebyrer for å oppdage uregelmessigheter på kanten (kantslutningsenheter). I vårt eksperiment tok Lookout for Vision-modellen litt lengre tid enn én time å fullføre opplæringen, og den kostet $2.00 per treningstime. Videre kan du bruke den trente modellen for slutninger på skyen eller på kanten med prisen oppgitt her..

8. Rydde opp

For å unngå unødvendige kostnader, bruk konsollen til å slette endepunktene og ressursene du opprettet mens du kjørte øvelsene i innlegget.

  1. Åpne SageMaker-konsollen og slett følgende ressurser:
    • Endepunktet. Sletting av endepunktet sletter også ML-beregningsforekomsten eller -instansene som støtter den.
      1. Under slutning, velg endepunkter.
      2. Velg endepunktet du opprettet i eksemplet, velg handlinger, og velg deretter Delete.
    • Endepunktkonfigurasjonen.
      1. Under slutning, velg Sluttpunktkonfigurasjoner.
      2. Velg endepunktkonfigurasjonen du opprettet i eksemplet, velg handlinger, og velg deretter Delete.
    • Modellen.
      1. Under slutning, velg Modeller.
      2. Velg modellen du opprettet i eksemplet, velg handlinger, og velg deretter Delete.
    • Notebook-forekomsten. Stopp den før du sletter den bærbare forekomsten.
      1. Under bærbare, velg Notatboksforekomster.
      2. Velg notatbokforekomsten du opprettet i eksemplet, velg handlinger, og velg deretter Stopp. Det tar flere minutter før den bærbare forekomsten stopper. Når status endres til stoppet, gå videre til neste trinn.
      3. Velg handlinger, og velg deretter Delete.
  2. Åpne Amazon S3-konsoll, og slett deretter bøtten du opprettet for lagring av modellartefakter og opplæringsdatasettet.
  3. Åpne Amazon CloudWatch-konsoll, og slett deretter alle logggruppene som har navn som begynner med /aws/sagemaker/.

Du kan også slette endepunktet fra SageMaker notatbok ved å kjøre følgende kode:

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

9. konklusjon

I dette innlegget demonstrerte vi hvordan man merker syntetiske defektmasker ved å bruke Amazon SageMaker Ground Truth, hvordan man bruker forskjellige bildeforstørrelsesteknikker for å transformere ett normalt bilde til ønsket antall normale bilder, lage et asynkront SageMaker-endepunkt og klargjøre inndatafilen for endepunktet, samt påkalle endepunktet. Til slutt demonstrerte vi hvordan man bruker tog-/testmanifestet for å trene en Lookout for Vision-anomalilokaliseringsmodell. Denne foreslåtte rørledningen kan utvides til andre ML-modeller for å generere syntetiske defekter, og alt du trenger å gjøre er å tilpasse modellen og slutningskoden i SageMaker-endepunktet.

Start med å utforske Lookout for Vision for automatisert kvalitetsinspeksjon her..


Om forfatterne

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Kara Yang er dataforsker ved AWS Professional Services. Hun brenner for å hjelpe kunder med å nå sine forretningsmål med AWS-skytjenester og har hjulpet organisasjoner med å bygge ende-til-ende AI/ML-løsninger på tvers av flere bransjer som produksjon, bilindustri, miljømessig bærekraft og romfart.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Octavi Obiols-Salg er en beregningsforsker spesialisert i dyp læring (DL) og maskinlæring sertifisert som assosiert løsningsarkitekt. Med omfattende kunnskap i både skyen og kanten, hjelper han med å akselerere forretningsresultater gjennom å bygge ende-til-ende AI-løsninger. Octavi fikk sin doktorgrad i beregningsvitenskap ved University of California, Irvine, hvor han presset på det siste innen DL+HPC-algoritmer.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Fabian Benitez-Quiroz er en IoT Edge Data Scientist i AWS Professional Services. Han har en doktorgrad i datasyn og mønstergjenkjenning fra Ohio State University. Fabian er involvert i å hjelpe kunder med å kjøre sine Machine Learning-modeller med lav ventetid på IoT-enheter og i skyen.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Manish Talreja er hovedproduktsjef for IoT-løsninger hos AWS. Han brenner for å hjelpe kunder med å bygge innovative løsninger ved å bruke AWS IoT- og ML-tjenester i skyen og på kanten.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Yuxin Yang er AI/ML-arkitekt ved AWS, sertifisert i AWS Machine Learning Specialty. Hun gjør det mulig for kundene å akselerere resultatene sine gjennom å bygge ende-til-ende AI/ML-løsninger, inkludert prediktivt vedlikehold, datasyn og forsterkende læring. Yuxin tok sin MS fra Stanford University, hvor hun fokuserte på dyp læring og big data-analyse.

Bildeforstørrelsespipeline for Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Yingmao Timothy Li er en dataforsker med AWS. Han begynte i AWS for 11 måneder siden, og han jobber med et bredt spekter av tjenester og maskinlæringsteknologier for å bygge løsninger for et mangfoldig sett av kunder. Han har en Ph.D i elektroteknikk. På fritiden liker han utendørsspill, billøp, svømming og å fly en piperunge for å krysse land og utforske himmelen.

 

Tidstempel:

Mer fra AWS maskinlæring