Computer VisionDeep LearningMachine LearningProject

Entwicklung eines selbstfahrenden Autos – Tag #5 & #6


Endlich haben wir eine Architektur gefunden, welche ziemlich gut zu funktionieren scheint. Wir haben auch 1000 weitere Bilder annotiert. Insgesamt haben 3000 Schilder/Ampeln in unserem Datenset + 800 vom German Traffic Sign Detection Benchmark. Im nächsten Schritt haben wir einen ganzen Haufen an Data-Augmentation angewandt, um noch mehr Trainingssamples zu generieren (verschiedene jpeg-Kompressionen, Rotation zwischen -10° und 10°, Helligkeits + Kontrast Anpassungen, Color Balancing, …). Insgesamt kommen wir damit auf 600.000 positive Trainingsbilder, welche zusätzlich beim Trainieren mit Caffe-Standard-Methoden augmented werden.

Im Moment stehen wir jedoch zwei neuen Herausforderungen gegenüber:

  • Die Zeit, die Selective Search braucht, um Regionen von Interesse (= Regions of Interest) zu extrahiere, dauert ungefähr 2-5s (abhängig vom ausgewähltem Mode).
  • Das momentane CNN braucht auf einer CPU um 111 Rechtecke zu erkennen ungefähr 23s. Also 200ms pro Region (8ms pro Region bei der Verwendung der GTX 1060).

Das heißt, wenn iwr nicht deutlich an der Performance schrauben, würden wir ungefähr eine halbe Minute warten müssen pro Bild bis wir ein Ergebnis bekommen.
Das ist natürlich viel zu langsam. Unser Ziel war ja 1-2 FPS, was 500-1000ms pro Bild sind. Wenn man ein bisschen simple Mathematik anwendet sieht manr elativ schnell, dass man pro Bild 4-5 Rechtecke erkennen dürfte, um 1-2 FPS mit dem aktuellen CNN zu erreichen (wenn man die Zeit für Selective Search einmal ignoriert). Eine mögliche Lösung wäre ein mobile GPU-Device zu benutzen wie das NVIDIA Jetson Developer-Kit. Das dürfte die benötigte Zeit pro Region auf etwa 10-30ms reduzieren. Damit könnten wir in etwa fast alle 111 Regionen checken.

Trotzdem wollen wir natürlich weder neue Hardware kaufen, noch die Herausforderung an dieser Stelle abbrechen. Darum kommen wir um Alternativen nicht drum rum. Die aktuell besten Klassifizierungs-Ergebnisse liefern CNNs, damit gibt es keine wirkliche Alternative zu CNNs (Einige von euch denken im Moment vielleicht an das YOLO-Framework1 denken; Aber diese Herangehensweise liefert schlechtere Ergebnisse als Region-Poposal-Methoden). Das Erste, was wir morgen probieren werden, ist es das Netzwerk etwas kleiner zu gestalten, damit wir die benötigte Zeit auf der CPU für eine Region etwas runterschrauben können. 10-15 Regionen in ~750ms zu checken ist dabei unser Ziel für den Moment, weil wir damit noch genug Zeit zum Checken von “Nicht-Schild”-Regionen besitzen und gleichzeitig noch etwas Zeit für das Finden potentieller Regionen.

Jedoch selbst, wenn wir diese Herausforderung bewältige, bräuchte Selective Search alleine immer noch 2-5s. Selbst 2s sind dabei noch zu viel zu viel. Was das angeht müssen wir also wirklich über Alternativen nachdenken! Faster RCNN2 wäre dabei eine Möglichkeit. Zumindest auf den ersten Blick bei Näherem betrachten fällt auf, dass Faster RCNN nicht direkt schneller als Selective Search ist, sondern “nur” das Extrahieren der Regionen auf die GPU verlagert. Da wir aber unser CNN komplett auf der CPU laufen lassen wollen, ist das auch keine richtige Alternative.

In einem alten Projekt haben wir verbesserte Local Binary Patterns als Features hergenommen und eine simple SVM, um Menschen auf Bilder zu erkennen. Mit einem einfachen Sliding Window-Ansatz kamen wir dabei auf rund 1spro komplettes Bild mit der Größe von 1280×900, wobei die Resultate echt annehmbar waren.
In einem anderen alten Projekt haben wir Evolutionäre Algorithmen benutzt, um in riesigen Bildern schnell ähnliche Bereiche zu finden.

Beide Methoden zu kombinieren, wäre einen Versuch Wert. Eventuell können uns sogar Partikel Schwärme helfen bei dem Problem… Es bleibt eine Menge auszuprobieren die nächsten Tage! Damit wird der nächste Schritt Richtung Echtzeit-System gehen! Die Frage ist nur auf welche Art und Weise wir diese Herausforderung am effektivsten angehen!

1.
Redmon J, Divvala S, Farhadi A, Girshick R. You only look once: Unified, real-time object detection. In: Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (p. 779-788); 2016.
2.
Ren S, He K, Girshick R, Sun, J. Faster r-cnn: Towards real-time object detection with region proposal networks (p. 91-99). In: Advances in neural information processing systems; 2015.

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.