Challanges for Driver Assistance Systems Car Detection using Local Orientation Coding and Bayesian Classification

Die Seite wird erstellt Julia Lang
 
WEITER LESEN
Seminar
       Bildverstehen und Mustererkennung

Challanges for Driver Assistance Systems

         Car Detection using
       Local Orientation Coding
                 and
        Bayesian Classification

     Westfälische Wilhelmsuniversität Münster
     Fachbereich Mathematik und Informatik
               Institut für Informatik

                  bearbeitet von

              Christoph Bartenhagen
               Matrikelnr.: 321626
              Wintersemester 07/08
Inhaltsverzeichnis

Kapitel 1   Einführung                                                                 2
            1.1 Computer Vision . . . . . . . . . . . . . . . . . . . . . . .          2
            1.2 Ein paar Worte zu dieser Arbeit   . . . . . . . . . . . . . . . . .    3

Kapitel 2   Hypothesis Generation – Local Orientation Coding                           4
            2.1 Die Labels     . . . . . . . . . . . . . . . . . . . . . . . . .       4
            2.2 Thresholding     . . . . . . . . . . . . . . . . . . . . . . . .       5
            2.3 Die Ausführung       . . . . . . . . . . . . . . . . . . . . . . .     6
            2.4 Generation der Hypothese . . . . . . . . . . . . . . . . . . .         7

Kapitel 3   Hypothesis Verification – Der Bayes-Klassifikator                          9
            3.1 Wieso Bayes ? . . . . . . . . . . . . . . . . . . . . . . . .          9
            3.2 Die Stichprobe . . . . . . . . . . . . . . . . . . . . . . . .         9
            3.3 Die Merkmale . . . . . . . . . . . . . . . . . . . . . . . .           9
            3.4 Das Training     . . . . . . . . . . . . . . . . . . . . . . . .      10
            3.5 Die Klassifikation    . . . . . . . . . . . . . . . . . . . . . .     11
            3.6 Ein Ergebnis     . . . . . . . . . . . . . . . . . . . . . . . .      11

Kapitel 4   Diskussion                                                                12
            4.1 Erfahrungen mit Local Orientation Coding . . . . . . . . . . . . . 12
            4.2 Erfahrungen mit der Bayes-Klassifikation   . . . . . . . . . . . . . 14
            4.3 Performance . . . . . . . . . . . . . . . . . . . . . . . . . 15
            4.4 Das Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . 16

            Quellenverzeichnis    . . . . . . . . . . . . . . . . . . . . . . . . 17

                                             1
Kapitel 1         Einführung

1.1       Computer-Vision: Einem Computer das Sehen beibringen

Am Anfang steht das Bild. Für den Computer zunächst nur eine rechteckige Sammlung
unzusammenhängender Pixel, einer Matrix aus Farb- oder Grauwerten.
Was kann dieses Bild bedeuten ? Was stellt es dar ? Die Klassifikation von Bildern als Teilgebiet
der Computer-Vision versucht dies zu beantworten indem es mögliche Bildinhalte in Klassen
zusammenfasst und versucht Bilder oder Auschnitte diesen Klassen zuzuordnen.

Eine Sparte sogenannter Advanced Driver Assistence Systems (ADAS) macht es sich zur Aufgabe
aus Bildern Fahrzeuge herauszulesen. Es soll errechnet werden wo im Bild sich z.B. Autos
befinden. Ein drittes Auge als Frühwarnsystem: Den Fahrer benachrichtigen oder selbst navigierend
(z.B. bremsend) in den Verkehr eingreifen. Weiterführende Berechnungen bezüglich Distanzen
zwischen den Fahrzeugen, deren Geschwindigkeiten, oder genaueren Klassifikationen z.B.
hinsichtlich Fahrtrichtung etc. sind denkbar und möglich.
Die Bilder sind in diesem Zusammenhang oftmals Aufnahmen direkt aus dem Fahrzeug. Eine oder
mehr Kameras filmen die Fahrbahn und liefern das Bildmaterial zur Klassifikation. Einer
Klassifikation hinsichltich zweier Klassen: Fahrzeug und kein Fahrzeug (sprich Umgebung).

Doch wie lernt nun der Computer wie ein Fahrzeug aussieht ? Was macht ein Fahrzeug aus ? Und
besonders wichtig hinsichtlich der Klassifikation: Was unterscheidet es von seiner Umgebung ?
Merkmale eines Autos die für die Wahrnehmung des Menschen selbstverständlich sind müssen für
den Computer von Grund auf neu erdacht und definiert werden.:

      ●    Textur/Farben: Autos besitzen oft sich wiederholende homogene oder gleichmäßig
           gemusterte Flächen gleicher Farbe.
      ●    Schatten: Bei guter Beleuchtung (hellichtem Tag) besitzen Autos einen Schatten, d.h. stark
           schwankende Intensitäten der Farbwerte weisen auf Hindernisse wie ein Fahrzeug hin.
      ●    Licht: Gerade bei Detektionen bei Dunkelheit kann es hilfreich sein die Vorder- und
           Rücklichter von Autos zu betrachten.
      ●    Symmetrie: Autos sind oftmals sowohl von vorne als auch von hinten sowie horizontal wie
           vertikal symmetrisch aufgebaut.
      ●    Kanten: Viele Autos haben eine schlichte rechteckige Form und besitzen vorwiegend
           vertikale und vor allem horizontale Kanten (Scheiben, Stoßstangen, Nummernschild, etc.).

Die Detektion von Autos in Bildern gliedert sich meistens in zwei Schritte:

Hypothesis Generation (HG): Diese erste Maßnahme stellt unter obigen Merkmalen (einzeln oder
in Kombination) eine Hypothese auf, wo sich im Bild ein Fahrzeug befinden könnte.

Hypothesis Verification (HV): Die Hypothese kann oftmals falsch sein. Denn bei komplexen
Bildinhalten können fremde Objekte auch schnell Merkmale von Autos annehmen: Schatten anderer
Hindernisse wie Fußgängern oder Kanten von Häusern, Schildern oder Fahrbahnmakierungen etc..
Deswegen wird die Hypothese unter Betrachtung bestimmter Merkmale einem Klassifikator
(oftmals Neuronale Netze, Support Vektor Machines, oder Bayes) unterworfen, welcher
abschließend möglichst verlässlich ihre Identität klären soll.

                                                    2
