5 kroków tworzenia i wdrażania sieci neuronowych z głębokim uczeniem (Deep Learning)

818

Skorzystaj z systemów uczenia głębokiego, aby uprościć i przyspieszyć wdrażanie widzenia maszynowego (Machine Vision). Powiedzenie „obraz jest wart tysiąca słów” nigdy nie brzmiało tak dobrze w świecie widzenia maszynowego, jak ma to miejsce obecnie. Dzięki głębokiemu uczeniu się tysiące, a nawet miliony linii kodu można zastąpić prostą siecią neuronową wyszkoloną za pomocą obrazów i bardzo niewielkiej ilości kodu.

Wspaniałą wiadomością jest to, że głębokie uczenie się nie jest już metodą dostępną tylko dla naukowców lub osób o wysoce wyspecjalizowanych umiejętnościach i/lub dużych budżetach. Obecnie wiele narzędzi jest bezpłatnych, samouczki są łatwe do znalezienia, koszt sprzętu jest niski, a nawet dane szkoleniowe są dostępne bezpłatnie. Stwarza to zarówno szanse, jak i zagrożenia – pojawiają się nowi gracze, którzy mają na celu zmianę uznanych nazw i pobudzają innowacje. Daje również możliwość wykonywania przez maszynowe systemy wizyjne rzeczy wcześniej niewyobrażalnych – na przykład głębokie uczenie może służyć do rozpoznawania nieoczekiwanych anomalii, zazwyczaj bardzo trudnych lub prawie niemożliwych do osiągnięcia przy tradycyjnym kodowaniu.

Godną odnotowania korzyścią z wdrażania sieci neuronowych uczenia głębokiego jest to, że umożliwia to podejmowanie złożonych decyzji na brzegu sieci przy minimalnym sprzęcie i bardzo małej mocy obliczeniowej – umożliwiają to tanie systemy oparte na ARM lub FPGA oraz nowe kamery inferencyjne, takie jak FLIR Firefly DL.

W artykule poruszymy takie tematy, jak:

  • Podstawowy słownik używany w głębokim uczeniu się
  • Typy zadań widzenia maszynowego są najbardziej odpowiednie dla głębokiego uczenia
  • 5 kroków tworzenia i wdrażania sieci neuronowej do wnioskowania na krawędzi
  • Dostępne narzędzia i frameworki na początek
  • Wskazówki dotyczące ułatwienia procesu
  • Potencjalne wady uczenia głębokiego jakie należy rozważyć

Co to jest uczenie głębokie: podstawy

Głębokie uczenie to podzbiór uczenia maszynowego inspirowany sposobem działania ludzkiego mózgu. To, co sprawia, że ​​uczenie głębokie jest „głębokie”, to fakt, że istnieje wiele „warstw” neuronów o różnej wadze, które pomagają sieci neuronowej w podjęciu decyzji. Uczenie głębokie można podzielić na dwa etapy: szkolenie i wnioskowanie.

Podczas fazy treningowej definiujesz liczbę neuronów i warstw, z których będzie się składać twoja sieć neuronowa i wystawiasz ją na działanie oznaczonych danych treningowych. Dzięki tym danym sieć neuronowa sama uczy się, co jest „dobre”, a co „złe”. Na przykład, jeśli oceniasz owoce, możesz wyświetlić obrazy sieci neuronowej owoców oznaczonych jako „Klasa A”, „Klasa B”, „Klasa C” i tak dalej. Następnie sieć neuronowa oblicza właściwości każdej klasy; takie jak rozmiar, kształt, kolor, konsystencja koloru i tak dalej. Nie musisz ręcznie definiować tych cech, a nawet programować, co jest za duże lub za małe, sieć neuronowa uczy się sama. Po zakończeniu etapu szkolenia wynikiem jest wytrenowana sieć neuronowa.

Proces oceny nowych obrazów za pomocą sieci neuronowej do podejmowania decyzji nazywa się wnioskami. Kiedy przedstawisz wytrenowanej sieci neuronowej nowy obraz, dostarczy on wnioskowania (tj. Odpowiedzi): na przykład „Klasa A z 95% pewnością”.

5 kroków tworzenia aplikacji do głębokiego uczenia

