1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
\chapter{Wyniki sieci}
Wytrenowana sieć potrafi przejechać zarówno cały tor na symulatorze, jak i
podziemny garaż instytutu. Na dodatek sieć trenowana pod symulator uczyła się
jeździć tylko przeciwnie do ruchu wskazówek zegara. Po ustawieniu modelu w przeciwnym
kierunku, sieć potrafi bezproblemowo przejechać cały tor.
\section{Na co zwraca uwagę}
Aktywność sieci dla obrazków została wygenerowana za pomocą metody
Integrated Gradients\cite{ig}.
Co było oczywiste w przypadku symulatora, sieć zwraca głównie uwagę na miejsca,
gdzie pojawiają się granice drogi \ref{sim_act}. Co ciekawe, reaguje też na ścianę
tworzącą horyzont, ponieważ zmienia wygląd w zależności od odległości i może
pomóc w orientacji (na trasie treningowej).
\begin{figure}
\centering
\fbox{
\scalebox{0.5}{\includegraphics{img/sim_img.png}}
}
\caption{Obraz z symulatora}
\label{sim_img}
\end{figure}
\begin{figure}
\centering
\fbox{
\scalebox{0.5}{\includegraphics{img/sim_img_act.png}}
}
\caption{Na co sieć patrzy, symulator}
\label{sim_act}
\end{figure}
\begin{figure}
\centering
\fbox{
\scalebox{0.5}{\includegraphics{img/real_img.png}}
}
\caption{Obraz z nagrania}
\label{real_img}
\end{figure}
\begin{figure}
\centering
\fbox{
\scalebox{0.5}{\includegraphics{img/real_img_act.png}}
}
\caption{Na co sieć patrzy, nagranie}
\label{real_act}
\end{figure}
Z kolei dla łazika intensywność w najbardziej aktywnym miejscu jest dużo mniejsza \ref{real_act}.
Oznacza to, że nie sugeruje się tylko jednym obszarem z kamery. Najbardziej jednak
zwraca uwagę na kratkę na podłodze, która mogłaby wystarczyć do nawigacji.
\section{W porównaniu do nagrania}
Na wykresie \ref{plot_ang} widać, że sieć (pomarańczowy kolor) mniej gwałtownie
zmienia szybkość obrotu niż kierowca (kolor niebieski). Jednak sieć reaguje w podobnych momentach co kierowca na konieczność wykonania skrętu.
\begin{figure}
\centering
\fbox{
\scalebox{0.5}{\includegraphics{img/real_data_ang.png}}
}
\caption{Prędkość obrotowa: sieć vs kierowca}
\label{plot_ang}
\end{figure}
\section{Wpływ architektury}
W przypadku sieci pod symulator, usunięcie niektórych warstw konwolucyjnych
pozwalało modelowi nadal utrzymywać się na torze, natomiast taka sama zredukowana architektura
nie radziła sobie dobrze w przypadku nagrań z prawdziwego łazika. Z kolei
usunięcie nieliniowości z warstw konwolucyjnych ograniczyło zdolności sieci do takiego stopnia,
że nie potrafiła się utrzymać na wirtualnym torze.
Usunięcie dropoutu bardzo szybko powodowało overfitting i sieć radziła sobie
dobrze tylko na danych uczących. Z kolei dodanie warstw liniowych na końcu nie
poprawiało, ani nie pogorszało zbytnio wydajności sieci, przynajmniej dla
nagrań z symulatora. Na tej podstawie można wywnioskować, że większość interesujących
cech obrazu została już znaleziona w ramach warstw konwolucyjnych, więc dla tak prostych danych zwiększenie modelu jest nieefektywne.
Co ciekawe, w przypadku wytrenowanego już modelu do symulatora zredukowanie
rozdzielczości obrazów dziesięciokrotnie w każdym wymiarze (z rozdzielczości
320x160 do 32x16),
i zwykłe przeskalowanie w górę przed zewaluowaniem wystarczy, żeby utrzymać się
na torze.
Ponadto, sieć uczona na obrazie kolorowym działa bezproblemowo, gdy
zredukuje się obraz do skali szarości. Jedyne, co należy wykonać to stworzyć obraz kolorowy, w którym każdy z kanałów RGB będzie powtórzonym obrazem wejściowym.
|