Computer VisionDeep LearningMachine LearningProject

Entwicklung eines selbstfahrenden Autos – Tag #2


Heute haben wir eine ganz simple Straßenschild-Erkennung basierend auf Neuronalen Netzen (Selective Seatch und Deep Convolutional Neural Networks, also ein RCNN2 Ansatz ) gebaut. Wir haben uns fürs Trainieren das “German Traffic Sign Detection Benchmark”1 geholt. Für das Neuronale Netz an sich benutzen wir Caffe.

Nachdem wir unser Netz auf das Datenset trainieren haben lassen, kamen dabei leider sehr unbefriedigende Ergebnisse raus, wie das nachfolgende Bild zeigt:

First Testimage

offensichtlich gibt es zwei große Probleme, welche man relativ eifnach erkennen kann. Das erste problem ist, dass das Netz ungefähr 100 “Round About” Schilder findet, sogar wenn die Region relativ schwarz ist. Das zweite Problem ist das falscherkannte Tempolimit-Schild.
Der Grund dafür, dass das Netz überall ein “Round About”-Schild sieht, ist relativ schnell gefunden gewesen. Wenn man sich das Trainingsset einmal näher anschaut, fallen nämlich zwei Sachen sofort auf:

  • Das komplette Trainingsset beinhaltet beinahe keine Trainingssamples mit geringer Helligkeit
  • Es gibt nur genau acht verschiedene “Round About”-Schilder im kompletten Datenset. Erschwerend kommt hinzu, dass eines dieser Schilder ausgerechnet relativ dunkel ist:

Man sieht also sehr schön, dass eines der acht “Round About”-Schilder sehr dunkel ist und zusätzlich ziemlich schwer zu erkennen. Diese Tatsache plus der Tatsache, dass das komplette Datenset kaum dunkle Samples beinhaltet, lässt das CNN logischerweise verrückt spielen und überall “Round About”-Schilder sehen. Wir werden versuchen diese Herausforderungen zu meistern, indem wir unser eigenes Datenset erstellen und mit dem “German Traffic Sign” Datenset kombinieren. Dieses Datenset werden wir nach der Zensur von Gesichtern/Nummernschildern auch hochladen und zur freien Verfügung stellen.

Das zweite erwähnte Problem war das falsch erkannte Tempolimit und nach einem Überfliegen der aktuell benutzten CNN-Struktur erscheint mir der Ursprung des Problems klar. Das Netz reduzierte die Dimensionen des Eingabebildes zu stark (3 Convolutional + 4 Inception Layers; Input: 64×64 –> 32×32 –> 16×16 –> 8×8 –> 4×4 –> 2×2). Da wir das Netz aus einem anderem Projekt (Eingabegröße: 200×200 px) mit nur minimalen Anpassungen übernommen haben, war uns diese Reduktion und die damit verbundenen Probleme nicht aufgefallen. Für morgen plane ich das Netz etwas anzupassen (overall two times pooling; 2 Convolutional + 3 Inception Layers but more filters per layer) und hoffe auf erste vielversprechende Ergebnisse!

Ich freue mich wirklich extrem auf die ersten richtigen und erfolgreichen Test!


1.
German Traffic Sign Benchmarks. INI. //benchmark.ini.rub.de/?section=gtsdb&subsection=dataset. Accessed February 23, 2017. [Source]
2.
Girshick R, Donahue J, Darrell T, Malik J. Rich feature hierarchies for accurate object detection and semantic segmentation. In: Proceedings of the IEEE conference on computer vision and pattern recognition (p. 580-587); 2014.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.