Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bildförstärkningspipeline för Amazon Lookout for Vision

Amazon Lookout for Vision tillhandahåller en maskininlärnings- (ML)-baserad anomalidetekteringstjänst för att identifiera normala bilder (dvs. bilder av objekt utan defekter) kontra anomala bilder (dvs bilder av objekt med defekter), typer av anomalier (t.ex. saknad del) och platsen för dessa anomalier. Därför är Lookout for Vision populärt bland kunder som letar efter automatiserade lösningar för industriell kvalitetskontroll (t.ex. för att upptäcka onormala produkter). Kundernas datauppsättningar möter dock vanligtvis två problem:

  1. Antalet bilder med anomalier kan vara mycket lågt och kanske inte når avvikelser/defekttyp minimum som införts av Lookout for Vision (~20).
  2. Normala bilder kanske inte har tillräcklig mångfald och kan leda till att modellen misslyckas när miljöförhållanden som belysning förändras i produktionen

För att övervinna dessa problem introducerar det här inlägget en pipeline för bildförstoring som riktar sig mot båda problemen: Det ger ett sätt att generera syntetiska avvikande bilder genom att ta bort objekt i bilder och genererar ytterligare normala bilder genom att introducera kontrollerad förstärkning som gaussiskt brus, nyans, mättnad, pixel värdeskalning etc. Vi använder imgaug bibliotek för att införa förstärkning för att generera ytterligare avvikande och normala bilder för det andra problemet. Vi använder Amazon Sagemaker Ground Truth för att generera masker för borttagning av objekt och Lama algoritm för att ta bort objekt för det första problemet med hjälp av bildmålningstekniker (objektborttagning).

Resten av inlägget är organiserat enligt följande. I avsnitt 3 presenterar vi pipeline för bildförstärkning för normala bilder. I avsnitt 4 presenterar vi pipeline för bildförstärkning för onormala bilder (alias syntetisk defektgenerering). Avsnitt 5 illustrerar träningsresultaten för Lookout for Vision med hjälp av den utökade datamängden. Avsnitt 6 visar hur Lookout for Vision-modellen som tränats på syntetiska data presterar mot verkliga defekter. I avsnitt 7 talar vi om kostnadsuppskattning för denna lösning. All kod som vi använde för det här inlägget kan nås här..

1. Lösningsöversikt

ML diagram

Följande är diagrammet över den föreslagna bildförstoringspipelinen för träning av Lookout for Visions anomalilokaliseringsmodell:

Diagrammet ovan börjar med att samla en serie bilder (steg 1). Vi utökar datasetet genom att utöka de normala bilderna (steg 3) och genom att använda algoritmer för borttagning av objekt (steg 2, 5-6). Vi paketerar sedan data i ett format som kan konsumeras av Amazon Lookout for Vision (steg 7-8). Slutligen, i steg 9, använder vi den paketerade datan för att träna en Lookout for Vision-lokaliseringsmodell.

Denna bildförstärkningspipeline ger kunderna flexibilitet att generera syntetiska defekter i den begränsade provdatauppsättningen, samt lägga till mer kvantitet och variation till vanliga bilder. Det skulle öka prestandan för Lookout for Vision-tjänsten, lösa problemet med bristen på kunddata och göra den automatiska kvalitetsinspektionsprocessen smidigare.

2. Dataförberedelse

Härifrån till slutet av inlägget använder vi allmänheten FICS-PCB: En multimodal bilddatauppsättning för automatisk visuell inspektion av tryckta kretskort datauppsättning licensierad under a Creative Commons Attribution 4.0 International (CC BY 4.0)-licens för att illustrera pipeline för bildförstoring och den efterföljande Lookout for Vision-träning och testning. Denna datauppsättning är utformad för att stödja utvärdering av automatiska PCB visuella inspektionssystem. Den samlades in på SeCurity and Assurance (SCAN) lab vid University of Florida. Det går att komma åt här..

Vi börjar med hypotesen att kunden endast tillhandahåller en enda normal bild av ett PCB-kort (ett s10 PCB-prov) som datauppsättning. Det kan ses på följande sätt:

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

3. Bildförstoring för normala bilder

