Rozwijanie mózgu autonomicznego samochodu

Każdy, kto chce zdobyć prawo jazdy w Katarze, musi w pierwszej kolejności przejść badanie wzroku. Dlaczego? Prosty. Ponieważ jeśli nie masz dobrych oczu, nie będziesz widzieć dobrze, a jeśli nie będziesz widzieć dobrze, będziesz miał trudności z prowadzeniem samochodu.

Wzrok jest pierwszym obowiązkowym wymogiem prowadzenia samochodu, dlatego pierwszym „miąższem” programu nanostopni autonomicznej jazdy firmy Udacity jest wizja komputerowa. „Opowiadałem historię” o pracy nad pierwszym projektem związanym z wizją komputerową udostępnionym przez Udacity. Wizja została wykorzystana do znalezienia linii pasa ruchu na drodze.

Komputer widzi świat poprzez kamerę, która generuje zdjęcia. Sekwencja zdjęć tworzy filmy. Pierwszy projekt dowodzi, że komputer może zrozumieć linie pasów ruchu. Linie pasów ruchu zostaną później wykorzystane do utrzymania pojazdów autonomicznych na torze.

Wracając do zdobywania prawa jazdy w Katarze, kolejnym krokiem jest odbycie szkolenia. Jednak przed przystąpieniem do szkolenia drogowego należy zapoznać się ze znakami drogowymi. Znaki drogowe pokazujące zasady, których powinien przestrzegać kierowca na drodze. Może być również używany jako źródło informacji dla kierowcy. Kierowca musi rozumieć znaki drogowe. Przypomniało mi się, że muszę zapamiętać wszystkie znaki drogowe używane w Katarze, bo później będzie to sprawdzane przez policję jako warunek zdobycia prawa jazdy.

Bardzo podobną koncepcję zastosowano w przypadku samochodu autonomicznego. Samochód musi rozumieć znaki drogowe na drodze. Samochód musi się nauczyć, że widząc znak drogowy z napisem „20 km/h” oznacza, że ​​nie może przekraczać prędkości 20 km/h. Kiedy samochód widzi ruch drogowy dotyczący „przechodzenia dzieci”, musi podjąć środki ostrożności, aby nie uderzyć dzieci. Pytanie więc brzmi: jak nauczyć samochód rozpoznawania znaków drogowych?

Nauczanie maszynowe

To już drugie „mięso” materiału udostępnionego przez Udacity. Mając na celu opisany powyżej, uczniowie muszą wykonać projekt polegający na stworzeniu modelu identyfikującego znak drogowy. W tym celu wprowadzono koncepcję głębokiego uczenia się wraz z „tensorflow”.

Ale po co używać uczenia maszynowego? Czy nie moglibyśmy zdefiniować konkretnie każdego obrazu znaku drogowego i przekazać go samochodowi? Poniższy obrazek odpowie na to pytanie.

Jak widać, istnieją 3 różne obrazy „znaku stopu” w 3 różnych stylach. Powiedzmy, że dodamy „kodowanie” w celu zdefiniowania jednego obrazu znaku stopu i przekażemy go komputerowi wewnątrz samochodu, zrozumie on tylko jeden obraz. Kamera w samochodzie rejestruje „znak stopu” na drodze, który można fotografować pod różnymi kątami i oferować tysiące możliwości. W takim przypadku komputer fałszywie zaklasyfikuje predefiniowany obraz, ponieważ predefiniowany obraz został wykonany tylko pod jednym określonym kątem.

Dlatego potrzebne jest uczenie maszynowe, aby stworzyć „model” samochodu, który będzie służył jako „mózg”. Sam model/mózg został sformułowany w procesie szkoleniowym polegającym na wyodrębnianiu cech z wielu przykładowych obrazów „znaku stopu”, tj. 1000 różnych obrazów. Gdy model/mózg opracuje się tak, aby rozumieć obraz „znaku stopu”, samochód będzie w stanie sklasyfikować różne rodzaje „znaku stopu”, a następnie zdecydować, co zrobić, gdy później zobaczy ten znak na drodze.

Głęboka nauka

Można powiedzieć, że głębokie uczenie się to wiedza mieszcząca się w obszarze sztucznej inteligencji.

Głębokie uczenie się nie jest jedyną metodologią rozwiązywania problemów związanych ze sztuczną inteligencją, jednak w tym konkretnym przypadku (rozpoznawanie obrazu) głębokie uczenie się można uznać za metodologię „kuloodporną”. Istnieje mnóstwo zasobów związanych z głębokim uczeniem się, wiele osób omawia tę kwestię od samego początku aż do kwestii technicznych. Można je znaleźć, googlując.

