From 29eefafba31abcef3af2f09d82f5cbf3519dcd5d Mon Sep 17 00:00:00 2001 From: Paweł Dybiec Date: Mon, 12 Feb 2018 09:00:38 +0100 Subject: wiecej tekstu, blisko final --- Chapters/chapter1.tex | 128 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 106 insertions(+), 22 deletions(-) (limited to 'Chapters/chapter1.tex') diff --git a/Chapters/chapter1.tex b/Chapters/chapter1.tex index cad65a3..d6d302d 100644 --- a/Chapters/chapter1.tex +++ b/Chapters/chapter1.tex @@ -5,24 +5,102 @@ Z jego powodu(trzeba zmienic to wyrazenie), powstało wiele rozwiązań dla zada Żaden spośród łazików biorących udział w University Rover Challenge nie używa sieci neuronowych bezpośrednio do nawigacji , ale prawie wszystkie używają -ROS ( Robot Operating System ) jako podstawy całego oprogramowania. Z tego powodu +ROS (Robot Operating System) jako podstawy całego oprogramowania. Z tego powodu w tym rozdziale poruszone będą: \begin{itemize} + \item Łazik Aleph 1 \item Podstawy sieci neuronowych. \item Architektura ROS - \item Autonomia Aleph 1 \end{itemize} +\section {Łazik} +Łazik Aleph 1 powstał z inicjatywy koła naukowego Continuum\footnote{ Strona koła naukowego Continuum: +\href{http://continuum.uni.wroc.pl/}{http://continuum.uni.wroc.pl/}} +w roku 2014. Od tego czasu został zaprezentowany na konkursach takich jak +European Rover Challenge (ERC) oraz University Rover Challenge (URC). Przez ostatnie +dwa lata łazik był doceniany na konkursie URC (w roku 2016 zajął 3 miejsce, a w roku +2017 -- 2 miejsce). + +Podczas konkursu URC pojazdy były ocenianie w czterech kategoriach\footnote{ +Regulamin konkursu URC: \href{http://urc.marssociety.org/home/requirements-guidelines} +{http://urc.marssociety.org/home/requirements-guidelines}}: +\begin{itemize} + \item Science Cache Task -- pobieranie i badanie próbek w terenie + \item Extreme Retrieval and Delivery Task -- transport pakunku w różnych warunkach + terenowych + \item Equipment Servicing Task -- zdolności manualne (umiejętność podnoszenia, + przenoszenia obiektów, obsługa przycisków, przełączników i innych narzędzi) + \item Autonomous Traversal Task -- umiejętność poruszania się pomiędzy wyznaczonymi + punktami +\end{itemize} + \section{Podstawy sieci neuronowych} +Głebokie sieci neuronowe (deep neural networks) to popularny model w uczeniu maszynowym. +Celem sieci jest przybliżenie funkcji $f^*$, przyporządkowującej argumentom $x$ wartości +$y$, funkcją $f(x,\theta)=y$ oraz znalezienie parametru $\theta$, który da najlepsze +przybliżenie. \subsection{Jak działają} +Sieci neuronowe są zazwyczaj złożone z wielu różnych funkcji, nazywanych warstwami. Przykładowo +$f(x)=f^{(3)}(f^{(2)}(f^{(1)}(x)))$, wtedy $f^{(3)}$ jest wartwą wyjściową, której wyniki +powinny odpowiadać funkcji $f^*$. Wyniki dla pozostałych warstw nie są znane, z tego +powodu nazywa się je ukrytymi warstwami. \subsection{Jak trenować} -\subsection{Warstwy typowe dla CNN} -\subsection{Dlaczego działają} +W wyniku trenowania chcemy znaleźć takie $\theta$, żeby $f^*(x)\approx f(x,\theta)$. +W tym celu należy zdefiniować funkcję kosztu $L(\theta)$ tzn. odległości modelu +od celu, zależną od $\theta $, +przykładowo dla regresji średni błąd kwadratowy dla danych uczących. Dla takiej +funkcji chcielibyśmy teraz znaleźć minimum. Minimum globalne może być trudne +do znalezienia, ale minima lokalne zazwyczaj są wystarczająco dobre. + +Gdyby $L$ byłoby funkcją jednej zmiennej, wystarczyłoby zacząć w losowym miejscu i +wielokrotnie wykonać następujący +krok $x=x-\epsilon L'(x)$, aby dotrzeć do minimum lokalnego. Dla funkcji +wielu zmiennych podobny algorytm działa, ale pochodną należy zastąpić gradientem +$x=x-\epsilon \nabla _x L(x)$. +\subsection{Popularne warstwy} +Warstwa liniowa (linear lub dense) jest najbardziej podstawową warstwą. Każdy +element wyjściowy ($m$ wartości) jest kombinacją wszystkich wejść ($n$ wartości) +danej warstwy (powiększoną o stałą). Zatem taka warstwa jest parametryzowana +macierzą rozmiaru $n \cdot m$ oraz wektorem rozmiaru $m$. + +Dwie takie sąsiednie warstwy liniowe można by zredukować do jednej, ponieważ +$W_2 \cdot (W_1 \cdot x + b_1) +b_2 = W \cdot x + b$, gdy $W=W_2 \cdot W_1$ oraz +$b = W_2 \cdot b_1 +b_2$. Zatem dowolnie głęboką sieć złożoną z takich warstw +możnaby zredukować do 1 takiej warstwy, ale po każdej funkcji liniowej aplikuje +się funkcję nieliniową np. tanh lub relu ($\max(0,x)$). Dzięki temu sieci neuronowe +są w stanie pokryć znacznie większą przestrzeń funkcji niż tylko liniowe. + +Inną warstwą, już specjalizowaną w przetwarzaniu danych położonych na pewnej kracie, +jest warstwa konwolucyjna. Przykładowym wejściem dla takiej warstwy może być +dwuwymiarowa siatka pikseli. Natomiast wyjściem jest obraz o zbliżonej (lub tej samej) +rozdzielczości, którego wartość jest kombinancją liniową spójnego bloku piksli z +wejścia. Ważną cechą takiej warstwy jest fakt, że wszystkie wyjścia korzystają +z tych samych parametrów, co powoduje że znajdują te same wzorce położone w +innych miejscach. + +Kolejnym typem warstw specjalizowanym w przetwarzaniu obrazów jest pooling. +Dzieli ona wejście na spójne rozłączne bloki, na każdym z nich osobno aplikuje +funkcję np. $max$ lub $avg$. Taka operacja powoduje niewrażliwość na małe +przemieszczenia wejść. Dodatkowo zmniejsza to rozmiar wejścia w kolejnych warstwach +co zmniejsza liczbę parametrów. +\subsection{Uwagi} +Konwolucyjne sieci neuronowe bardzo dobrze radzą soie z widzeniem maszynowym, są w stanie +klasyfikować bezproblemowo obrazki\footnote{\href +{https://www.cs.toronto.edu/\~kriz/imagenet\_classification\_with\_deep\_convolutional.pdf} +{https://www.cs.toronto.edu/\~kriz/imagenet\_classification\_with\_deep\_convolutional.pdf}}. +Ale w przypadku patrzenia na tylko jedną kratkę nie są wstanie wyciągnąć wniosków. +Co w przypadku nawigacji oznacza, że proces sterowania jest tylko ciągiem +spontanicznych decyzji bez planowania trasy. Dodatkową konsekwencją takiej architektury +jest ukryte założenie, że dla każdego obrazu z kamery jest tylko jedna poprawna +odpowiedź. \section{ROS} -Ros to otwarty system operacyjny przeznaczony dla robotów. -Dostarcza abstrakcję nad sprzętem oraz środki komunikacji między procesami. +ROS to rozbudowany framework przeznaczony do programowania robotów. +Składa się na niego wiele bibliotek oraz narzędzi mających na celu zbudowanie +klastra komputerów tworzących spójny system. +Dostarcza on abstrakcję nad sprzętem, środki komunikacji między procesami oraz +oraz inne funkcjonalności dostarczane przez typowy system operacyjny. Ze względu na modułową budowę oraz architekturę peer-to-peer procesy mogą bezproblemowo działać na różnych komputerach. \subsection{Node} @@ -38,22 +116,28 @@ Tematy(topic) pozwalają bezproblemowo zapewnić komunikację międzyprocesową w ROSie. Każdy node może zadelkarować chęć nadawania bądź nasłuchiwania na danym temacie. Przykładowo moduł jazdy autonomicznej może zasubskrybować obraz z kamery Kinect, a publikować na temacie reprezentującym kierunek ruchu. -\subsection{Rosbag} -Rosbagi służą do zapisywania wybranych topiców wraz ze znacznikami czasu. -Niestety ten format wspiera tylko dostęp sekwencyjny przy odtwarzaniu, co wystarczy -do symulowania łazika, ale nie zawsze to wystarczyło. Aby temu zaradzić dane były -konwertowane do prostszego formatu. -%\subsection{Gotowe moduły} +Tematy są otypowane, co gwarantuje że wszystkie wiadomości wysłane na tym +samym temacie mają taką samą strukturę. +\subsection{Gotowe moduły} +ROS dostarcza wiele gotowych modułów pozwalających szybko rozpocząć projekt. +Jednym z nich jest Odom, który zbiera informacje o położeniu i prędkości +z wielu źródeł danych i łączy je w jedno (o większej pewności). Przykładowo +dane może zbierać z czujnika gps, prędkości obrotowej kół oraz akcelerometru. + +Inny moduł potrafi tworzyć mapy na podstawie obrazu z kamery oraz mapy głębokości. +Wynik tej rekonstrukcji można obejrzeć z pomocą innych usług służących do +wizualizacji różnych typów danych takich jak obraz, wartości zmieniające się +w czasie, chmury punktów lub mapa terenu. %chyba nie aż tak ważne %tf,kamery,konwersje obrazków/strumieni -\section{Autonomia Aleph 1} -Co zostało zrobione na przedmiocie: -\begin{itemize} - \item Sprzęt (mnóstwo) - \item Mapa 3d (RTAB\_MAP) - \item Rozpoznawanie klawiatur/piłek tenisowych - \item Symulator - \item kilka sieci obraz->kierownica - \item wrappery/konwertery różnych protokołów/formatów -\end{itemize} +% \section{Autonomia Aleph 1} +%Co zostało zrobione na przedmiocie: +%\begin{itemize} +% \item Sprzęt (mnóstwo) +% \item Mapa 3d (RTAB\_MAP) +% \item Rozpoznawanie klawiatur/piłek tenisowych +% \item Symulator +% \item kilka sieci obraz->kierownica +% \item wrappery/konwertery różnych protokołów/formatów +%\end{itemize} -- cgit 1.4.1