Amazon Lookout dla wizji zapewnia usługę wykrywania anomalii opartą na uczeniu maszynowym (ML) w celu identyfikacji normalnych obrazów (tj. obrazów obiektów bez defekty) vs anomalne obrazy (tj. obrazy obiektów w defekty), rodzaje anomalii (np. brakujący element) oraz lokalizację tych anomalii. Dlatego Lookout for Vision jest popularny wśród klientów poszukujących zautomatyzowanych rozwiązań do przemysłowej kontroli jakości (np. wykrywanie nieprawidłowych produktów). Jednak zestawy danych klientów zwykle napotykają dwa problemy:
- Liczba obrazów z anomaliami może być bardzo niska i może nie osiągnąć minimum anomalii/rodzaju defektów narzuconego przez Lookout for Vision (~20).
- Normalne obrazy mogą nie mieć wystarczającej różnorodności i mogą spowodować awarię modelu, gdy zmienią się warunki środowiskowe, takie jak oświetlenie podczas produkcji
Aby przezwyciężyć te problemy, w tym poście wprowadzono potok augmentacji obrazu, który dotyczy obu problemów: zapewnia sposób generowania syntetycznych anomalnych obrazów poprzez usuwanie obiektów z obrazów i generuje dodatkowe normalne obrazy poprzez wprowadzenie kontrolowanego augmentacji, takiej jak szum gaussowski, odcień, nasycenie, piksel skalowanie wartości itp. Używamy obrazek bibliotekę, aby wprowadzić rozszerzenie w celu wygenerowania dodatkowych anomalnych i normalnych obrazów dla drugiego problemu. Używamy Amazon Sagemaker Ground Prawda do generowania masek usuwania obiektów i Lama algorytm usuwania obiektów dla pierwszego problemu przy użyciu technik malowania obrazu (usuwania obiektów).
Pozostała część postu jest zorganizowana w następujący sposób. W sekcji 3 przedstawiamy potok augmentacji obrazu dla normalnych obrazów. W części 4 przedstawiamy potok augmentacji obrazu dla nieprawidłowych obrazów (tzw. generowanie defektów syntetycznych). Sekcja 5 ilustruje wyniki szkolenia Lookout for Vision przy użyciu rozszerzonego zestawu danych. W sekcji 6 pokazano, jak model Lookout for Vision przeszkolony na danych syntetycznych radzi sobie z rzeczywistymi defektami. W sekcji 7 mówimy o oszacowaniu kosztów dla tego rozwiązania. Można uzyskać dostęp do całego kodu, którego użyliśmy w tym poście tutaj.
1. Przegląd rozwiązania
diagram ML
Poniżej przedstawiono diagram proponowanego potoku rozszerzania obrazu na potrzeby szkolenia modelu lokalizowania anomalii w usłudze Lookout for Vision:
Powyższy schemat zaczyna się od zebrania serii obrazów (krok 1). Rozszerzamy zbiór danych, powiększając normalne obrazy (krok 3) i stosując algorytmy usuwania obiektów (kroki 2, 5-6). Następnie pakujemy dane w formacie, który może być wykorzystany przez Amazon Lookout for Vision (kroki 7-8). Na koniec w kroku 9 wykorzystujemy spakowane dane do trenowania modelu lokalizacji Lookout for Vision.
Ten potok rozszerzania obrazu zapewnia klientom elastyczność w generowaniu syntetycznych defektów w ograniczonym zbiorze danych próbki, a także dodaje więcej ilości i różnorodności do normalnych obrazów. Zwiększyłoby to wydajność usługi Lookout for Vision, rozwiązując problem braku danych klientów i usprawniając proces automatycznej kontroli jakości.
2. Przygotowanie danych
Od tego miejsca do końca postu używamy publicznego FICS-PCB: wielomodalny zestaw danych obrazu do automatycznej kontroli wizualnej płytek drukowanych zestaw danych na licencji a Licencja Creative Commons Attribution 4.0 International (CC BY 4.0). aby zilustrować potok ulepszania obrazu oraz wynikające z niego szkolenie i testowanie Lookout for Vision. Ten zestaw danych ma na celu wsparcie oceny zautomatyzowanych systemów kontroli wizualnej PCB. Zostało zebrane w laboratorium SeCurity and Assurance (SCAN) na University of Florida. Dostęp do niego jest możliwy tutaj.
Zaczynamy od hipotezy, że klient dostarcza tylko jeden normalny obraz płytki PCB (próbka PCB s10) jako zbiór danych. Można to zobaczyć w następujący sposób:
3. Powiększanie obrazu dla normalnych obrazów
Usługa Lookout for Vision wymaga co najmniej 20 normalnych obrazów i 20 anomalii dla każdego typu defektu. Ponieważ z przykładowych danych jest tylko jeden normalny obraz, musimy wygenerować więcej normalnych obrazów za pomocą technik powiększania obrazu. Z punktu widzenia ML wprowadzanie wielu transformacji obrazu przy użyciu różnych technik augmentacji może poprawić dokładność i niezawodność modelu.
Użyjemy obrazek do powiększania obrazu normalnych obrazów. Imgaug to pakiet Pythona o otwartym kodzie źródłowym, który umożliwia rozszerzanie obrazów w eksperymentach ML.
Najpierw zainstalujemy obrazek biblioteka w Amazon Sage Maker notatnik.
Następnie możemy zainstalować pakiet Pythona o nazwie „IPyPlot”.
Następnie wykonujemy powiększenie obrazu oryginalnego obrazu za pomocą przekształceń obejmujących GammaContrast
, SigmoidContrast
, LinearContrast
i dodanie szumu Gaussa na obrazie.
Ponieważ potrzebujemy co najmniej 20 normalnych obrazów, a im więcej, tym lepiej, wygenerowaliśmy 10 rozszerzonych obrazów dla każdej z 4 transformacji pokazanych powyżej jako nasz normalny zestaw danych obrazu. W przyszłości planujemy również przekształcić obrazy tak, aby były umieszczane w różnych lokalizacjach i różnych aniołach, tak aby wyszkolony model był mniej wrażliwy na położenie obiektu względem stałej kamery.
4. Syntetyczne generowanie defektów do augmentacji nieprawidłowych obrazów
W tej sekcji przedstawiamy syntetyczny potok generowania defektów w celu zwiększenia liczby obrazów z anomaliami w zbiorze danych. Zauważ, że w przeciwieństwie do poprzedniej sekcji, w której tworzymy nowe próbki normalne z istniejących próbek normalnych, tutaj tworzymy nowe obrazy anomalii z próbek normalnych. Jest to atrakcyjna funkcja dla klientów, którzy zupełnie nie mają tego rodzaju obrazów w swoich zbiorach danych, np. usuwając element normalnej płytki PCB. Ten syntetyczny potok generowania defektów składa się z trzech etapów: po pierwsze, generujemy syntetyczne maski z obrazów źródłowych (normalnych) za pomocą Amazon SageMaker Ground Truth. W tym poście skupiamy się na konkretnym typie defektu: brakującym komponencie. Ta generacja maski zapewnia obraz maski i plik manifestu. Po drugie, plik manifestu musi zostać zmodyfikowany i przekonwertowany na plik wejściowy dla punktu końcowego SageMaker. Po trzecie, plik wejściowy jest wprowadzany do punktu końcowego SageMaker do usuwania obiektów, odpowiedzialnego za usuwanie części normalnego obrazu wskazywanych przez maskę. Ten punkt końcowy zapewnia wynikowy nieprawidłowy obraz.
4.1 Generuj syntetyczne maski defektów za pomocą Amazon SageMaker Ground Truth
Amazon Sagemaker Ground Truth do etykietowania danych
Amazon SageMaker Ground Truth to usługa etykietowania danych, która ułatwia etykietowanie danych i daje możliwość korzystania z ludzkich adnotatorów poprzez Amazon Mechanical Turk, dostawców zewnętrznych lub własnych pracowników prywatnych. Możesz śledzić ten poradnik aby skonfigurować zadanie etykietowania.
W tej sekcji pokażemy, jak używamy Amazon SageMaker Ground Prawda aby zaznaczyć określone „komponenty” w normalnych obrazach, które mają zostać usunięte w następnym kroku. Zauważ, że kluczowym wkładem tego postu jest to, że nie używamy Amazon SageMaker Ground Truth w tradycyjny sposób (to znaczy do oznaczania obrazów szkoleniowych). Tutaj używamy go do wygenerowania maski do przyszłego usunięcia w normalnych obrazach. Te usunięcia w normalnych obrazach będą generować defekty syntetyczne.
Na potrzeby tego wpisu w naszej pracy związanej z etykietowaniem sztucznie usuniemy do trzech elementów z płytki PCB: IC, rezystor1 i rezystor2. Po wejściu do zadania etykietowania jako etykieciarz możesz wybrać nazwę etykiety i narysować maskę o dowolnym kształcie wokół elementu, który chcesz usunąć z obrazu jako wadę syntetyczną. Pamiętaj, że w tym eksperymencie nie możesz umieścić znaku „_” w nazwie etykiety, ponieważ używamy znaku „_” do oddzielenia różnych metadanych w nazwie defektu w dalszej części kodu.
Na poniższym rysunku rysujemy zieloną maskę wokół układu scalonego (IC), niebieską maskę wokół rezystora 1 i pomarańczową maskę wokół rezystora 2.
Po wybraniu Zatwierdź przycisk, Amazon SageMaker Ground Truth wygeneruje maskę wyjściową z białym tłem i plik manifestu w następujący sposób:
Pamiętaj, że jak dotąd nie wygenerowaliśmy żadnych nieprawidłowych obrazów. Właśnie zaznaczyliśmy trzy komponenty, które zostaną sztucznie usunięte i których usunięcie spowoduje wygenerowanie nieprawidłowych obrazów. Później użyjemy zarówno (1) powyższego obrazu maski, jak i (2) informacji z pliku manifestu jako danych wejściowych dla nieprawidłowego potoku generowania obrazu. W następnej sekcji pokazano, jak przygotować dane wejściowe dla punktu końcowego SageMaker.
4.2 Przygotuj dane wejściowe dla punktu końcowego SageMaker
Przekształć manifest Amazon SageMaker Ground Truth jako plik wejściowy punktu końcowego SageMaker
Najpierw założyliśmy tzw Usługa Amazon Simple Storage (Amazon S3) Bucket do przechowywania wszystkich danych wejściowych i wyjściowych dla potoku rozszerzania obrazu. W poście używamy wiadra S3 o nazwie qualityinspection
. Następnie generujemy wszystkie rozszerzone normalne obrazy i przesyłamy je do tego segmentu S3.
Następnie pobieramy maskę z Amazon SageMaker Ground Truth i przesyłamy ją do folderu o nazwie „maska” w tym wiadrze S3.
Następnie pobieramy plik manifestu z zadania etykietowania Amazon SageMaker Ground Truth i odczytujemy go jako linie json.
Na koniec generujemy słownik wejściowy, który rejestruje lokalizację S3 obrazu wejściowego, lokalizację maski, informacje o masce itp., Zapisujemy go jako plik txt, a następnie przesyłamy do folderu wejściowego docelowego zasobnika S3.
Poniżej znajduje się przykładowy plik wejściowy:
4.3 Utwórz asynchroniczny punkt końcowy SageMaker, aby wygenerować defekty syntetyczne z brakującymi komponentami
4.3.1 Model Lamy
Aby usunąć komponenty z oryginalnego obrazu, używamy otwartego modelu PyTorch o nazwie LaMa from LaMa: Odporne na rozdzielczość malowanie dużych masek ze zwojami Fouriera. Jest to odporny na rozdzielczość model do malowania z dużą maską ze zwojami Fouriera opracowany przez Samsung AI. Dane wejściowe dla modelu to obraz i czarno-biała maska, a dane wyjściowe to obraz z usuniętymi obiektami wewnątrz maski. Używamy Amazon SageMaker Ground Truth do stworzenia oryginalnej maski, a następnie przekształcamy ją w czarno-białą maskę zgodnie z wymaganiami. Aplikacja modelu LaMa jest zademonstrowana w następujący sposób:
4.3.2 Przedstawiamy Amazon SageMaker Asynchroniczne wnioskowanie
Asynchroniczne wnioskowanie Amazon SageMaker jest nową opcją wnioskowania w Amazon Sage Maker który kolejkuje przychodzące żądania i przetwarza je asynchronicznie. Asynchroniczne wnioskowanie pozwala użytkownikom zaoszczędzić na kosztach przez automatyczne skalowanie liczby wystąpień do zera, gdy nie ma żadnych żądań do przetworzenia. Oznacza to, że płacisz tylko wtedy, gdy Twój punkt końcowy przetwarza żądania. Nowa opcja wnioskowania asynchronicznego jest idealna dla obciążeń, w których żądania są duże (do 1 GB), a czas przetwarzania wnioskowania jest rzędu minut. Kod do wdrożenia i wywołania punktu końcowego to tutaj.
4.3.3 Wdrażanie punktów końcowych
Aby wdrożyć asynchroniczny punkt końcowy, najpierw musimy pobrać plik Rola IAM i ustaw kilka zmiennych środowiskowych.
Jak wspomnieliśmy wcześniej, używamy modelu PyTorch typu open source LaMa: Odporne na rozdzielczość malowanie dużych masek ze zwojami Fouriera i wstępnie przeszkolony model został przesłany do s3://qualityinspection/model/big-lama.tar.gz
, image_uri
wskazuje kontener dokera z wymaganymi wersjami frameworka i Pythona.
Następnie musimy określić dodatkowe parametry konfiguracyjne specyficzne dla wnioskowania asynchronicznego podczas tworzenia konfiguracji punktu końcowego.
Następnie wdrażamy punkt końcowy w instancji ml.g4dn.xlarge, uruchamiając następujący kod:
Po około 6-8 minutach punkt końcowy zostanie pomyślnie utworzony i pojawi się w konsoli SageMaker.
4.3.4 Wywołaj punkt końcowy
Następnie używamy wygenerowanego wcześniej pliku wejściowego txt jako danych wejściowych punktu końcowego i wywołujemy punkt końcowy za pomocą następującego kodu:
Powyższe polecenie natychmiast zakończy wykonywanie. Jednak wnioskowanie będzie kontynuowane przez kilka minut, aż do zakończenia wszystkich zadań i zwrócenia wszystkich danych wyjściowych w zasobniku S3.
4.3.5 Sprawdź wynik wnioskowania o punkcie końcowym
Po wybraniu punktu końcowego zostanie wyświetlona sesja monitorowania. Wybierz „Wyświetl dzienniki”, aby sprawdzić wyniki wnioskowania w konsoli.
W strumieniach dziennika pojawią się dwa rekordy dziennika. Ten o imieniu data-log
pokaże ostateczny wynik wnioskowania, podczas gdy drugi rekord dziennika pokaże szczegóły wnioskowania, które są zwykle używane do celów debugowania.
Jeśli żądanie wnioskowania powiedzie się, zobaczysz komunikat: Inference request succeeded.
w dzienniku danych, a także uzyskać informacje o całkowitym opóźnieniu modelu, całkowitym czasie procesu itp. w komunikacie. Jeśli wnioskowanie nie powiedzie się, sprawdź inny dziennik do debugowania. Możesz również sprawdzić wynik, sondując stan żądania wnioskowania. Dowiedz się więcej o asynchronicznym wnioskowaniu Amazon SageMaker tutaj.
4.3.6 Generowanie defektów syntetycznych z brakującymi komponentami za pomocą punktu końcowego
W punkcie końcowym wykonamy cztery zadania:
- Usługa lokalizacji anomalii Lookout for Vision wymaga jednego defektu na obraz w zestawie danych szkoleniowych, aby zoptymalizować wydajność modelu. Dlatego musimy oddzielić maski dla różnych defektów w punkcie końcowym za pomocą filtrowania kolorów.
- Podział zestawu danych pociągu/testu w celu spełnienia następującego wymogu:
- co najmniej 10 normalnych obrazów i 10 anomalii dla zbioru danych pociągu
- jeden defekt/obraz w zbiorze danych pociągu
- co najmniej 10 normalnych obrazów i 10 anomalii dla zestawu danych testowych
- dla zestawu danych testowych dozwolonych jest wiele defektów na obraz
- Generuj defekty syntetyczne i przesyłaj je do docelowych lokalizacji S3.
Generujemy jeden defekt na obraz i ponad 20 defektów na klasę dla zestawu danych pociągu, a także 1-3 defekty na obraz i ponad 20 defektów na klasę dla zestawu danych testowych.
Poniżej znajduje się przykład obrazu źródłowego i jego syntetycznych defektów z brakującymi trzema komponentami: IC, rezystorem 1 i rezystorem 2.
oryginalny obraz
40_im_mask_IC_resistor1_resistor2.jpg (nazwa wady wskazuje na brakujące elementy)
- Wygeneruj pliki manifestu dla zbioru danych pociągu/testu, rejestrującego wszystkie powyższe informacje.
Na koniec wygenerujemy manifesty pociągów/testów w celu zapisania informacji, takich jak lokalizacja defektu syntetycznego S3, lokalizacja maski S3, klasa defektu, kolor maski itp.
Poniżej przedstawiono przykładowe wiersze JSON dla anomalii i normalnego obrazu w manifeście.
W przypadku anomalii:
- AI
- ai sztuka
- generator sztuki ai
- masz robota
- Amazon Lookout dla wizji
- Amazon SageMaker Ground Prawda
- sztuczna inteligencja
- certyfikacja sztucznej inteligencji
- sztuczna inteligencja w bankowości
- robot sztucznej inteligencji
- roboty sztucznej inteligencji
- oprogramowanie sztucznej inteligencji
- Uczenie maszynowe AWS
- blockchain
- konferencja blockchain ai
- pomysłowość
- sztuczna inteligencja konwersacyjna
- konferencja kryptograficzna
- Rozwiązania dla klientów
- Dall's
- głęboka nauka
- google to
- uczenie maszynowe
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- składnia
- zefirnet