Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision

Amazon Lookout voor visie biedt een op machine learning (ML) gebaseerde anomaliedetectieservice om normale afbeeldingen (dwz afbeeldingen van objecten) te identificeren zonder defecten) versus afwijkende afbeeldingen (dwz afbeeldingen van objecten Met defecten), soorten anomalieรซn (bijv. ontbrekend stuk) en de locatie van deze anomalieรซn. Daarom is Lookout for Vision populair bij klanten die op zoek zijn naar geautomatiseerde oplossingen voor industriรซle kwaliteitsinspectie (bijvoorbeeld het detecteren van afwijkende producten). De datasets van klanten hebben echter meestal te maken met twee problemen:

  1. Het aantal afbeeldingen met afwijkingen kan erg laag zijn en bereikt mogelijk niet het minimum van het type afwijkingen/defecten dat is opgelegd door Lookout for Vision (~20).
  2. Normale afbeeldingen hebben mogelijk niet genoeg diversiteit en kunnen ertoe leiden dat het model faalt wanneer omgevingsomstandigheden zoals verlichting tijdens de productie veranderen

Om deze problemen op te lossen, introduceert dit bericht een pijplijn voor beeldvergroting die beide problemen aanpakt: het biedt een manier om synthetische afwijkende beelden te genereren door objecten in afbeeldingen te verwijderen en genereert extra normale beelden door gecontroleerde augmentatie te introduceren, zoals Gaussiaanse ruis, tint, verzadiging, pixel waardeschaling enz. We gebruiken de beeld bibliotheek om augmentatie te introduceren om extra afwijkende en normale afbeeldingen voor het tweede probleem te genereren. We gebruiken Amazon Sagemaker Grond Waarheid om maskers voor het verwijderen van objecten te genereren en de de MA algoritme om objecten voor het eerste probleem te verwijderen met behulp van technieken voor het inkleuren van afbeeldingen (objectverwijdering).

De rest van de post is als volgt georganiseerd. In Sectie 3 presenteren we de pijplijn voor beeldvergroting voor normale afbeeldingen. In Sectie 4 presenteren we de pijplijn voor beeldvergroting voor abnormale beelden (ook wel het genereren van synthetische defecten genoemd). Sectie 5 illustreert de Lookout for Vision-trainingsresultaten met behulp van de uitgebreide dataset. Hoofdstuk 6 laat zien hoe het Lookout for Vision-model, getraind op synthetische gegevens, presteert tegen echte defecten. In hoofdstuk 7 bespreken we de kostenraming voor deze oplossing. Alle code die we voor dit bericht hebben gebruikt, is toegankelijk hier.

1. Oplossingsoverzicht

ML-diagram

Het volgende is het diagram van de voorgestelde pijplijn voor beeldvergroting voor de training van het Lookout for Vision anomalie-lokalisatiemodel:

Het bovenstaande diagram begint met het verzamelen van een reeks afbeeldingen (stap 1). We vergroten de dataset door de normale afbeeldingen te vergroten (stap 3) en door algoritmen voor het verwijderen van objecten te gebruiken (stappen 2, 5-6). Vervolgens verpakken we de gegevens in een indeling die kan worden gebruikt door Amazon Lookout for Vision (stappen 7-8). Ten slotte gebruiken we in stap 9 de verpakte gegevens om een โ€‹โ€‹lokalisatiemodel van Lookout for Vision te trainen.

Deze pijplijn voor beeldvergroting biedt klanten de flexibiliteit om synthetische defecten te genereren in de beperkte voorbeelddataset, en om meer kwantiteit en variatie toe te voegen aan normale beelden. Het zou de prestaties van de Lookout for Vision-service verbeteren, het probleem met het ontbreken van klantgegevens oplossen en het geautomatiseerde kwaliteitscontroleproces soepeler maken.

2. Gegevensvoorbereiding

Vanaf hier tot het einde van de post gebruiken we het publiek FICS-PCB: een multimodale beelddataset voor geautomatiseerde visuele inspectie van printplaten dataset gelicentieerd onder a Creative Commons Naamsvermelding 4.0 Internationaal (CC BY 4.0) Licentie om de beeldvergrotingspijplijn en de daaruit voortvloeiende Lookout for Vision-training en -tests te illustreren. Deze dataset is ontworpen ter ondersteuning van de evaluatie van geautomatiseerde PCB-visuele inspectiesystemen. Het werd verzameld in het SeCurity and Assurance (SCAN) lab aan de Universiteit van Florida. Het is toegankelijk hier.