1.2   Ein paar Worte zu dieser Arbeit

Es exisitieren nur wenige frei verfügbare, bewährte wissenschaftliche Arbeiten und geprüfte
Veröffentlichungen (beispielsweise von Automobilherstellern) zu diesem Thema, welche einen
nötigen Detailgrad aufweisen, welcher eine Realisierung im Umfang eines Seminars möglich
machen würde.

Die Quelle
Diese Arbeit stützt sich bei der Generation der Hypothese (HG) auf einen technischen Report von
Christian Goerick vom Institut für Neuroinformatik in Bochum (siehe Quellen [1] und [2]), welcher
eine Methode names „Local Orientation Coding“ (LOC) vorstellt. Dieser Ansatz fußt auf
Letzterem der obigen Merkmale aus 1.1, d.h. er versucht Autos anhand deren horizontalen und
vertikalen Kanten zu detektieren.

Der folgende Aufbau
Im folgenden Kapitel 2 wird im Zuge der Generierung der Hypothese (HG) somit auf die
theoretische Funktionsweise der LOC-Methode eingegangen. Kleinere Abweichungen werden aber
schon bei der Anwendung des Operators auftreten, wenn es darum geht potentielle Autos
einzurahmen.

Die eingrahmten Bildregionen müssen wie beschrieben in einem zweiten Schritt verifiziert werden
(HV). Abweichend von obigem Report wird dazu statt eines Neuronalen Netzes ein
Bayes-Klassifikator herangezogen. Das Kapitel 3 wird dazu die nötigen Implementierungsdetails
verraten.

Abschließend wird in Kapitel 4 auf die Stärken und Schwächen des LOC-Operators eingegangen.
Probleme, welche während der Implementierung, der Klassifikation und des Testens auftraten
werden diskutiert und münden in ein abschließendes Fazit.

Technische Details
Der gesamte Algorithmus wurde in Java (1.6.003, Version 6 Update 3) mit der Netbeans
Entwicklungsumgebung (Version 5.51) unter Windows XP implementiert und liegt dieser Arbeit als
Quellcode bei.
Zur nötigen Bildverarbeitung wurde auf die Java-Bibliothek JAI (Java Advanced Imaging,
Version 1.1.3) zurückgegriffen. Sie ist für die Ausführung des Programms unabdingbar.
Die Wahl dieser Bibliothek beruht auf der Unterstützung mehrer Bildformate und auf der
einfachen Verfügbarkeit diverser Bildverarbeitungsoperatoren wie Schärfung, Glättung,
Ausschneiden, Skalieren und Farbkonvertierungen im Zuge der Implementierung, des Testens
und der Optimierung.

                                                3
Kapitel 2           Hypothesis Generation - Local Orientation Coding

Der LOC-Ansatz ist ein Detektor für Kanten in einem Grauwertbild sowie deren Richtung.
Kanten in einem Bild sind Regionen in denen es starke Schwankungen bei Grauwerten gibt.
Das bedeutet: Der Operator berechnet zum Bild eine Matrix, in welcher starke Änderungen
benachbarter Grauwerte in grobe vier Richtungen (0° bzw. 360°, 90°, 180° und 270°) durch ein
Label markiert werden, welches zudem noch Informationen über die Orientierung der Kante gibt.
Homogene Bereiche im Bild ohne starke Unterschiede zwischen benachbarten Bildpunkten werden
somit aussortiert.

Im besten Fall sollte sich also das Auto mit all seinen auffälligen Kanten wie einleitend beschrieben
durch besonders viele Markierungen in der LOC-Matrix bemerkbar machen.

2.1   Der LOC-Operator im Detail – Die Labels

Sei zunächst ein Grauwertbild (MxN-Bildmatrix) I gegeben mit Grauwert I(m,n) an den
Koordinaten m und n mit dem Ursprung (0,0) oben links im Bild.

Anders als bei dem üblichen Kantendetektor per Gradientenbildung findet bei der LOC-Operation
keine Faltung statt. Es wird lediglich über das Bild iteriert und Pixel werden verglichen:
Für jeden Pixel (dem sogenannten Referenzpixel R) im Bild wird ein Vergleich mit seinen vier
Nachbarn (oben, unten, links, rechts) angestrebt. Ist der Unterschied im Grauwert groß genug, d.h.
die Distanz der Grauwerte größer als ein vorgegebener Grenzwert t, so wird R als Kantenpunkt
durch ein Label aus einer 3x3-Label-Matrix analog zur Pixelrichtung des Nachbarn von R = I(r,c)
aus markiert:

                                                                                            
                    I(m-1, n)                                                        0 1 0
 Nachbarschaft: I(m, n-1) R I(m, n+1)                      LOC-Label-Matrix: L =       2 R 4
                   I(m+1, n)                                                         0 8 0

Genügen mehrere Nachbarn dem Grenzwert t so werden die Labels aufaddiert:

Für eine Nachbarschaft N aus vier Pixeln (bzw. der Richtung der vier Nachbarpixel: links (0,-1),
rechts (0,1), oben (-1,0) und unten (1,0)) ergibt sich somit das Label

 I'(m,n) =     ∑
             (i,j) aus N
                           { L(i,j), falls I(m,n) - I(m + i,n + j)  t
                             0 , sonst                                 }
Daraus ergeben sich 16 verschiedene mögliche Labelmarkierungen (0 bis 15; insbesondere 0 für
homogene Regionen).

                                                            4
Hinsichtlich Autos interessieren uns nur horizontale und vertikale Kanten mit entsprechenden
Labels:
Horizontale Kanten: Die Pixel links und rechts sind im Grauwert ähnlich zu R, die Grauwerte
oben und/oder unten haben eine genügend große Distanz zu R. Dies entspricht Labelmarkierungen
1, 8 und (insbesondere) 9.
Vertikale Kanten: Die Pixel oben und unten sind im Grauwert ähnlich zu R, die Grauwerte links
und/oder rechts haben eine genügend große Distanz zu R. Dies entspricht Labelmarkierungen 2, 4
und (insbesondere) 6.

Dies vereinfacht den Prozess der HG: Man kann sich auf Markierungen 1,8,9 bzw. 2,4,6
beschränken wenn man sich auf die Suche nach den Fahrzeugen macht.

