Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Amazon Lookout for Vision -kuvien lisäysputki

Amazon Lookout for Vision tarjoaa koneoppimiseen (ML) perustuvan poikkeamien havaitsemispalvelun normaalien kuvien (eli kohteiden kuvien) tunnistamiseen ilman viat) vs. epänormaalit kuvat (eli kuvat esineistä with viat), poikkeamien tyypit (esim. puuttuva kappale) ja näiden poikkeamien sijainti. Siksi Lookout for Vision on suosittu asiakkaiden keskuudessa, jotka etsivät automatisoituja ratkaisuja teollisuuden laaduntarkastuksiin (esim. epänormaalien tuotteiden havaitsemiseen). Asiakkaiden tietojoukot kohtaavat kuitenkin yleensä kaksi ongelmaa:

  1. Poikkeavuuksia sisältävien kuvien määrä voi olla hyvin pieni, eikä se välttämättä saavuta Lookout for Visionin asettamaa poikkeamien/vikatyypin minimiä (~20).
  2. Normaalit kuvat eivät välttämättä ole tarpeeksi monimuotoisia ja voivat johtaa mallin epäonnistumiseen, kun ympäristöolosuhteet, kuten valaistus, muuttuvat tuotannossa

Näiden ongelmien ratkaisemiseksi tässä viestissä esitellään kuvanlisäysputki, joka kohdistuu molempiin ongelmiin: Se tarjoaa tavan luoda synteettisiä poikkeavia kuvia poistamalla kuvista esineitä ja luo lisää normaaleja kuvia ottamalla käyttöön ohjattua lisäystä, kuten Gaussin kohinaa, värisävyä, kylläisyyttä, pikseliä. arvon skaalaus jne. Käytämme kuvitella kirjasto, joka ottaa käyttöön lisäyksen luomaan lisää poikkeavia ja normaaleja kuvia toiseen ongelmaan. Käytämme Amazon Sagemaker Ground Truth luodaksesi objektinpoistomaskeja ja LaMa Algoritmi objektien poistamiseksi ensimmäistä ongelmaa varten käyttämällä kuvan maalaustekniikkaa (objektin poisto).

Loput postauksesta on järjestetty seuraavasti. Osassa 3 esittelemme normaalikuvien kuvanlisäysputken. Osassa 4 esittelemme epänormaalien kuvien (eli synteettisten vikojen luomisen) kuvanlisäysputkiston. Osa 5 havainnollistaa Lookout for Vision -harjoittelutuloksia käyttämällä lisättyä tietojoukkoa. Osa 6 osoittaa, kuinka synteettiseen dataan opetettu Lookout for Vision -malli toimii todellisia vikoja vastaan. Luvussa 7 puhumme tämän ratkaisun kustannusarviosta. Kaikki tähän viestiin käyttämämme koodi ovat käytettävissä tätä.

1. Ratkaisujen yleiskatsaus

ML-kaavio

Seuraavassa on kaavio ehdotetusta kuvan lisäysputkesta Lookout for Vision -poikkeamien lokalisointimallin koulutukseen:

Yllä oleva kaavio alkaa keräämällä kuvasarja (vaihe 1). Laajennamme tietojoukkoa lisäämällä normaaleja kuvia (vaihe 3) ja käyttämällä objektinpoistoalgoritmeja (vaiheet 2, 5-6). Tämän jälkeen pakkaamme tiedot muodossa, jonka Amazon Lookout for Vision voi käyttää (vaiheet 7-8). Lopuksi vaiheessa 9 käytämme pakattuja tietoja Lookout for Vision -lokalisointimallin kouluttamiseen.

Tämä kuvanlisäysputki antaa asiakkaille joustavuutta luoda synteettisiä vikoja rajoitettuun näytetietoaineistoon sekä lisätä tavallisten kuvien määrää ja vaihtelua. Se tehostaisi Lookout for Vision -palvelun suorituskykyä, ratkaisisi asiakastietoongelman ja tekisi automatisoidusta laaduntarkastusprosessista sujuvamman.

2. Tietojen valmistelu