We beginnen met de hypothese dat de klant slechts รฉรฉn normaal beeld van een printplaat levert (een s10 PCB-sample) als dataset. Het kan als volgt worden gezien:

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

3. Beeldvergroting voor normale afbeeldingen

De Lookout for Vision-service vereist minimaal 20 normale afbeeldingen en 20 afwijkingen per defecttype. Aangezien er slechts รฉรฉn normaal beeld is van de voorbeeldgegevens, moeten we meer normale beelden genereren met behulp van beeldvergrotingstechnieken. Vanuit het ML-standpunt kan het invoeren van meerdere beeldtransformaties met behulp van verschillende augmentatietechnieken de nauwkeurigheid en robuustheid van het model verbeteren.

We zullen gebruiken beeld voor beeldvergroting van normale beelden. Imgaug is een open-source python-pakket waarmee u afbeeldingen in ML-experimenten kunt vergroten.

Eerst installeren we de beeld bibliotheek in een Amazon Sage Maker notebook.

pip install imgaug

Vervolgens kunnen we het python-pakket met de naam 'IPyPlot' installeren.

pip install ipyplot

Vervolgens voeren we beeldvergroting uit van het originele beeld met behulp van transformaties, waaronder GammaContrast, SigmoidContrast en LinearContrast, en het toevoegen van Gaussiaanse ruis aan de afbeelding.

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)

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Omdat we minimaal 20 normale afbeeldingen nodig hebben, en hoe meer hoe beter, hebben we 10 augmented afbeeldingen gegenereerd voor elk van de 4 hierboven getoonde transformaties als onze normale afbeeldingsdataset. In de toekomst zijn we van plan om de beelden ook te transformeren om op verschillende locaties en verschillende hoeken te worden gepositioneerd, zodat het getrainde model minder gevoelig kan zijn voor de plaatsing van het object ten opzichte van de vaste camera.

4. Generatie van synthetische defecten voor vergroting van abnormale beelden

In deze sectie presenteren we een pijplijn voor het genereren van synthetische defecten om het aantal afbeeldingen met afwijkingen in de dataset te vergroten. Merk op dat, in tegenstelling tot de vorige sectie waar we nieuwe normale monsters maken van bestaande normale monsters, we hier nieuwe anomaliebeelden maken van normale monsters. Dit is een aantrekkelijke functie voor klanten die dit soort afbeeldingen volledig missen in hun datasets, bijvoorbeeld door een onderdeel van de normale printplaat te verwijderen. Deze pijplijn voor het genereren van synthetische defecten bestaat uit drie stappen: eerst genereren we synthetische maskers van (normale) bronafbeeldingen met behulp van Amazon SageMaker Ground Truth. In dit bericht richten we ons op een specifiek defecttype: ontbrekend onderdeel. Deze maskergeneratie levert een maskerafbeelding en een manifestbestand op. Ten tweede moet het manifestbestand worden gewijzigd en geconverteerd naar een invoerbestand voor een SageMaker-eindpunt. En ten derde wordt het invoerbestand ingevoerd in een SageMaker-eindpunt voor het verwijderen van objecten dat verantwoordelijk is voor het verwijderen van de delen van de normale afbeelding die worden aangegeven door het masker. Dit eindpunt levert het resulterende abnormale beeld.

4.1 Genereer synthetische defectmaskers met behulp van Amazon SageMaker Ground Truth

Amazon Sagemaker Ground Truth voor gegevensetikettering

Amazon SageMaker Ground Truth is een service voor het labelen van gegevens die het gemakkelijk maakt om gegevens te labelen en die u de mogelijkheid geeft om menselijke annotators te gebruiken via Amazon Mechanical Turk, externe leveranciers of uw eigen privรฉpersoneel. Je kunt volgen deze tutorial om een โ€‹โ€‹labeltaak op te zetten.

