A Direct Perception Approach for Autonomous Driving

 
WEITER LESEN
A Direct Perception Approach for Autonomous Driving
Seminararbeit
A Direct Perception Approach for Autonomous
                   Driving
                 Hauptseminar Sommersemester 2017

                          angefertigt von

                         Patrick Trojosky

     Fakultät:                  FK07 Mathematik und Informatik
     Studiengang:               Master Informatik
     Matrikelnummer:            08138116
     Dozent:                    Prof. Dr. Nischwitz

                         München, 29.06.2017
A Direct Perception Approach for Autonomous Driving
Eigenständigkeitserklärung
Ich erkläre hiermit, dass ich diese Seminararbeit selbständig verfasst, noch nicht anderweitig für
Prüfungszwecke vorgelegt, keine anderen als die angegebenen Quellen oder Hilfsmittel benutzt,
sowie wörtliche und sinngemäße Zitate als solche gekennzeichnet habe.

München, 29. Juni 2017
A Direct Perception Approach for Autonomous Driving
Abkürzungsverzeichnis
TORCS    The Open Racing Car Simulator

ML       Maschinelles Lernen

CNN      Convolutional Neuronal Network

FC       Fully Connected

ReLu     Rectified Linear Unit

VM       Virtuelle Maschine

VGG      Visual Geometry Group

ILSVRC   ImageNetLargeScaleVisualRecognitionChallenge

SGD      Stochastic Gradient Descent

GPU      Graphics Processing Unit

SVM      Support Vector Machine

SVR      Support Vector Regression

SVC      Support Vector Classification

MEA      Mean Absolut Error

CUDNN    Cuda Deep Neuronal Network

MSE      Mittlerer Standard Abweichung
A Direct Perception Approach for Autonomous Driving
Inhaltsverzeichnis
Eigenständigkeitserklärung                                                                                                                        i

Abkürzungsverzeichnis                                                                                                                            ii

1 Einleitung                                                                                                                                    1
  1.1 Ziel der Arbeit . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1
  1.2 Maschine Learning und Deep Learning . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
  1.3 Benötigte Grundlagen . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
       1.3.1 Grundlegende Bausteine . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
       1.3.2 Deep Neuronal Networks . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
       1.3.3 Convolutional Neuronal Networks            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
       1.3.4 Bilderkennung und Klassifikation .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
  1.4 Aktuelle Ansätze für autonomes Fahren .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
       1.4.1 Mediated Perception Approach . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
       1.4.2 Behaviour Reflex Approach . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6

2 Learning Affordance for Direct Perception in Autonomous Driving                                                                                7
  2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .    7
  2.2 Grundidee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .    7
  2.3 Modell - Ableitung der Indikatoren aus einem Bild . . . . . . .                                   .   .   .   .   .   .   .   .   .   .    8
  2.4 Controller Berechnung der Fahraktion . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   11
       2.4.1 Lenkbefehl . . . . . . . . . . . . . . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   11
       2.4.2 Geschwindigkeit . . . . . . . . . . . . . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   13
  2.5 Convolutional Neuronal Network . . . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   13
       2.5.1 Convolutional Layers . . . . . . . . . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   13
       2.5.2 Fully Connected Layers . . . . . . . . . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   14
       2.5.3 Kostenfunktion, Parameter und Optimierung . . . . . .                                      .   .   .   .   .   .   .   .   .   .   15
  2.6 Training . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   15
       2.6.1 Vorverarbeitung . . . . . . . . . . . . . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   16
  2.7 Test und Validierung . . . . . . . . . . . . . . . . . . . . . . . .                              .   .   .   .   .   .   .   .   .   .   16
       2.7.1 Behaviour Reflex ConvNet . . . . . . . . . . . . . . . .                                   .   .   .   .   .   .   .   .   .   .   16
       2.7.2 Mediated Perception (Lane Detection) . . . . . . . . . .                                   .   .   .   .   .   .   .   .   .   .   17
       2.7.3 Direct Perception with GIST . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   17
       2.7.4 Test mit realen Eingangsdaten (KITTI) . . . . . . . . .                                    .   .   .   .   .   .   .   .   .   .   17
  2.8 Zusammenfassung und Bewertung . . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   18

3 Analyse des Codes                                                                                                                             19
  3.1 Installation und Setup . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
      3.1.1 TORCS . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19
      3.1.2 Caffe Driving . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   20
      3.1.3 Schwierigkeiten und Hindernisse         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   21
  3.2 Einsatz von Caffe Driving . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      3.2.1 Sammeln von Trainigs-Daten . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   22
      3.2.2 Trainieren des Netzes . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
A Direct Perception Approach for Autonomous Driving
Inhaltsverzeichnis                                                                                                                    iv

         3.2.3 Testen des Netzes . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
   3.3   Auswertung . . . . . . . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
         3.3.1 Test 1: Halten der Spur . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
         3.3.2 Test 2: Spurhalten und Kollisionsvermeidung            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27

4 Weitere Untersuchungen des Direct Perception-Ansatzes                                                                               31
  4.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
  4.2 Paper: Deep Learning for Autonomous Cars . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
      4.2.1 Optimierung . . . . . . . . . . . . . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
      4.2.2 Resultate . . . . . . . . . . . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
  4.3 Paper: Deeper Direct Perception in Autonomous Driving                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
      4.3.1 Optimierung . . . . . . . . . . . . . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   32
      4.3.2 Training . . . . . . . . . . . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
      4.3.3 Resultate . . . . . . . . . . . . . . . . . . . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
  4.4 Eigene Realisierung eines VGG-16 Netzes . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
      4.4.1 Ergebnisse . . . . . . . . . . . . . . . . . . . . . .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   34

5 Zusammenfassung                                                                                                                     35
  5.1 Bewertung . . . . . . . . . . . .     . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
  5.2 Limitierungen . . . . . . . . . .     . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
      5.2.1 Geschwindigkeit anderer         Verkehrsteilnehmer .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   35
      5.2.2 Gegenverkehr . . . . . .        . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
  5.3 Erweiterungen . . . . . . . . .       . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
  5.4 Fazit . . . . . . . . . . . . . . .   . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   39

Abbildungsverzeichnis                                                                                                                 40

Literaturverzeichnis                                                                                                                  41
A Direct Perception Approach for Autonomous Driving
1 Einleitung
Das Mobilitätsverhalten der Menschen befindet sich aktuell stark im Wandel. Innerhalb der
letzten zwanzig Jahre hat sich das Automobil von einem rein mechanischen Fortbewegungsmittel
in ein hoch komplexes System aus Hardware und Software verwandelt.
Mit der ständigen Weiterentwicklung der Fahrzeuge beginnt sich das klassische Nutzungsverhal-
ten von Autos zu verändern. Der Fahrer möchte keine Zeit mehr für Alltagsstrecken, wie den
Weg zur Arbeit oder den täglichen Nachhauseweg, verschwenden. Vielmehr besteht das Interesse
die Zeit im Fahrzeugen effektiv zu nutzen. Dies ist allerdings nur möglich, wenn das Fahrzeug
eigenständig im Straßenverkehr agieren kann und der Fahrer nicht eingreifen muss. Aus die-
ser Motivation heraus entwickelte sich innerhalb der letzten fünf Jahre das Thema autonomes
Fahren.
Bereits aktuelle Modelle, wie der BMW 7er, sind in der Lage selbständig die Fahrspur zu er-
kennen und dieser zu folgen. Weiterhin kann das KFZ mittels eines Abstandshalte-Tempomaten
einem vorausfahrenden Fahrzeug folgen und bei Bedarf durch Bestätigung des Fahrers eigen-
ständig überholen1 .
Bei diesen Fahrerassistenz-Systemen spricht man von Level 1 und Level 2 Funktionen. Dabei wird
das System immer durch den Fahrer überwacht und agiert nicht hoch automatisiert, sondern
übernimmt spezifische Teilaufgaben zur Entlastung des Fahrers. Level 3 Systeme agieren hoch
automatisiert und der Fahrer kann sich zeitweise anderen Dingen zuwenden. Er muss im Warnfall
aber in der Lage sein korrigierend einzugreifen[1, S. 15]. Nach aktuellem Kenntnisstand werden
erste Fahrzeuge mit Level 3 Systemen im Jahr 2020 erwartet[1, S. 16].
Die größte Herausforderung des autonomen Fahrens ist die Erkennung und korrekte Interpre-
tation komplexer Verkehrssituationen. Nur wenn die Umgebung richtig eingeschätzt wird, kann
eine adäquate Steuerungsbefehlssequenz durchgeführt und das Fahrzeug sicher durch den Ver-
kehr geleitet werden.