Tästä julkaisun loppuun käytämme julkisuutta FICS-PCB: Multimodaalinen kuvatietojoukko automatisoituun piirilevyn visuaaliseen tarkastukseen tietojoukko, jonka käyttöoikeus on a Creative Commons Attribution 4.0 International (CC BY 4.0) -lisenssi havainnollistamaan kuvan lisäysputkistoa ja sitä seuraavaa Lookout for Vision -koulutusta ja -testausta. Tämä tietojoukko on suunniteltu tukemaan automatisoitujen PCB-visuaalisten tarkastusjärjestelmien arviointia. Se kerättiin Floridan yliopiston Security and AssuraNce (SCAN) -laboratoriossa. Siihen pääsee käsiksi tätä.

Aloitamme hypoteesilla, että asiakas antaa tietojoukoksi vain yhden normaalin kuvan piirilevystä (s10 PCB-näyte). Se voidaan nähdä seuraavasti:

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

3. Kuvan lisäys normaaleille kuville

Lookout for Vision -palvelu vaatii vähintään 20 normaalia kuvaa ja 20 poikkeavaa vikatyyppiä kohden. Koska näytetiedoista on vain yksi normaali kuva, meidän on luotava lisää normaaleja kuvia käyttämällä kuvan lisäystekniikoita. ML:n näkökulmasta useiden kuvamuunnosten syöttäminen erilaisilla lisäystekniikoilla voi parantaa mallin tarkkuutta ja kestävyyttä.

Käytämme kuvitella tavallisten kuvien lisäämiseen. Imgaug on avoimen lähdekoodin python-paketti, jonka avulla voit lisätä kuvia ML-kokeiluissa.

Ensin asennamme kuvitella kirjasto paikassa Amazon Sage Maker muistikirja.

pip install imgaug

Seuraavaksi voimme asentaa python-paketin nimeltä "IPyPlot".

pip install ipyplot

Sitten suoritamme alkuperäisen kuvan kuvan lisäyksen muunnoksilla, mukaan lukien GammaContrast, SigmoidContrastja LinearContrastja lisäämällä kuvaan Gaussin kohinaa.

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 Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Koska tarvitsemme vähintään 20 normaalia kuvaa, ja mitä enemmän, sitä parempi, loimme 10 lisättyä kuvaa jokaista edellä esitetyistä neljästä muunnoksesta normaalina kuvatietojoukona. Jatkossa aiomme muunnella kuvat myös eri paikkoihin ja eri enkeleihin sijoitettaviksi siten, että koulutettu malli voi olla vähemmän herkkä kohteen sijoittelulle suhteessa kiinteään kameraan.

4. Synteettisten vikojen luominen epänormaalien kuvien lisäämiseksi

Tässä osiossa esittelemme synteettisten vikojen luontiputkiston, joka lisää tietojoukon poikkeavuuksia sisältävien kuvien määrää. Huomaa, että toisin kuin edellisessä osiossa, jossa luomme uusia normaaleja näytteitä olemassa olevista normaaleista näytteistä, tässä luomme uusia poikkeamakuvia normaaleista näytteistä. Tämä on houkutteleva ominaisuus asiakkaille, joilta puuttuu täysin tällaisia ​​kuvia aineistoistaan, esim. normaalin piirilevyn komponentin poistaminen. Tässä synteettisten vikojen luomisprosessissa on kolme vaihetta: ensin luomme synteettisiä maskeja lähdekuvista (tavallisista) käyttämällä Amazon SageMaker Ground Truthia. Tässä viestissä kohdistamme tiettyyn vikatyyppiin: puuttuva komponentti. Tämä maskin sukupolvi tarjoaa maskin kuvan ja luettelotiedoston. Toiseksi luettelotiedostoa on muokattava ja muunnettava SageMaker-päätepisteen syöttötiedostoksi. Ja kolmanneksi, syöttötiedosto syötetään Object Removal SageMaker -päätepisteeseen, joka on vastuussa maskin osoittamien normaalin kuvan osien poistamisesta. Tämä päätepiste tuottaa tuloksena epänormaalin kuvan.

4.1 Luo synteettisiä vikamaskeja Amazon SageMaker Ground Truthin avulla

Amazon Sagemaker Ground Truth tietojen merkitsemiseen

Amazon SageMaker Ground Truth on tietojen merkintäpalvelu, joka tekee tietojen merkitsemisestä helppoa ja antaa sinulle mahdollisuuden käyttää ihmisen annotaattoreita Amazon Mechanical Turk, kolmannen osapuolen toimittajat tai oma yksityinen työvoimasi. Voit seurata tämä opetusohjelma merkintätyön perustamiseen.