In dit gedeelte laten we zien hoe we gebruiken Amazon SageMaker Grondwaarheid om specifieke "componenten" in normale afbeeldingen te markeren die in de volgende stap moeten worden verwijderd. Merk op dat een belangrijke bijdrage van dit bericht is dat we Amazon SageMaker Ground Truth niet op de traditionele manier gebruiken (dat wil zeggen om trainingsafbeeldingen te labelen). Hier gebruiken we het om een โ€‹โ€‹masker te genereren voor toekomstige verwijdering in normale afbeeldingen. Deze verwijderingen in normale afbeeldingen zullen de synthetische defecten genereren.

Voor het doel van dit bericht zullen we in onze labeltaak kunstmatig maximaal drie componenten van de printplaat verwijderen: IC, weerstand1 en weerstand2. Nadat u de labeltaak als labeler hebt ingevoerd, kunt u de labelnaam selecteren en een masker van elke gewenste vorm tekenen rond het onderdeel dat u uit de afbeelding wilt verwijderen als een synthetisch defect. Houd er rekening mee dat u voor dit experiment geen '_' in de labelnaam kunt opnemen, aangezien we '_' gebruiken om verschillende metadata in de defectnaam later in de code te scheiden.

In de volgende afbeelding tekenen we een groen masker rond IC (Integrated Circuit), een blauw masker rond weerstand 1 en een oranje masker rond weerstand 2.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Nadat we de voorleggen knop, genereert Amazon SageMaker Ground Truth als volgt een uitvoermasker met een witte achtergrond en een manifestbestand:
Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

{"source-ref":"s3://pcbtest22/label/s10.png","s10-label-ref":"s3://pcbtest22/label/s10-label/annotations/consolidated-annotation/output/0_2022-09-08T18:01:51.334016.png","s10-label-ref-metadata":{"internal-color-map":{"0":{"class-name":"BACKGROUND","hex-color":"#ffffff","confidence":0},"1":{"class-name":"IC","hex-color":"#2ca02c","confidence":0},"2":{"class-name":"resistor_1","hex-color":"#1f77b4","confidence":0},"3":{"class-name":"resistor_2","hex-color":"#ff7f0e","confidence":0}},"type":"groundtruth/semantic-segmentation","human-annotated":"yes","creation-date":"2022-09-08T18:01:51.498525","job-name":"labeling-job/s10-label"}}

Merk op dat we tot nu toe geen abnormale afbeeldingen hebben gegenereerd. We hebben zojuist de drie componenten gemarkeerd die kunstmatig zullen worden verwijderd en waarvan de verwijdering abnormale beelden zal genereren. Later gebruiken we zowel (1) de maskerafbeelding hierboven, als (2) de informatie uit het manifestbestand als invoer voor de pijplijn voor het genereren van abnormale afbeeldingen. In de volgende sectie ziet u hoe u de invoer voor het SageMaker-eindpunt voorbereidt.

4.2 Bereid invoer voor SageMaker-eindpunt voor

Transformeer Amazon SageMaker Ground Truth-manifest als een SageMaker-eindpuntinvoerbestand

Eerst zetten we een Eenvoudige opslagservice van Amazon (Amazon S3) bucket om alle invoer en uitvoer voor de pijplijn voor beeldvergroting op te slaan. In de post gebruiken we een S3-bucket met de naam qualityinspection. Vervolgens genereren we alle augmented normal-afbeeldingen en uploaden ze naar deze S3-bucket.

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)

Vervolgens downloaden we het masker van Amazon SageMaker Ground Truth en uploaden het naar een map met de naam 'mask' in die S3-bucket.

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

Daarna downloaden we het manifestbestand van Amazon SageMaker Ground Truth-labeltaak en lezen het als json-regels.

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)

Ten slotte genereren we een invoerwoordenboek dat de S3-locatie van de invoerafbeelding, maskerlocatie, maskerinformatie, enz. Opslaat, opslaat als txt-bestand en vervolgens uploadt naar de doelmap 'invoer' van de S3-bucket.

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

Het volgende is een voorbeeld van een invoerbestand:

