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:
- 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).
- 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:
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.
Vervolgens kunnen we het python-pakket met de naam 'IPyPlot' installeren.
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.
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.
Nadat we de voorleggen knop, genereert Amazon SageMaker Ground Truth als volgt een uitvoermasker met een witte achtergrond en een manifestbestand:
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.
Vervolgens downloaden we het masker van Amazon SageMaker Ground Truth en uploaden het naar een map met de naam 'mask' in die S3-bucket.
Daarna downloaden we het manifestbestand van Amazon SageMaker Ground Truth-labeltaak en lezen het als json-regels.
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.
Het volgende is een voorbeeld van een invoerbestand:
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:
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.
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.
Vervolgens moeten we aanvullende configuratieparameters voor asynchrone inferentie opgeven tijdens het maken van de eindpuntconfiguratie.
Vervolgens implementeren we het eindpunt op een ml.g4dn.xlarge-instantie door de volgende code uit te voeren:
Na ongeveer 6-8 minuten is het eindpunt met succes gemaakt en wordt het weergegeven in de SageMaker-console.
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:
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.
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.
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.
4.3.6 Genereren van synthetische defecten met ontbrekende componenten met behulp van het eindpunt
We zullen vier taken uitvoeren in het eindpunt:
- 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.
- 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
- 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
40_im_mask_IC_resistor1_resistor2.jpg (de defectnaam geeft de ontbrekende componenten aan)
- 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:
- AI
- ai kunst
- ai kunst generator
- je hebt een robot
- Amazon Lookout voor visie
- Amazon SageMaker Grondwaarheid
- kunstmatige intelligentie
- certificering van kunstmatige intelligentie
- kunstmatige intelligentie in het bankwezen
- kunstmatige intelligentie robot
- kunstmatige intelligentie robots
- kunstmatige intelligentiesoftware
- AWS-machine learning
- blockchain
- blockchain conferentie ai
- vindingrijk
- conversatie kunstmatige intelligentie
- crypto conferentie ai
- Klantoplossingen
- van dall
- diepgaand leren
- google ai
- machine learning
- Plato
- plato ai
- Plato gegevensintelligentie
- Plato-spel
- PlatoData
- platogamen
- schaal ai
- syntaxis
- zephyrnet