Tässä osiossa näytämme, kuinka käytämme Amazon SageMaker Ground Totuus merkitäksesi tietyt "komponentit" normaaleihin kuviin, jotka poistetaan seuraavassa vaiheessa. Huomaa, että tämän viestin keskeinen panos on se, että emme käytä Amazon SageMaker Ground Truthia perinteisellä tavallaan (eli koulutuskuvien merkitsemiseen). Täällä käytämme sitä maskin luomiseen tulevaa poistamista varten normaaleissa kuvissa. Nämä poistot normaaleissa kuvissa aiheuttavat synteettisiä virheitä.

Tätä viestiä varten merkintätyössämme poistamme keinotekoisesti jopa kolme komponenttia piirilevyltä: IC, resistor1 ja resistor2. Kun olet syöttänyt tarratyön tarrakirjoittajaksi, voit valita tarran nimen ja piirtää minkä tahansa muotoisen maskin komponentin ympärille, jonka haluat poistaa kuvasta synteettisenä virheenä. Huomaa, että et voi sisällyttää _-merkkiä tämän kokeilun tunnisteen nimeen, koska käytämme _-merkkiä erottamaan eri metatiedot virheen nimestä myöhemmin koodissa.

Seuraavassa kuvassa piirretään vihreä maski IC:n (Integrated Circuit) ympärille, sininen maski vastuksen 1 ympärille ja oranssi maski vastuksen 2 ympärille.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Kun olemme valinneet antaa -painiketta, Amazon SageMaker Ground Truth luo tulosmaskin valkoisella taustalla ja manifestitiedoston seuraavasti:
Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. 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"}}

Huomaa, että toistaiseksi emme ole luoneet epänormaalia kuvia. Merkitsimme juuri kolme komponenttia, jotka poistetaan keinotekoisesti ja joiden poistaminen tuottaa epänormaaleja kuvia. Myöhemmin käytämme sekä (1) yllä olevaa maskikuvaa että (2) luettelotiedoston tietoja syötteinä epänormaalin kuvan luontiputkeen. Seuraavassa osiossa näytetään, kuinka SageMaker-päätepisteen syöte valmistetaan.

4.2 Valmistele syöte SageMaker-päätepisteelle

Muunna Amazon SageMaker Ground Truth -luettelo SageMakerin päätepisteen syöttötiedostoksi

Ensin perustimme an Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ämpäri, johon tallennetaan kaikki kuvanlisäysputken tulo- ja lähtötiedot. Viestissä käytämme S3-ämpäri nimeltä qualityinspection. Sitten luomme kaikki lisätyt normaalit kuvat ja lataamme ne tähän S3-ämpäriin.

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)

Seuraavaksi lataamme maskin Amazon SageMaker Ground Truthista ja lataamme sen kansioon nimeltä "mask" kyseisessä S3-ämpärissä.

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

Sen jälkeen lataamme manifestitiedoston Amazon SageMaker Ground Truth -merkintätyöstä ja luemme sen json-riveinä.

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)

Lopuksi luomme syöttösanakirjan, joka tallentaa syötekuvan S3-sijainnin, maskin sijainnin, maskin tiedot jne., tallenna se txt-tiedostona ja lataa sen sitten kohde-S3-sämpäriin "syöttö"-kansioon.

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

Seuraava on esimerkki syöttötiedostosta:

{"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 Luo asynkroninen SageMaker-päätepiste synteettisten virheiden luomiseksi puuttuvista komponenteista

4.3.1 LaMa-malli

Komponenttien poistamiseksi alkuperäisestä kuvasta käytämme avoimen lähdekoodin PyTorch-mallia nimeltä LaMa from LaMa: Resoluutiota kestävä suuri maskimaalaus Fourier-konvoluutioilla. Se on Samsung AI:n kehittämä suurikokoinen suuren maskin maalausmalli Fourier-konvoluutiolla. Mallin syötteet ovat kuva ja mustavalkoinen maski ja tulos on kuva, josta maskin sisällä olevat kohteet on poistettu. Käytämme Amazon SageMaker Ground Truthia alkuperäisen maskin luomiseen ja muunnamme sen sitten mustavalkoiseksi maskiksi tarpeen mukaan. LaMa-mallisovellus on esitetty seuraavasti:

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

4.3.2 Amazon SageMakerin asynkronisen päättelyn esittely 

Amazon SageMakerin asynkroninen päättely on uusi päättelyvaihtoehto Amazon Sage Maker joka asettaa saapuvat pyynnöt jonoon ja käsittelee ne asynkronisesti. Asynkronisen päättelyn avulla käyttäjät voivat säästää kustannuksissa skaalaamalla ilmentymien lukumäärän automaattisesti nollaan, kun käsiteltäviä pyyntöjä ei ole. Tämä tarkoittaa, että maksat vain, kun päätepiste käsittelee pyyntöjä. Uusi asynkroninen päättelyvaihtoehto on ihanteellinen työkuormille, joissa pyyntökoot ovat suuria (jopa 1 Gt) ja päätelmien käsittelyajat ovat minuuttien luokkaa. Päätepisteen käyttöönoton ja kutsumisen koodi on tätä.

4.3.3 Päätepisteiden käyttöönotto

Asynkronisen päätepisteen käyttöönottamiseksi meidän on ensin hankittava IAM-rooli ja määritä joitain ympäristömuuttujia.

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'

Kuten aiemmin mainitsimme, käytämme avoimen lähdekoodin PyTorch-mallia LaMa: Resoluutiota kestävä suuri maskimaalaus Fourier-konvoluutioilla ja esikoulutettu malli on ladattu osoitteeseen s3://qualityinspection/model/big-lama.tar.gz. image_uri osoittaa Docker-säiliöön, jossa on vaadittu kehys ja python-versiot.

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
)

Sitten meidän on määritettävä lisää asynkronisia päätelmiä koskevia erityisiä konfiguraatioparametreja luotaessa päätepisteen kokoonpanoa.

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)

Seuraavaksi otamme päätepisteen käyttöön ml.g4dn.xlarge-esiintymässä suorittamalla seuraavan koodin:

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

Noin 6–8 minuutin kuluttua päätepiste on luotu onnistuneesti, ja se näkyy SageMaker-konsolissa.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

4.3.4 Kutsu päätepiste

Seuraavaksi käytämme aiemmin luomaamme txt-syöttötiedostoa päätepisteen syötteenä ja kutsumme päätepisteen käyttämällä seuraavaa koodia:

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

Yllä oleva komento päättää suorituksen välittömästi. Päättely jatkuu kuitenkin useita minuutteja, kunnes se suorittaa kaikki tehtävät ja palauttaa kaikki S3-säihön lähdöt.

4.3.5 Tarkista päätepisteen päättelytulos 

Kun olet valinnut päätepisteen, näet Monitor-istunnon. Valitse "Näytä lokit" tarkistaaksesi päättelytulokset konsolissa.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Kaksi lokitietuetta näkyy lokivirroissa. Nimetty data-log näyttää lopullisen päättelytuloksen, kun taas toinen lokitietue näyttää päätelmän yksityiskohdat, joita yleensä käytetään virheenkorjaustarkoituksiin.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Jos päättelypyyntö onnistuu, näet viestin: Inference request succeeded.data-lokiin ja saada myös tiedot mallin kokonaislatenssista, kokonaisprosessiajasta jne. viestissä. Jos päättely epäonnistuu, tarkista toinen loki virheenkorjausta varten. Voit myös tarkistaa tuloksen kyselyllä päättelypyynnön tilan. Lue lisää Amazon SageMakerin asynkronisesta päättelystä tätä.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

4.3.6 Synteettisten vikojen luominen puuttuvista komponenteista päätepisteen avulla

Suoritamme neljä tehtävää päätepisteessä:

  1. Lookout for Vision -poikkeamien lokalisointipalvelu vaatii yhden vian harjoitustietojoukon kuvaa kohden mallin suorituskyvyn optimoimiseksi. Siksi meidän on erotettava maskit päätepisteen eri vikojen varalta värisuodatuksella.
    Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.
  2. Jaa juna-/testitietojoukko seuraavan vaatimuksen täyttämiseksi:
    • vähintään 10 normaalia kuvaa ja 10 poikkeavaa junatietojoukossa
    • yksi vika/kuva junatietojoukossa
    • vähintään 10 normaalia kuvaa ja 10 poikkeavaa testiaineistossa
    • testitietojoukossa sallitaan useita virheitä yhtä kuvaa kohden
  3. Luo synteettisiä vikoja ja lataa ne kohde-S3-sijainteihin.

