Powrót do bloga

Tutorial: Jak wytrenować własny model do rozpoznawania minifigurek Lego w godzinę?

Tomasz Zeglen
22/06/202210 min

Wszyscy wiemy, że sztuczna inteligencja, a w szczególności sieci neuronowe są doskonałym narzędziem do analiz problemów nieliniowych w tym do analizy obrazu i rozpoznawania obiektów na obrazach.

Do niedawna korzystanie z tego typu rozwiązań wymagało ogromnej wiedzy i doświadczenia. Czy nadal potrzebujesz wyspecjalizowanej firmy z obszaru AI albo doktoranta z wiedzą w tym zakresie? Otóż nie, możesz to zrobić sam i w dalszej części pokażę Ci jak. Będę potrzebował około 1-1,5 godziny Twojego czasu.

Zacznijmy od zdefiniowania zadania. Ci co mnie znają wiedzą, że jestem wielkim fanem Lego, więc dlaczego by nie stworzyć model rozpoznawania minifigurek Lego na zdjęciach. Wykorzystamy do tego usługę AI Vision oraz Data Labeling, które są dostępne w chmurze Oracle Cloud Infrastructure (OCI).

Oto czego będziesz potrzebował:

  • Konto w OCI, może to być konto tzw. „trial”, czyli próbne konto ważne przez 30 dni od założenia z dostępną darmową pulą środków które z powodzeniem wystarczą do wytrenowania modelu. Jak takie darmowe konto założyć możesz przeczytać w moim artykule TUTAJ.
  • Zbiór danych (zdjęć) treningowych i testowych. Możesz skorzystać z moich zdjęć, są one dostępne tutaj: https://bit.ly/3PGqkxn

Plan:

  • Utworzymy w OCI nowy tzw. Bucket na ObjectStorage w którym będziemy przechowywać zdjęcia do trenowania modelu
  • Zbudujemy treningowy „data-set” w usłudze Data Labeling i wykonamy tagowanie każdego obrazka z tego zbioru, musimy w końcu pokazać maszynie jak wygląda figurka Lego ;-). Jest to najbardziej pracochłonna część ćwiczenia, gdyż wymaga przejrzenia każdego obrazka i jego otagowania.
  • Zlecimy usłudze OCI Vision, zbudowanie własnego modelu rozpoznawania obrazu na podstawie stworzonego data-set.
  • Potestujemy trochę i przyjrzymy się kosztom jakie ponieśliśmy

Przygotowanie bucket-u na Object Storage

Zaloguj się na swoje konto w OCI i przejdź do usługi Object Storage.

Brak alternatywnego tekstu dla tego zdjęcia

Powinieneś zobaczyć taki ekran:

Brak alternatywnego tekstu dla tego zdjęcia

Wybierz „Create Bucket”, na formularzu podaj nazwę oraz pozostaw standardowe ustawienia.

Brak alternatywnego tekstu dla tego zdjęcia