1.1 Ziel der Arbeit
Im Rahmen dieser Seminararbeit soll auf Basis des Papers von Chen, Seff, Kornhauser et al.[2]
der aktuelle Stand der Technik im Bereich Maschine Learning im Einsatzgebiet des autonomen
Fahrens beschrieben und der Direct Perception-Ansatz detailliert dargestellt werden. Kapitel 2
zeigt diesen, neuen Ansatz zum Einsatz von Convolutional Neuronal Networks auf.
Darüber hinaus wird in Kaptiel 3 der Ansatz aus [2] praktisch eingesetzt, um damit alle Details
der Realisierung zu erschließen und mögliche Schwachstellen aufzuzeigen.
Kapitel 4 beschäftigt sich mit möglichen Optimierungen des Direct Perception-Ansatz auf Basis
der Ausführungen von Rait, Mohan und Selvaraj sowie von Liu und Wang. Grundsätzlich wird
dort die Möglichkeit evaluiert, den Trainingsprozess des Netzes durch vortrainierte Strukturen
zu beschleunigen.
Zum Abschluss zeigt Kapitel 5 die Grenzen des Direct Perception-Ansatz auf und lieferte zwei
konkrete Vorschläge, wie das System für ein weniger spezifisches Aufgabenfeld erweitert werden
kann.

 1
     http://www.bmw.de/de/neufahrzeuge/5er/limousine/2016/business-assistenzsysteme/fahrerassistenz.html#
      driving
A Direct Perception Approach for Autonomous Driving
1 Einleitung                                                                                               2

1.2 Maschine Learning und Deep Learning
Maschine Learning und Deep Learning sind zwei vergleichsweise junge Phänomene der Infor-
matik, welche innerhalb der letzten drei bis fünf Jahren ein rasantes Wachstum und Interesse
erfahren haben. Dies hängt zum einen mit der bereits im Consumer Bereich sehr hohen Rechen-
leistung aktueller Grafikkarten, aber auch mit den neuen Anwendungsgebieten, zusammen.
Ziel des maschinellen Lernens ist es Maschinen oder Computer intelligent zu machen, sodass diese
eigenständig Entscheidungen auf Basis früherer Erfahrungen treffen können. In der klassischen
Informatik wurden Probleme mit Hilfe von Algorithmen gelöst, die für ein konkretes Problem
oder einen speziellen Anwendungsfall dedizierte Lösungen beschreiben. Maschine Learning geht
hier neue Wege.
Eine sehr treffende Definition liefert Goodfellow, Bengio und Courville: „A computer program is
said to learn from experience E with respect to some class of tasks T and performance measure
P , if its performance at tasks in T , as measured by P , improves with experience E.“
Ziel ist damit nicht mehr einen Anweisungsalgorithmus zu entwickelt, der vorgibt wie sich das
System zu verhalten hat, sondern ein Modell zu finden, welches das Problem beschreibt. Auf
Basis von Trainingsdaten versucht dann der ML Algorithmus das Modell optimal zu lösen[5, S.
99].
Dieser Datensatz enthält im Falle von Supervised Learning 2 , sowohl den Input als auch das
gewünschte Ergebnis3 .
Mit dieser Technologie können komplexe Probleme gelöst werden, welche mit klassischen Ver-
fahrensalgorithmen nicht adäquat beschrieben werden können. Weshalb das Einsatzgebiet von
Maschine Learning Algorithmen fast grenzenlos ist. Beginnend bei Schrifterkennung über Klas-
sifizierung von Bildern hinzu intelligenten Steuerungssystemen für Roboter.

1.3 Benötigte Grundlagen
In diesem Abschnitt wird auf einige Grundlagen des Maschine bzw. Deep Learnings eingegangen,
welche für das Verständnis des Papers erforderlich sind. Zentrale Quelle ist dafür das Buch „Deep
Learning“ von Ian Goodfellow[5].

1.3.1 Grundlegende Bausteine
So gut wie jeder ML-Algorithmus besteht aus bestimmten Grundbausteinen, die je nach An-
wendung modifiziert werden. Diese Komponenten werden am Beispiel der lineare Regression
erläutert.

Datensatz
Der Datensatz in diesem Modell besteht aus den Eingabewerten X ∈ Rn und der Ausgabe Y als
Skalar ∈ R. Beide Variablen können als Vektor dargestellt werde:
Im Falle von Supervised Learning sind sowohl die X als auch die Y Werte bekannt und können
für das Training eingesetzt werden.
Datensätze mit diskreten Y-Werten werden meist als Klassifizierungen bezeichnet. Dazu zählen
die Bilderkennung oder eine Farbklassifizierung.

 2
   Bei Supervised Learning wird das Netz mit einem Datensatz trainiert, sowohl die Inputs als auch die Output
    bekannt sind[5, S. 139 ff.].
 3
   Siehe 1.3.1
A Direct Perception Approach for Autonomous Driving
1 Einleitung                                                                                   3

Model
Das Modell beschreibt das zu lösende Problem des Netzes. Im konkreten Beispiel der linearen
Regression bildet das Modell die Gleichung einer Regressionsgeraden.

                                                    y = w0 x + b                            (1.1)
Dabei ist w ∈ Rn ein Vektor bestehend aus Parametern, die Gewichte genannt werden. Diese
Werte kontrollieren das Verhalten des Systems und geben im konkreten Fall vor, wie stark der
x-Wert an der Gesamtheit aller Werte beteiligt ist. Der Wert B ist der Bias[5, S. 124]. Dieser
Wert gibt den Ursprungspunkt der Regressionsgeraden wieder. Damit kann diese besser justiert
werden.

Kostenfunktion
Die Kostenfunktion oder Loss-Funktion dient dem Algorithmus als Optimierungsfunktion. Ziel
ist es die Parameter des beschriebenen Modells so zu wählen, dass die Abweichung des prädizier-
ten Y Wertes zum tatsächlichen Wert minimal wird. Für das obige Beispiels kann die mittlerer
Standard Abweichung eingesetzt werden:
                                                          1
                                               M SE =       kŷ − yk22                      (1.2)
                                                          m

Optimierung
Die Minimierung der Kostenfunktion wird typischerweise mit der Gradient Descent-Methode
durchgeführt werden. Diese Optimierung versucht iterativ durch Anpassung der Parameter im-
mer den größten Schritt in Richtung minimale Abweichung zu finden. Daher wird die Methode
auch als Verfahren des steilsten Abstiegs bezeichnet[5, S. 82]. Im Beispiel minimiert der Opti-
mierungsalgorithmus also den die MSE.
Neben dieser Methode existieren noch weitere Algorithmen zur Minimierung. Eine Liste ist in
[5, S. 83ff] enthalten.

1.3.2 Deep Neuronal Networks
Mithilfe dieser einfachen Maschine Learning Algorithmen lassen sich bereits viele Probleme lösen,
indem Perzeptronen4 miteinander verbunden werden. Jedes Perzeptron enthält das Modell mit
eigenen Gewichten. Die Outputs der ersten Schicht von Neuronen sind dabei die Inputs der
folgenden Schicht. Bei weiterer Verschachtlung spricht man von Deep Neuronal Networks. Für
die Anregung der Neuronen wird eine Aktivierungsfunktion eingesetzt. Bekannte Vertreter sind
die Sigmoid oder Softmax Funktion. Diese Funktionen sorgen für eine Nichtlinearität im System
und bestimmten damit den Beitrag eines Neurons an der Gesamtheit aller Output Werte.

1.3.3 Convolutional Neuronal Networks
Convolutional Neuronal Networks wurden entwickelten, um komplexere und mehrdimensionale
Probleme zu lösen, die mithilfe von normalen Fully Connected Netzen nicht darstellbar sind5 .
CNNs sind auf die Verarbeitung von Daten im mehrdimensionalen Matrix Format spezialisiert.
Dazu zählen insbesondere Zeitreihen und Bilddaten. Der Hauptunterschied zu normalen Neu-
ronalen Netzen ist, dass in mindestens einem Layer anstelle einer Matrixmultiplikation eine
Faltung durchgeführt wird[5, S.330]. Dabei handelt es sich aber nicht um den mathematischen
 4
     Ein Perzeptron besteht in der einfachsten Form aus einem Neuron.
 5
     Siehe [5, S. 153ff ] für die ausführlich beschriebenen Hintergründe.
A Direct Perception Approach for Autonomous Driving
1 Einleitung                                                                                        4

Begriff der Faltung. Vielmehr werden neben der Inputmatrix weitere zweidimensionale Matri-
zen, bestehende aus Gewichten, definiert. Diese werden Kernel genannt. Aus diesen Matrizen
wird dann eine Feature Map generiert, indem der Kernel Pixelweise über das Input Bild gescho-
ben wird. Genau genommen handelt es sich bei dieser Operation um eine Korrelation[6]. Die
mathematische Darstellung zeigt die folgende Formel.
                                               R
                                               X    R
                                                    X
                                   J(x, y) =               ws,t I x+s,y+t                        (1.3)
                                               s=−R t=−R

