Zephyrnet-logo

Bouw een volledig nieuw model voor afwijkingsdetectie met Amazon Lookout for Vision

Datum:

Een veelvoorkomend probleem bij de productie is het verifiëren dat producten voldoen aan de kwaliteitsnormen. U kunt handmatige inspectie gebruiken voor een subset van de producten, maar deze is meestal niet schaalbaar genoeg om aan de vraag te voldoen naarmate de productie groeit. In dit bericht doorloop ik de stappen van het creëren van een end-to-end machine vision-oplossing die visuele afwijkingen in producten identificeert met behulp van Amazon Lookout voor visie. Ik zal u laten zien hoe u een model traint dat anomaliedetectie uitvoert, het model in realtime gebruikt, het model bijwerkt wanneer nieuwe gegevens beschikbaar zijn en hoe u het model bewaakt.

Overzicht oplossingen

Stel je een fabriek voor die legostenen produceert. De stenen worden op een lopende band getransporteerd voor een camera die vaststelt of ze voldoen aan de kwaliteitsnormen van de fabriek. Wanneer een steen op de riem een ​​lichtstraal breekt, maakt het apparaat een foto en stuurt deze naar Amazon Lookout for Vision voor detectie van afwijkingen. Als een defecte steen wordt geïdentificeerd, wordt deze door een duwer van de band geduwd.

Het volgende diagram illustreert de architectuur van onze anomaliedetectieoplossing, die gebruikmaakt van Amazon Lookout for Vision, Amazon eenvoudige opslagservice (Amazon S3) en een Raspberry Pi.

Amazon Lookout for Vision is een machine learning (ML) -service die machine vision gebruikt om u te helpen visuele defecten in producten te identificeren zonder enige ML-ervaring. Het maakt gebruik van deep learning om de behoefte aan zorgvuldig gekalibreerde omgevingen in termen van verlichting en camerahoek, die veel bestaande machine vision-technieken vereisen, weg te nemen.

Om aan de slag te gaan met Amazon Lookout for Vision, moet u gegevens verstrekken die de service kan gebruiken bij het trainen van de onderliggende deep learning-modellen. De dataset die in dit bericht wordt gebruikt, bestaat uit 289 normale en 116 afwijkende afbeeldingen van een Lego-steen, die worden gehost in een S3-bucket die ik openbaar heb gemaakt, zodat je de dataset kunt downloaden.

Om het scenario realistischer te maken, heb ik de belichting en camerapositie tussen de afbeeldingen gevarieerd. Daarnaast gebruik ik 20 testafbeeldingen en 9 nieuwe afbeeldingen om het model later bij te werken met zowel normale als afwijkende afbeeldingen. De afwijkende afbeeldingen zijn gemaakt door op de steen te tekenen en er krassen op te maken, de kleur van de steen te veranderen, andere stenen toe te voegen en kleine stukjes af te breken om productiefouten te simuleren. De volgende afbeelding toont de fysieke opstelling die wordt gebruikt bij het verzamelen van trainingsafbeeldingen.

Pre-requisites

Om dit bericht te volgen, heb je het volgende nodig:

  • Een AWS-account om Amazon Lookout for Vision te trainen en te gebruiken
  • Een camera (voor dit bericht gebruik ik een Pi-camera)
  • Een apparaat dat code kan uitvoeren (ik gebruik een Raspberry Pi 4)

Train het model

Om de dataset te gebruiken bij het trainen van een model, upload je eerst de trainingsgegevens naar Amazon S3 en maak je een Amazon Lookout for Vision-project. Een project is een abstractie rond de trainingsdataset en meerdere modelversies. U kunt een project zien als een verzameling bronnen die betrekking hebben op een specifieke gebruikssituatie van machinevisie. In dit bericht gebruik ik bijvoorbeeld één dataset, maar maak ik meerdere modelversies terwijl ik het model geleidelijk optimaliseer voor de use case met nieuwe gegevens, allemaal binnen de grenzen van één project.