Luomme yhden vian kuvaa kohden ja yli 20 vikaa luokkaa kohti junatietojoukolle sekä 1–3 vikaa kuvaa kohden ja yli 20 vikaa luokkaa kohden testitietojoukolle.

Seuraavassa on esimerkki lähdekuvasta ja sen synteettisistä vioista, joissa on kolme komponenttia: IC, vastus1 ja vastus 2 puuttuvat.

alkuperäinen kuva

alkuperäinen kuva

40_im_mask_IC_resistor1_resistor2.jpg (vian nimi ilmaisee puuttuvat komponentit)

40_im_mask_IC_resistor1_resistor2.jpg (vian nimi ilmaisee puuttuvat komponentit)

  1.  Luo luettelotiedostot juna-/testitietojoukolle, joka tallentaa kaikki yllä olevat tiedot.

Lopuksi luomme juna-/testausluettelot tallentamaan tietoja, kuten synteettisen vian S3 sijainti, maskin S3 sijainti, vikaluokka, maskin väri jne.

Seuraavat ovat esimerkkejä json-riveistä poikkeavaa ja normaalia kuvaa varten luettelossa.

Anomalialle:

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

Normaalille kuvalle:

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

Päätepisteen tulo ja lähtö tallennetaan kohde-S3-alueeseen seuraavassa rakenteessa:

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

5 Lookout for Vision mallin koulutus ja tulos

5.1 Määritä projekti, lataa tietojoukko ja aloita mallin koulutus. 

  1. Ensin voit siirtyä Lookout for Visioniin osoitteesta AWS-konsoli ja luo projekti.
    Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.
  2. Sitten voit luoda harjoitustietojoukon valitsemalla Tuo kuvat, joissa on SageMaker Ground Truth -merkintä ja anna SageMaker-päätepisteen luoman junatietojoukon luettelon Amazon S3 -sijainti.
    Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.
  3. Seuraavaksi voit luoda testitietojoukon valitsemalla Tuo kuvat, joissa on SageMaker Ground Truth -merkintä uudelleen ja anna SageMaker-päätepisteen luoman testitietojoukon luettelon Amazon S3 -sijainti.
    Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.
    .......Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.
    ....
  4. Kun juna- ja testitietojoukot on ladattu onnistuneesti, voit valita Junamalli -painiketta oikeassa yläkulmassa käynnistääksesi poikkeamien lokalisointimallin harjoittelun.
    ......
  5. Kokeessamme mallin koulutuksen suorittaminen kesti hieman yli tunnin. Kun tila näyttää harjoittelun päättyneen, voit tarkistaa tuloksen valitsemalla mallilinkin.
    ....
    Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

5.2 Mallin harjoittelutulos

5.2.1 Mallin suorituskykymittarit 

Valittuasi osoitteessa Malli 1 Kuten yllä näkyy, voimme nähdä 100 % Precision-, 100 % Recall- ja 100 % F1 -pisteistä, että mallin suorituskyky on melko hyvä. Voimme myös tarkistaa suorituskyvyn etikettikohtaisesti (puuttuva komponentti), ja olemme iloisia voidessamme huomata, että kaikkien kolmen etiketin F1-pisteet ovat yli 93 % ja keskimääräiset IoU:t yli 85 %. Tämä tulos on tyydyttävä tälle pienelle tietojoukolle, jonka osoitimme viestissä.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

5.2.2 Synteettisten vikojen havaitsemisen visualisointi testiaineistossa. 

Kuten seuraava kuva osoittaa, jokainen kuva on viallinen normal or anomaly tarra luottamuspisteellä. Jos kyseessä on poikkeama, se näyttää maskin kuvan epänormaalin alueen päällä eri värillä jokaiselle vikatyypille.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Seuraavassa on esimerkki yhdistetyistä puuttuvista komponenteista (tässä tapauksessa kolme vikaa) testitietojoukossa:

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Seuraavaksi voit koota ja pakata mallin AWS IoT Vihreä ruoho komponentti tämän viestin ohjeiden mukaisesti, Tunnista poikkeamien sijainti käyttämällä Amazon Lookout for Visionia reunassa ilman GPU:ta, ja suorita johtopäätöksiä mallista.

6. Testaa synteettiseen dataan koulutettua Lookout for Vision -mallia todellisia vikoja vastaan

Testaaksemme, pystyykö synteettiseen virheeseen koulutettu malli toimimaan hyvin todellisia vikoja vastaan, valitsimme tietojoukon (alien-dataset) tätä suorittaa kokeilua.