Eines fehlt noch: Es wurde häufig ein Grenzwert t genannt, welchen die Distanz zweier
benachbarter Grauwerte überschreiten muss. Wo kommt dieser Grenzwert her ? Der folgende
Abschnitt geht der Sache auf den Grund.

2.2   Der LOC-Operator im Detail – Thresholding

Der Grenzwert (Threshold) sagt aus wie signifikant eine Kante minimal sein muss um als solche
akzepiert zu werden. Er sorgt somit dafür, dass homogene Regionen mit nur schwachen
Grauwertschwankungen nicht als Kanten markiert werden.
Dazu bietet sich nun an die kleinste Grauwertdifferenz der am wenigsten signifikanten Kontur im
Bild herzunehmen. Es lohnt sich zudem präziserweise für alle vier (Kanten-)Richtungen einen
eigenen Grenzwert zu berechnen.
Dazu zählt man zunächst pro Kantenrichtung ((0,-1),(0,1),(-1,0),(1,0)) alle vorkommenden
Differenzen (-255 bis 255) mittels eines Histogramms H:
               M-1-i N-1-j
 H i,j (d) =   ∑∑
               m=0 n=0
                             {1,0, falls
                                   sonst
                                         I(m,n) - I(m + i,n + j) = d
                                                                     }
Ein Beispielhistogramm zeigt Abbildung 1.
Alle Histogramme weisen ähnliche Formen
auf, denn:
Die Anhäufung an der Differenz 0 kommt
durch (viele) homogene Regionen im Bild
zustande. Die weiteren (kleinen) Maxima
und Minima zeugen von vielen
unterschiedlichen Kanten im Bild.

Zur Bestimmung des Grenzwertes genügt es
die positiven Differenzen zu betrachten:
Die am wenigsten signifikante Kante ist
die kleinste Kante mit den geringsten
Grauwertdifferenzen. Dies ist äquivalent
zum ersten lokalen Minimum im                  Abbildung 1: Ein Histogramm der Grauwertdifferenzen
Histogramm rechts von 0. Die Differenz an
welcher das Minimum liegt soll der Grenzwert für die Richtung (i,j) werden.

                                                              5
Die positiven Differenzen der Gegenrichtung (-i,-j) entsprechen den negativen Differenzen der
Hinrichtung (i,j). Das bedeutet:
Es genügt es für die Gegenrichtung (-i,-j) das den Betrag des erstes Minimums links von 0 zu
suchen. Es müssen also lediglich zwei Histogramme berechnet werden um alle vier Grenzwerte zu
bestimmen.

2.3   Der LOC-Operator im Detail – Die Ausführung

Führt man nun abschließend die Erkenntnisse aus 2.1 und 2.2 zusammen so ergibt sich folgende
Rechenvorschrift für eine LOC-Label-Matrix mit sämtlichen Label-Markierungen:

 I Label (m,n) =
                    i   j
                                 {
                   ∑ ∑ L(i,j) ⋅ 1,
                                0,
                                     I(m,n) - I(m + i,n + j)  t(i,j)
                                     sonst                              } (i,j) Richtungen aus Nachbarsch. N
Wobei t die Grenzwert-Matrix ist mit t(i,j) = Grenzwert in Richtung (i,j).
Man erhält also eine neue Matrix I' mit Werten zwischen 0 und 15.

Das folgende Beispiel (Abbildung 2) illustriert dies nun anhand einer Autobahnszene samt
Labelbild in welchem alle für diese Arbeit interessanten horizontalen Labels (1,8,9) und vertikalen
Labels (2,4,6) schwarz markiert wurden:

                            Abbildung 2: Autobahnaufnahme und angewandter LOC-Operator

Man erkennt an diesem Beispiel:
Horizontale und vertikale Strukturen wie die Autos aber auch Straßenlaternen und Leitplanken und
zum Teil Bäume werden wie geplant hervorgehoben.
Homogene Regionen wie der Himmel oder die Straße enthalten wenige bis gar keine derartige
Kanteninformationen.

Der LOC-Operator hat seine Arbeit getan. Nun gilt es in dem erhaltenen Kantenbild die Autos
aufzuspüren.
Es folgt nun die Generation der Hypothese.

                                                       6
2.4   Generation der Hypothese – Wo sind die Autos ?

Von nun an wird es in dieser Arbeit spezieller:
Diese Implementierung des Algorithmus ist auf Aufnahmen der Quelle[5] abgestimmt worden. Der
Erfolg der Methode hängt nun stark von der weiteren Parametrisierung ab, welche wiederum auf
der Montage der Kamera (Position, Blickwinkel etc.) und der Qualität des Bildmaterials beruht .

Standardmäßig werden die Bilder zunächst von ihrer Anfangsgröße von 800x600 Pixeln auf
400x300 Pixel skaliert.

Die Suche nach den Autos kann nun beginnen:
Die Idee hinter dem LOC-Operator ist wie eingangs erwähnt, die Detektion von Fahrzeugen anhand
wiederholt auftretender horizontaler und vertikaler Strukturen.
Es bietet sich also nun an die berechnete Label-Matrix ILabel nach dem Auftreten der Labels 1,8,9
und 2,4,6 zu durchsuchen:
Vorab gilt es somit horizontale Labels zeilenweise und vertikale Labels spaltenweise zu zählen.
Dies geschieht ähnlich wie beim Thresholding in 2.2 durch Histogramme.
D.h. es werden berechnet:
Zeilenhistogramm: 3x300-Matrix , welche für jede Zeile die Anzahl an Labels 1,8 und 9 enthält.
Spaltenhistogramm: 3x400-Matrix, welche für jede Spalte die Anzahl an Labels 2,4 und 6 enhält.
Da nur zwischen honizontal und vertikal unterschieden wird, werden Anzahlen die in den
Histogrammen der Einfachheit halber zu 1x300- bzw. 1x400-Matrizen (-Vektoren) aufaddiert.

Eine Region um ein potentielles Auto ist sinnvollerweise rechteckig, d.h. sie besteht aus vier
Grenzen (untere, obere, linke und rechte Grenze). Deshalb gliedert sich das Finden dieser Region in
vier Schritte:

Finde zuerst die untere Grenze
Suche im Zeilenhistogramm von unten nach oben nach der ersten Zeile, wessen Anzahl horizontaler
Labels einem Grenzwert genügt. Anschaulich ist dieser Grenzwert also die minimale Breite (in
Pixeln), die ein Auto aufweisen soll. Da die Autos, je höher sie im Bild auftauchen, immer kleiner
werden bietet es sich dabei an diesen Grenzwert dynamisch in Abhängigkeit von der betrachteten
Zeile zu veranschlagen: In etwa ein Fünftel oder ein Zehntel des Zeilenindexes hat sich bewährt
(bei Zeile 200 also z.B. 40 oder 20 Pixel).
Aufgrund der Kameraposition (zu sehen z.B. in Abbildung 2 oben) kann man bei der Suche die
Bereiche im unteren Fünftel (Motohaube) und der oberen Hälfte (Himmel) unangetastet lassen.

Finde die obere Grenze
Die obere Grenze lässt sich erfahrungsgemäß schätzen: Ein Auto ist in der Regel ungefähr so hoch
wie breit. Deshalb liefert die oben erhaltene minimale Breite in der Regel die passendsten Höhen
und besten Ergebnisse.

Finde die linke Grenze
Analog zur unteren Grenze wird nun das Spaltenhistogramm nach einer dem Grenzwert
genügenden Spalte duchsucht. Doch zunächst ist etwas zu beachten: Damit senkrechte Störobjekte
wie beispielsweise Schilder, Häuser oder Laternen das Ergebnis nicht verfälschen wird das
Spaltenhistogramm erst jetzt berechnet und zwar eingeschränkt auf den Bildbereich zwischen der
oberen und unteren Grenze; die Störfaktoren der weiteren Umgebung werden also ausgeblendet.
Analog zu den Überlegungen bei der oberen Grenze wird hier der Grenzwert auf die minimale
Breite gesetzt.

                                                 7
Finde zuletzt die rechte Grenze
Diese findet sich genauso wie die linke Grenze: Es wird die nächste dem Grenzwert genügende
Spalte im (eingschränkten) Spaltenhistogramm hergenommen.
Es lässt sich bei der Suche auch erst ein Stück nach der linken Grenze beginnen (geschätzt durch
die minimale Breite, oder deren Hälfte).

Die Region ist nun komplett
Sie wird aus der oberen linken Koordinate (obere und linke Grenze) sowei Breite (rechte – linke
Grenze) und Höhe (untere – obere Grenze) zusammengesetzt.

Finde weitere Regionen
Dieser Vorgang soll sich nun wiederholen, denn es sollen schließlich mehrere potentielle Auto im
Bild entdeckt werden:
Starte ab einer unteren Grenze eine weitere Suche bis die Bildmitte (in der Regel etwa der Himmel)
erreicht wird.
Suche für jedes Paar aus oberer und unterer Grenze jeweils alle möglichen Paare aus linken und
rechten Grenzen. D.h. wiederhole deren Suche nach einer gefundenen rechten Grenze von dort aus
bis maximal zum rechten Bildende.

Überprüfe jede Region
Jede gefundene Region wird einigen Tests unterzogen um falsche Prognosen herauszufiltern:
Ist die Region nicht entartet (d.h. Höhe/Breite ≥ 0.6 und umgekehrt) ? Dies soll Regionen
ausschließen, welche beispielsweise viel breiter als höher sind und umöglich ein normales Auto
umschließen können.
Überlappt sie sich mit vorherigen Regionen ? Ähnelt eine gefundene Region stark einer vorherigen
(bereits verifizierten) Region so wird sie ausgelassen.

Und nicht zuletzt die Frage aller Fragen:

Enthält diese Region überhaupt ein Auto ?

Darauf wird im folgenden Kapitel 3, der Verifikation der Hypothese, detailliert eingegangen.

Es sei jedoch zunächst noch Zeit für ein Beispielergebnis in Form von Abbildung 3:

Die Szene aus Abbildung 2 wurde auf
potentielle Autostandorte abgesucht.
Alle gefundenen wurden Regionen wurden rot
eingezeichnet, jedoch wurde ihnen die
abschließende Verifikation verwehrt.
Viele der gefundenen Regionen gerade im
Bereich der Leitplanken links und rechts sind
aufgrund ihrer ebenfalls auffälligen horizontalen
und vertikalen Strukturen Fehlprognosen.

Eine möglichst verlässliche Verifikation soll sie
nun im besten Fall enttarnen und aussortieren.
                                                        Abbildung 3: Potentielle Autostandorte

                                                    8
Kapitel 3      Hypothesis Verification – Der Bayes-Klassifikator

Die Ausgangssituation ist nun die Folgende:
Das Bild wurde durch den LOC-Operator gejagt. Daraufhin wurde die entstandene Label-Matrix
einem Such-Algorithhmus unterworfen, welcher eine potentielle Anwärter-Region auf ein Auto
liefert. Die Gefahr eines Irrtums ist groß, sodass ein Klassifikation nun entgültig sagen soll:
Gehört diese Region zur Klasse der Autos (C1) oder zur Klasse der Umgebung (C2) ?
Dies macht ein Bayes-Klassifikator.

3.1 Wieso Bayes ?

Hier weicht diese Arbeit am Stärksten vom LOC-Bericht ab. Dort wurde die Klassifikation durch
ein Neuronales Netz vorgenommen. Die Wahl des Bayes-Klassifikators ist vor Allem auf
Übersichtlichkeit und Nachvollziehbarkeit zurückzuführen:
Die berechneten Bayes-Parameter lassen leichter Rückschlüsse auf die Trainigsdaten zu, die
Überwachung des Trainings und der Klassifikation fällt damit viel leichter als bei einem
Neuronalen Netz mit bis zu 500 Neuronen (siehe LOC-Bericht [1]).
Tatsächlich aufgetretene Fehler bei Mittelwert- und Varianzbildung beispielsweise sind so während
der Trainigsphase früh aufgefallen und behoben worden.
Dies schien in Anbetracht dieser Seminararbeit und der alleinigen Arbeit daran schließlich von
entscheidendem Vorteil zu sein.

3.2   Bayes – Die Stichprobe