Właśnie utworzyłeś nową przestrzeń (kubeł 🙂 na Object Storage, będziemy z niej korzystać w następnym kroku.

Zbiór treningowy i tagowanie danych

Najbardziej pracochłonnym zadaniem jest opisanie zbioru treningowego. Dla każdego zdjęcia ze zbioru wskazujemy obszar, w którym się znajduje interesujący nas obiekt lub obiekty. Pomoże nam w tym usługa OCI Data Labeling.

Brak alternatywnego tekstu dla tego zdjęcia

Przejdź do sekcji „Datasets” i utwórz nowy zbiór treningowy – „Create dataset”, otworzy się formularz, na którym podasz podstawowe parametry zbioru i zdecydujesz czy będziesz realizował kategoryzację obrazów czy wykrywanie obiektów. My skorzystamy z opcji wykrywania obiektów.

Brak alternatywnego tekstu dla tego zdjęcia

W części „Add dataset details” ustaw:

Nazwę twojego modelu

Brak alternatywnego tekstu dla tego zdjęcia

Typ danych na jakich będziesz pracował, my pracujemy ze zdjęciami

Brak alternatywnego tekstu dla tego zdjęcia

Jaki algorytm będziesz trenował

Brak alternatywnego tekstu dla tego zdjęcia

W części „Add files and lables”

Zamierzamy załadować pliki znajdujące się na naszym komputerze, dlatego wybieramy “Upload local files”, jeśli masz istniejący zbiór danych treningowych na Object Storage możesz skorzystać z drugiej opcji.

Brak alternatywnego tekstu dla tego zdjęcia

Usługa działa tak, że pliki lokalne umieszcza we wskazanym i wcześniej przez nasz utworzonym „bucket-cie” na Object Storage. Musisz go wskazać wybierając wcześniej Compartment w którym utworzono ten Bucket. Dobrą praktyką jest podanie prefixu, wtedy wszystkie załadowane pliki będą w nazwie prefiksowane tym co podałeś np. „TRAIN_01_”.

Brak alternatywnego tekstu dla tego zdjęcia

Nadszedł czas na załadowanie plików do trenowania modelu. Możesz skorzystać z mojego zestawu treningowego który jest dostępny tutaj: [LINK]

Zaczynamy!

Przeciągnij lub wybierz z lokalnego dysku obrazy do załadowania.

Brak alternatywnego tekstu dla tego zdjęcia

Następnie zdefiniuj etykiety, czyli nazwy obiektów które będziesz chciał rozpoznawać. Dodaj przynajmniej jedną, np. LEGO-MINIFIGURE.

Brak alternatywnego tekstu dla tego zdjęcia

Przejdź do kolejnej zakładki kreatora i wybierz “Create”. Zostaniemy przeniesieni do ekranu z naszym Dataset, musimy chwilę poczekać aż status zmieni się na Active. Możemy zajrzeć w międzyczasie do naszego Bucket na ObjectStorage i sprawdzić, że nasze pliki się tam pojawiły.

Brak alternatywnego tekstu dla tego zdjęcia

Czas na najbardziej pracochłonną część naszego zadania. Musimy „otagować” każdy obraz i wskazać, gdzie na obrazie znajduje się obiekt dla zdefiniowanej etykiety. Na liście oznaczonej jako Data Records powinniśmy zobaczyć listę załadowanych plików. Dla pierwszej pozycji wybierz trzy pionowe kropki, a potem opcję Label.

Brak alternatywnego tekstu dla tego zdjęcia

Czas na rysowanie prostokątów i wskazanie, gdzie znajdują się minifigurki. Korzystając z narzędzia Bounding Box rysujemy prostokąty i zaznaczymy odpowiednie etykiety (Labels) dla obiektu znajdującego się w prostokącie. Jak już wszystko zaznaczymy, klikamy “Save & next” i przechodzimy do kolejnego obrazka z zestawu. Musimy ten proces powtórzyć dla każdego obrazu ze zbioru treningowego.

Brak alternatywnego tekstu dla tego zdjęcia

Zbiór danych treningowych w usłudze Data Labeling gotowy, nadszedł czas na trenowanie modelu w usłudze Vision.

Trenowanie modelu

Przechodzimy do Vision, menu główne konsoli OCI, sekcja Analytics&AI, AI Services i Vision. Usługa ta posiada gotowe i wytrenowane modele do rozpoznawania obiektów, natomiast w naszym przypadku utworzymy własny model. Przechodzimy do sekcji Projects(menu po lewej stronie) i wybieramy Create Project.

Brak alternatywnego tekstu dla tego zdjęcia

Podajemy nazwę naszego projektu i zatwierdzamy. Po chwili status projektu powinien się zmienić na ACTIVE. Na stronie projektu tworzymy nowy model (przycisk Create Model). Naszym zadaniem jest wykrywanie obiektów, więc wybieramy Object detection.

Brak alternatywnego tekstu dla tego zdjęcia

Zostawiamy domyślną opcję „Choose existing dataset” gdyż nasz zbiór treningowy jest już załadowany na Object Storage i przygotowany w usłudze Data Labeling. W polu Choose dataset wybieramy zestaw danych utworzony wcześniej w Data Labeling.

Brak alternatywnego tekstu dla tego zdjęcia

W następnym kroku podajemy nazwę modelu oraz musimy zdecydować jak długo chcemy trenować model. Dla celów testowych możemy wybrać Quick Training który nie będzie trwał dłużej niż 1 godzinę, jednak dla mojego niewielkiego zbioru mogę spokojnie wybrać dokładniejsze trenowanie i pozostać przy opcji Recommended training.

Brak alternatywnego tekstu dla tego zdjęcia

Przechodzimy do trzeciego ekranu kreatora, który jest podsumowaniem. Uruchamiamy trenowanie poprzez Create and train.

Brak alternatywnego tekstu dla tego zdjęcia

Teraz pozostaje nam czekać, resztę robi usługa OCI Vision za nas. Nie musimy się martwić o odpowiednią infrastrukturę, instalacje oprogramowania modelu, jego parametryzację oraz udostępnienie modelu dla aplikacji. Możemy kontrolować postępy trenowania przechodząc do ekranu Work request logs (menu po lewej stronie) i wybierając operację CREATE MODEL.

Brak alternatywnego tekstu dla tego zdjęcia

Po około godzinie status zmieni się z IN PROGRESS na SUCCEEDED. W tym momencie możemy zacząć testować rozpoznawanie minifigurek Lego na zdjęciach.

Testy modelu

Wracamy do naszego projektu wybieramy model, jego status w tym momencie powinien się zmienić na ACTIVE. Przechodzimy na ekran Analyze (menu po lewej) i przeciągamy lub wskazujemy plik na dysku który chcemy przetestować.

Brak alternatywnego tekstu dla tego zdjęcia

Jest, działa. Trenowanie zakończone sukcesem. Teraz należałoby ocenić dokładność modelu i przetestować go na większej liczbie zdjęć. Używanie AI Vision do odpytywania modelu z poziomu konsoli OCI jest tylko do celów testowych. Aby zintegrować nasz model z własnymi aplikacjami lub innymi usługami OCI należy skorzystać z REST API usługi (https://docs.oracle.com/en-us/iaas/api/#/en/vision/20220125/). O tym jak korzystać z OCI API napiszę już wkrótce.

Koszty

Na koszt naszego projektu składać się będzie:

  • Koszt storage do przechowywania zbioru treningowego na Object Storage
  • Koszt związany z usługą Data Labeling – opłata za pojedynczy rekord (zdjęcie w naszym przypadku)
  • Opłata za trenowanie modelu w usłudze Vision
  • Odpytywane modelu w Vision (np. testy lub żądanie analizy przez wywołanie API)

Poniżej znajdziesz wyliczenie tych kosztów zakładając że nie korzystamy z usług tzw. Free Tier w OCI, czyli że płacimy za wszystko bo np. już używamy Free Tier w innych miejscach. Koszt miesięczny wyniesie wtedy 1,79 USD.

Brak alternatywnego tekstu dla tego zdjęcia

Jednak jeśli mieścisz się w limitach Free Tier oraz w darmowych limitach usług, czyli:

  • Free Tier: 10 GB pamięci obiektowej (Object Storage) jest darmowe
  • OCI Data Labeling: pierwsze 1000 rekordów jest darmowe
  • OCI Vision: pierwsze 15h trenowania modelu jest darmowe
  • OCI Vision: pierwsze 5000 wywołań modelu jest darmowe

Wtedy koszt twojego projektu wyniesie 0 USD 🙂

Miłej zabawy i zapraszam do kontaktu: [email protected]

_____________________________

*Materiał od Partnera Oracle*

AKTUALNOŚCI
19/09/20222 min
Cloud Value Professional Program – już wkrótce!

Chcesz zbudować wiedzę chmurową w swojej organizacji? A może szukasz sposobu jak rozwinąć swoje umiejętności chmurowe?
Przygotowujemy dla Was coś specjalnego…

Zobacz wpis
AKTUALNOŚCI
04/06/20221 min
Poznaj ChmuroTeam!

Przed Wami efekty sesji ChmuroTeam w wykonaniu By People Films . Podczas ostatniego spotkania All Hands połączonego z warsztatami i integracją nasz Zespół wziął udział w profesjonalnej sesji zdjęciowej. Sesję zdjęciową wraz z przygotowaniem zdjęć zapewniła agencja ByPeople Films. Efekt naszej wspólnej pracy możecie zobaczyć w zakładce 👉 O nas. Dziękujemy za wspaniałą współpracę BPF!

Zobacz wpis
AKTUALNOŚCI
27/04/20222 min
Interesujesz się tematem VMware w OCI?

Ten webinar jest dla Ciebie. Już w najbliższy czwartek 28 kwietnia Zespół Oracle przygotował specjalne spotkanie…

Zobacz wpis
AKTUALNOŚCI
Cloud Value Professional Program – już wkrótce!

Chcesz zbudować wiedzę chmurową w swojej organizacji? A może szukasz sposobu jak rozwinąć swoje umiejętności chmurowe?
Przygotowujemy dla Was coś specjalnego…

Zobacz wpis

Zapisz się do naszego newslettera i
bądź z chmurami na bieżąco!

Zostaw nam swój e–mail a co miesiąc dostaniesz spis najważniejszych nowości
z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.