Tjänsten Lookout for Vision kräver minst 20 normala bilder och 20 anomalier per defekttyp. Eftersom det bara finns en normal bild från exempeldatan måste vi generera fler normala bilder med hjälp av bildförstärkningstekniker. Ur ML-synpunkt kan matning av flera bildtransformationer med olika förstärkningstekniker förbättra modellens noggrannhet och robusthet.

Vi ska använda imgaug för bildförstärkning av vanliga bilder. Imgaug är ett pythonpaket med öppen källkod som låter dig utöka bilder i ML-experiment.

Först installerar vi imgaug bibliotek i en Amazon SageMaker anteckningsbok.

pip install imgaug

Därefter kan vi installera python-paketet med namnet 'IPyPlot'.

pip install ipyplot

Sedan utför vi bildförstoring av originalbilden med hjälp av transformationer inklusive GammaContrast, SigmoidContrastoch LinearContrast, och lägga till Gaussiskt brus på bilden.

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)

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Eftersom vi behöver minst 20 normala bilder, och ju fler desto bättre, genererade vi 10 förstärkta bilder för var och en av de 4 transformationerna som visas ovan som vår normala bilddatauppsättning. I framtiden planerar vi att även transformera bilderna för att placeras på olika platser och olika änglar så att den tränade modellen kan vara mindre känslig för objektets placering i förhållande till den fasta kameran.

4. Syntetisk defektgenerering för förstärkning av onormala bilder

I det här avsnittet presenterar vi en pipeline för generering av syntetiska defekter för att utöka antalet bilder med anomalier i datamängden. Observera att, i motsats till föregående avsnitt där vi skapar nya normala prover från befintliga normala prover, skapar vi här nya avvikelsebilder från normala prover. Detta är en attraktiv funktion för kunder som helt saknar den här typen av bilder i sina datauppsättningar, t.ex. att ta bort en komponent från det vanliga PCB-kortet. Denna pipeline för generering av syntetiska defekter har tre steg: först genererar vi syntetiska masker från källbilder (normala) med hjälp av Amazon SageMaker Ground Truth. I det här inlägget riktar vi oss mot en specifik defekttyp: saknad komponent. Denna maskgenerering tillhandahåller en maskbild och en manifestfil. För det andra måste manifestfilen modifieras och konverteras till en indatafil för en SageMaker-slutpunkt. Och för det tredje matas indatafilen till en SageMaker-slutpunkt för objektborttagning som ansvarar för att ta bort de delar av den normala bilden som indikeras av masken. Denna slutpunkt ger den resulterande onormala bilden.

4.1 Generera syntetiska defektmasker med Amazon SageMaker Ground Truth

Amazon Sagemaker Ground Truth för datamärkning

Amazon SageMaker Ground Truth är en datamärkningstjänst som gör det enkelt att märka data och ger dig möjlighet att använda mänskliga annotatorer genom Amazon Mekanisk Turk, tredjepartsleverantörer eller din egen privata arbetsstyrka. Du kan följa denna handledning för att skapa ett märkningsjobb.

I det här avsnittet visar vi hur vi använder Amazon SageMaker Ground Sannhet för att markera specifika "komponenter" i normala bilder som ska tas bort i nästa steg. Observera att ett viktigt bidrag från det här inlägget är att vi inte använder Amazon SageMaker Ground Truth på sitt traditionella sätt (det vill säga att märka träningsbilder). Här använder vi den för att skapa en mask för framtida borttagning i vanliga bilder. Dessa borttagningar i normala bilder kommer att generera syntetiska defekter.

För detta inlägg tar vi i vårt märkningsjobb på konstgjord väg bort upp till tre komponenter från PCB-kortet: IC, resistor1 och resistor2. Efter att ha angett etikettjobbet som etiketterare kan du välja etikettnamnet och rita en mask av valfri form runt den komponent som du vill ta bort från bilden som en syntetisk defekt. Observera att du inte kan inkludera '_' i etikettnamnet för detta experiment, eftersom vi använder '_' för att separera olika metadata i defektnamnet senare i koden.

På följande bild ritar vi en grön mask runt IC (Integrated Circuit), en blå mask runt motstånd 1 och en orange mask runt motstånd 2.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Efter att vi valt skicka knappen, kommer Amazon SageMaker Ground Truth att generera en utdatamask med vit bakgrund och en manifestfil enligt följande:
Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. 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"}}