Rozwój aplikacji do głębokiego uczenia się obejmuje 5 kroków. Poniżej przedstawiono ogólny opis każdego kroku:

Krok 1] Zidentyfikuj odpowiednią funkcję głębokiego uczenia

W świecie głębokiego uczenia się zadania są podzielone na kilka funkcji. Te, które uważamy za najbardziej popularne w widzeniu maszynowym, to:

Klasyfikacja

Pierwszym i najbardziej podstawowym zastosowaniem głębokiego uczenia się jest klasyfikacja. Proces obejmuje sortowanie obrazów na różne klasy i grupowanie obrazów na podstawie wspólnych właściwości. Jako przykład można użyć klasyfikacji, aby oddzielić wadliwą część od dobrej na linii produkcyjnej w celu kontroli jakości lub podczas przeprowadzania inspekcji lutowania PCB – jak pokazano na rysunku 1 poniżej (przy użyciu kamery inferencyjnej FLIR Firefly DL).
Klasyfikacja używana do identyfikacji wadliwych lutów przy użyciu FLIR Firefly DL.

Wykrywanie i lokalizacja

Inne zadanie głębokiego uczenia, idealne dla widzenia maszynowego, to wykrywanie i lokalizacja. Korzystając z tych funkcji, można zidentyfikować cechy na obrazie i podać współrzędne obwiedni w celu określenia jego położenia i rozmiaru. Na przykład można to wykorzystać do wykrywania osoby naruszającej parametr bezpieczeństwa wokół robotów na linii produkcyjnej lub identyfikowania pojedynczej złej części w systemie przenośników linii produkcyjnej / montażowej.

Segmentacja

Trzecim rodzajem uczenia głębokiego jest segmentacja; zwykle używana do określenia, które piksele obrazu należą do odpowiednich obiektów. Segmentacja jest idealna do zastosowań, w których wymagane jest określenie kontekstu obiektu i jego relacji między sobą (np. Pojazd autonomiczny / Zaawansowane systemy wspomagania kierowcy, popularnie zwane ADAS).

Wykrywanie, lokalizacja i segmentacja wykorzystywane do identyfikacji obiektów i ich lokalizacji.

Wykrywanie anomalii

Tego typu zadania uczenia głębokiego można wykorzystać do zidentyfikowania regionów, które nie pasują do wzorca. Typowym przykładem aplikacji, w której wykrywanie anomalii może zwiększyć wartość, byłaby kontrola zapasów i zarządzanie zapasami w sklepach spożywczych, jak pokazano na rys. 4. Ta aplikacja polega na użyciu kamery inferencyjnej do wykrywania i podświetlania półek, które są puste lub mogą wymagać uzupełnienia, dostarczania powiadomień w czasie rzeczywistym i zwiększania wydajności.

Krok 2] Wybierz narzędzia

Po określeniu funkcji uczenia głębokiego, której zamierzasz użyć, będziesz potrzebować zestawu narzędzi (programiści nazywają to „frameworkiem”) najlepiej dostosowanego do Twoich potrzeb. Struktury te zapewnią wybór początkowych sieci neuronowych oraz narzędzi do szkolenia i testowania sieci.

Niektóre z największych na świecie firm technologicznych walczą o dominację na rynku uczenia głębokiego, platformy takie jak TensorFlow firmy Google, Caffe2 firmy Facebook i OpenVino firmy Intel (wszystkie bezpłatne) pokazują ilość inwestycji i zasobów wpływających na rynek uczenia głębokiego. Na drugim końcu tego spektrum masz również Pytorch, rozwiązanie typu open source, które jest teraz częścią Facebooka. Narzędzia te są łatwe w użyciu i dostarczają doskonałą dokumentację (w tym przykłady), dzięki czemu nawet początkujący użytkownik może wytrenować i wdrożyć sieć neuronową przy minimalnym wysiłku.

Omówienie wszystkich dostępnych frameworków wymagałoby osobnego artykułu, ale poniższe wskazówki wymieniają kluczowe zalety i wady trzech najpopularniejszych frameworków:

Pytorch

  • Prosty i łatwy w użyciu.
  • Używany w wielu projektach badawczych.
  • Nie jest powszechnie używany do dużych wdrożeń.
  • W pełni obsługiwane tylko w Pythonie.

