Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Conducta de creștere a imaginii pentru Amazon Lookout for Vision

Amazon Lookout pentru Vision oferă un serviciu de detectare a anomaliilor bazat pe învățare automată (ML) pentru a identifica imaginile normale (adică imaginile obiectelor fără defecte) vs imagini anormale (adică imagini ale obiectelor cu defecte), tipuri de anomalii (de exemplu, piesa lipsă) și localizarea acestor anomalii. Prin urmare, Lookout for Vision este popular printre clienții care caută soluții automate pentru inspecția industrială a calității (de exemplu, detectarea produselor anormale). Cu toate acestea, seturile de date ale clienților se confruntă de obicei cu două probleme:

  1. Numărul de imagini cu anomalii ar putea fi foarte scăzut și ar putea să nu atingă anomaliile/tipul de defect minim impus de Lookout for Vision (~20).
  2. Este posibil ca imaginile normale să nu aibă suficientă diversitate și ar putea duce la defectarea modelului atunci când condițiile de mediu, cum ar fi iluminarea, se modifică în producție

Pentru a depăși aceste probleme, această postare introduce o conductă de creștere a imaginii care vizează ambele probleme: oferă o modalitate de a genera imagini sintetice anormale prin eliminarea obiectelor din imagini și generează imagini normale suplimentare prin introducerea unei creșteri controlate, cum ar fi zgomotul gaussian, nuanța, saturația, pixelul. scalarea valorii etc. Folosim imgaug bibliotecă pentru a introduce augmentarea pentru a genera imagini suplimentare anormale și normale pentru a doua problemă. Folosim Amazon Sagemaker Ground Truth pentru a genera măști de îndepărtare a obiectelor și Lama algoritm de eliminare a obiectelor pentru prima problemă folosind tehnici de pictare a imaginii (eliminarea obiectelor).

Restul postării este organizat după cum urmează. În Secțiunea 3, prezentăm conducta de creștere a imaginii pentru imagini normale. În Secțiunea 4, prezentăm conducta de creștere a imaginii pentru imagini anormale (aka generare de defecte sintetice). Secțiunea 5 ilustrează rezultatele antrenamentului Lookout for Vision folosind setul de date augmentat. Secțiunea 6 demonstrează modul în care modelul Lookout for Vision antrenat pe date sintetice funcționează împotriva defectelor reale. În Secțiunea 7, vorbim despre estimarea costurilor pentru această soluție. Tot codul pe care l-am folosit pentru această postare poate fi accesat aici.

1. Prezentare generală a soluției

Diagrama ML

Următoarea este diagrama conductei de mărire a imaginii propusă pentru formarea modelului de localizare a anomaliilor Lookout for Vision:

Diagrama de mai sus începe prin colectarea unei serii de imagini (pasul 1). Augmentăm setul de date prin creșterea imaginilor normale (pasul 3) și prin utilizarea algoritmilor de îndepărtare a obiectelor (pașii 2, 5-6). Apoi ambalăm datele într-un format care poate fi consumat de Amazon Lookout for Vision (pașii 7-8). În cele din urmă, la pasul 9, folosim datele ambalate pentru a antrena un model de localizare Lookout for Vision.

Această conductă de creștere a imaginii oferă clienților flexibilitate pentru a genera defecte sintetice în setul de date limitat de eșantion, precum și pentru a adăuga mai multă cantitate și varietate imaginilor normale. Ar spori performanța serviciului Lookout for Vision, rezolvând problema lipsei datelor clienților și făcând procesul automatizat de inspecție a calității mai ușor.

2. Pregătirea datelor

De aici și până la sfârșitul postării, folosim publicul FICS-PCB: Un set de date de imagine multimodal pentru inspecția vizuală automată a plăcilor de circuite imprimate set de date licențiat sub a Creative Commons Attribution 4.0 International (CC BY 4.0) Licență pentru a ilustra conducta de creștere a imaginii și antrenamentul și testarea ulterioară Lookout for Vision. Acest set de date este conceput pentru a sprijini evaluarea sistemelor automate de inspecție vizuală PCB. A fost colectat la laboratorul de securitate și asigurare (SCAN) de la Universitatea din Florida. Poate fi accesat aici.

Începem cu ipoteza că clientul oferă doar o singură imagine normală a unei plăci PCB (o probă de PCB s10) ca set de date. Se poate vedea astfel:

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

3. Mărirea imaginii pentru imagini normale