{"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 Maak een asynchroon SageMaker-eindpunt om synthetische defecten met ontbrekende componenten te genereren

4.3.1 LaMa-model

Om componenten uit de originele afbeelding te verwijderen, gebruiken we een open-source PyTorch-model genaamd LaMa from LaMa: Resolutie-robuuste grote maskerinschildering met Fourier-convoluties. Het is een resolutie-robuust groot masker-in-painting-model met Fourier-convoluties ontwikkeld door Samsung AI. De invoer voor het model is een afbeelding en een zwart-witmasker en de uitvoer is een afbeelding met de objecten binnen het masker verwijderd. We gebruiken Amazon SageMaker Ground Truth om het originele masker te maken en transformeren het vervolgens naar behoefte in een zwart-witmasker. De toepassing van het LaMa-model wordt als volgt gedemonstreerd:

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

4.3.2 Introductie van Amazon SageMaker Asynchrone gevolgtrekking 

Amazon SageMaker asynchrone gevolgtrekking is een nieuwe gevolgtrekkingsoptie in Amazon Sage Maker die inkomende verzoeken in een wachtrij plaatst en asynchroon verwerkt. Met asynchrone inferentie kunnen gebruikers kosten besparen door het aantal exemplaren automatisch naar nul te schalen wanneer er geen verzoeken zijn om te verwerken. Dit betekent dat u alleen betaalt wanneer uw eindpunt verzoeken verwerkt. De nieuwe optie voor asynchrone inferentie is ideaal voor workloads waarbij de aanvraag groot is (tot 1 GB) en de verwerkingstijd van de inferentie in de orde van minuten ligt. De code om het eindpunt te implementeren en aan te roepen is hier.

4.3.3 Endpoint-implementatie

Om het asynchrone eindpunt te implementeren, moeten we eerst het IAM-rol en stel een aantal omgevingsvariabelen in.

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'

Zoals we eerder vermeldden, gebruiken we het open source PyTorch-model LaMa: Resolutie-robuuste grote maskerinschildering met Fourier-convoluties en het vooraf getrainde model is geรผpload naar s3://qualityinspection/model/big-lama.tar.gz. De image_uri verwijst naar een docker-container met de vereiste framework- en python-versies.

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
)

Vervolgens moeten we aanvullende configuratieparameters voor asynchrone inferentie opgeven tijdens het maken van de eindpuntconfiguratie.

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)

Vervolgens implementeren we het eindpunt op een ml.g4dn.xlarge-instantie door de volgende code uit te voeren:

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

Na ongeveer 6-8 minuten is het eindpunt met succes gemaakt en wordt het weergegeven in de SageMaker-console.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

4.3.4 Roep het eindpunt aan

Vervolgens gebruiken we het input txt-bestand dat we eerder hebben gegenereerd als de invoer van het eindpunt en roepen we het eindpunt aan met behulp van de volgende code:

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

De bovenstaande opdracht zal de uitvoering onmiddellijk beรซindigen. De gevolgtrekking duurt echter enkele minuten totdat alle taken zijn voltooid en alle uitvoer in de S3-bucket is geretourneerd.

4.3.5 Controleer het gevolgtrekkingsresultaat van het eindpunt 

Nadat u het eindpunt hebt geselecteerd, ziet u de monitorsessie. Selecteer 'View logs' om de gevolgtrekkingsresultaten in de console te controleren.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Er worden twee logrecords weergegeven in Logstreams. De genoemde data-log zal het uiteindelijke gevolgtrekkingsresultaat tonen, terwijl het andere logboekrecord de details van de gevolgtrekking zal tonen, die meestal wordt gebruikt voor foutopsporingsdoeleinden.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Als het gevolgtrekkingsverzoek slaagt, ziet u het bericht: Inference request succeeded.in het datalog en krijg ook informatie over de totale modellatentie, totale procestijd, etc. in het bericht. Als de gevolgtrekking mislukt, controleer dan het andere logboek om fouten op te sporen. U kunt het resultaat ook controleren door de status van het deductieverzoek te peilen. Meer informatie over de asynchrone gevolgtrekking van Amazon SageMaker hier.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

4.3.6 Genereren van synthetische defecten met ontbrekende componenten met behulp van het eindpunt