Der Einsatz von Filtern ist eine bekannte Praxis aus der Bildverarbeitung. Hier werden die
Filter so gewählt, dass markante Merkmale eines Bildes verstärkt werden. Welche Merkmale
hervorgehoben werden, hängt dabei von der Wahl der Gewichte der Filter ab. In einem CNN
werden diese Gewichte automatisch durch das System gelernt und iterativ angepasst. Im Design
des Netzes wird lediglich die Anzahl der Kernel und deren Dimension vorgegeben.
Zur Reduktion der Menge an Gewichten wird bei der Convolution ein sogenannter Stride einge-
setzt. Dieser Wert gibt vor, wie viele Pixel beim Shifting des Kernels übersprungen werden.
Ergänzt wird ein Convolutional Layer meist durch eine Rectified Linear Unit und einen Pooling
Layer. Die ReLu verändert die Gewichte dahingehend, dass positive Werte übernommen werden
und negative Werte zu Null gesetzt werden [5, S. 192]. Für CNNs hat die Relu damit die klassische
Sigmoid Funktion6 , als Aktivierung abgelöst, da sie nachweislich bessere Ergebnisse erzielt[5, S.
226].
Der Pooling Layer reduziert die Anzahl der Gewichte, indem er einen definierten Bereich (Bsp.
2x2 )betrachtet und aus diesen Werten abhängig der Pooling Methode einen auswählt. Häufig
wird Max Pooling eingesetzt. Hierbei wird das Maximum der betrachteten Werte gewählt[5, S.
339].
Neben der Reduktion der Anzahl von Gewichten wird durch das Pooling zusätzlich eine gewisse
Invarianz bei der Erkennung der Merkmale eine Bildes eingeführt[6, Kap.5, S.11].

1.3.4 Bilderkennung und Klassifikation
Die alleinige Anwendung von Convolutional Layern hebt zwar die einzelnen Merkmale eines
Bildes hervor, ist aber nicht in der Lage diese miteinander zu kombinieren und zu interpretieren.
Aus diesem Grund werden für Problemstellungen aus dem Bereich der Bilderkennung meist
zusätzliche Fully Connected Layer nach den Convolutional Layern angefügt. Diese Schichten
führen auf Basis der Feature Maps eine Klassifikation aus und sind in der Lage beispielsweise
Gesichter oder Zahlen zu erkennen.
Eines der bekanntesten Netze dieser Form ist AlexNet, welches 2012 von Alex Krizhevsky entwi-
ckelt wurde[7]. Mithilfe dieses Deep-Convolutional-Neuronal Networks konnte 2012 im Rahmen
der ImageNetLargeScaleVisualRecognitionChallenge7 die Fehlerrate von 35% auf 16% halbiert
werden. Eine derartigen Sprung hatte es bis dato ohne den Einsatz von CNNs nicht gegeben.
Das AlexNet besteht aus fünf Convolutional Layern, gefolgt von drei Fully Connected Layern.
Zusätzlich wird nach den Convolution Operation eine ReLu für die Nichtlinearität und Max-
Pooling eingesetzt. Die Schichten sind auf zwei Pfad aufgeteilt, damit das Training des Netzes
parallel auf zwei GPUs durchgeführt werden kann. Weitere Details finden sich bei Srivastava,
Hinton, Krizhevsky et al.[7].
Die in Abbildung 1.1 gezeigte Architektur bildet die Grundlage für das eingesetzte ConvNet von
Chen, Seff, Kornhauser et al.

 6
     Bsp. Tangens Hyperbolicus
 7
     Die ILSVRC ist der wichtigste Wettbewerb zur Klassifizierung von Bildern. Siehe http://www.image-
      net.org/challenges/LSVRC/
A Direct Perception Approach for Autonomous Driving
1 Einleitung                                                                                             5

                                    Abbildung 1.1: Aufbau AlexNet[7]

Eine Weiterentwicklung der AlexNet Architektur wurde von der Visual Geometry Group in Ox-
ford vorgestellt und ist unter dem Namen VGG Net bekannt. Im Unterschied zu AlexNet werden
auf allen Ebenen deutlich kleinere Filter (3x3) eingesetzt. VGG Nets bestehen typischerweise aus
mehr Schichten als AlexNet und sind damit deutlich tiefer. VGG-198 verwendet zum Beispiel
neunzehn Layer und erreichte damit 2014 eine Fehlerquote von 7.3% in der ILSVRC[4].
In Abschnitt 4.4 wird ein VGG-16 Netz analog der Ausarbeitung von Liu und Wang implemen-
tiert und trainiert.

1.4 Aktuelle Ansätze für autonomes Fahren
Der aktuelle Stand der Technik im Bereich des autonomen Fahrens unterscheidet zwischen zwei
grundlegenden Konzepten zur Realisierung eines selbst fahrenden Fahrzeugs. An dieser Stelle
werden die beiden Paradigmen Mediated perception und Behaviour Reflex dargestellt. Danach
wird eine dritte Variante erläutert.

1.4.1 Mediated Perception Approach
Der Mediated Perception-Ansatz wird aktuell bei allen großen Automobilherstellern als de facto
Standard für autonomes Fahren eingesetzt. Auf Deutsch übersetzt bedeutet der Begriff „ver-
mittelte Auffassung“. Grundlegend beschreibt dieser Ansatz ein indirektes Vorgehen bei der
Ableitung von Fahraktionen auf Basis eines Umgebungsmodells. Mit Hilfe sämtlicher Sensoren
im Fahrzeug9 wird über Sensordatenfusion ein digitales Abbild der aktuellen Situation und Um-
feld des Fahrzeugs erzeugt. Diese Abbild enthält Informationen über die Straßenführung, die
Position des zu steuernden Fahrzeuges, anderen Verkehrsteilnehmern und Hindernissen. Bildlich
gesprochen entwickelt das Fahrzeug ein Bewusstsein für die eigene Umgebung, mit dessen Hilfe
entschieden werden kann, welche Steuerungsbefehle für eine unfallfreie Fahrt notwendig sind.

Nachteile
Chen, Seff, Kornhauser et al.[2] nennen in ihrem Paper mehrere Nachteile dieses Ansatzes. Zum
einen wird die notwendige Rechenleistung für die Erstellung eines Umgebungsmodells angeführt,
da hierfür große Datenmengen in Betracht gezogen werden müssen. Insbesondere für den Ein-
satz von Stereokameras ist eine enorm leistungsfähige CPU bzw. GPU erforderlich. Zum anderen

 8
     https://gist.github.com/baraldilorenzo/8d096f48a1be4a2d660d
 9
     Hierfür werden unter anderem Radar- und Lidar-Sensoren in Verbindung mit Mono- und Stereo-Kameras ein-
      gesetzt.
1 Einleitung                                                                                    6

wird die redundante Information erwähnt. Da für die Generierung des Modell diverse Sensoren
eingesetzt werden, lässt sich eine Dopplung bestimmter Informationen nicht vermeiden. Diese
muss bei der Datenfusion wieder gelöscht werden. Der letzte und schwerwiegendste Nachteil des
Mediated Perception-Ansatzes laut „DeepDriving: Learning Affordance for Direct Perception
in Autonomous Driving“ ist die Flut an Daten. Für die autonome Steuerung eines Fahrzeuges
seien deutlich weniger Informationen ausreichend, die Sensordatenfusion liefere zu viele, nicht
relevante Daten. Das Problem ein Fahrzeug selbstständig zu steuern sei ein „low-dimensional“
Problem [2, S.1], wobei der Output des Umgebungsmodell „multi-dimensional“ ist. Zusätzlich
wird angeführt, dass bereits die Subkomponenten im Umgebungsmodell teilweise Gegenstand
der aktuellen Forschung auf dem Gebiet der Bildverarbeitung sind. Damit beschäftige sich der
Mediated Perception-Ansatz zu sehr mit der Verarbeitung und Darstellung des Umgebungsmo-
dells, als mit der eigentlichen Aufgabe ein Fahrzeug autonom zu steuern.

1.4.2 Behaviour Reflex Approach
Der zweite Ansatz auf dem Gebiet des autonomen Fahrens wird als Behaviour reflex-Ansatz be-
zeichnet. Im Gegensatz zu Mediated Perception findet hier eine direkte Reaktion auf den Input
eines Sensors statt. Der Zwischenschritt zur Erstellung einer digitalen Realitätsabbildung ent-
fällt. Damit wird beispielsweise der Lenkwinkel des Fahrzeug ausschließlich auf Basis eines Bildes
der Frontkamera abgeleitet. Alle Merkmale des Bildes werden als Input für die Reaktion verwen-
det. Voraussetzung hierfür ist ein bereits trainiertes System, um eine adäquate Fahrzeugaktion
abzuleiten. In der Ausarbeitung von Pomerleau[8] wird dieser Ansatz detailliert dargestellt und
für die Steuerung eines Offroad Fahrzeuges eingesetzt.