Serviciul Lookout for Vision necesită cel puțin 20 de imagini normale și 20 de anomalii pentru fiecare tip de defect. Deoarece există o singură imagine normală din datele eșantionului, trebuie să generăm mai multe imagini normale folosind tehnici de creștere a imaginii. Din punct de vedere ML, alimentarea cu transformări multiple de imagine folosind diferite tehnici de augmentare poate îmbunătăți acuratețea și robustețea modelului.

Vom folosi imgaug pentru creșterea imaginii imaginilor normale. Imgaug este un pachet python open-source care vă permite să măriți imaginile în experimentele ML.

Mai întâi, vom instala imgaug bibliotecă într-o Amazon SageMaker caiet.

pip install imgaug

Apoi, putem instala pachetul python numit „IPyPlot”.

pip install ipyplot

Apoi, efectuăm creșterea imaginii imaginii originale folosind transformări inclusiv GammaContrast, SigmoidContrast, și LinearContrast, și adăugând zgomot gaussian pe imagine.

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)

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Deoarece avem nevoie de cel puțin 20 de imagini normale și cu cât mai multe, cu atât mai bine, am generat 10 imagini augmentate pentru fiecare dintre cele 4 transformări afișate mai sus ca setul nostru de date de imagine normală. În viitor, intenționăm să transformăm și imaginile care urmează să fie poziționate în locații diferite și îngeri diferiți, astfel încât modelul antrenat să poată fi mai puțin sensibil la plasarea obiectului în raport cu camera fixă.

4. Generarea de defecte sintetice pentru creșterea imaginilor anormale

În această secțiune, prezentăm o conductă sintetică de generare a defectelor pentru a crește numărul de imagini cu anomalii în setul de date. Rețineți că, spre deosebire de secțiunea anterioară, în care creăm noi eșantioane normale din eșantioane normale existente, aici, creăm noi imagini anomalii din mostre normale. Aceasta este o caracteristică atractivă pentru clienții cărora le lipsesc complet acest tip de imagini în seturile lor de date, de exemplu, eliminarea unei componente a plăcii PCB normale. Această conductă de generare a defectelor sintetice are trei pași: în primul rând, generăm măști sintetice din imagini sursă (normale) folosind Amazon SageMaker Ground Truth. În această postare, vizam un anumit tip de defect: componentă lipsă. Această generație de mască oferă o imagine de mască și un fișier manifest. În al doilea rând, fișierul manifest trebuie modificat și convertit într-un fișier de intrare pentru un punct final SageMaker. Și în al treilea rând, fișierul de intrare este introdus într-un punct final SageMaker pentru eliminarea obiectelor responsabil de eliminarea părților imaginii normale indicate de mască. Acest punct final oferă imaginea anormală rezultată.

4.1 Generați măști de defecte sintetice folosind Amazon SageMaker Ground Truth

Amazon Sagemaker Ground Truth pentru etichetarea datelor

Amazon SageMaker Ground Truth este un serviciu de etichetare a datelor care facilitează etichetarea datelor și vă oferă opțiunea de a utiliza adnotatori umani prin Amazon Mechanical Turk, furnizori terți sau forța de muncă privată. Puteți urmări acest tutorial pentru a configura o lucrare de etichetare.

În această secțiune, vom arăta cum folosim Amazon SageMaker Ground Adevăr pentru a marca anumite „componente” din imaginile normale care urmează să fie eliminate în pasul următor. Rețineți că o contribuție cheie a acestei postări este că nu folosim Amazon SageMaker Ground Truth în modul său tradițional (adică pentru a eticheta imaginile de antrenament). Aici, îl folosim pentru a genera o mască pentru îndepărtarea viitoare în imagini normale. Aceste eliminări în imagini normale vor genera defecte sintetice.

În scopul acestei postări, în munca noastră de etichetare, vom elimina în mod artificial până la trei componente de pe placa PCB: IC, rezistor1 și rezistor2. După ce ați introdus lucrarea de etichetare ca etichetator, puteți selecta numele etichetei și puteți desena o mască de orice formă în jurul componentei pe care doriți să o eliminați din imagine ca defect sintetic. Rețineți că nu puteți include „_” în numele etichetei pentru acest experiment, deoarece folosim „_” pentru a separa diferite metadate în numele defectului mai târziu în cod.

În imaginea următoare, desenăm o mască verde în jurul IC (Circuit integrat), o mască albastră în jurul rezistorului 1 și o mască portocalie în jurul rezistorului 2.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