TensorFlow

  • Duża baza użytkowników z dobrą dokumentacją.
  • Wyższa krzywa uczenia się w porównaniu do Pytorcha.
  • Oferuje skalowalne wdrożenie produkcyjne i obsługuje wdrażanie mobilne.

Caffe 2

  • Lekki, co przekłada się na wydajne wdrożenie.
  • Jeden z najstarszych frameworków (szeroko obsługiwane biblioteki dla CNN i wizji komputerowej).
  • Najlepiej nadaje się do urządzeń mobilnych korzystających z OpenCV.

Wybór sieci neuronowej będzie ostatecznie zależał od złożoności wykonywanego zadania i szybkości, z jaką musi przebiegać wnioskowanie. Na przykład. można wybrać sieć neuronową z większą liczbą warstw i większą liczbą neuronów, ale wnioskowanie przebiegałoby wolniej. Zazwyczaj wyszkolona sieć neuronowa wymaga bardzo małej mocy obliczeniowej i może dostarczyć wyniki w ciągu milisekund. Pozwala to na przeprowadzanie złożonych wnioskowań głębokiego uczenia na krawędzi z płytami ARM małej mocy lub wnioskowanie na krawędziach – za pomocą specjalnie wyprodukowanych kamer inferencyjnych, takich jak FLIR Firefly DL.

Ponadto nawet firmy, którym brakuje zasobów i pracowników, aby uczyć się i wdrażać rozwiązania do głębokiego uczenia się, mogą liczyć na konsultantów zewnętrznych; co może pomóc różnym interesariuszom w całym cyklu rozwoju – od konceptualizacji do wdrożenia. Jednym z takich przykładów jest Enigma Pattern (https://www.enigmapattern.com).

Krok 3] Przygotowanie danych treningowych dla sieci neuronowej

W zależności od typu danych, które chcesz ocenić, będziesz potrzebować repozytorium obrazów o tylu cechach, które masz nadzieję wykorzystać w swojej ocenie, i muszą one być odpowiednio oznaczone. Na przykład, jeśli twoja sieć neuronowa musi odróżnić dobry ze złego lutu, wymagałoby setek odmian wyglądu dobrego lutu i podobnego zestawu złych lutów z etykietami, które identyfikują je jako takie.

Istnieje kilka sposobów uzyskania zbioru danych obrazów:

  • W przypadku typowych przypadków użycia możesz znaleźć wstępnie oznaczony zestaw danych, który spełnia Twoje określone wymagania, i można go kupić online (w wielu przypadkach jest nawet bezpłatnie).
  •  Generowanie danych syntetycznych może być wydajną opcją dla kilku aplikacji; zwłaszcza, że ​​etykietowanie nie jest wymagane. Firmy takie jak Cvedia; wspierane przez firmę FLIR (https://www.cvedia.com) wykorzystują technologię symulacji i zaawansowaną teorię widzenia komputerowego, aby tworzyć wysokiej jakości pakiety syntetycznych zestawów treningowych. Te zestawy danych są opatrzone adnotacjami i zoptymalizowane pod kątem uczenia algorytmów.
  • Jeśli dwie pierwsze opcje nie są dostępne, musisz zrobić własne obrazy i indywidualnie je oznaczyć. Proces ten jest ułatwiony dzięki kilku narzędziom dostępnym na rynku (kilka narzędzi i technik skracających czas rozwoju zostało pokrótce omówionych poniżej).

Pomocne wskazówki:

W procesie tworzenia własnego kodu do głębokiego uczenia się kilku programistów otwiera swoje rozwiązanie i chętnie udostępnia je bezpłatnie. Jednym z takich narzędzi, które jest szczególnie przydatne, jeśli Twój zbiór danych nie jest wstępnie oznaczony, jest LabelImg; graficzne narzędzie do adnotacji obrazu, które pomaga oznaczać obiekty w obwiedniach na obrazach (https://github.com/tzutalin/labelImg). Alternatywnie cały proces można zlecić osobie trzeciej.

ZOSTAW ODPOWIEDŹ

Wprowadź swój komentarz!
Wprowadź swoje imię