Der Klassifikator braucht Trainigsdaten entsprechend seiner Klassen.
Das bedeutet hier, dass als Samples sowohl Bilder von Autos (von hinten und von vorne) als auch
typische Bilder aus der Umgebung von Autos ihren Weg ins Trainig fanden:
Insgesamt 330 Trainingsbilder. 180 davon von Autos (100 Front- und 80 Heckaufnahmen) und 150
von diversen Umgebungsobjekten wie Straßen (mit und ohne Fahrbahnmarkierungen), Büschen und
Bäumen, Fußwegen, usw..
Alle diese Bilder sind Auschnitte von Bildern (128x128 Pixel groß) aus einer Internetdatenbank von
CBCL (Center for Biological and Computational Learning, siehe Quelle [6]) welche 512 (Groß-)
Aufnahmen von Fahrzeugen umfasst.
Ausschnitte bedeutet, dass explizit Autos (bzw. Teile von Ihnen) umrahmt und ausgschnitten
wurden. Ebenso gezielt Objekte aus deren Umgebung. Die Ausschnitte wurden stets standardmäßig
auf eine Größe von 50x50 Pixeln skaliert.

3.3   Bayes – Die Merkmale

Den Grundgedanken weiterführend, dass sich Autos durch systematische horizontale und vertikale
Strukturen auszeichnen, bietet es sich an als Merkmale für das Trainig wie für die Klassifiaktion die
LOC-Spalten- und Zeilenhistogramme (wie aus Kapitel 2 2.4 bekannt) herzunehmen. Sie enthalten
nämlich genau die Informationen überdie Verteilung von Kanten im Bild. Der besseren
Unterscheidung zwischen Umgebung und Fahrzeug wegen werden hier sogar alle Labels
berücksichtigt. Denn im besten Falle sieht das Szenario wie folgt aus:
Ein Auto weist vorwiegend homogene Flächen (Label 0) und vertikale wie horizontale Kanten
(Labels 1,8,9 bzw, 2,4,6) auf. Fremde Umgebungsobjekte sollten dagegen noch mehr homogene
Bereiche und/oder vielfältigere Kanten (-richtungen) besitzen, d.h. einerseits eine stärkere
Anhäufung 0-wertiger Regionen und andererseits eine breitere Streuung verschiedenster
Labels 1 bis15.

                                                  9
3.4   Bayes – Das Training

Das Training besteht beim Bayes-Klassifikator aus der Schätzung zweier Wahrscheinlichkeiten
samt Parameter anhand der Stichprobe:

Zum Einen P(Ci): Der Wahrscheinlichkeit für das Auftreten von Klasse Ci (i = 1,2).
Diese Wahrscheinlichkeit erhält man aus der Anzahl verwendeter Samples:
             Anzahl Samples aus Klasse C i
 P(C i ) =
                Größe der Stichprobe

In diesem Fall also:
                  180                               150
  Auto: P(C1 ) =          und Umgebung: P(C 2 ) =
                  330                               330

Des Weiteren p(x|Ci): Der (klassenbedingten) Wahrscheinlichkeit für das Auftreten eines
Merkmals x bei Vorgabe von Klasse Ci (i = 1,2).

Es wird angenommen, dass p(x|Ci) der Normalverteilung entspricht, also im eindimensionalen Fall:
                                         2

 p(x|Ci ) =
                 1
             2  i
                       exp−
                             2    
                             1 x - i
                                 i
                                                (i = 1,2)

wobei  i =  Ei {(x - i ) 2 } die Standardabweichung und i=E i {x} der Mittelwert der
Klasse Ci ist.

Die Merkmale sind wie oben beschrieben das Zeilenhistogramm und das Spaltenhistogramm;
beides 16x50-Matrizen (16 Labels 0-15 bei einer (Standard-) Bildgröße von 50x50 Pixeln).
Der Klassifikator soll zeilen- bzw. spaltenweise mit den Daten trainiert werden. d.h. man hat es
zunächst mit einer 16-dimensionalen Normalverteilung zu tun.
Nun lässt sich jedoch annehmen, dass die Verteilung der Labels, das heißt das Vohandensein
verschiedener Kanten im Bild unabhängig voneinander geschieht: Da wir entweder nur horizontale
bzw. vertikale Kanten erwarten (Auto) oder gar nichts Spezielles (die unvorhersehbare Umgebung)
sagt das Vorhandensein der einen Kantenrichtungen nichts über das Auftreten der anderen
Kantenrichtungen aus.
Bezieht man diese Erkenntniss auf den Merkmalsvektor x ∈ℕ16 so lässt sich sagen, dass xi und xj
aus x statistisch unabhängig sind.
Die 16-dimensionale Normalverteilung zerfällt damit in ein Produkt von 16 eindimensionalen
Normalverteilungen p(xj|Ci) (j = 1,...,16).

Es müssen im Trainig also abschließend für die eindimensionalen Normalverteilungen folgende
Parameter je Klasse Ci bestimmt werden:
Ein Mittelwertsvektor i∈ℝ 16 und ein Vektor mit Standardabweichungen  i ∈ℝ16 .
Jeweils getrennt für Zeilen und Spalten.
                                                  1
Zudem sieht man, dass auch der erste Term                im weiteren Verlauf konstant ist und somit
                                              2  i
ebenfalls als ein Vektor t i ∈ℝ 16 vorberechnet werden kann.
Alle diese Daten werden schließlich in externe Dateien abgespeichert.
Darauf wird dann nun im Folgenden die Klassifikation zugreifen.

                                                 10
3.5   Bayes – Die Klassifikation

Nun befindet man sich wieder mitten im Programm: Es gilt eine Bildregion zu klassifizieren.

Diese Region wird zunächst aus dem Bild ausgeschnitten. Um Varianzen bei der Größe des
Auschnitts zu verhindern und eine gute Vergleichsmöglichkeit zu den Trainigsdaten zu bewahren
wird auch er auf die Standardgröße von 50x50 Pixeln skaliert.
Es werden noch die Merkmale benötigt: Es gilt dazu analog zum obigen Training die 50x50-Label-
Matrizen und anschließend die 16x50-Zeilen- und Spaltenhistogramme zu berechnen.
Für jede Zeile und Spalte x wird gemäß der allgemeinen Bayes-Klassifikations-Regel errechnet zu
welcher Klasse (Auto oder Umgebung) sie am wahrscheinlichsten zuzuordnen ist:

x gehört eher zu einem Auto: x ∈ C1 ⇔ p(x | C 1 ) ⋅ P(C1 )  p(x | C 2 ) ⋅ P(C 2 )
x gehört eher zur Umgebung: x ∈ C2 ⇔ p(x | C2 ) ⋅ P(C2 )  p(x | C 1 ) ⋅ P(C1 )