După ce selectăm prezenta butonul, Amazon SageMaker Ground Truth va genera o mască de ieșire cu fundal alb și un fișier manifest, după cum urmează:
Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. 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"}}

Rețineți că până acum nu am generat nicio imagine anormală. Tocmai am marcat cele trei componente care vor fi îndepărtate artificial și a căror îndepărtare va genera imagini anormale. Mai târziu, vom folosi atât (1) imaginea măștii de mai sus, cât și (2) informațiile din fișierul manifest ca intrări pentru conducta de generare a imaginii anormale. Următoarea secțiune arată cum să pregătiți intrarea pentru punctul final SageMaker.

4.2 Pregătiți intrarea pentru punctul final SageMaker

Transformați manifestul Amazon SageMaker Ground Truth ca fișier de intrare pentru punctul final SageMaker

În primul rând, am înființat un Serviciul Amazon de stocare simplă (Amazon S3) găleată pentru a stoca toate intrările și ieșirile pentru conducta de creștere a imaginii. În postare, folosim o găleată S3 numită qualityinspection. Apoi generăm toate imaginile normale augmentate și le încărcăm în această găleată S3.

from PIL import Image 
import os 
import shutil 
import boto3

s3=boto3.client('s3')

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

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

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

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

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

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

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

Apoi, descarcăm masca de pe Amazon SageMaker Ground Truth și o încărcăm într-un folder numit „mască” din acea găleată S3.

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

După aceea, descarcăm fișierul manifest din jobul de etichetare Amazon SageMaker Ground Truth și îl citim ca linii json.

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

În cele din urmă, generăm un dicționar de intrare care înregistrează locația S3 a imaginii de intrare, locația măștii, informațiile despre mască etc., îl salvăm ca fișier txt și apoi îl încărcăm în folderul „intrare” al compartimentului S3 țintă.

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

Următorul este un exemplu de fișier de intrare:

{"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 Creați un punct final SageMaker asincron pentru a genera defecte sintetice cu componente lipsă

4.3.1 Modelul LaMa

Pentru a elimina componente din imaginea originală, folosim un model PyTorch open-source numit LaMa de LaMa: Rezoluție rezistentă la pictură cu măști mari cu convoluții Fourier. Este un model de mască mare, rezistent la rezoluție, în pictură, cu convoluții Fourier dezvoltat de Samsung AI. Intrările pentru model sunt o imagine și o mască alb-negru, iar rezultatul este o imagine cu obiectele din interiorul măștii eliminate. Folosim Amazon SageMaker Ground Truth pentru a crea masca originală și apoi o transformăm într-o mască alb-negru, după cum este necesar. Aplicația model LaMa este demonstrată după cum urmează:

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

4.3.2 Introducerea inferenței asincrone Amazon SageMaker 

Inferență asincronă Amazon SageMaker este o nouă opțiune de inferență în Amazon SageMaker care pune în așteptare cererile primite și le procesează asincron. Inferența asincronă permite utilizatorilor să economisească costuri prin scalarea automată a numărului de instanțe la zero atunci când nu există solicitări de procesat. Aceasta înseamnă că plătiți numai atunci când punctul final procesează cereri. Noua opțiune de inferență asincronă este ideală pentru sarcinile de lucru în care dimensiunile solicitărilor sunt mari (până la 1 GB) și timpii de procesare a inferenței sunt de ordinul minutelor. Codul de implementat și invocat punctul final este aici.

4.3.3 Implementarea punctului final

Pentru a implementa punctul final asincron, mai întâi trebuie să obținem Rolul IAM și configurați unele variabile de mediu.

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'

După cum am menționat anterior, folosim modelul open source PyTorch LaMa: Rezoluție rezistentă la pictură cu măști mari cu convoluții Fourier iar modelul pre-antrenat a fost încărcat în s3://qualityinspection/model/big-lama.tar.gz. image_uri indică către un container docker cu framework-ul și versiunile python necesare.

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
)

Apoi, trebuie să specificăm parametrii de configurare specifici de inferență asincronă suplimentari în timp ce creăm configurația punctului final.

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)

Apoi, implementăm punctul final pe o instanță ml.g4dn.xlarge rulând următorul cod:

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

După aproximativ 6-8 minute, punctul final este creat cu succes și va apărea în consola SageMaker.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

4.3.4 Invocați punctul final

Apoi, folosim fișierul txt de intrare pe care l-am generat mai devreme ca intrare a punctului final și invocăm punctul final folosind următorul cod:

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