U kunt de SDK gebruiken, AWS-opdrachtregelinterface (AWS CLI), en AWS-beheerconsole om alle stappen uit te voeren die nodig zijn om een ​​model te maken en te trainen. Voor dit bericht gebruik ik een combinatie van de AWS CLI en de console om het model te trainen en te starten, en gebruik ik de SDK om afbeeldingen te verzenden voor anomaliedetectie vanaf de Raspberry Pi.

Om het model te trainen, doorlopen we de volgende stappen op hoog niveau:

  1. Upload de trainingsgegevens naar Amazon S3.
  2. Maak een Amazon Lookout for Vision-project.
  3. Maak een Amazon Lookout for Vision-dataset.
  4. Train het model.

Upload de trainingsgegevens naar Amazon S3

Voer de volgende stappen uit om aan de slag te gaan:

  1. Download de dataset naar uw computer.
  2. Maak een S3-bucket en upload de trainingsgegevens.

Ik heb mijn bucket l4vdemo genoemd, maar bucketnamen moeten globaal uniek zijn, dus zorg ervoor dat je deze wijzigt als je de volgende code kopieert. Zorg ervoor dat u de mapstructuur in de dataset behoudt, omdat Amazon Lookout for Vision deze gebruikt om normale en afwijkende afbeeldingen automatisch te labelen op basis van de mapnaam. U kunt de geïntegreerde etiketteringstool gebruiken op de Amazon Lookout for Vision-console of Amazon SageMaker Grondwaarheid om de gegevens te labelen, maar met de automatische labeler kunt u de mapstructuur behouden en wat tijd besparen.

aws s3 sync s3://aws-ml-blog/artifacts/Build-an-anomaly-detection-model-from-scratch-with-L4V/ data/ aws s3 mb s3://l4vdemo aws s3 sync data s3://l4vdemo

Maak een Amazon Lookout for Vision-project

U bent nu klaar om uw project te maken.

  1. Kies op de Amazon Lookout for Vision-console Projecten in het navigatievenster.
  2. Kies Maak een project aan.
  3. Voor Naam van het project, voer een naam in.
  4. Kies Maak een project aan.

Maak de dataset