Nachteile
Der oben ausgeführte Ansatz weißt zwei grundsätzliche Probleme auf, die einen weiteren Einsatz
für das autonome Fahren verhindern.
Mit dem direkten Mapping einer Fahraktion auf ein Bild ist es nicht möglich das „Große Gan-
ze“ zu erfassen. Es wird lediglich auf eine spezielle Situation, einen Teilaspekt der aktuellen
Verkehrssituation reagiert. Das gesteuerte Fahrzeug entwickelt kein Bewusstsein für seine Um-
gebung. Das Verzögern des vorausfahrenden Fahrzeuges wird beispielsweise erkannt, nicht aber
der Grund dafür. Diese Information, möglicherweise eine rote Ampel, ist allerdings eine rele-
vante Information für das Gesamtverständnis der Situation. Somit ist es dem Fahrzeug nicht
möglich sich in komplexen Straßensituationen, wie Kreuzungen oder Abbiegevorgängen, zurecht
zu finden.
Der zweite große Nachteil der Methode ist die Tatsache, dass bestimmte Verkehrssituationen
auf einem Bild sehr ähnlich wirken, aber eine komplett unterschiedliche Reaktion vom Fahrer
erfordern. Als Beispiel will der Fahrer in Situation A dem vorausfahrenden Fahrzeug folgen. In
Situation B will er überholen. Das Abbild der Situation über ein Kamerabild ist aber identisch.
Dies macht das Training des neuronalen Netzes maximal schwierig, wenn nicht sogar unmöglich,
da die Varianz an Situationen extrem groß ist.
2 Learning Affordance for Direct Perception in
  Autonomous Driving
2.1 Motivation
Aus den in Kapitel 1.4 genannten Nachteilen entsteht die Motivation für Chen, Seff, Kornhauser
et al. einen neuen, dritten Ansatz für den Einsatz von Deep Learning im Umfeld des autonomen
Fahrens zu entwickeln, der im Paper „DeepDriving: Learning Affordance for Direct Perception
in Autonomous Driving“ beschrieben wird. Für die Autoren ist insbesondere die Masse an Infor-
mationen, die für ein Abbild der aktuellen Umgebungssituation erforderlich ist, der Grund einen
schlankeren Ansatz für die autonome Steuerung eines Fahrzeugs zu entwickeln. Im Folgenden
wird der sogenannte Direct Perception-Ansatz beschrieben und die technische Umsetzung darge-
stellt. Die Ergebnisse stammen aus dem genannten Paper[2] und werden daher nicht gesondert
zitiert.

2.2 Grundidee
Der Direct Perception-Ansatz positioniert sich zwischen den beiden bekannten Ansätzen Me-
diated Perception und Behaviour Reflex, wobei er sich stärker an Letzterem orientiert. Die
Grundidee besteht darin, dreizehn Indikatoren aus einem Input-Bild abzuleiten. Damit wird
die Informationsmenge eines Bildes der Frontkamera auf das Wesentliche reduziert. Auf Basis
dieser dreizehn Indikatoren ist ein nachgelagerter Controller in der Lage das Fahrzeug unfallfrei
zu steuern. Die Autoren heben dabei hervor, dass aus den abgeleiteten Faktoren eine direkte
Fahranweisung berechnet werden kann. Mediated Perception-Ansätze liefern eine Spline Re-
präsentation der Fahrspuren und Bounding Boxen als Darstellung anderer Verkehrsteilnehmer.
Diese beiden Informationen müssen erneut interpretiert werden, bevor eine Fahraktion abgeleitet
werden kann. Nach Chen, Seff, Kornhauser et al. kann dieser Schritt zusätzliche Ungenauigkeit
verursachen und sollte wenn möglich vermieden werden.
Im Vergleich zum Behaviour Reflex-Ansatz wird nicht direkt aus dem Kamerabild eine Fahrak-
tion abgeleitet, sondern indirekt über die Indikatoren. Damit besteht die Herausforderung des
eingesetzten Convolutional Neuronal Networks darin, eine angebracht Belegung der Indikato-
ren zu einem Eingangsbild zu finden und nicht darin, die direkte Reaktion zu kennen. Für den
Controller, der die Fahraktion berechnet, wird kein Maschine Learning Algorithmus eingesetzt.
Dessen Funktionalität wird im Abschnitt 2.4 erläutert. Im Kontrast zum Mediated Perception-
Ansatz wird nur eine sehr reduzierte Repräsentation der Umgebung erstellt. Es existiert kein
ausgereiftes Umgebungsmodell, sondern lediglich die dreizehn gelernten Indikatoren und zusätz-
lich die Position und Geschwindigkeit des Fahrzeuges. Hiermit ist die Fehlerrate während der
Erstellung des Modells deutlich kleiner, als bei bekannten Ansätzen[2].
Für die Lösung dieser Regressions-Aufgabe, der korrekten Bestimmung der dreizehn Indikatoren,
wird Supervised Learning (siehe 2.6) eingesetzt.
2 Learning Affordance for Direct Perception in Autonomous Driving                                   8

2.3 Modell - Ableitung der Indikatoren aus einem Bild
Die Autoren fokussieren sich bei ihrer Umsetzung auf das autonome Fahren auf mehrspuri-
gen Highways. Das eingesetzte Convolutional Neuraonal Network unterstützt dabei einspurige,
zweispurige und dreispurige Straßen. Die verschiedenen Szenarien sind in der Abbildung 2.1 ver-
deutlicht. Mittels des gelb gefärbten Sichtfeldes des Fahrzeugs werden die relevanten Fahrspuren
dargestellt.
Dabei genügt es die eigene Fahrspur des zu steuernden Fahrzeugs, sowie die beiden angrenzenden
Spuren im Modell zu berücksichtigen. Befindet sich das Fahrzeug auf der linken oder rechten
Spur, ist es ausreichend diese und die jeweils angrenzende Spur zu betrachten. In diesem Fall
kann die linke bzw. rechte Außenspur vernachlässigt werden. Dies verringert die Komplexität
der Controller Einheit.

   (a) Dreispuriger Setup Mitte    (b) Dreispuriger Setup Rechts   (c) Dreispuriger Setup On Lane

   (d) Zweispuriger Setup Rechts   (e) Zweispuriger Setup Links       (f) Einspuriger Setup

                      Abbildung 2.1: Fahrszenario aus der Ego-Perspektive

Unabhängig von der Art der Straße führt das Fahrzeug folgende Aktionen autonom durch:

   • Folgen der aktuellen Spur
   • Spurwechsel, falls ein vorausfahrendes Fahrzeug zu langsam ist
   • Bremsen, falls das vorausfahrende Fahrzeug zu langsam ist oder nicht überholt werden
     kann

Diese Entscheidungen werden durch eine Controller Software getroffen. Als Eingangsgrößen die-
nen die Ausgangsgrößen des Convolutional Neuronal Networks. Dabei handelt es sich um drei-
zehn Indikatoren, welche in drei Teilbereiche, Distanz zu anderen Fahrzeugen, Distanz zu den
2 Learning Affordance for Direct Perception in Autonomous Driving                         9

Spurmarkierungen und Fahrzeuginformationen gegliedert werden. Die vollständige Liste aller
Indikatoren und deren Wertebereich setzt sich wie folgt zusammen:

  1. angle: Winkel zwischen Straßentangente und Fahrzeugwinkel - [-0.5, 0.5]

  2. toMarking_LL: Distanz zur linken Straßenmarkierung der linken Spur - [-9.5, -4]

  3. toMarking_ML: Distanz zur linken Straßenmarkierung der eigenen Spur - [-5.5, -0.5]

  4. toMarking_MR: Distanz zur rechten Straßenmarkierung der eigenen Spur - [0.5, 5.5]

  5. toMarking_RR: Distanz zur rechten Straßenmarkierung der rechten Spur - [4, 9.5]

  6. dist_LL: Distanz zum vorausfahrenden Fahrzeug der linken Spur - [0, 75]

  7. dist_MM: Distanz zum vorausfahrenden Fahrzeug der eigenen Spur - [0, 75]

  8. dist_RR: Distanz zum vorausfahrenden Fahrzeug der rechten Spur - [0, 75]

  9. toMarking_L: Distanz zur linken Straßenmarkierung - [-7, -2.5]

 10. toMarking_M:Distanz zur mittigen Straßenmarkierung - [-2, 3.5]

 11. toMarking_R: Distanz zur rechten Straßenmarkierung - [2.5, 7]

 12. dist_L: Distanz zum vorausfahrenden Fahrzeug der linken Spur - [0, 75]

 13. dist_R: Distanz zum vorausfahrenden Fahrzeug der rechten Spur - [0, 75]