We zullen vier taken uitvoeren in het eindpunt:

  1. De lokalisatieservice van Lookout for Vision vereist รฉรฉn defect per afbeelding in de trainingsdataset om de modelprestaties te optimaliseren. Daarom moeten we de maskers voor verschillende defecten in het eindpunt scheiden door kleurfiltering.
    Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.
  2. Splits trein/test dataset om aan de volgende eis te voldoen:
    • ten minste 10 normale afbeeldingen en 10 anomalieรซn voor treindataset
    • รฉรฉn defect/afbeelding in treindataset
    • ten minste 10 normale beelden en 10 anomalieรซn voor testdataset
    • meerdere defecten per afbeelding zijn toegestaan โ€‹โ€‹voor de testdataset
  3. Genereer synthetische defecten en upload ze naar de beoogde S3-locaties.

We genereren รฉรฉn defect per afbeelding en meer dan 20 defecten per klasse voor de treindataset, evenals 1-3 defecten per afbeelding en meer dan 20 defecten per klasse voor de testdataset.

Het volgende is een voorbeeld van de bronafbeelding en de synthetische defecten met drie componenten: IC, weerstand 1 en weerstand 2 ontbreken.

originele foto

originele foto

40_im_mask_IC_resistor1_resistor2.jpg (de defectnaam geeft de ontbrekende componenten aan)

40_im_mask_IC_resistor1_resistor2.jpg (de defectnaam geeft de ontbrekende componenten aan)

  1.  Genereer manifestbestanden voor het trainen/testen van datasets die alle bovenstaande informatie vastleggen.

Ten slotte genereren we trein-/testmanifesten om informatie vast te leggen, zoals synthetische defect S3-locatie, masker S3-locatie, defectklasse, maskerkleur, enz.

Hieronder volgen voorbeelden van json-regels voor een afwijking en een normale afbeelding in het manifest.

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

Voor normaal beeld:

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

De invoer en uitvoer van het eindpunt worden opgeslagen in de doel-S3-bucket in de volgende structuur:

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

5 Lookout for Vision modeltraining en resultaat

5.1 Project opzetten, dataset uploaden en modeltraining starten. 

  1. Ten eerste kun je naar Lookout for Vision gaan vanaf de AWS-console en maak een project aan.
    Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.
  2. Vervolgens kunt u een trainingsgegevensset maken door te kiezen Afbeeldingen importeren die zijn gelabeld door SageMaker Ground Truth en geef de Amazon S3-locatie van het treingegevenssetmanifest gegenereerd door het SageMaker-eindpunt.
    Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.
  3. Vervolgens kunt u een testdataset maken door te kiezen Afbeeldingen importeren die zijn gelabeld door SageMaker Ground Truth nogmaals, en geef de Amazon S3-locatie op van het testdatasetmanifest gegenereerd door het SageMaker-eindpunt.
    Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.
    .......Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.
    ....
  4. Nadat de trein- en testdatasets met succes zijn geรผpload, kunt u de Trein model knop in de rechterbovenhoek om de anomalie-lokalisatiemodeltraining te activeren.
    ......
  5. In ons experiment deed het model er iets langer dan een uur over om de training te voltooien. Wanneer de status aangeeft dat de training is voltooid, kunt u de modelkoppeling selecteren om het resultaat te controleren.
    ....
    Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

5.2 Model trainingsresultaat

5.2.1 Prestatiestatistieken van modellen 

Na selectie bij de model 1 zoals hierboven getoond, kunnen we aan de hand van de 100% Precision-, 100% Recall- en 100% F1-score zien dat de modelprestaties redelijk goed zijn. We kunnen ook de prestaties per label controleren (ontbrekende component), en we zullen blij zijn te ontdekken dat de F1-scores van alle drie de labels hoger zijn dan 93% en de gemiddelde IoU's hoger zijn dan 85%. Dit resultaat is bevredigend voor deze kleine dataset die we in de post hebben gedemonstreerd.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

5.2.2 Visualisatie van detectie van synthetische defecten in de testdataset. 

Zoals de volgende afbeelding laat zien, wordt elke afbeelding overgelopen als een normal or anomaly label met een betrouwbaarheidsscore. Als het een afwijking is, wordt er een masker over het abnormale gebied in de afbeelding weergegeven met een andere kleur voor elk type defect.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het volgende is een voorbeeld van gecombineerde ontbrekende componenten (in dit geval drie defecten) in de testdataset:

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Vervolgens kunt u het model compileren en verpakken als een AWS IoT Greengrass component volgens de instructies in dit bericht, Identificeer de locatie van afwijkingen met Amazon Lookout for Vision aan de rand zonder een GPU te gebruikenen voer gevolgtrekkingen uit op het model.