Voor dit bericht maak ik een enkele dataset en importeer ik de trainingsgegevens uit de S3-bucket waarnaar ik de gegevens in stap 1 heb geüpload.

  1. Kies Maak een dataset.
  2. kies afbeeldingen importeren uit S3-bucket.
  3. Voor S3-URI, voer de URI voor je bucket in (voor dit bericht s3: // l4vdemo /, maar zorg ervoor dat je de unieke bucketnaam gebruikt die je hebt gemaakt).

  1. Voor Automatische etiketteringselecteer Voeg automatisch labels toe aan afbeeldingen op basis van de mapnaam.

Hierdoor kunt u de bestaande mapstructuur gebruiken om af te leiden of uw afbeeldingen normaal of abnormaal zijn.

  1. Kies Maak een dataset.

Train het model

Nadat we de dataset hebben gemaakt, moet het aantal gelabelde en ongelabelde afbeeldingen zichtbaar zijn in de filters deelvenster, evenals het aantal normale en afwijkende afbeeldingen.

  1. Om te beginnen met het trainen van een deep learning-model, kiest u: Trein model.

 

Modeltraining kan enkele uren duren, afhankelijk van het aantal afbeeldingen in de trainingsgegevensset.

  1. Als de training is voltooid, kiest u in het navigatievenster Modellen onder uw project.

U zou het nieuw gemaakte model in de lijst moeten zien met de status Training voltooid.

  1. Kies het model om prestatiestatistieken te zien, zoals precisie, recall en F1-score, trainingsduur en meer modelmetadata.

Gebruik het model

Nu een model is getraind, laten we het testen op gegevens die het nog niet eerder heeft gezien. Als u het model wilt gebruiken, moet u het eerst hosten om alle back-endbronnen in te richten die nodig zijn om realtime gevolgtrekking uit te voeren.

aws lookoutvision start-model --project-name lego-demo --model-version 1 --min-inference-units 1

Wanneer u de modelhosting start, geeft u zowel de projectnaam als de modelversie door als argumenten om het model te identificeren. U moet ook het aantal inferentie-eenheden opgeven dat u wilt gebruiken; elke eenheid maakt ongeveer vijf verzoeken per seconde mogelijk.

Om het gehoste model te gebruiken, gebruikt u de opdracht detect-anomalies en geeft u de project- en modelversie samen met de afbeelding door om gevolgtrekking uit te voeren op:

aws lookoutvision detect-anomalies --project-name lego-demo --model-version 1 --content-type image/jpeg --body test/test-1611853160.2488434.jpg

De dataset die we in dit bericht gebruiken, bevat 20 afbeeldingen en ik moedig u aan om het model met verschillende afbeeldingen te testen.

Bij het uitvoeren van een gevolgtrekking op een afwijkende steen, kan het antwoord er als volgt uitzien:

{ "DetectAnomalyResult": { "Source": { "Type": "direct" }, "IsAnomalous": true, "Confidence": 0.9754859209060669 }
}

De vlag IsAnomalous is waar en Amazon Lookout for Vision biedt ook een betrouwbaarheidsscore die aangeeft hoe zeker het model is van zijn classificatie. De service biedt altijd een binaire classificatie, maar u kunt de vertrouwensscore gebruiken om weloverwogen beslissingen te nemen, zoals of u de steen direct weggooit of opstuurt voor handmatige inspectie. U kunt ook afbeeldingen met lagere betrouwbaarheidsscores behouden en deze gebruiken om het model bij te werken, wat ik u in de volgende sectie laat zien.

Houd er rekening mee dat er kosten in rekening worden gebracht voor het model zolang het actief is, dus stop ermee wanneer u het niet meer nodig hebt:

aws lookoutvision stop-model --project-name lego-demo --model-version 1

Werk het model bij

Als er nieuwe gegevens beschikbaar komen, wilt u wellicht het model onderhouden of bijwerken om rekening te houden met nieuwe typen defecten en om de algehele prestaties van het model te verbeteren. De dataset bevat negen afbeeldingen in de map new-data, die ik gebruik om het model bij te werken. Om een ​​Amazon Lookout for Vision-model bij te werken, voert u een proefdetectie uit en verifieert u de machinevoorspellingen om de modelvoorspellingen te corrigeren, en voegt u de geverifieerde afbeeldingen toe aan uw trainingsgegevensset.

Voer een proefdetectie uit

Voer de volgende stappen uit om een ​​proefdetectie uit te voeren:

  1. Kies op de Amazon Lookout for Vision-console onder uw model in het navigatievenster: Trial detecties.
  2. Kies Proefdetectie uitvoeren.
  3. Voor Proefnaam, voer een naam in.
  4. Voor Afbeeldingen importerenselecteer Importeer afbeeldingen uit S3-bucket.
  5. Voor S3-URI, voert u de URI in van de map met nieuwe gegevens die u hebt geüpload in stap 1 van het trainen van het model

  1. Kies Voer een proefperiode uit

Controleer machinevoorspellingen

Wanneer de proefopsporing is voltooid, kunt u de machinevoorspellingen verifiëren.

  1. Kies Controleer machinevoorspellingen.
  2. Selecteer een van beide Juist of onjuist om de afbeeldingen te labelen

 

  1. Kies wanneer alle afbeeldingen zijn gelabeld Voeg geverifieerde afbeeldingen toe aan de dataset.

Hiermee wordt uw trainingsgegevensset bijgewerkt met de nieuwe gegevens.

Train het model opnieuw

Nadat u uw trainingsgegevensset hebt bijgewerkt met de nieuwe gegevens, kunt u zien dat het aantal gelabelde afbeeldingen in uw gegevensset is toegenomen, samen met het aantal geverifieerde afbeeldingen.

  1. Kies Trein model om een ​​nieuwe versie van het model te trainen.

 

  1. Wanneer het nieuwe model aan het trainen is, op de Modellen pagina, kunt u controleren of er een nieuwe modelversie wordt getraind. Wanneer de training is voltooid, kunt u de prestatiestatistieken van het model bekijken op de Modellen pagina en begin de nieuwe versie te gebruiken.

 

Applicatie voor het detecteren van afwijkingen

Nu ik mijn model heb getraind, gaan we het gebruiken met de Raspberry Pi om Legoblokjes te sorteren. In dit geval heb ik een Raspberry Pi opgezet met een camera die wordt geactiveerd wanneer een breekstraalsensor een Legoblokje detecteert. We gebruiken de volgende code:

import boto3
from picamera import PiCamera
import my_break_bream_sensor
import my_pusher l4v_client = boto3.client('lookoutvision')
image_path = '/home/pi/Desktop/my_image.jpg' with PiCamera() as camera: while(True): if my_break_bream_sensor.isBroken(): # Replace with your own sensor. camera.capture(image_path) with open(image_path, 'rb') as image: response = l4v_client.detect_anomalies(ProjectName='lego-demo', ContentType='image/jpeg', Body=image.read(), ModelVersion='2') is_anomalous = response['DetectAnomalyResult']['IsAnomalous'] if (is_anomalous): my_pusher.push() # Replace with your own pusher.

Monitoring van het model

Wanneer het systeem actief is, kunt u het Amazon Lookout for Vision-dashboard gebruiken om metagegevens te visualiseren van de projecten die u uitvoert, zoals het aantal gedetecteerde afwijkingen gedurende een specifieke periode. Het dashboard biedt een overzicht van alle lopende projecten, evenals geaggregeerde informatie zoals de totale anomalieverhouding.

Prijzen

De kosten van de oplossing zijn gebaseerd op de tijd om het model te trainen en de tijd dat het model draait. U kunt de kosten over alle geanalyseerde producten verdelen om de kosten per product te krijgen. Ervan uitgaande dat één steen gedurende een maand non-stop per seconde wordt geanalyseerd, bedragen de kosten van de oplossing, exclusief hardware en training, ongeveer $ 0.001 per steen, ervan uitgaande dat we 1 inferentie-eenheid gebruiken. Als u echter de productiesnelheid verhoogt en vijf stenen per seconde analyseert, bedragen de kosten ongeveer $ 0.0002 per steen.

Conclusie

Nu weet u hoe u Amazon Lookout for Vision kunt gebruiken om een ​​applicatie voor het detecteren van afwijkingen te trainen, uit te voeren, bij te werken en te bewaken. De use case in deze post is natuurlijk vereenvoudigd; u zult andere vereisten hebben die specifiek zijn voor uw behoeften. Veel factoren zijn van invloed op de totale end-to-end latentie bij het uitvoeren van inferentie op een afbeelding. Het Amazon Lookout for Vision-model draait in de cloud, wat betekent dat u de netwerkbeschikbaarheid en bandbreedte moet evalueren en testen om ervoor te zorgen dat aan de vereisten kan worden voldaan. Om te voorkomen dat er knelpunten ontstaan, kunt u een stroomonderbreker in uw toepassing gebruiken om time-outs te beheren en congestie bij netwerkproblemen te voorkomen.

Nu u weet hoe u een ML-model voor anomaliedetectie moet trainen, testen en gebruiken en bijwerken, kunt u het uitproberen met uw eigen gegevens! Voor meer informatie over Amazon Lookout for Vision, gelieve bezoek de webpagina!


Over de auteurs

Nicolas Palm is Solutions Architect bij AWS in Stockholm, Zweden, waar hij klanten in heel Scandinavië helpt om succesvol te zijn in de cloud. Hij is vooral gepassioneerd door serverloze technologieën samen met IoT en machine learning. Naast zijn werk is Niklas een fervent langlaufer en snowboarder en een meester-eierkoker.

Coinsmart. Beste Bitcoin-beurs in Europa
Bron: https://aws.amazon.com/blogs/machine-learning/build-an-anomaly-detection-model-from-scratch-with-amazon-lookout-for-vision/

spot_img

Laatste intelligentie

spot_img