Zur Erfüllung der oben genannten Aufgaben verwendet das System zwei Sets zur Repräsen-
tationen der aktuellen Verkehrssituation. Das In Lane System und das On Marking System.
Abhängig davon welches System aktiv ist, setzt sich der Einfluss der Indikatoren auf die Ab-
leitung der Fahraktion zusammen. Mithilfe der Indikatoren und des aktiven/inaktiven Systems
kann die Fahrzeugposition zuverlässig festgestellt werden.
Die Abbildungen 2.2 und 2.3 zeigen die beiden Situationen.
Das In Lane System beschreibt alle Situationen, bei denen sich das Fahrzeug innerhalb einer
der Spuren befindet. In diesem Zustand müssen die eigenen und die angrenzenden Spuren be-
obachtet werden. Im maximal Fall, bei einer dreispurigen Straße mit der Fahrzeugposition auf
der mittleren Spur, müssen drei Spuren bekannt sein. Bei aktivem In Lane System werden die
Indikatoren 1-8 zur Steuerung des Fahrzeuges berücksichtigt. Befindet sich das Fahrzeug auf
einer Außenspur werden zusätzlich die Indikatoren(toMarking_LL oder toMarking_RR, sowie
dist_RR oder dist_LL) nicht verwendet.
2 Learning Affordance for Direct Perception in Autonomous Driving   10

                         Abbildung 2.2: In Lane System

                       Abbildung 2.3: On Marking System
2 Learning Affordance for Direct Perception in Autonomous Driving                             11

Das On Markings System beschreibt alle Situationen, bei denen sich das Fahrzeug zwischen zwei
Spuren befindet. In diesem Zustand werden jeweils die linke und rechte Fahrspur kontrolliert.
Es werden daher immer zwei Spuren, mit Ausnahme eines einspurigen Setups betrachtet. Das
On Markings System wird durch die Indikatoren 1 und 9-13 beschrieben.
Für einen gleitenden Übergang wird ein Überschneidungsbereich zwischen den beiden Systemen
definiert. Befindet sich das Fahrzeug innerhalb dieses Bereichs sind beide Systeme aktiv und es
werden alle Indikatoren für die Ableitung der Fahraktion miteinbezogen.

                  Abbildung 2.4: Überschneidungsbereich der beiden Systeme

2.4 Controller Berechnung der Fahraktion
Wie bereits im vorangegangenen Abschnitt beschrieben übernimmt eine Software die Steuerung
des Fahrzeuges auf Basis der Ergebnisse des trainierten ConvNets, sowie des aktuellen Fahrzeug-
winkels und Position. Der Controller berechnet mit einer Frequenz von 10 Hz die Steuerungsbe-
fehle.

2.4.1 Lenkbefehl
Das Ziel des Controllers ist es, die Distanz zur Mittellinie der aktuellen Spur zu minimieren.
Definiert man dist_center als Abstand zur dieser Linie, ergibt sich daraus für die Berechnung
des Lenkbefehls die Formel:

                       steerCmd = C ∗ (angle − distc enter/roadw idth)                      (2.1)
mit C als ein Koeffizient der unter verschiedenen Verkehrssituationen variiert und angle als
Fahrzeugwinkel zur Straße ∈ [π, -π ]
Verlässt das Fahrzeug die eigene Spur, wechselt die Mittellinie von der aktuellen zur Mittellinie
der Zielspur. Der Code für diese Auswahl ist im Codeauszug 2.1 dargestellt. Der Ausschnitt zeigt
die Logik für eine dreispurige Straße. Entsprechend existiert für die zwei und einspurige Straße
eine eigenen Funktion.
2 Learning Affordance for Direct Perception in Autonomous Driving                                        12