Observera att vi hittills inte har genererat några onormala bilder. Vi har precis markerat de tre komponenterna som kommer att tas bort på konstgjord väg och vars borttagning kommer att generera onormala bilder. Senare kommer vi att använda både (1) maskbilden ovan och (2) informationen från manifestfilen som indata för den onormala bildgenereringspipelinen. Nästa avsnitt visar hur man förbereder indata för SageMaker-slutpunkten.

4.2 Förbered indata för SageMaker slutpunkt

Transformera Amazon SageMaker Ground Truth-manifest som en SageMaker-slutpunktsinmatningsfil

Först satte vi upp en Amazon Simple Storage Service (Amazon S3) hink för att lagra all indata och utdata för pipeline för bildförstoring. I inlägget använder vi en S3 hink som heter qualityinspection. Sedan genererar vi alla de utökade normala bilderna och laddar upp dem till den här S3-hinken.

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)

Därefter laddar vi ner masken från Amazon SageMaker Ground Truth och laddar upp den till en mapp som heter "mask" i den S3-hinken.

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

Efter det laddar vi ner manifestfilen från Amazon SageMaker Ground Truth labeling job och läser den som json-rader.

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)

Slutligen genererar vi en inmatningsordlista som registrerar ingångsbildens S3-plats, maskplats, maskinformation, etc., sparar den som txt-fil och laddar sedan upp den till mål-S3-bucket-'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öljande är ett exempel på en indatafil:

{"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 Skapa asynkron SageMaker-slutpunkt för att generera syntetiska defekter med saknade komponenter

4.3.1 LaMa-modell

För att ta bort komponenter från originalbilden använder vi en PyTorch-modell med öppen källkod som heter LaMa från LaMa: Upplösningsrobust stor maskmålning med Fourier-falsningar. Det är en upplösningsrobust modell med stor mask i målning med Fourier-falsningar utvecklade av Samsung AI. Ingångarna för modellen är en bild och en svartvit mask och utgången är en bild med objekten inuti masken borttagna. Vi använder Amazon SageMaker Ground Truth för att skapa den ursprungliga masken och sedan omvandla den till en svartvit mask efter behov. LaMa-modellapplikationen demonstreras enligt följande:

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

4.3.2 Introduktion av Amazon SageMaker Asynkron inferens 

Amazon SageMaker Asynchronous Inference är ett nytt slutledningsalternativ i Amazon SageMaker som köar inkommande förfrågningar och behandlar dem asynkront. Asynkron slutledning gör det möjligt för användare att spara på kostnader genom att autoskala instansräkningen till noll när det inte finns några förfrågningar att bearbeta. Det innebär att du bara betalar när din slutpunkt behandlar förfrågningar. Det nya alternativet för asynkron slutledning är idealiskt för arbetsbelastningar där förfrågningsstorlekarna är stora (upp till 1 GB) och bearbetningstiderna för slutledning är i storleksordningen minuter. Koden för att distribuera och anropa slutpunkten är här..

4.3.3 Endpoint-distribution

För att distribuera den asynkrona slutpunkten måste vi först skaffa IAM-roll och ställ in några 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 nämnde tidigare använder vi PyTorch-modellen med öppen källkod LaMa: Upplösningsrobust stor maskmålning med Fourier-falsningar och den förtränade modellen har laddats upp till s3://qualityinspection/model/big-lama.tar.gz. De image_uri pekar på en dockningsbehållare med de nödvändiga ramverks- och pythonversionerna.

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
)

Sedan måste vi specificera ytterligare asynkron slutledningsspecifika konfigurationsparametrar medan vi skapar slutpunktskonfigurationen.

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)

Därefter distribuerar vi slutpunkten på en ml.g4dn.xlarge-instans genom att köra följande kod:

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

Efter cirka 6-8 minuter skapas slutpunkten framgångsrikt och den kommer att visas i SageMaker-konsolen.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

4.3.4 Anropa ändpunkten

Därefter använder vi indata-txt-filen som vi genererade tidigare som indata för slutpunkten och anropar slutpunkten med följande kod:

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