Man erhält also 100 Zuweisungen.
Werden mindestens 85 Merkmale der Auto-Klasse zugewiesen so bleibt die Region erhalten, mit
der Hoffnung, dass sich in ihr ein Fahrzeug (oder ein Teil dessen) befindet. Ansonsten wird die
Region verworfen.

3.6   Bayes – Ein Ergebnis

Man erinnere sich an die Abbildung 3 aus dem 2. Kapitel (2.4).
Dort wurden alle möglichen Regionen gesucht und eingezeichnet, ungeachtet jeglicher Verifikation
durch Bayes.

Die rechte Abbildung 4 zeigt nun denselben
Vorgang mit dem Unterschied, dass jede Region,
sobald sie gefunden wurde, durch Bayes einem
Fahrzeug oder einem Umgebungsobjekt
zugeordnet wurde. Falsche Prognosen wurden
nun korrekt aussortiert.
In diesem Fall haben also die Regionen um die
Leitplanken die Verifikation nicht überlebt.
Es bleiben lediglich wie gewünscht die drei
markierten Autos zurück.

                                                      Abbildung 4: Regionen nach der Bayes-Klassifikation

Die Arbeit für dieses Bild ist damit getan, die Autos wurden gefunden.
Doch wie verlässlich arbeitet der Algorithmus ?
Unter welchen Umständen könnten Probleme auftreten ?
Wie sicher filtert der Bayes-Klassifikator die falschen Regionen heraus ?

Diese und weitere Fragen werden im anschließenden Kapitel 4 diskutiert.
Es folgt ein Erfahrungsbericht.

                                                 11
Kapitel 4      Diskussion – Erfahrungen mit der Detektion von Fahrzeugen

Der Algorithmus ist mit Abschluss von Kapitel 2 und 3 nun komplett. In Java implementiert, wurde
er unter verschiedenen Bedingungen und an vielen (Autobahn-) Aufnahmen (siehe Quelle [5])
ausprobiert und unter diversen Konfigurationen getestet.
Ein solches System, welches dem Fahrer im Straßenverkehr helfen soll, seine Aufmerksamkeit
unterstützt und Unfällen vorbeugen soll muss vor allem verlässlich und robust sein. Viele nicht oder
erst spät detektierte Autos machen das System unnötig oder gefährlich. Falsche Warnungen oder
Hinweise können irritieren, falsches Verhalten im Verkehr provozieren und machen es wenig
vertrauenswürdig und ebenso gefährlich.
Es folgen nun einige Erkenntnisse über die Stärken und Schwächen des LOC-Operators und des
Bayes-Klassifikators.

4.1   Erfahrungen mit Local Orientation Coding

Der LOC-Algorithmus spielt mit seiner Label-Matrix sowohl bei der Generierung der Hypothese
(HG), der Suche der potentiellen Standorten von Autos, als auch bei ihrer Verifikation (HV), bei der
Auswahl von Merkmalen, die zentrale Rolle. Er bringt allerdings Probleme mit sich:

Eine starke Anfälligkeit für Fehlprognosen während der HG
Der LOC-Autodetektor legt es auf die systematischen horizontalen und vertikalen Strukturen von
Autos an. Eine typische Straßen oder Autobahnszene ist üblicherweise gespickt mit Objekten
ähnlicher Strukturen wie beispielsweise Häuser, Fahrbahnmakierungen, Straßenlaternen,
Leitplanken, Bäume, Schilder oder Schatten.
Abbildung 5 zeigt ein LOC-Label-Bild (horizontale Labels 1,8,9 und vertikale Labels 2,4,6
schwarz markiert) einer recht komplexe Beispielszene:

                      Abbildung 5: HG-Fehlprognosen einer komplexen Autobahnszene

Links ist noch mittig ein weißer Wagen zu erkennen, sogar mit recht deutlichen Kanten. Im Label-
Bild rechts ist er, selbst für das menschliche Auge, nahezu verschwunden. Die Bäume im
Hintergrund weisen starke Grauwertdifferenzen und damit starke Kanten auf. Ebenso die
Leiplanken. Prompt sind auch die Hypothesen alle fehlerhaft: Regionen am Pfeiler und Schild links,
an den Leitplanken und Fahrbahnmarkierungen sollen angeblich ein Auto enhalten. Ein Auto könnte
allenfalls durch Zufall gefunden werden.
Erst, wenn das Auto näher in den (nahezu) Kantenfreien vorderen Straßenbereich rückt könnte es
Chancen auf eine Detektion haben.

                                                 12
Und dort finden sich auch die Stärken des LOC-Operators:
Fahrzeuge auf naher bis mittlerer Distanz haben oftmals die größten Chancen gefunden zu werden.

Eine Idee für eine erfolgreichere und umfassenderere Detektion wäre es Objekte abseits der
Fahrbahn gar nicht erst bei der Generierung der LOC-Labels zu beachten:
Die Einbindung eines Algorithmus zur Fahrbahnerkennung könnte helfen falsche Kanten entstehen
zu lassen, wodurch weniger falsche Regionen ermittelt würden und sich Fahrzeuge besser von
Hintergrund abhöben.