Sposób, w jaki Udacity dostarcza materiały, polega na podziale na kilka części:

  • Wprowadzenie do sieci neuronowych
  • Opracowywanie MiniFlow: małej biblioteki umożliwiającej lepsze zrozumienie działania tensorflow
  • Wprowadzenie do Tensorflow
  • Głębokie sieci neuronowe
  • Konwolucyjne sieci neuronowe

Szczerze mówiąc, na początku miałem trudności z nauczeniem się tej koncepcji. Dogłębne zrozumienie koncepcji umożliwiających dotarcie do splotowych sieci neuronowych zajęło mi około miesiąca (cóż, swój wolny czas wykorzystywałem tylko, głównie w weekendy). Na początku nie było mi łatwo od razu zrozumieć materiały dostarczone przez Udacity, więc z trudem szukałem innego odniesienia. W końcu, kiedy już to zrozumiem, każdy materiał dostarczony przez Udacity stanie się bardziej sensowny. Oto próbka wymienionych materiałów związanych z głębokimi sieciami neuronowymi.

Próbowałem przeczytać kod projektu opracowany przez innych uczniów i zacząłem się zastanawiać, jak oni mogą to zrobić tak dobrze. Większości rzeczy nie rozumiem, np. dlaczego wymagane jest powiększanie danych na obrazie, jak wykonać prawidłowe skalowanie szarości itp. Ale później zdałem sobie sprawę, że koncepcja ta była bardzo powszechna, zwłaszcza wśród studentów, którzy uczyli się głębokiego uczenia się na jakiejś uczelni, lub dla osób, które już zajmują się głębokim uczeniem lub ogólnie sztuczną inteligencją.

Gdyby ktoś mnie dzisiaj zapytał, sugerowałbym skorzystanie z tych przewodników, aby najpierw zrozumieć tę koncepcję: „wykład cs231n zima 2016 wygłoszony przez Standford”, „praktyczny kurs głębokiego uczenia się prowadzony przez Jeremmy’ego” i „Pierwsze kroki z tensorflow”.

CS231n zawiera serię wykładów akademickich mających na celu zdobycie wiedzy na temat uczenia maszynowego, głębokiego uczenia się, a także sieci konwergencji. Opisany materiał jest bardzo szczegółowy i przejrzysty. Po ukończeniu praktycznego kursu głębokiego uczenia się prowadzonego przez Jeremmy’ego pokaże, jak wykorzystać teoretyczną koncepcję w prawdziwym kodowaniu, aby rozwiązać problem. I na koniec, ale uważam, że ważne jest bardziej szczegółowe zrozumienie, jak działa tensorflow. Bazując na moim doświadczeniu, po nauczeniu się z tych 3 źródeł, kiedy wracam do Udacity, wszystko staje się nie tylko łatwiejsze do zrozumienia, ale dostarczony materiał zapewnia lepsze zrozumienie, jak stworzyć dobry model problemu ze znakami drogowymi.

Kontrola projektu

Nie, nie powiedziałbym, że moje zgłoszenie było bardzo satysfakcjonujące. W rzeczywistości, ze względu na ograniczenia czasowe (projekt 2 był przeterminowany już od miesiąca), musiałem złożyć wniosek jak najszybciej. Istnieją inne materiały, które czekają na naukę wraz z kolejnym zaległym zgłoszeniem projektu. Moje zgłoszenie do projektu-2 spełniało jedynie standardowe wymagania podane w rubryce z dokładnością walidacji wynoszącą 93%. Z przykładowych znaków drogowych model potrafi poprawnie sklasyfikować 4 z 5 obrazów, czyli jest to około 80%.

Złożenie projektu i jego recenzja to także świetna podstawa do podjęcia programu nano Degree w Udacity. Bardzo szczegółowo zapoznali się z naszym projektem. W ramach zgłoszenia musimy także dostarczyć opis wyjaśniający, jakie zadania realizuje projekt. Samo przeczytanie recenzji to także kolejne źródło wiedzy, ponieważ recenzent ciągle podsuwa wiele sugestii, jak ulepszyć projekt. Oto przykładowa recenzja wystawiona na temat projektu-2, nad którym pracowałem.

Projekt, nad którym pracowałem, był dostępny na githubie, a dostęp do jego opisu można uzyskać tutaj.

Uczenie maszynowe to fajna zabawa. Teraz rozumiem, dlaczego niektórzy ludzie są tym bardzo entuzjastycznie nastawieni. Sama wiedza jest obecnie jednym z najgorętszych tematów i może być wykorzystana w różnych dziedzinach, np. w opiece zdrowotnej, a nawet w cyberbezpieczeństwie.

Zdecydowanie zagłębiłbym się w ten temat głębiej. Ale na razie pozwólcie mi dokończyć resztę semestru 1 programu dotyczącego samochodów autonomicznych. Więcej historii czeka później ;).