Kommandot ovan kommer att slutföras omedelbart. Slutsatsen kommer dock att fortsätta i flera minuter tills den slutför alla uppgifter och returnerar alla utgångar i S3-skopan.

4.3.5 Kontrollera slutpunkten för slutpunkten 

När du har valt slutpunkt kommer du att se Monitor-sessionen. Välj "Visa loggar" för att kontrollera slutledningsresultaten i konsolen.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Två loggposter kommer att dyka upp i Loggströmmar. Den som heter data-log kommer att visa det slutliga slutledningsresultatet, medan den andra loggposten visar detaljerna för slutledningen, som vanligtvis används för felsökningsändamål.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Om begäran om slutledning lyckas ser du meddelandet: Inference request succeeded.i dataloggen och även få information om total modelllatens, total processtid etc. i meddelandet. Om slutledningen misslyckas, kontrollera sedan den andra loggen för att felsöka. Du kan också kontrollera resultatet genom att polla status för slutledningsbegäran. Lär dig mer om Amazon SageMaker Asynchronous inference här..

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

4.3.6 Generera syntetiska defekter med saknade komponenter med hjälp av endpoint

Vi kommer att slutföra fyra uppgifter i slutpunkten:

  1. Tjänsten Lookout for Vision anomalilokalisering kräver en defekt per bild i träningsdatauppsättningen för att optimera modellens prestanda. Därför måste vi separera maskerna för olika defekter i slutpunkten genom färgfiltrering.
    Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  2. Dela tåg-/testdataset för att uppfylla följande krav:
    • minst 10 normala bilder och 10 anomalier för tågdataset
    • en defekt/bild i tågdataset
    • minst 10 normala bilder och 10 anomalier för testdatauppsättningen
    • flera defekter per bild är tillåtna för testdatauppsättningen
  3. Generera syntetiska defekter och ladda upp dem till S3-målplatserna.

Vi genererar en defekt per bild och mer än 20 defekter per klass för tågdatauppsättning, samt 1-3 defekter per bild och mer än 20 defekter per klass för testdatauppsättningen.

Följande är ett exempel på källbilden och dess syntetiska defekter med tre komponenter: IC, resistor1 och resistor 2 saknas.

originalbild

originalbild

40_im_mask_IC_resistor1_resistor2.jpg (defektnamnet indikerar de saknade komponenterna)

40_im_mask_IC_resistor1_resistor2.jpg (defektnamnet indikerar de saknade komponenterna)

  1.  Generera manifestfiler för tåg/testdatauppsättning som registrerar all ovanstående information.

Slutligen kommer vi att generera tåg-/testmanifest för att registrera information, såsom syntetisk defekt S3-plats, mask S3-plats, defektklass, maskfärg, etc.

Följande är exempel på json-linjer för en anomali och en normal bild i manifestet.

För anomali:

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

För normal bild:

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

Indata och utdata från slutpunkten lagras i mål S3-skopan i följande struktur:

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

5 Håll utkik efter träning och resultat av Vision modell

5.1 Skapa ett projekt, ladda upp datauppsättning och starta modellutbildning. 

  1. Först kan du gå till Lookout for Vision från AWS-konsol och skapa ett projekt.
    Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  2. Sedan kan du skapa en träningsdatauppsättning genom att välja Importera bilder märkta av SageMaker Ground Truth och ge Amazon S3-platsen för tågdatamanifestet som genereras av SageMaker-ändpunkten.
    Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
  3. Därefter kan du skapa en testdatauppsättning genom att välja Importera bilder märkta av SageMaker Ground Truth igen, och ge Amazon S3-platsen för testdatauppsättningsmanifestet som genererats av SageMaker-slutpunkten.
    Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    .......Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.
    ....
  4. När tåg- och testdatauppsättningarna har laddats upp framgångsrikt kan du välja Tågmodell knappen i det övre högra hörnet för att utlösa träningsmodellen för anomalilokalisering.
    ......
  5. I vårt experiment tog modellen något längre än en timme att slutföra träningen. När statusen visar att träningen är klar kan du välja modelllänken för att kontrollera resultatet.
    ....
    Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

5.2 Modellträningsresultat

5.2.1 Modellprestandamått 