Schwierigkeiten und Sensibilität bei der Konfiguration der Parameter
Abschnitt 2.4 des zweiten Kapitels deutet es an: Die Generierung sinnvoller Hypothesen hängt sehr
stark von einigen Parameter ab. Ab welchem Grenzwert werden untere, linke und rechte Kanten als
solche akzeptiert ? Einige Grenzwerte bringen manchmal in bestimmten Situationen bessere
Ergebnisse als Andere. Setzt man sie zu hoch an werden einige Autos mit undeutlichen Kanten
vielleicht übergangen. Sind sie zu niedrig findet man zu viele falsche Regionen (siehe im Abschnitt
oben über die Anfälligkeit). Da Straßenszenen unterschiedlich komplex sind (von leeren
Landstraßen bis zu Autobahnen oder Stadtszenen mit diversen Streckenobjekten) ist es sehr schwer
sich auf eine konkrete Berechnung der Grenzwerte festzulegen.
Gerade die linken und rechten Grenzen können da gelegentlich problemtisch sein, denn Autos haben
zwar oftmal glatte obere und untere Kanten sind aber links und rechts manchmal leicht abgerundet
oder etwas schräg; gerade wenn die etwas geneigt zur Kamera stehen. Klare und starke vertikale
Kanten sind in diesen Fällen eher rar.
Siehe dazu ein Beispiel in Abbildung 6
rechts. Man schaut leicht seitlich auf das
Auto und es hat schräge Kanten. Im Label-
Bild rechts sind alle vertikalen Labels
(2,4,6) schwarz markiert. Eine Detektion
einer rechten und speziell einer linken
Grenze ist sehr schwierig.
Will man dieses Auto finden muss der            Abbildung 6: Schwere Detektion anhand vertikaler Kanten
Grenzwert entsprechend großzügig
angesetzt werden, was dazu führt, dass eventuell viele Hypothesen gebildet werden, welche die
Verifikation vor eine große Herausforderung stellen und das Risiko für Fehlklassifikationen
erhöhen.
Bei der Suche nach den unteren Grenzen ist zudem zu beachten, dass die Kanten von entfernten
Autos manchmal geradezu verschwindend klein werden. Auch hier muss, will man genügend
Fahrzeuge finden, der Grenzwert teilweise großzügig berechnet werden.
Zudem ergibt sich bei den unteren Grenzen ein weiters Problem, welches nun folgt.

Schatten
Im ersten Abschnitt schon als falsche Kanten angesprochen, beherbergen sie noch anderes
Fehlerpotential:
Schatten können während der HG mit ihren Kanten zwar einerseits bei der Suche der unteren
Grenze der Region helfen, werden sie jedoch zu groß lassen sie die unteren Kanten der
(im speziellen dunklen) Autos manchmal verschwinden. Regionen um Autos beginnen so
manchmal (wenn überhaupt) erst in der Mitte des Fahrzeugs in etwa auf Höhe der Stoßstange.
Dies Verzerrt die Regionen um ein Auto und kann eine richtige Verifikation und genaue
Markierung behindern.

                                                  13
Abbildung 7 rechts gibt ein Beispiel.
Durch die schwarze Lackierung und den
Schatten taucht im Labelbild eine deutliche
untere Kante erst in Höhe des
Nummernschildes auf. Die detektierte
Region markiert demnach nur einen Teil des
Autos.
                                                         Abbildung 7: Detektion bei Schatten
Der LOC-Operator kann somit gerade mit
sehr sonnigen oder hell beleuchteten, schattigen
Bildern (oder mit dunklen Autos samt Schatten) Probleme haben (für sehr dunkle- oder
Nachaufnahmen ist er, als Kanten-Detektor natürlich von Natur aus nicht geeignet).
Die besten Ergebnisse gab es oftmals bei bewölkten Aufnahmen am (späten) Nachmittag.
Eine Kombination von LOC und einem Detektor von Fahrzeugen anhand deren Schatten
wäre durchaus denkbar und sinnvoll um die Ergenisse zu verbessern.

Perspektivische Schwierigkeiten
Der LOC-Operator legt es auf horizontale und vertikale Kanten an. Somit kann es bei Autos, welche
leicht schräg zur Kamera stehen zu Detektionsfehler kommen. Fahrzeuge auf (leichten)
Erhebungen/Vertiefungen oder in Kurven oder schlicht quer zur Kamera stehende oder fahrende
Autos können eventuell einer Detektion entgehen, da die Label-Matrix zu wenige Kanten aufweist.
Ähnliche Fehler können duch wackelige Aufnahmen entstehen. Perspektivische
Veränderungen/Verzerrungen können im Extremfall (kurzzeitig) die sensible Parametrisierung der
HG (siehe oben) stören.
Der LOC-Operator liefert somit auf geradlinigen Fahrbahnen wie zum Beispiel Autobahnen die
zuverlässigsten Ergenisse.
(Es sei in diesem Zusammenhang kurz anzumerken, dass diese Arbeit auf Standbildern von
Autobahnszenen (siehe Quelle [5]) optimiert wurde.)
Zudem müssen die Parameter für die Generierung der Hypothese (siehe Kapitel 2, 2.4) stets für jede
neue Kameraperspektive neu konfiguriert und getestet werden um sinnvolle Ergebnisse zu liefern.

4.2   Erfahrungen mit der Bayes-Klassifikation

Die Wichtigkeit des Klassifikators und seine Herausfordeurng steht und fällt mit der Qualität des
Detektors während der Generation der Hypothese. Je nach den oben beschriebenen
Problemsituationen können die übergebenen zu klassifizierenden Regionen schonmal sehr zahlreich
oder nur sehr klein sein (Auschnitte des Fahrzeugs wie die Windschutzscheibe oder eine Tür etc.).
Auch der Klassifikator kann dabei Probleme haben:

Schwierigkeiten beim Training
Fahrzeuge: Die zu detektierenden Fahrzeuge zeichnen sich zwar oftmals durch klare horizontale
und vertikale Strukturen aus. Nichtsdestotrotz sind deren Variationen sehr zahlreich. Sie
unterscheiden sich je nach Fahrzeugtyp in ihrer Form und ihrer Höhe und die Ansicht, ob von vorne
oder von hinten, offenbart oftmals verschiedene Strukturen. Sehr rundliche Fahrzeuge machen
sowohl die Detektion als auch die Verifikation nicht sehr einfach. Speziallfälle wie Busse oder
Lastwagen sind schon bei der HG Themen für sich und wurden bei dieser Arbeit auch nicht
berücksichtigt.
Die Auswahl und der Umfang der Trainingssamples ist somit recht aufwändig.

                                               14
Umgebung: Wie trainiert man Objekte, die schon in ihren Kategorien praktisch beliebig sind ? Man
kann beim Training nur auf typische Streckenobjekte wie in Kapitel 3 (3.2) beschrieben
zurückgreifen. Es ist jedoch unmöglich bei einem vielfältigen Einsatzgebiet des Detektors (gerade
beispielweise innerhalb von Städten) der Vielzahl der Streckenrandobjekte gerecht zu werden.
Man könnte dem jedoch beispielsweise entgegenwirken indem man vor der Verifikation wie zu
Anfang in 4.1 beschrieben (z.B. Fahrbahndetektion) möglichst gut die Umgebung um die Fahrbahn
herum ausblendet und möglichst viele exakte Hypothesen bildet. Der Klassifikator und damit das
Training würde entlastet.