6. Test het Lookout for Vision-model dat is getraind op synthetische gegevens tegen echte defecten

Om te testen of het model getraind op het synthetische defect goed kan presteren tegen echte defecten, hebben we een dataset (aliens-dataset) gekozen uit hier om een โ€‹โ€‹experiment uit te voeren.

Eerst vergelijken we het gegenereerde synthetische defect en het echte defect. De linkerafbeelding is een echt defect met een ontbrekende kop en de rechterafbeelding is een gegenereerd defect waarbij de kop is verwijderd met behulp van een ML-model.

Echt defect

Echt defect

Synthetisch defect

Synthetisch defect

Ten tweede gebruiken we de proefdetecties in Lookout for Vision om het model te testen op het echte defect. U kunt de testafbeeldingen opslaan in de S3-bucket en ze importeren vanuit Amazon S3 of afbeeldingen uploaden vanaf uw computer. Selecteer vervolgens Detecteer afwijkingen om de detectie uit te voeren.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Eindelijk kunt u het voorspellingsresultaat van het echte defect zien. Het model dat is getraind op synthetische defecten kan in dit experiment het echte defect nauwkeurig detecteren.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Het model dat is getraind op synthetische defecten, presteert mogelijk niet altijd goed op echte defecten, met name printplaten die veel gecompliceerder zijn dan deze voorbeelddataset. Als u het model met echte defecten opnieuw wilt trainen, kunt u de oranje knop met het label selecteren Controleer machinevoorspellingen in de rechterbovenhoek van het voorspellingsresultaat en controleer het vervolgens als Correct or Onjuist.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Vervolgens kunt u de geverifieerde afbeelding en het label toevoegen aan de trainingsdataset door de oranje knop in de rechterbovenhoek te selecteren om de modelprestaties te verbeteren.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

7. Kostenraming 

Deze pijplijn voor beeldvergroting voor Lookout for Vision is zeer kosteneffectief. In het bovenstaande voorbeeld kosten Amazon SageMaker Ground Truth Labeling, Amazon SageMaker notebook en SageMaker asynchronous endpoint deployment and inference slechts een paar dollar. Voor de Lookout for Vision-service betaalt u alleen voor wat u gebruikt. Er zijn drie componenten die uw factuur bepalen: kosten voor het trainen van het model (trainingsuren), kosten voor het detecteren van afwijkingen in de cloud (cloud-inferentie-uren) en/of kosten voor het detecteren van afwijkingen op de edge (edge โ€‹โ€‹inference-eenheden). In ons experiment deed het Lookout for Vision-model er iets meer dan een uur over om de training te voltooien en kostte het $ 2.00 per trainingsuur. Bovendien kunt u het getrainde model gebruiken voor inferentie in de cloud of aan de rand met de vermelde prijs hier.

8. Opruimen

Gebruik de console om de eindpunten en bronnen te verwijderen die u hebt gemaakt tijdens het uitvoeren van de oefeningen in de post, om onnodige kosten te voorkomen.

  1. Open de SageMaker-console en verwijder de volgende bronnen:
    • Het eindpunt. Als u het eind punt verwijdert, worden ook de ML-reken instantie of instanties die dit ondersteunen, verwijderd.
      1. Onder Gevolgtrekking, kiezen Eindpunten.
      2. Kies het eindpunt dat u in het voorbeeld hebt gemaakt, kies Actiesen kies vervolgens Verwijder.
    • De eindpuntconfiguratie.
      1. Onder Gevolgtrekking, kiezen Eindpunt configuraties.
      2. Kies de eindpuntconfiguratie die u in het voorbeeld hebt gemaakt, kies Actiesen kies vervolgens Verwijder.
    • Het model.
      1. Onder Gevolgtrekking, kiezen Modellen.
      2. Kies het model dat u in het voorbeeld hebt gemaakt, kies Actiesen kies vervolgens Verwijder.
    • De notebook-instantie. Voordat u de notebook-instantie verwijdert, moet u deze stoppen.
      1. Onder Notitieboek, kiezen Notebook-exemplaren.
      2. Kies de notebook-instantie die u in het voorbeeld hebt gemaakt, kies Actiesen kies vervolgens stop. Het duurt enkele minuten voordat de notebook-instantie stopt. Wanneer de Status veranderd naar Gestopt, ga verder met de volgende stap.
      3. Kies Actiesen kies vervolgens Verwijder.
  2. Open de Amazon S3-consoleen verwijder vervolgens de bucket die u hebt gemaakt voor het opslaan van modelartefacten en de trainingsgegevensset.
  3. Open de Amazon CloudWatch-consoleen verwijder vervolgens alle logboekgroepen waarvan de naam begint met /aws/sagemaker/.