Efter att ha valt vid Modell 1 Som visas ovan kan vi se från poängen 100 % precision, 100 % återkallelse och 100 % F1 att modellens prestanda är ganska bra. Vi kan också kontrollera prestandan per etikett (saknad komponent), och vi kommer gärna att se att alla tre etiketternas F1-poäng är över 93 %, och den genomsnittliga IoUs är över 85 %. Detta resultat är tillfredsställande för denna lilla datauppsättning som vi visade i inlägget.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

5.2.2 Visualisering av detektering av syntetiska defekter i testdatauppsättningen. 

Som följande bild visar kommer varje bild att defekteras som en normal or anomaly etikett med en konfidenspoäng. Om det är en anomali kommer den att visa en mask över det onormala området i bilden med en annan färg för varje defekttyp.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Följande är ett exempel på kombinerade saknade komponenter (tre defekter i det här fallet) i testdatauppsättningen:

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Därefter kan du kompilera och paketera modellen som en AWS IoT Greengrass komponent enligt instruktionerna i det här inlägget, Identifiera platsen för anomalier med Amazon Lookout for Vision i kanten utan att använda en GPU, och kör slutsatser om modellen.

6. Testa Lookout for Vision-modellen tränad på syntetiska data mot verkliga defekter

För att testa om modellen som tränats på den syntetiska defekten kan prestera bra mot verkliga defekter, valde vi en datauppsättning (aliens-dataset) från här. att köra ett experiment.

Först jämför vi den genererade syntetiska defekten och den verkliga defekten. Den vänstra bilden är en verklig defekt med ett saknat huvud, och den högra bilden är en genererad defekt med huvudet borttaget med en ML-modell.

Verklig defekt

Verklig defekt

Syntetisk defekt

Syntetisk defekt

För det andra använder vi testdetekteringarna i Lookout for Vision för att testa modellen mot den verkliga defekten. Du kan antingen spara testbilderna i S3-hinken och importera dem från Amazon S3 eller ladda upp bilder från din dator. Välj sedan Upptäck avvikelser för att köra upptäckten.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Slutligen kan du se förutsägelseresultatet av den verkliga defekten. Modellen tränad på syntetiska defekter kan defektera den verkliga defekten exakt i detta experiment.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Modellen som tränas på syntetiska defekter kanske inte alltid fungerar bra på verkliga defekter, särskilt kretskort som är mycket mer komplicerade än denna exempeldatauppsättning. Om du vill omskola modellen med riktiga defekter, kan du välja den orangea knappen märkt Verifiera maskinförutsägelser i det övre högra hörnet av prediktionsresultatet och markera det sedan som Correct or Felaktig.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Sedan kan du lägga till den verifierade bilden och etiketten till träningsdataset genom att välja den orangea knappen i det övre högra hörnet för att förbättra modellens prestanda.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

7. Kostnadsuppskattning 

Denna bildförstoringspipeline för Lookout for Vision är mycket kostnadseffektiv. I exemplet som visas ovan kostar Amazon SageMaker Ground Truth Labeling, Amazon SageMaker notebook och SageMaker asynkron slutpunktsdistribution och slutledning bara några få dollar. För tjänsten Lookout for Vision betalar du endast för det du använder. Det finns tre komponenter som bestämmer din faktura: avgifter för att träna modellen (träningstimmar), avgifter för att upptäcka anomalier i molnet (molnslutningstimmar) och/eller avgifter för att upptäcka avvikelser på kanten (kantinferensenheter). I vårt experiment tog Lookout for Vision-modellen något längre än en timme att slutföra utbildningen, och den kostade $2.00 per träningstimme. Dessutom kan du använda den tränade modellen för slutledning på molnet eller på kanten med det angivna priset här..

8. Städa upp