Schwierigkeiten bei der Klassifikation
Rundliche oder schräg zur Kamera stehende Fahrzeuge können wie bei der HG in 4.1 auch hier
Schwierigkeiten bereiten: Die Merkmalsvektoren der Spaltenhistogramme können in Extremfällen
nur wenige Hinweise auf vertikale Strukturen liefern. Dies kann die Klassifiaktion
verfälschen.
Ein weiteres Problem ist auch ein Ähnliches wie bei der HG: Viele Streckenrandobjekte weisen im
schlimmsten Fall ähnlich viele horizontale und vertikale Strukturen auf wie die Fahrzeuge selbst.
Da hier auch die Merkmalsbildung auf diesen Strukturen beruht, kann es manchmal schnell zu
Fehlklassifikationen kommen.
Die Merkmale sind schlicht nicht ausreichend. Denn sie beschreiben zwar die Fahrzeuge gut, aber
manchmal ebenso gut falsche Objekte. Es ist letztendlich für eine genügende Verlässlichkeit des
Klassifikators notwendig weitere fahrzeugspezifische Merkmale (Schatten, Symmetrie,
Textur etc., siehe Einleitung Kapitel 1) miteinzubeziehen.
Eine Kombination verschiedener Ansätze könnte auch hier wieder sinnvoll sein.

4.3   Die Performance – Eine Echtzeit-Anwendung ?

Der Algorithmus ist für den Einsatz im Straßenverkehr gedacht. Er wird konsequent mit
Bildmaterial aus Videoaufnahmen der Fahrbahn gespeist. Das bedeutet, dass die Detektion der
Autos möglichst in Realzeit ablaufen muss um Veränderungen im Bild (das Auftauchen von Autos)
schnell zu erkennen und häufige Updates liefern zu können.

Die Generation der Hypothese mit LOC kommt dem ausreichend nache:
Die Labels sind schnell gebildet, es wird schließlich nur mehrmals über das Bild iteriert: Vergleich
aller Nachbarn pro Pixel, sowie Berechnung der Histogramme im Zuge der Grenzwertbildung
(siehe Kapitel 2, 2.1 und 2.2). Ein Aufwand von O(MN), bei einer Bildgröße von MxN Pixeln.
Bei auftretenden Bildern der Standardgrößen von 400x300 (einmalig pro Detektionsvorgang) und
50x50 Pixeln (in der Regel mehrfach) eine schnelle Angelegenheit.
Das Suchen der Bildregionen ist schwerer zu kalkulieren, hängt es doch stark von der Komplexität
des Bildes ab, wie viele Grenzen gefunden werden. Im schlimmsten Falle werden für jeden Pixeln
zwei Histogramme der Höhe bzw. Breite des Bildes durchsucht. Ein maximaler Aufwand im
Bereich von O(M ∙ N ∙ (M + N)) = O(M2 ∙ N + M ∙ N²).
Die Größe des Bildes macht sich tatsächlich bemerkbar: Nach Versuchen mit Bildausmaßen
von 666x 500, 533x400, 200x100 und 400x300 Pixeln (ursprünglich 800x400) schien Letzteres der
beste Kompromiss aus nötiger Bildqualität und Geschwindigkeit zu sein.
Der LOC-Operator liefert tatsächlich Ergebnisse in Sekundenbruchteilen und kann sich in Realzeit-
Anwendungen behaupten.

                                                 15
Die Verifikation bremst den Vorgang:
Das stete Ausschneiden der Bildregionen sowie deren Skalierung auf 50x50 Pixeln (bei bilinearer
Interpolation) für jede Verifikation benötigt schnelle Bildverarbeitungsalgorithmen.
Und deren Herausforderung schwankt sehr stark mit der Komplexität des Bildes: Einfach
aufgebaute Szenen mit nur wenigen horizontalen Strukturen sorgen nur für wenige Auto-Prognosen
und einer Verifikation in Real-Zeit, bei komplexeren Szenen können es durchaus Dutzende sein,
was die Berechnungszeit dementsprechend beeinträchtigt. Dabei hat auch der LOC-Operator
während der HG eine Verantwortung, welcher er aber nicht immer nachkommen kann, wie es sich
in 4.1 herausstellte.
Die Verifikation dieser Implementierung erfüllt somit oftmals leider keinen Echtzeit-Anspruch.
Alternative Wege wie das direkte Skalieren der Spalten- und Zeilenhistogramme aus der HG-Phase,
könnten den Vorgang eventuell beschleunigen, schafften es aber nicht mehr in diese
Implementierung.

4.4   Das Fazit

Der LOC-Operator als Kanten-Detektor eignet sich gut für einfache Aufnahmen, d.h. auf planer
Fahrbahn mit wenigen Störfaktoren am Streckenrand. Wenn dazu noch die Lichtsituation gemäßigt
ist, werden Fahrzeuge auf naher bis mittlerer Entfernung recht zuverlässig und nahezu in Echtzeit
erkannt.
Für komplexere Szenarien muss der Ansatz jedoch mit anderen Methoden kombiniert werden um
sichere und verlässlichere Ergebnisse zu erzielen.
Und das ist schließlich unabdingbar für einen sicheren Einsatz im Straßenverkehr.

                                               16
Quellenverzeichnis

[1]   Christian Goerick,
      „Local Orientation Coding and Adaptive Thresholding for Real Time Early Vision“

[2]   Christian Goerick, Michael Brauckmann,
      „Local Orientation Coding and Neural Network Classifiers with an Application to Real Time
      Car Detection and Tracking“

[3]   Zehang Sun, George Bebis, Ronald Miller,
      „On-Road Vehicle Detection: A Review“

[4]   Xiaoyi Jiang,
      Folien zur Vorlesung Mustererkennung im WS 06/07, Kapitel 4 und 5

[5]   Das Programm wurde getestet und optimiert mit Bildern von http://www.autobahn-bilder.de/

[6]   Der Klassifikator wurde trainiert mit Bildern aus der Datenbank
      http://cbcl.mit.edu/cbcl/software-datasets/CarData.html
      des „Center for biological and Computational Learning“ (kurz CBLC). Zu finden unter
      http://cbcl.mit.edu/cbcl/index.html

      (Es sei aber erwähnt, dass sämtliche Abbildungen aus der Java-Implementation dieser Arbeit
      stammen und eigens angefertigt wurden.)

                                               17
Sie können auch lesen