i f ( lane_change ==0){
        i f (−toMarking_ML+toMarking_MR
2 Learning Affordance for Direct Perception in Autonomous Driving                          13

2.4.2 Geschwindigkeit
Zur Kontrolle der Geschwindigkeit des Fahrzeugs wird pro Zeitschritt eine angestrebte Ge-
schwindigkeit berechnet. Der Controller orientiert sich an diesem Wert und lässt die tatsäch-
liche Geschwindigkeit des Fahrzeugs diesem Wert folgen, indem er beschleunigt oder bremst.
Der Ausgangswert der angestrebten Geschwindigkeit ist 72 km\h. Dieser Wert wird bei einer
Kurvenfahrt oder vorausfahrenden Fahrzeugen entsprechend verringert. Zur Berechnung der
Fahrzeuggeschwindigkeit wird folgende Formel eingesetzt.
                                                        c
                            v(t) = v max (1 − exp(−           ∗ dist(t) − d))            (2.2)
                                                      v max
mit dist(t) als Distanz zu einem vorausfahrenden Fahrzeug, vmax als maximal erlaubte Geschwin-
digkeit und c, d als frei wählbare Koeffizienten.
Die Formel ermöglicht eine gedämpfte Kontrolle der Geschwindigkeit, kann das Fahrzeug aber
bis zum Stillstand bringen.

2.5 Convolutional Neuronal Network
Für die Realisierung des ConvNets zur Lösung des Regression-Problems, setzen die Autoren
des Papers das Framework Caffe[9] ein. Basis der Implementierung ist eine Standard AlexNet
Architektur, die für die Bedürfnisse der konkreten Problemstellung angepasst wird. Ein Unter-
schied ist das Format der Eingabebilder. Diese Trainingsdaten haben eine Auflösung von 280x210
Pixeln. AlexNet wurde mit Bilder im format 256x256 trainiert.
Das CNN besteht aus fünf Convolutional Layern, welche wiederum aus mehreren Unterschichten
(ReLu, Max-Pooling und Normalisierung) bestehen. Darauf folgen vier weitere Fully Connected
Layer. Als Kostenfunktion wird der Algorithmus der Euklidischen Distanz eingesetzt. Aufgrund
der unterschiedlichen Wertebereiche der dreizehn Indikatoren, wird eine Normalisierung der
Werte auf den Bereich [0,1 bis 0,9] vorgenommen.

2.5.1 Convolutional Layers
Die Convolutional Layer zeigen folgenden Aufbau:

  1. ConvLayer 1
        • Output: 96 Filter
        • Kernel Size: 11
        • Stride: 4
        • ReLu
        • Max Pooling 3x3 Stride: 2

  2. ConvLayer 2
        • Output: 256 Filter
        • Kernel Size: 5
        • Stride: 0
        • ReLu
        • Max Pooling 3x3 Stride: 2

  3. ConvLayer 3
2 Learning Affordance for Direct Perception in Autonomous Driving                             14

        • Output: 384 Filter
        • Kernel Size: 3
        • Stride: 0

  4. ConvLayer 4
        • Output: 384 Filter
        • Kernel Size: 3
        • Stride: 0
        • ReLu

  5. ConvLayer 5
        • Output: 256 Filter
        • Kernel Size: 3
        • Stride: 4
        • ReLu
        • Max Pooling 3x3 Stride: 2

Auffällig hierbei ist die Größe des Kernels des ersten und zweiten Convolutional Layers. Er-
fahrungen aktueller Netze zur Bilderkennung zeigen, dass große Filter weniger effektiv bei der
Extraktion von Bildmerkmalen sind, als tiefer verschachtelte kleine Filter (siehe Kapitel 4.3.1).

2.5.2 Fully Connected Layers
Während die Convolutional Layer weitestgehend aus der AlexNet Architektur übernommen sind,
setzen die Autoren bei den Fully Connected Layern auf vier statt drei Schichten und verwenden
einen Output von [4096, 4096, 256, 13]. Der detaillierte Aufbau ist:

  1. FullyConnected Layer 1
        • Output: 4096
        • Bias: 1
        • ReLu
        • Dropout 0.5

  2. FullyConnected Layer 2
        • Output: 4096
        • Bias: 1
        • ReLu
        • Dropout 0.5

  3. FullyConnected Layer 3
        • Output: 256
        • Bias: 0
        • ReLu
        • Dropout 0.5
2 Learning Affordance for Direct Perception in Autonomous Driving                                          15

     4. FullyConnected Layer 4
          • Output: 14
          • Bias: 0
          • Sigmoid

2.5.3 Kostenfunktion, Parameter und Optimierung
Als Kostenfunktion setzen die Autoren eine angepasste Variante des euklidischen Verlusts ein.
Die Berechnung erfolgt nach der Formel:
                                                m
                                             1 X
                                         L=        k ŷ i − y i k22                                     (2.3)
                                            2m i=1
Da die dreizehn Indikatoren unterschiedliche Wertebereiche aufweisen (siehe 2.3), wird eine
Normalisierung der Werte auf den Bereich [0.1 , 0.9] angewendet.
Als Optimierungsalgorithmus wird Stochastic Gradient Descent mit Momentum eingesetzt. Die-
ser Algorithmus ist eine Erweiterung des Gradient Descent Verfahrens. SGD verringert die enorm
große Rechenzeiten der Optimierung mittels Gradient Descent bei großen Datensätzen. Dies wird
erreicht, indem der Gradient auf Basis einer minimierten Anzahl von Trainingssamples (Mini-
batches) geschätzt wird und nicht über die volle Anzahl aller Daten berechnet wird[5, S.151 f].
Gerade im Bereich des Deep Learnings wird SGD als Optimierungsfunktion eingesetzt, obwohl
nicht die Genauigkeit eines reinen Gradient Descent Verfahrens erreicht wird1 .
Die initiale Lernrate wird auf 0.01 gesetzt. Dies entspricht der gängigen Praxis und der Empfeh-
lung des Caffe Frameworks[4, S. 4]. Aufgrund des Einsatzes von SGD kann keine fixe Lernrate
eingesetzt werden. Diese wird dynamisch nach einer bestimmten Anzahl von Wiederholungen
nach unten korrigiert. Weitere Hintergründe finden sich bei Goodfellow, Bengio und Courville,
S. 294.
Der Einsatz von Momentum verhindert, dass der SGD Optimierer zu stark auf eine Änderung
der Gradienten reagiert und damit ggf. in die falsche Richtung läuft[5, S. 296f].
Dazu bildet das Momentum einen exponentiell zerfallenden gleitenden Mittelwert über die ver-
gangenen Gradienten und folgt deren Richtung.
Der Wert für das Momentum wird im Paper[2]auf 0.9 gesetzt. Dies entspricht der aktuellen
Praxis für das Training eines bisher untrainierten Netzes[9].

2.6 Training
Für das Training des Netzes werden im Rennspiel TORCS Trainingsdaten mit entsprechenden
Labels aufgezeichnet. Für das Training des im Paper beschriebenen Netzes werden auf sieben
Strecken mit unterschiedlichen Straßenlayouts und Asphaltausprägungen Daten gesammelt. Da-
zu wurden 22 Fahrzeuge programmiert diversen Verhaltensmustern zu folgen. Das eigentliche
Testfahrzeug wird dann manuell im Spiel bewegt. Die Strecken wurden mehrfach befahren, um
eine maximale Varianz von Daten zu garantieren. Während der Fahrt zeichnet die Software die
Bilder aus der Egoperspektive auf, komprimiert diese auf 280x210 Pixel und speichert diese
gemeinsam mit den Labels in einer Datenbank. Da Caffe eingesetzt wird, ist die Datenbanktech-
nologie auf LevelDB festgesetzt2 von Google. In Summe wurden 484815 Bilder aufgenommen.

 1
   Dies ist allerdings nicht notwendig, da bei sehr großen Trainingsdatensätzen das tatsächliche Minimum nicht
    in Realzeit erreicht werden kann.
 2
   https://github.com/google/leveldb
2 Learning Affordance for Direct Perception in Autonomous Driving                             16

Das Training erfolgt von Beginn mit einem vollkommen untrainierten ConvNet und einer in-
itialen Lernrate von 0.01. Pro Batch wurden 64 Bilder zufällig aus dem Trainingsdatensatz
ausgewählt. Nach 140000 Wiederholungen ist der Vorgang beendet.

2.6.1 Vorverarbeitung
Bevor die Bilder für das Training genutzt werden, wird eine Normalisierung der Daten vor-
genommen. Dies erfolgt über die Mittelwerts-Subtraktion. Es wird über alle Bilder aus dem
Trainingsdatensatz jeweils der Mittelwert der drei Farbkanäle gebildet. Dieser wird dann von
jedem Trainingssample pro Kanal subtrahiert. Die Operation ergibt eine Zentrierung um den
Wert Null. Die Vorverarbeitung verbessert den Trainingsprozess erheblich[5, S. 318].

2.7 Test und Validierung
Der erste Test des Systems findet innerhalb der Simulation TORCS statt. Das Testing findet
auf einer neuen Strecke, mit neuen Fahrzeugen statt, die nicht in den Trainingsdaten enthalten
sind.
In der Software ist es möglich die tatsächliche Position des gesteuerten, aber auch der anderen
Fahrzeuge abzugreifen. Damit kann eine grafische Oberfläche generiert werden, die Realität der
Einschätzung des trainierten Netzes gegenüberstellt. Darüber hinaus kann durch das Verhalten
des kontrollierten Fahrzeuges abgeleitet werden, ob das System korrekt arbeitet. Der Testsetup
wird im Abschnitt 3.2.3 gezeigt.
Bei den Tests zeigt sich, dass das autonome Fahrzeug ohne Kollisionen und Fehlverhalten auf
der Strecke bewegt wird. Bei vereinzelten Manövern zum Spurwechsel wird die Außenlinie der
neue Spur kurzzeitig überfahren. Dieser Fehler wird aber schnell korrigiert. Insbesondere die
Spurvorhersage funktioniert einwandfrei. Bei der Erkennung von fremden Fahrzeugen zeigte
sich eine sehr gute Genauigkeit innerhalb von 30 Metern. Bei größeren Distanzen zwischen
30 und 60 Metern wird die Vorhersage ungenauer. Dieser Sachverhalt wird auf die geringe
Auflösung der Trainingsdaten zurückgeführt, da hier ein Fahrzeug in 60 Metern Distanz lediglich
als sehr kleiner Punkt wahrgenommen werden kann. Aus diesem Grund ist das System nur für
Geschwindigkeiten bis 80 km\ einsetzbar.
Nach der ersten Validierung in TORCS vergleichen die Autoren den Direct Perception-Ansatz
zusätzlich mit weiteren Technologien, um weiterführende Aussagen über die Qualität der Um-
setzung zu gewinnen.

2.7.1 Behaviour Reflex ConvNet
Der erste Vergleich wird mit einem Behaviour Reflex-ConvNet durchgeführt. Dieses Netz bildet
auf ein Eingangsbild direkt eine Fahraktion ab. Der Test bezieht sich zum einen auf das Halten
der Spur. Hierbei besteht der Trainingsdatensatz (60000 Bilder) ausschließlich aus Bildern einer
leeren Strecke. Zum andern soll das Fahrzeug im Verkehr keine Kollisionen verursachen. Für
diesen Test werden Trainingsdaten (80000 Bilder) mit Verkehr aufgezeichnet.
Als Resultat lässt sich festhalten, dass die Spur ohne fremde Fahrzeuge zuverlässig erkannt wird.
Bei der Vermeidung von Kollisionen zeigt sich ein anderes Bild. Das System vermeidet zwar ab
und an einen Crash, das Verhalten ist aber eher zufällig als kontrolliert[2, S. 5].
Bei der Evaluierung dieser Baseline muss erwähnt werden, dass der Trainingsdatensatz signi-
fikant kleiner gewählt wurde als der des Direct Perception-Ansatzes. Damit sind die beiden
Versuche aus Sicht des Autors dieser Arbeit nicht vergleichbar.
2 Learning Affordance for Direct Perception in Autonomous Driving                                          17

2.7.2 Mediated Perception (Lane Detection)
Im zweiten Vergleich tritt das Direct Perception-Modell gegen den Caltech3 Spurerkennungsalgo-
rithmus an. Für den Test wird ein Support Vector Machine4 System bestehend aus acht Support
Vector Regressions und sechs Support Vector Classification Modellen zusammengesetzt. Imple-
mentiert wird das System mit Hilfe von libsvm5 .
Für das Training des Systems werden ausschließlich Bilder ohne Verkehr aufgezeichnet. Die
Größe des Datensatzes beschränkt sich auf 2500 Bilder.
Die Ergebnisse zeigen, dass der Direct Perception-Ansatz trotz der geringen Anzahl von Da-
ten besser als der Caltech Algorithmus funktioniert. Die Ergebnisse werden in Abbildung 2.5
verdeutlicht. Sie zeigt den Mittleren Absolut Fehler beider Systeme.

                              Abbildung 2.5: MEA Caltech vs. ConvNet

2.7.3 Direct Perception with GIST
Als dritter Vergleich werden mittels eines GIST Deskriptors6 die dreizehn Indikatoren für ein
Eingangsbild abgeleitet. Dabei unterteilt der Deskriptor das Bild in 4x4 Segmente, wobei die
unteren beiden Segmente deutlich relevanter für die Ableitung der Indikatoren sind, da sie die
nähere Umgebung des Fahrzeuges zeigen. Das System wird mit ca. 90000 Datensätzen trainiert.
Damit der Vergleich zwischen den beiden Netzen fair ist, wird ein neues ConvNet auf Basis des
Direct Perception-Ansatzes mit einem angepassten Datensatz trainiert. Darin sind 8900 Samples
enthalten.
Auch in diesem Vergleich schneidet das ConvNet deutlich besser als der GIST Deskriptor ab.
Es zeigt sich aber, dass die Genauigkeit stark von der Anzahl der Trainingssamples abhängt.

2.7.4 Test mit realen Eingangsdaten (KITTI)
Zuletzt wird das ConvNet von Chen, Seff, Kornhauser et al. mit realen Daten getestet. Hierzu
wurden zwei unterschiedliche Szenarien geprüft. Im ersten Test wird das mit TORCS Daten
trainiert Netz auf realen Daten einer Smartphone Kamera getestet. Dabei wird deutlich, dass die
Spurerkennung zuverlässig funktioniert. Die Erkennung von fremden Verkehrsteilnehmern zeigt
Ungenauigkeiten. Dies ist darauf zurückzuführen, dass die einfach gehaltenen Fahrzeugmodell
aus der Rennsimulation zu stark von der Form realer Fahrzeuge abweichen. Im zweiten Szenario
wird dasselbe ConvNet mit den Daten aus dem KITTI7 Datensatz trainiert und getestet. Das
Hauptziel dieses Tests ist die korrekte Erkennung der Distanz zu vorausfahrenden Fahrzeugen.

 3
   http://www.mohamedaly.info/software/caltech-lane-detection
 4
   SVM sind sogeannte Large Margin Classifier, die das Ziel haben eine Menge von unterschiedlichen Objekten so
    zu unterteilen, dass um die Klassengrenzen möglichst große Freiräume entstehen. Für weitere Ausführungen
    siehe [5, S. 140ff]
 5
   https://www.csie.ntu.edu.tw/ cjlin/libsvm/
 6
   Ein GIST Deskriptor beschreibt ein Bild mit Fokus auf der Trennung unterschiedlicher Bereiche und ignoriert
    die gezeigten Objekte an sich. Eingeführt wurde er von Olivia et al im Jahr 2001. Für weitere Ausführungen
    zu GIST Deskriptoren siehe [10]
 7
   Das KITTI Datenset enthält 180 GB Bild und Sensordaten aus Fahrten mit einem Testfahrzeug aus ganz
    Europa. [11].
2 Learning Affordance for Direct Perception in Autonomous Driving                                          18

Als Referenz wird die Performance eines State of the Art DPM Algorithmus8 zur Erkennung
von Fahrzeugen herangezogen.
Da in den meisten KITTI Samples keine Fahrspurmarkierungen vorhanden sind, wird ein x,y
Koordinatensystem entworfen, indem das ConvNet die Position des Fahrzeugs feststellen kann.
Weiterhin wird eine Blickweite definiert, da das ConvNet bekannte Schwierigkeiten bei der Er-
kennung von weit entfernten Fahrzeugen hat. Die relevante Blickweite beträgt im Test 2 bis 25
Meter.
Zusätzlich werden die Bilder des Trainingsdatensatzes auf eine Auflösung von 497x150 Pixel
verkleinert.
Das Trainingsset besteht aus 61894 Samples. Dieses wird über 50000 Wiederholungen trainiert.
Im Vergleich zu einem DPM Ansatz schlägt sich das ConvNet passabel und weißt nur wenige
False Positive9 Fehler auf. Laut Chen, Seff, Kornhauser et al. kann dieses Problem durch eine
Vergrößerung des Trainingssets verringert werden.

2.8 Zusammenfassung und Bewertung
In den Ausführungen von [2] wird ein durchweg positives Fazit bezüglich des neuen Direct Per-
ception-Ansatzes gezogen. In fast allen Vergleichen zu anderen Systemen schneidet das ConvNet
besser oder gleich gut ab.
Diese positive Einschätzung wird allerdings durch die Beschränkungen des Ansatzes getrübt.
Beispielsweise funktioniert dieser ausschließlich auf einem Highway ohne Gegenverkehr mit an-
deren Verkehrsteilnehmern, die immer langsamer sind als das gesteuerte Fahrzeug. Eine weitere
Einschränkung ist die Geschwindigkeit. Das System funktioniert ausschließlich bis zu einer ma-
ximal Geschwindigkeit von 80 km\h, was dem Einsatzgebiet auf dem Highway widerspricht.
Gleichzeitig wirken die im Paper aufgeführten Vergleiche konstruiert. Insbesondere der Vergleich
zu einem GIST Deskriptor ist sehr aufwändig dargestellt und es sind etliche Mappings notwendig,
bis die beiden System vergleichbar sind.
Beeindruckend ist allerdings die Tatsache, dass ein virtuell trainiertes Modell in der Lage ist
Fahrspuren auf realen Bildern zu erkennen.
Kapitel 5 beschäftigt sich weiter mit den Schwachstellen und möglichen Verbesserungen des
Systems.

 8
   Deformable Part Modelle basieren auf dem Versuch Teilausschnitte in einem Bild zu erkennen, die in diversen
    Blickwinkeln vorkommen. Nach dem Training werden diese Elemente zuverlässig erkannt. Weitere Ausführun-
    gen finden sich bei [12].
 9
   Unter False Positive versteht man die Erkennung eines Objektes, obwohl diese nicht existiert.
3 Analyse des Codes
Im Rahmen dieses Kapitels wird im Detail auf die Implementierung des Convolutional Neuronal
Networks, welches theoretisch im Kapitel 2 beschrieben wurde, eingegangen. Dazu wird der
mitgelieferte Code auf einem Rechner im Labor für Bildverarbeitung installiert und eingesetzt.
Zur Demonstration der Funktion werden zwei CNNs auf Basis der AlexNet Architektur aus [2]
trainiert. Im ersten Versuch wird ausschließlich die Fähigkeit des Spurhaltens und im zweiten
Versuch der komplette Umfang des autonomen Fahrens trainiert und getestet.

3.1 Installation und Setup
Der Code zum Projekt Deep Driving kann über die Homepage der Universität Princeton1 ab-
gerufen werden. Dort ist zum einen der Code für das ConvNet, die angepassten Komponenten
für TORCs und das Framework Caffe und zum anderen auch das vollständige Trainingsset für
die Versuche aus dem Paper verfügbar. Im Rahmen dieser Seminararbeit wird nicht das voll-
ständige Trainingsset bestehend aus 480000 Bildern eingesetzt, da das Training des Netzes zu
viel Zeit in Anspruch nehmen würde. Weiterhin weißt Liu und Wang[4] darauf hin, dass das
Trainingsset fehlerhafte Bilder enthält. Bevor die Software eingesetzt werden kann müssen eini-
ge Schritte zur Installation durchgeführt werden. Die mitgelieferte Anleitung der Autoren des
Papers unterstützt diesen Vorgang.
Die Installation wird auf dem Laborrechner CB06 des Labors für Bildverarbeitung der Hoch-
schule München durchgeführt. Das eingesetzte Betriebssystem ist CentOs 7. Für die Installation
wird der angemeldete Nutzer in das sudoer File hinzugefügt, da einige Software Bibliotheken
nachinstalliert werden müssen.

3.1.1 TORCS
Ein Teil der Installation ist das Open Source Rennspiel TORCS. Die Simulation ist ein Multi-
Plattform2 Rennspiel, das neben der Verwendung als Rennsimulation für eine Vielzahl von For-
schungsprojekten im Bereich KI und autonomes Fahren eingesetzt wird. Die Entwicklung des
Spieles begann bereits 1997 unter der Feder von Eric Espié und Christophe Guionneau. Mittler-
weile ist TORCS in der Version 1.3.8 verfügbar. Für die Realisierung des Papers wird die Version
1.3.7 eingesetzt. Programmiert wurde die Software in C++. Dies ermöglicht eine einfache und
grenzenlose Erweiterung. Diese ist insbesondere für die Forschungsprojekt wichtig ist, da hier
die Software speziellen Anforderungen angepasst wird. Weiterhin ist es möglich die Robots 3 voll-
kommen frei zu programmieren. Somit können unterschiedlichste Verhaltensmuster dargestellt
werden.

Installation
Bevor die Installation von TORCS starten kann werden die folgenden Bibliotheken auf dem
System installiert. Dies geschieht über den CentOs Paketmanager „yum“:

 1
   http://deepdriving.cs.princeton.edu/
 2
   Windows, Linux, MacOS, Free BSD
 3
   Computergesteuerte Fahrzeuge
3 Analyse des Codes                                                                          20

     1. Hardware accelerated OpenGL

     2. FreeGlut

     3. PLIB 1.8.5 version

     4. OpenAL

     5. libpng und zlib

     6. libogg/vorbis

Nachdem alle Abhängigkeiten aufgelöst wurden kann TORCS mithilfe der folgenden Komman-
dos installiert werden:

     1. ./configure

     2. make install

     3. make datainstall

Nach erfolgreicher Installation kann das Spiel unter usr/local/bin/torcs ausgeführt werden.
Für die Anwendung im Deep Driving Projekt werden nach der Installation die zusätzlichen
Strecken in den entsprechenden Ordner des Spiels kopiert. Bei den Strecken handelt es sich
um ein-, zwei- und dreispurige Varianten der ursprünglichen Rennstrecken des Spiels. Diese
weisen ohne Manipulation keine dedizierten Fahrspuren auf. Zusätzlich wurden die Graustufen
der Fahrbeläge verändert, sodass ein weites Spektrum an Trainingsdaten generiert werden kann.

3.1.2 Caffe Driving
Für die Umsetzung des Convolutional Neuronal Networks wird im Projekt das Framework Caf-
fe4 eingesetzt. Das Framework wurde von Yangqing Jia im Rahmen seiner Doktorarbeit am
Vision und Learning Centre der University of California, Berkeley entwickelt. Die erste Version
wurde im Jahr 2014 veröffentlicht. Aktuell liegt das C++ Framework in der Version „1.0rc5“
vor. Mit Caffe wurde die Realisierung von schnellen CNNs von Matlab nach C++ portiert. Mit
der Unterstützung des Cuda5 Frameworks von Nvidia und dem Einsatz unterstützter Grafik-
karten können CNNs sehr schnell trainiert werden. Die Verarbeitung von CNNs kann zusätzlich
durch die Verwendung der Cuda Deep Neuronal Network Bibliothek von Nvidia6 beschleunigt
werden. Diese steht nach einer kostenfreien Registrierung bei Nvidia, für diverse Plattformen
zum Download bereit.
Für das Projekt wird das Framework an diversen Stellen modifiziert. Auf diese Änderungen wird
teilweise im folgenden Verlauf eingegangen. Eine Liste aller editierten und neuen Dateien findet
sich in der README Datei der Autoren.

Installation
Die Installation von Caffe unter CentOs folgt der Anleitung auf der Homepage des Frameworks:
http://caffe.berkeleyvision.org/install_yum.html
Für die Installation müssen folgende Bibliotheken vorhanden sein:

     1. protobuf-devel

 4
   http://caffe.berkeleyvision.org/
 5
   http://www.nvidia.de/object/cuda-parallel-computing-de.html
 6
   https://developer.nvidia.com/cudnn
3 Analyse des Codes                                                                           21

     2. leveldb-devel

     3. snappy-devel

     4. opencv-devel

     5. boost-devel

     6. hdf5-devel

     7. atlas-devel

Zusätzlich wird für den Einsatz einer Nvidia Grafikkarte das Cuda Framework inklusive aller
Treiber manuell installiert. Die Treiber finden sich auf der Homepage7 von Nvidia. Für das Pro-
jekt Deep Driving ist eine Nvidia Karte zwingend erforderlich, da die optionalen C++ Dateien
direkt auf die Grafikkarte zugreifen.Im Gegensatz zur reinen Caffe Version, kann ohne diese
Hardware das Projekt Caffe Driving nicht kompiliert und eingesetzt werden. Dies ist auch der
Grund weswegen das Projekt im Labor durchgeführt wird.
Nachdem alle Voraussetzungen erfüllt sind, wird Caffe mit dem Befehl „make all“ installiert.
Die folgend Abbildung zeigt den kompletten Aufbau des Systems und die Kommunikationswege
zwischen TORCS - ConvNet - Controller.

                        Abbildung 3.1: Gesamtsystem Caffe Drving mit TORCS

3.1.3 Schwierigkeiten und Hindernisse
Sowohl bei der Installation von TORCS als auch bei Caffe Driving kam es zu einigen Schwierig-
keiten, die den zeitlichen Aufwand der Installation deutlich vergrößerten. Beispielsweise mussten
für TORCS Modifikationen im Makefile durchgeführt werden, um die Pfade der benötigen Bi-
bliotheken anzupassen, da auf den Laborrechnern 32Bit und 64 Bit Varianten der jeweiligen

 7
     urlhttps://developer.nvidia.com/cuda-downloads
3 Analyse des Codes                                                                                       22

Bibliotheken vorhanden waren. TORCS setzt aber die 64 Bit Version voraus, da nur diese als
Shared Object kompiliert wurde.
Bei Caffe verursachte insbesondere die Bibliotheken „openBlas und Atlas“ Probleme. Da der
Build des Frameworks des Projektes auf einer Ubuntu Umgebung aufgesetzt wurde, gab es
Schwierigkeiten mit der Kompatibilität für CentOs. Für CentOs existiert keine Bibliothek für
„BLAS“, diese muss über „satlas“ und „tatlas“ aufgelöst werden. Diese Problem konnte mit
einer Veränderung des Makefiles und der Makefile.config Datei gelöst werden.
Der Einsatz von cuDNN ist für das Projekt Caffe Driving nicht möglich, da eine ältere Version
von Caffe eingesetzt wird. Das Framework unterstützt cuDNN in der Version 5 und 6 nicht. Für
die Kombination mit einer Nvidia Grafikkarte der Pascal Architektur8 ist dies aber zwingend
erforderlich. Diese Tatsache sorgt für deutlich längere Trainingszeiten der Netze.

3.2 Einsatz von Caffe Driving
Für die Analyse und Bewertung des Codes werden im folgenden zwei CNNs mit unterschiedli-
cher Zieldefinition trainiert. Das erste Netz soll ausschließlich für die Erkennung der Fahrspur
eingesetzt werden, sodass im Test ein Fahrzeug auf einem dreispurigen Rundkurs autonom Fah-
ren kann, ohne die Spur zu verlassen. Das zweite Netz soll ein Fahrzeug autonom auf einem
dreispurigen Rundkurs mit Verkehr steuern. Diese Aufgabe ist deutlich komplexer und benötigt
daher ein größeres Set von Trainingsdaten. Im Allgemeinen werden in den beiden Versuchen
deutlich weniger Trainingsdaten, als im Paper verwendet. Dies soll die Frage klären, ob sich
bereits mit einer kleineren Anzahl Daten, sinnvolle Erfolge erzielen lassen.

3.2.1 Sammeln von Trainigs-Daten
Das Framework Caffe Driving bietet eine Möglichkeit über das Rennspiel TORCS Trainingsbilder
mit den zugehörigen Labeln (siehe Beschreibung der Indikatoren im Abschnitt 2.3) aufzuzeich-
nen.
Dazu muss die Datei „torcs_data_collector.cpp“ angepasst werden. Im Code wird der Pfad zur
LevelDB Datenbank angegeben, in welcher die Daten gespeichert werden. Für das Sammeln der
Daten im Rahmen dieser Arbeit wird die Datenbank „TORCS_Training_Patrick“ gespeichert.
Zum Sammeln der Daten wird dann zuerst TORCS und danach die C++ Datei gestartet. Die
beiden Programme kommunizieren mittels Shared Memory miteinander. Innerhalb von TORCS
kann das Rennen konfiguriert werden. Dazu zählt die Auswahl einer Strecke und der Anzahl
computergesteuerter Fahrzeuge. Der Setup ist in Abbildung 3.2 dargestellt. Wichtig bei der
Aufzeichnung ist, dass die Default Bildschirm Auflösung von TORCS nicht verändert wird, da
in diesem Fall die Belegung der Labels nicht mehr zu den Parametern der Controller Komponente
passen9 .

Sammeln ohne Verkehr
Für den ersten Versuch werden 3211 Bilder plus deren Labels aufgezeichnet. Dazu wird ein
Fahrzeug manuell auf einer dreispurigen Strecke für drei Runden bewegt. Dabei ist die Strecke
leer. Es gibt keine computergesteuerten Fahrzeuge, da das Ziel dieses Versuches ausschließlich
das Erkennen der Fahrspur ist. Abbildung 3.3 zeigt ein Trainingssample inklusive der dreizehn
Indikatoren.

 8
     http://www.nvidia.de/graphics-cards/geforce/pascal/
 9
     Aufgrund dieser Tatsache, musste das Trainig für beide Tests wiederholt werden, da die Auflösung initial
      verändert worden war.
Sie können auch lesen