För att undvika onödiga avgifter, använd konsolen för att ta bort de slutpunkter och resurser som du skapade när du körde övningarna i inlägget.

  1. Öppna SageMaker-konsolen och ta bort följande resurser:
    • Slutpunkten. Om du tar bort slutpunkten raderas även ML-beräkningsinstansen eller instanserna som stöder den.
      1. Enligt Slutledningväljer endpoints.
      2. Välj den slutpunkt som du skapade i exemplet, välj Handlingar, och välj sedan Radera.
    • Slutpunktskonfigurationen.
      1. Enligt Slutledningväljer Slutpunktskonfigurationer.
      2. Välj den slutpunktskonfiguration som du skapade i exemplet, välj Handlingar, och välj sedan Radera.
    • Modellen.
      1. Enligt Slutledningväljer Modeller.
      2. Välj modellen som du skapade i exemplet, välj Handlingar, och välj sedan Radera.
    • Anteckningsboken instans. Stoppa den innan du tar bort anteckningsbokförekomsten.
      1. Enligt Notebookväljer Notebook-instanser.
      2. Välj den anteckningsboksinstans som du skapade i exemplet, välj Handlingar, och välj sedan Sluta. Det tar flera minuter att stoppa anteckningsbokförekomsten. När status ändras till stoppad, gå vidare till nästa steg.
      3. Välja Handlingar, och välj sedan Radera.
  2. Öppna Amazon S3-konsol, och ta sedan bort hinken som du skapade för att lagra modellartefakter och träningsdatauppsättningen.
  3. Öppna Amazon CloudWatch-konsol, och ta sedan bort alla logggrupper som har namn som börjar med /aws/sagemaker/.

Du kan också ta bort slutpunkten från SageMaker notebook genom att köra följande kod:

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

9. Slutsats

I det här inlägget demonstrerade vi hur man annoterar syntetiska defektmasker med Amazon SageMaker Ground Truth, hur man använder olika bildförstärkningstekniker för att omvandla en normal bild till önskat antal normala bilder, skapa en asynkron SageMaker-slutpunkt och förbereda indatafilen för endpoint, samt anropa endpoint. Äntligen visade vi hur man använder tåg-/testmanifestet för att träna en Lookout for Vision-anomalilokaliseringsmodell. Denna föreslagna pipeline kan utökas till andra ML-modeller för att generera syntetiska defekter, och allt du behöver göra är att anpassa modellen och slutledningskoden i SageMaker-slutpunkten.

Börja med att utforska Lookout for Vision för automatisk kvalitetsinspektion här..


Om författarna

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Kara Yang är datavetare på AWS Professional Services. Hon brinner för att hjälpa kunder att nå sina affärsmål med AWS molntjänster och har hjälpt organisationer att bygga end-to-end AI/ML-lösningar inom flera branscher som tillverkning, fordonsindustri, miljömässig hållbarhet och flyg.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Octavi Obiols-försäljning är en beräkningsvetare specialiserad på djupinlärning (DL) och maskininlärning certifierad som en associerad lösningsarkitekt. Med omfattande kunskap inom både molnet och kanten hjälper han till att accelerera affärsresultat genom att bygga end-to-end AI-lösningar. Octavi tog sin doktorsexamen i beräkningsvetenskap vid University of California, Irvine, där han utvecklade det senaste inom DL+HPC-algoritmer.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Fabian Benitez-Quiroz är en IoT Edge Data Scientist inom AWS Professional Services. Han har en doktorsexamen i datorseende och mönsterigenkänning från Ohio State University. Fabian är involverad i att hjälpa kunder att köra sina Machine Learning-modeller med låg latens på IoT-enheter och i molnet.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Manish Talreja är huvudproduktchef för IoT-lösningar på AWS. Han brinner för att hjälpa kunder att bygga innovativa lösningar med hjälp av AWS IoT- och ML-tjänster i molnet och vid kanten.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Yuxin Yang är en AI/ML-arkitekt på AWS, certifierad inom AWS Machine Learning Specialty. Hon gör det möjligt för kunder att påskynda sina resultat genom att bygga end-to-end AI/ML-lösningar, inklusive prediktivt underhåll, datorseende och förstärkningsinlärning. Yuxin tog sin MS från Stanford University, där hon fokuserade på djupinlärning och big data-analys.

Bildförstärkningspipeline för Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Yingmao Timothy Li är en dataforskare med AWS. Han började på AWS för 11 månader sedan och han arbetar med ett brett utbud av tjänster och maskininlärningsteknologier för att bygga lösningar för en mängd olika kunder. Han har en doktorsexamen i elektroteknik. På fritiden tycker han om utomhusspel, bilracing, simning och att flyga en pipunge för att åka över landet och utforska himlen.

 

Tidsstämpel:

Mer från AWS maskininlärning