Ensin vertaamme synteettistä vikaa ja todellista vikaa. Vasen kuva on todellinen vika, jossa pää puuttuu, ja oikea kuva on generoitu vika, jonka pää on poistettu ML-mallilla.

Todellinen vika

Todellinen vika

Synteettinen vika

Synteettinen vika

Toiseksi käytämme Lookout for Visionin kokeiluhavaintoja mallin testaamiseen todellista vikaa vastaan. Voit joko tallentaa testikuvat S3-ämpäriin ja tuoda ne Amazon S3:sta tai ladata kuvia tietokoneeltasi. Valitse sitten Tunnista poikkeamat suorittaaksesi havaitsemisen.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Lopuksi näet todellisen vian ennustustuloksen. Synteettisiin virheisiin koulutettu malli voi korjata todellisen vian tarkasti tässä kokeessa.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Synteettisiin vioihin koulutettu malli ei välttämättä aina toimi hyvin todellisissa vioissa, etenkään piirilevyissä, jotka ovat paljon monimutkaisempia kuin tämä esimerkkitietojoukko. Jos haluat kouluttaa mallin uudelleen todellisilla vioilla, voit valita oranssin painikkeen Tarkista koneen ennusteet ennusteen tuloksen oikeassa yläkulmassa ja tarkista se sitten muodossa Oikea or virheellinen.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

Sitten voit lisätä vahvistetun kuvan ja tunnisteen harjoitustietojoukkoon valitsemalla oranssin painikkeen oikeassa yläkulmassa parantaaksesi mallin suorituskykyä.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.

7. Kustannusarvio 

Tämä Lookout for Vision -kuvanlisäysputki on erittäin kustannustehokas. Yllä esitetyssä esimerkissä Amazon SageMaker Ground Truth Labeling, Amazon SageMaker -muistikirja ja SageMakerin asynkronisen päätepisteen käyttöönotto ja päättäminen maksavat vain muutaman dollarin. Lookout for Vision -palvelussa maksat vain siitä, mitä käytät. Laskusi määrittävät kolme komponenttia: mallin koulutuksesta perittävät maksut (harjoitustunnit), maksut pilven poikkeavuuksien havaitsemisesta (pilvipäätelmätunnit) ja/tai maksut reunan poikkeavuuksien havaitsemisesta (reunan päättelyyksiköt). Kokeilussamme Lookout for Vision -mallilla koulutuksen suorittaminen kesti hieman yli tunnin, ja se maksoi 2.00 dollaria per harjoitustunti. Lisäksi voit käyttää koulutettua mallia johtopäätösten tekemiseen pilvessä tai reunassa listatulla hinnalla tätä.

8. Puhdista

Voit välttää tarpeettomia kuluja poistamalla konsolin avulla päätepisteet ja resurssit, jotka loit suorittaessasi postauksen harjoituksia.

  1. Avaa SageMaker-konsoli ja poista seuraavat resurssit:
    • Päätepiste. Päätepisteen poistaminen poistaa myös ML-laskentaesiintymän tai sitä tukevat ilmentymät.
      1. Alle Päättely, valitse Endpoints.
      2. Valitse esimerkissä luomasi päätepiste, valitse Toiminnot, ja valitse sitten Poista.
    • Päätepisteen määritys.
      1. Alle Päättely, valitse Päätepisteen määritykset.
      2. Valitse esimerkissä luomasi päätepistemääritys, valitse Toiminnot, ja valitse sitten Poista.
    • Malli.
      1. Alle Päättely, valitse Mallit.
      2. Valitse malli, jonka loit esimerkissä, valitse Toiminnot, ja valitse sitten Poista.
    • Muistikirjan esimerkki. Pysäytä se ennen kuin poistat muistikirjan ilmentymän.
      1. Alle muistikirja, valitse Notebook-esiintymät.
      2. Valitse muistikirjan ilmentymä, jonka loit esimerkissä, valitse Toiminnot, ja valitse sitten stop. Muistikirjan esiintymän pysähtyminen kestää useita minuutteja. Kun Tila muuttuu Pysäytetty, siirry seuraavaan vaiheeseen.
      3. Valita Toiminnot, ja valitse sitten Poista.
  2. Avaa Amazon S3 -konsolija poista sitten ryhmä, jonka loit mallin artefaktien ja harjoitustietojoukon tallentamista varten.
  3. Avaa Amazon CloudWatch -konsolija poista sitten kaikki lokiryhmät, joiden nimet alkavat kirjaimella /aws/sagemaker/.