U kunt het eindpunt ook uit het SageMaker-notebook verwijderen door de volgende code uit te voeren:

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

9. Conclusie

In dit bericht hebben we gedemonstreerd hoe synthetische defectmaskers kunnen worden geannoteerd met behulp van Amazon SageMaker Ground Truth, hoe verschillende beeldvergrotingstechnieken kunnen worden gebruikt om รฉรฉn normaal beeld om te zetten in het gewenste aantal normale afbeeldingen, een asynchroon SageMaker-eindpunt te maken en het invoerbestand voor te bereiden voor de eindpunt, evenals het aanroepen van het eindpunt. Ten slotte hebben we gedemonstreerd hoe u het train/test-manifest kunt gebruiken om een โ€‹โ€‹Lookout for Vision-afwijkingslokalisatiemodel te trainen. Deze voorgestelde pijplijn kan worden uitgebreid naar andere ML-modellen om synthetische defecten te genereren, en het enige wat u hoeft te doen is het model en de inferentiecode in het SageMaker-eindpunt aan te passen.

Begin met het verkennen van Lookout for Vision voor geautomatiseerde kwaliteitsinspectie hier.


Over de auteurs

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Kara Yang is Data Scientist bij AWS Professional Services. Ze is gepassioneerd om klanten te helpen hun zakelijke doelen te bereiken met AWS-cloudservices en heeft organisaties geholpen bij het bouwen van end-to-end AI/ML-oplossingen in meerdere sectoren, zoals productie, auto-industrie, ecologische duurzaamheid en ruimtevaart.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Octavi Obiols-Verkoop is een computationele wetenschapper gespecialiseerd in deep learning (DL) en machine learning, gecertificeerd als associate solutions architect. Met uitgebreide kennis van zowel de cloud als de edge helpt hij de bedrijfsresultaten te versnellen door end-to-end AI-oplossingen te bouwen. Octavi behaalde zijn doctoraat in computationele wetenschappen aan de University of California, Irvine, waar hij de state-of-the-art in DL+HPC-algoritmen pushte.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Fabian Benitez-Quiroz is een IoT Edge Data Scientist bij AWS Professional Services. Hij behaalde een doctoraat in computervisie en patroonherkenning aan de Ohio State University. Fabian is betrokken bij het helpen van klanten bij het uitvoeren van hun Machine Learning-modellen met lage latentie op IoT-apparaten en in de cloud.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Manish Talreja is Principal Product Manager voor IoT-oplossingen bij AWS. Hij is gepassioneerd om klanten te helpen bij het bouwen van innovatieve oplossingen met behulp van AWS IoT- en ML-services in de cloud en aan de edge.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Yuxin Yang is een AI/ML-architect bij AWS, gecertificeerd in de specialiteit AWS Machine Learning. Ze stelt klanten in staat om hun resultaten te versnellen door end-to-end AI/ML-oplossingen te bouwen, waaronder voorspellend onderhoud, computervisie en versterkend leren. Yuxin behaalde haar MS aan Stanford University, waar ze zich richtte op deep learning en big data-analyse.

Pijplijn voor beeldvergroting voor Amazon Lookout for Vision PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.Yingmao Timotheus Li is een datawetenschapper bij AWS. Hij is 11 maanden geleden bij AWS gekomen en werkt met een breed scala aan diensten en machine learning-technologieรซn om oplossingen te bouwen voor een diverse groep klanten. Hij heeft een doctoraat in elektrotechniek. In zijn vrije tijd houdt hij van buitenspelen, autoraces, zwemmen en vliegen met een doedelzakvogel om door het land te reizen en de lucht te verkennen.

 

Tijdstempel:

Meer van AWS-machine learning