Comanda de mai sus va termina imediat execuția. Cu toate acestea, inferența va continua timp de câteva minute până când va finaliza toate sarcinile și returnează toate ieșirile din compartimentul S3.

4.3.5 Verificați rezultatul inferenței punctului final 

După ce selectați punctul final, veți vedea sesiunea Monitor. Selectați „Vizualizați jurnalele” pentru a verifica rezultatele inferenței în consolă.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Două înregistrări de jurnal vor apărea în fluxurile de jurnal. Cel numit data-log va afișa rezultatul final al inferenței, în timp ce cealaltă înregistrare de jurnal va afișa detaliile inferenței, care este de obicei folosită în scopuri de depanare.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Dacă cererea de inferență reușește, atunci veți vedea mesajul: Inference request succeeded.în jurnalul de date și, de asemenea, obțineți informații despre latența totală a modelului, timpul total de proces etc. în mesaj. Dacă deducerea eșuează, verificați celălalt jurnal pentru a depana. De asemenea, puteți verifica rezultatul interogând starea cererii de inferență. Aflați mai multe despre inferența Amazon SageMaker Asynchronous aici.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

4.3.6 Generarea de defecte sintetice cu componente lipsă utilizând punctul final

Vom îndeplini patru sarcini în punctul final:

  1. Serviciul de localizare a anomaliilor Lookout for Vision necesită un defect per imagine din setul de date de antrenament pentru a optimiza performanța modelului. Prin urmare, trebuie să separăm măștile pentru diferite defecte ale punctului final prin filtrare de culoare.
    Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.
  2. Împărțiți setul de date tren/test pentru a satisface următoarea cerință:
    • cel puțin 10 imagini normale și 10 anomalii pentru setul de date de tren
    • un defect/imagine în setul de date ale trenului
    • cel puțin 10 imagini normale și 10 anomalii pentru setul de date de testare
    • sunt permise mai multe defecte per imagine pentru setul de date de testare
  3. Generați defecte sintetice și încărcați-le în locațiile țintă S3.

Generăm un defect per imagine și mai mult de 20 de defecte per clasă pentru setul de date de tren, precum și 1-3 defecte per imagine și mai mult de 20 de defecte per clasă pentru setul de date de testare.

Următorul este un exemplu de imagine sursă și defectele sale sintetice cu trei componente: IC, rezistența1 și rezistența 2 lipsă.

imagine originală

imagine originală

40_im_mask_IC_resistor1_resistor2.jpg (numele defectului indică componentele lipsă)

40_im_mask_IC_resistor1_resistor2.jpg (numele defectului indică componentele lipsă)

  1.  Generați fișiere manifest pentru setul de date tren/test care înregistrează toate informațiile de mai sus.

În cele din urmă, vom genera manifeste de tren/test pentru a înregistra informații, cum ar fi locația defectului sintetic S3, locația masca S3, clasa de defect, culoarea măștii etc.

Următoarele sunt exemple de linii json pentru o anomalie și o imagine normală în manifest.

Pentru anomalie:

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

Pentru o imagine normală:

{"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 Structura folderelor Amazon S3

Intrarea și ieșirea punctului final sunt stocate în compartimentul țintă S3 în următoarea structură:

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

5 Lookout for Vision model training and result

5.1 Configurați un proiect, încărcați un set de date și începeți formarea modelului. 

  1. În primul rând, puteți accesa Lookout for Vision din Consola AWS și creează un proiect.
    Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.
  2. Apoi, puteți crea un set de date de antrenament alegând Importați imagini etichetate de SageMaker Ground Truth și furnizați locația Amazon S3 a manifestului setului de date tren generat de punctul final SageMaker.
    Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.
  3. Apoi, puteți crea un set de date de testare alegând Importați imagini etichetate de SageMaker Ground Truth din nou și dați locația Amazon S3 a manifestului setului de date de testare generat de punctul final SageMaker.
    Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.
    .......Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.
    ....
  4. După ce seturile de date tren și test sunt încărcate cu succes, puteți selecta Model de tren butonul din colțul din dreapta sus pentru a declanșa antrenamentul modelului de localizare a anomaliilor.
    ......
  5. În experimentul nostru, modelul a durat puțin mai mult de o oră pentru a finaliza antrenamentul. Când starea arată că antrenamentul este finalizat, puteți selecta linkul modelului pentru a verifica rezultatul.
    ....
    Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

5.2 Rezultatul antrenamentului model

5.2.1 Indicatori de performanță a modelului 

După selectarea la Modelul 1 după cum se arată mai sus, putem vedea din scorul 100% Precision, 100% Recall și 100% F1 că performanța modelului este destul de bună. De asemenea, putem verifica performanța per etichetă (componentă lipsă) și vom fi bucuroși să aflăm că scorurile F1 ale tuturor celor trei etichete sunt peste 93%, iar IoU-urile medii sunt peste 85%. Acest rezultat este satisfăcător pentru acest mic set de date pe care l-am demonstrat în postare.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

5.2.2 Vizualizarea detectării defectelor sintetice în setul de date de testare. 

După cum arată imaginea următoare, fiecare imagine va fi defectată ca un normal or anomaly etichetă cu un scor de încredere. Dacă este o anomalie, atunci va afișa o mască peste zona anormală din imagine cu o culoare diferită pentru fiecare tip de defect.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Următorul este un exemplu de componente lipsă combinate (trei defecte în acest caz) în setul de date de testare:

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

În continuare, puteți compila și împacheta modelul ca un AWS IoT Greengrass componentă urmând instrucțiunile din această postare, Identificați locația anomaliilor folosind Amazon Lookout for Vision la margine fără a utiliza un GPUși executați inferențe asupra modelului.

6. Testați modelul Lookout for Vision instruit pe date sintetice față de defecte reale

Pentru a testa dacă modelul antrenat pe defectul sintetic poate funcționa bine față de defectele reale, am ales un set de date (extratereștri-set de date) din aici pentru a efectua un experiment.

În primul rând, comparăm defectul sintetic generat și defectul real. Imaginea din stânga este un defect real cu un cap lipsă, iar imaginea din dreapta este un defect generat cu capul îndepărtat folosind un model ML.

Defect real

Defect real

Defect sintetic

Defect sintetic

În al doilea rând, folosim detecțiile de probă din Lookout for Vision pentru a testa modelul față de defectul real. Puteți fie să salvați imaginile de testare în compartimentul S3 și să le importați de pe Amazon S3, fie să încărcați imagini de pe computer. Apoi, selectați Detectează anomalii pentru a rula detectarea.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

În cele din urmă, puteți vedea rezultatul predicției defectului real. Modelul instruit pe defecte sintetice poate defecta cu acuratețe defectul real în acest experiment.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Modelul instruit pe defecte sintetice poate să nu funcționeze întotdeauna bine pe defectele reale, în special plăcile de circuite care sunt mult mai complicate decât acest set de date eșantion. Dacă doriți să recalificați modelul cu defecte reale, atunci puteți selecta butonul portocaliu etichetat Verificați predicțiile mașinii în colțul din dreapta sus al rezultatului predicției, apoi verificați-l ca Corect or Incorect.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Apoi puteți adăuga imaginea și eticheta verificate la setul de date de antrenament selectând butonul portocaliu din colțul din dreapta sus pentru a îmbunătăți performanța modelului.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

7. Estimarea costurilor 

Această conductă de creștere a imaginii pentru Lookout for Vision este foarte rentabilă. În exemplul prezentat mai sus, Amazon SageMaker Ground Truth Labeling, Amazon SageMaker notebook și implementarea și deducția asincronă a punctelor finale SageMaker costă doar câțiva dolari. Pentru serviciul Lookout for Vision, plătiți numai pentru ceea ce utilizați. Există trei componente care vă determină factura: taxe pentru antrenamentul modelului (ore de antrenament), taxe pentru detectarea anomaliilor în cloud (ore de inferență în cloud) și/sau taxe pentru detectarea anomaliilor la margine (unități de inferență de margine). În experimentul nostru, modelul Lookout for Vision a durat puțin mai mult de o oră pentru a finaliza antrenamentul și a costat 2.00 USD pe oră de antrenament. În plus, puteți utiliza modelul antrenat pentru inferență pe cloud sau pe margine cu prețul afișat aici.

8. Curățați

Pentru a evita costurile inutile, utilizați Consola pentru a șterge punctele finale și resursele pe care le-ați creat în timp ce rulați exercițiile din postare.

  1. Deschideți consola SageMaker și ștergeți următoarele resurse:
    • Punctul final. Ștergerea punctului final șterge și instanța de calcul ML sau instanțele care îl acceptă.
      1. În deducție, alege Puncte finale.
      2. Alegeți punctul final pe care l-ați creat în exemplu, alegeți Acţiuni, apoi alegeți Șterge.
    • Configurația punctului final.
      1. În deducție, alege Configurații endpoint.
      2. Alegeți configurația punctului final pe care ați creat-o în exemplu, alegeți Acţiuni, apoi alegeți Șterge.
    • Modelul.
      1. În deducție, alege modele.
      2. Alegeți modelul pe care l-ați creat în exemplu, alegeți Acţiuni, apoi alegeți Șterge.
    • Instanța de notebook. Înainte de a șterge instanța de notebook, opriți-o.
      1. În Blocnotes, alege Instanțe de notebook.
      2. Alegeți instanța de blocnotes pe care ați creat-o în exemplu, alegeți Acţiuni, apoi alegeți Stop. Instanța de notebook durează câteva minute pentru a se opri. Cand Stare schimbări la Oprit, treceți la pasul următor.
      3. Alege Acţiuni, apoi alegeți Șterge.
  2. Deschideți Consola Amazon S3, apoi ștergeți compartimentul pe care l-ați creat pentru stocarea artefactelor modelului și a setului de date de antrenament.
  3. Deschideți Consola Amazon CloudWatch, apoi ștergeți toate grupurile de jurnal care au nume care încep cu /aws/sagemaker/.

De asemenea, puteți șterge punctul final din blocnotesul SageMaker rulând următorul cod:

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

9. Concluzie

În această postare, am demonstrat cum să adnotăm măștile cu defecte sintetice folosind Amazon SageMaker Ground Truth, cum să folosiți diferite tehnici de creștere a imaginii pentru a transforma o imagine normală în numărul dorit de imagini normale, să creați un punct final SageMaker asincron și să pregătiți fișierul de intrare pentru punctul final, precum și invocarea punctului final. În cele din urmă, am demonstrat cum să folosim manifestul tren/test pentru a antrena un model de localizare a anomaliilor Lookout for Vision. Această conductă propusă poate fi extinsă la alte modele ML pentru a genera defecte sintetice și tot ce trebuie să faceți este să personalizați modelul și codul de inferență în punctul final SageMaker.

Începeți prin a explora Lookout for Vision pentru inspecția automată a calității aici.


Despre Autori

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Kara Yang este Data Scientist la AWS Professional Services. Este pasionată de a-și ajuta clienții să-și atingă obiectivele de afaceri cu serviciile cloud AWS și a ajutat organizațiile să construiască soluții AI/ML de la capăt la capăt în mai multe industrii, cum ar fi producția, industria auto, sustenabilitatea mediului și industria aerospațială.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Octavi Obiols-Vânzări este un om de știință computațional specializat în învățarea profundă (DL) și în învățarea automată, certificat ca arhitect de soluții asociat. Cu cunoștințe extinse atât în ​​cloud, cât și în edge, el ajută la accelerarea rezultatelor afacerii prin construirea de soluții AI end-to-end. Octavi și-a obținut doctoratul în științe computaționale la Universitatea din California, Irvine, unde a promovat algoritmii de ultimă generație în DL+HPC.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Fabian Benitez-Quiroz este IoT Edge Data Scientist în AWS Professional Services. El deține un doctorat în viziune computerizată și recunoaștere a modelelor de la Universitatea de Stat din Ohio. Fabian este implicat în a ajuta clienții să își ruleze modelele de învățare automată cu o latență scăzută pe dispozitive IoT și în cloud.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Manish Talreja este manager principal de produs pentru soluții IoT la AWS. Este pasionat de a ajuta clienții să construiască soluții inovatoare folosind AWS IoT și servicii ML în cloud și la margine.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Yuxin Yang este un arhitect AI/ML la AWS, certificat în specialitatea AWS Machine Learning. Ea le permite clienților să-și accelereze rezultatele prin construirea de soluții AI/ML end-to-end, inclusiv întreținere predictivă, viziune computerizată și învățare prin consolidare. Yuxin și-a obținut MS de la Universitatea Stanford, unde s-a concentrat pe învățarea profundă și pe analiza datelor mari.

Conducta de creștere a imaginii pentru Amazon Lookout pentru Vision PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Yingmao Timothy Li este un Data Scientist la AWS. S-a alăturat AWS acum 11 luni și lucrează cu o gamă largă de servicii și tehnologii de învățare automată pentru a construi soluții pentru un set divers de clienți. Este doctor în Inginerie Electrică. În timpul liber, îi plac jocurile în aer liber, cursele de mașini, înotul și zborul cu un pui de piper pentru a traversa țara și a explora cerul.

 

Timestamp-ul:

Mai mult de la Învățare automată AWS