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:
- 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).
- 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:
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.
Apoi, putem instala pachetul python numit „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.
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.
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ă:
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.
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.
După aceea, descarcăm fișierul manifest din jobul de etichetare Amazon SageMaker Ground Truth și îl citim ca linii json.
Î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ă.
Următorul este un exemplu de fișier de intrare:
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ă:
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.
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.
Apoi, trebuie să specificăm parametrii de configurare specifici de inferență asincronă suplimentari în timp ce creăm configurația punctului final.
Apoi, implementăm punctul final pe o instanță ml.g4dn.xlarge rulând următorul cod:
După aproximativ 6-8 minute, punctul final este creat cu succes și va apărea în consola SageMaker.
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:
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ă.
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.
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.
4.3.6 Generarea de defecte sintetice cu componente lipsă utilizând punctul final
Vom îndeplini patru sarcini în punctul final:
- 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.
- Î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
- 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ă
40_im_mask_IC_resistor1_resistor2.jpg (numele defectului indică componentele lipsă)
- 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:
- AI
- ai art
- ai art generator
- ai robot
- Amazon Lookout pentru Vision
- Amazon SageMaker Ground Adevăr
- inteligență artificială
- certificare de inteligență artificială
- inteligența artificială în domeniul bancar
- robot cu inteligență artificială
- roboți cu inteligență artificială
- software de inteligență artificială
- Învățare automată AWS
- blockchain
- conferință blockchain ai
- coingenius
- inteligența artificială conversațională
- criptoconferință ai
- Soluții pentru clienți
- dall-e
- învățare profundă
- google ai
- masina de învățare
- Plato
- platoul ai
- Informații despre date Platon
- Jocul lui Platon
- PlatoData
- platogaming
- scara ai
- sintaxă
- zephyrnet