Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Rurociąg powiększania obrazu dla Amazon Lookout for Vision

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:

  1. 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).
  2. 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:

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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.

pip install imgaug

Następnie możemy zainstalować pakiet Pythona o nazwie „IPyPlot”.

pip install ipyplot

Następnie wykonujemy powiększenie obrazu oryginalnego obrazu za pomocą przekształceń obejmujących GammaContrast, SigmoidContrast, LinearContrasti dodanie szumu Gaussa na obrazie.

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)

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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:
Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. 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"}}

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.

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)

Następnie pobieramy maskę z Amazon SageMaker Ground Truth i przesyłamy ją do folderu o nazwie „maska” w tym wiadrze S3.

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

Następnie pobieramy plik manifestu z zadania etykietowania Amazon SageMaker Ground Truth i odczytujemy go jako linie json.

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)

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.

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

Poniżej znajduje się przykładowy plik wejściowy:

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

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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.

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'

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.

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
)

Następnie musimy określić dodatkowe parametry konfiguracyjne specyficzne dla wnioskowania asynchronicznego podczas tworzenia konfiguracji punktu końcowego.

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)

Następnie wdrażamy punkt końcowy w instancji ml.g4dn.xlarge, uruchamiając następujący kod:

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

Po około 6-8 minutach punkt końcowy zostanie pomyślnie utworzony i pojawi się w konsoli SageMaker.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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:

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

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.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

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.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

4.3.6 Generowanie defektów syntetycznych z brakującymi komponentami za pomocą punktu końcowego

W punkcie końcowym wykonamy cztery zadania:

  1. 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.
    Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.
  2. 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
  3. 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

oryginalny obraz

40_im_mask_IC_resistor1_resistor2.jpg (nazwa wady wskazuje na brakujące elementy)

40_im_mask_IC_resistor1_resistor2.jpg (nazwa wady wskazuje na brakujące elementy)

  1.  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:

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

Dla normalnego obrazu:

{"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 Struktura folderów Amazon S3

Dane wejściowe i wyjściowe punktu końcowego są przechowywane w docelowym zasobniku S3 w następującej strukturze:

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

5 Szkolenie modelu Lookout for Vision i wyniki

5.1 Skonfiguruj projekt, prześlij zestaw danych i rozpocznij szkolenie modelu. 

  1. Najpierw możesz przejść do Lookout for Vision z poziomu Konsola AWS i stworzyć projekt.
    Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.
  2. Następnie możesz utworzyć zestaw danych szkoleniowych, wybierając Importuj obrazy oznaczone przez SageMaker Ground Truth i podaj lokalizację Amazon S3 manifestu zestawu danych pociągu wygenerowanego przez punkt końcowy SageMaker.
    Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.
  3. Następnie możesz utworzyć testowy zestaw danych, wybierając Importuj obrazy oznaczone przez SageMaker Ground Truth ponownie i podaj lokalizację Amazon S3 manifestu zestawu danych testowych wygenerowanego przez punkt końcowy SageMaker.
    Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.
    .......Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.
    ....
  4. Po pomyślnym przesłaniu zestawów danych pociągów i testów można wybrać opcję Trenuj model w prawym górnym rogu, aby uruchomić szkolenie modelu lokalizacji anomalii.
    ......
  5. W naszym eksperymencie ukończenie szkolenia zajęło modelowi nieco ponad godzinę. Gdy stan pokazuje, że szkolenie zostało zakończone, możesz wybrać link do modelu, aby sprawdzić wynik.
    ....
    Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

5.2 Modelowy wynik szkolenia

5.2.1 Modelowe metryki wydajności 

Po wybraniu w Model 1 jak pokazano powyżej, na podstawie wyników 100% precyzji, 100% pamięci i 100% F1 widać, że wydajność modelu jest całkiem dobra. Możemy również sprawdzić wydajność poszczególnych etykiet (brakujący element) i z przyjemnością stwierdzimy, że wyniki F1 wszystkich trzech etykiet przekraczają 93%, a średnie IoU przekraczają 85%. Ten wynik jest zadowalający dla tego małego zestawu danych, który pokazaliśmy w poście.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

5.2.2 Wizualizacja wykrywania defektów syntetycznych w zbiorze danych testowych. 

Jak pokazano na poniższym obrazku, każdy obraz zostanie uszkodzony jako normal or anomaly etykieta z wynikiem zaufania. Jeśli jest to nieprawidłowość, na obrazie pojawi się maska ​​w innym kolorze dla każdego typu defektu.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Poniżej znajduje się przykład połączonych brakujących komponentów (w tym przypadku trzech defektów) w testowym zbiorze danych:

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Następnie możesz skompilować i spakować model jako plik Zielona trawa AWS IoT komponent zgodnie z instrukcjami w tym poście, Zidentyfikuj lokalizację anomalii za pomocą Amazon Lookout for Vision na brzegu sieci bez użycia GPUi uruchom wnioskowanie na modelu.

6. Przetestuj model Lookout for Vision wytrenowany na danych syntetycznych pod kątem rzeczywistych defektów

Aby sprawdzić, czy model wytrenowany na defektach syntetycznych może dobrze działać w przypadku rzeczywistych defektów, wybraliśmy zestaw danych (zbiór danych obcych) z tutaj przeprowadzić eksperyment.

Najpierw porównujemy wygenerowany defekt syntetyczny z defektem rzeczywistym. Lewy obraz to rzeczywisty defekt z brakującą głowicą, a prawy obraz to defekt wygenerowany z usuniętą głowicą za pomocą modelu ML.

Prawdziwa wada

Prawdziwa wada

Wada syntetyczna

Wada syntetyczna

Po drugie, wykorzystujemy próbne wykrycia w Lookout for Vision do testowania modelu pod kątem rzeczywistych defektów. Możesz zapisać obrazy testowe w zasobniku S3 i zaimportować je z Amazon S3 lub przesłać obrazy ze swojego komputera. Następnie wybierz Wykryj anomalie aby uruchomić wykrywanie.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Na koniec możesz zobaczyć wynik przewidywania rzeczywistej wady. Model przeszkolony na defektach syntetycznych może w tym eksperymencie dokładnie defektować prawdziwy defekt.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Model przeszkolony na defektach syntetycznych może nie zawsze działać dobrze na rzeczywistych defektach, zwłaszcza na płytkach drukowanych, które są znacznie bardziej skomplikowane niż ten przykładowy zestaw danych. Jeśli chcesz przeszkolić model z prawdziwymi defektami, możesz wybrać pomarańczowy przycisk oznaczony Sprawdź prognozy maszyn w prawym górnym rogu wyniku przewidywania, a następnie zaznacz go jako Poprawny or Błędny.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Następnie możesz dodać zweryfikowany obraz i etykietę do zestawu danych szkoleniowych, wybierając pomarańczowy przycisk w prawym górnym rogu, aby zwiększyć wydajność modelu.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

7. Szacowanie kosztów 

Ten proces ulepszania obrazu dla Lookout for Vision jest bardzo ekonomiczny. W powyższym przykładzie Amazon SageMaker Ground Truth Labeling, Amazon SageMaker notebook i asynchroniczne wdrożenie i wnioskowanie punktów końcowych SageMaker kosztują tylko kilka dolarów. W przypadku usługi Lookout for Vision płacisz tylko za to, z czego korzystasz. Istnieją trzy składniki, które określają rachunek: opłaty za szkolenie modelu (godziny szkolenia), opłaty za wykrywanie anomalii w chmurze (godziny wnioskowania w chmurze) i/lub opłaty za wykrywanie anomalii na krawędzi (jednostki wnioskowania o krawędzi). W naszym eksperymencie ukończenie szkolenia modelu Lookout for Vision trwało nieco ponad godzinę i kosztowało 2.00 USD za godzinę szkolenia. Ponadto możesz użyć przeszkolonego modelu do wnioskowania w chmurze lub na krawędzi z podaną ceną tutaj.

8. Sprzątać

Aby uniknąć ponoszenia zbędnych opłat, użyj Konsoli do usunięcia punktów końcowych i zasobów, które utworzyłeś podczas wykonywania ćwiczeń w poście.

  1. Otwórz konsolę SageMaker i usuń następujące zasoby:
    • Punkt końcowy. Usunięcie punktu końcowego powoduje również usunięcie wystąpienia obliczeniowego ML lub wystąpień, które go obsługują.
      1. Pod Wnioskowaniewybierz Punkty końcowe.
      2. Wybierz punkt końcowy utworzony w przykładzie, wybierz Akcje, a następnie wybierz Usuń.
    • Konfiguracja punktu końcowego.
      1. Pod Wnioskowaniewybierz Konfiguracje punktów końcowych.
      2. Wybierz konfigurację punktu końcowego utworzoną w przykładzie, wybierz Akcje, a następnie wybierz Usuń.
    • Modelka.
      1. Pod Wnioskowaniewybierz modele.
      2. Wybierz model, który utworzyłeś w przykładzie, wybierz Akcje, a następnie wybierz Usuń.
    • Instancja notatnika. Przed usunięciem instancji notatnika zatrzymaj ją.
      1. Pod Notatnikwybierz Instancje notebooków.
      2. Wybierz instancję notesu utworzoną w przykładzie, wybierz Akcje, a następnie wybierz Stop. Zatrzymanie wystąpienia notatnika trwa kilka minut. Kiedy Rynek zmiany w Zatrzymanyprzejdź do następnego kroku.
      3. Dodaj Akcje, a następnie wybierz Usuń.
  2. Otwórz Konsola Amazon S3, a następnie usuń zasobnik utworzony do przechowywania artefaktów modelu i zestawu danych szkoleniowych.
  3. Otwórz Konsola Amazon CloudWatch, a następnie usuń wszystkie grupy dzienników, których nazwy zaczynają się od /aws/sagemaker/.

Możesz także usunąć punkt końcowy z notatnika SageMaker, uruchamiając następujący kod:

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

9. Wniosek

W tym poście pokazaliśmy, jak dodawać adnotacje do syntetycznych masek defektów za pomocą Amazon SageMaker Ground Truth, jak używać różnych technik powiększania obrazu do przekształcania jednego normalnego obrazu w żądaną liczbę normalnych obrazów, tworzyć asynchroniczny punkt końcowy SageMaker i przygotowywać plik wejściowy dla punkt końcowy, a także wywołać punkt końcowy. W końcu pokazaliśmy, jak używać manifestu pociągu/testu do trenowania modelu lokalizacji anomalii Lookout for Vision. Ten proponowany potok można rozszerzyć na inne modele ML w celu generowania defektów syntetycznych, a wszystko, co musisz zrobić, to dostosować model i kod wnioskowania w punkcie końcowym SageMaker.

Zacznij od zapoznania się z Lookout for Vision w celu zautomatyzowanej kontroli jakości tutaj.


O autorach

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Kary Yang jest Data Scientist w AWS Professional Services. Pasjonuje się pomaganiem klientom w osiąganiu ich celów biznesowych za pomocą usług w chmurze AWS i pomagała organizacjom w tworzeniu kompleksowych rozwiązań AI/ML w wielu branżach, takich jak produkcja, motoryzacja, zrównoważony rozwój środowiskowy i lotnictwo.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Octavi Obiols-Sprzedaż jest informatykiem specjalizującym się w uczeniu głębokim (DL) i uczeniu maszynowym, certyfikowanym jako współpracownik architekta rozwiązań. Dzięki rozległej wiedzy zarówno w chmurze, jak i na krawędzi, pomaga przyspieszyć wyniki biznesowe poprzez tworzenie kompleksowych rozwiązań AI. Octavi uzyskał doktorat z nauk obliczeniowych na Uniwersytecie Kalifornijskim w Irvine, gdzie promował najnowocześniejsze algorytmy DL+HPC.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Fabiana Beniteza-Quiroza jest IoT Edge Data Scientist w AWS Professional Services. Posiada doktorat z widzenia komputerowego i rozpoznawania wzorców na Uniwersytecie Stanowym Ohio. Fabian jest zaangażowany w pomaganie klientom w uruchamianiu modeli uczenia maszynowego z niskimi opóźnieniami na urządzeniach IoT iw chmurze.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Manisz Talreja jest głównym menedżerem produktu ds. rozwiązań IoT w AWS. Z pasją pomaga klientom w budowaniu innowacyjnych rozwiązań z wykorzystaniem usług AWS IoT i ML w chmurze i na krawędzi.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Yuxin Yang jest architektem AI/ML w AWS, certyfikowanym w specjalności AWS Machine Learning. Umożliwia klientom przyspieszenie ich wyników poprzez tworzenie kompleksowych rozwiązań AI/ML, w tym konserwacji predykcyjnej, wizji komputerowej i uczenia się przez wzmacnianie. Yuxin zdobyła tytuł magistra na Uniwersytecie Stanforda, gdzie skupiła się na głębokim uczeniu się i analizie dużych zbiorów danych.

Potok powiększania obrazu dla Amazon Lookout dla Vision PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Yingmao Timothy Li jest Data Scientist w AWS. Dołączył do AWS 11 miesięcy temu i pracuje z szeroką gamą usług i technologii uczenia maszynowego, tworząc rozwiązania dla zróżnicowanej grupy klientów. Posiada tytuł doktora elektrotechniki. W wolnym czasie lubi gry na świeżym powietrzu, wyścigi samochodowe, pływanie i latanie młodym dudziarzem w celu przemierzania kraju i odkrywania nieba.

 

Znak czasu:

Więcej z Uczenie maszynowe AWS