Voit myös poistaa päätepisteen SageMaker-muistikirjasta suorittamalla seuraavan koodin:

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

9. Päätelmä

Tässä viestissä osoitimme, kuinka synteettisiä vikamaskeja merkitään Amazon SageMaker Ground Truthin avulla, kuinka käyttää erilaisia ​​kuvan lisäystekniikoita muuntamaan yksi normaali kuva halutuksi määräksi normaaleja kuvia, luomaan asynkroninen SageMaker-päätepiste ja valmistelemaan syöttötiedosto päätepiste sekä kutsua päätepiste. Lopuksi osoitimme, kuinka harjoitus-/testausluetteloa käytetään Lookout for Vision -poikkeamien lokalisointimallin kouluttamiseen. Tätä ehdotettua liukuhihnaa voidaan laajentaa muihin ML-malleihin synteettisten vikojen luomiseksi, ja sinun tarvitsee vain mukauttaa mallia ja päättelykoodia SageMaker-päätepisteessä.

Aloita tutustumalla Lookout for Visioniin automaattista laaduntarkastusta varten tätä.


Tietoja Tekijät

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.Kara Yang on tietotutkija AWS Professional Services -palvelussa. Hän on intohimoinen auttaa asiakkaita saavuttamaan liiketoimintatavoitteensa AWS-pilvipalveluiden avulla ja on auttanut organisaatioita rakentamaan päästä päähän AI/ML-ratkaisuja useilla aloilla, kuten valmistus, autoteollisuus, ympäristön kestävyys ja ilmailu.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.Octavi Obiols-Sales on syväoppimiseen (DL) ja koneoppimiseen erikoistunut laskennallinen tutkija, joka on sertifioitu associate Solutions -arkkitehtiksi. Hänellä on laaja tietämys sekä pilvestä että reunasta, ja hän auttaa nopeuttamaan liiketoiminnan tuloksia rakentamalla kokonaisvaltaisia ​​tekoälyratkaisuja. Octavi suoritti tohtorin tutkinnon laskennallisesta tieteestä Kalifornian yliopistossa Irvinessä, missä hän kehitti DL+HPC-algoritmien huippua.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.Fabian Benitez-Quiroz on IoT Edge Data Scientist AWS Professional Services -palveluissa. Hänellä on tohtorintutkinto tietokonenäöstä ja kuvioiden tunnistamisesta Ohion osavaltion yliopistosta. Fabian on mukana auttamassa asiakkaita ajamaan koneoppimismallejaan alhaisella viiveellä IoT-laitteissa ja pilvessä.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.Manish Talreja on IoT-ratkaisujen päätuotepäällikkö AWS:ssä. Hän haluaa auttaa asiakkaita rakentamaan innovatiivisia ratkaisuja käyttämällä AWS IoT- ja ML-palveluita pilvessä ja reunalla.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.Yuxin Yang on AI/ML-arkkitehti AWS:ssä, sertifioitu AWS:n koneoppimisen erikoisalalla. Sen avulla asiakkaat voivat nopeuttaa tuloksiaan rakentamalla päästä päähän AI/ML-ratkaisuja, mukaan lukien ennakoiva ylläpito, tietokonenäkö ja vahvistusoppiminen. Yuxin suoritti MS-tutkinnon Stanfordin yliopistosta, jossa hän keskittyi syväoppimiseen ja big datan analytiikkaan.

Amazon Lookout for Vision PlatoBlockchain Data Intelligence -kuvien lisäysputki. Pystysuuntainen haku. Ai.Yingmao Timothy Li on AWS:n tietotieteilijä. Hän on liittynyt AWS:ään 11 ​​kuukautta sitten ja työskentelee laajan palveluvalikoiman ja koneoppimistekniikoiden parissa rakentaakseen ratkaisuja erilaisille asiakkaille. Hän on koulutukseltaan sähkötekniikan tohtori. Vapaa-ajallaan hän nauttii ulkopeleistä, autokilpailuista, uinnista ja lennättää piippupentua hiihtämään ja tutkimaan taivasta.

 

Aikaleima:

Lisää aiheesta AWS-koneoppiminen