Masterarbeit @ PRIP-Preis Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten Michael Rauter Pattern Recognition and Image Processing Group Institute of Computer Aided Automation Betreuer: Martin Kampel Kontakt: michael.rauter@chello.at
Motivation und Zielsetzung 1 Performance Optimierung Bessere Tracking-Ergebnisse, dank höherer Videoauflösungen mehr Details, kleinere Objekte können erkannt werden höherer Bildwiederholraten zu trackende Objekte örtlich näher in aufeinanderfolgenden Bildern Mehr Zeit für andere Berechnungsschritte Komplexere Algorithmen möglich Michael Rauter 1 03.12.2007
Motivation und Zielsetzung 2 Object tracking für PAL D1 Video (768 576 3) @ 25 fps Video < 768 576 3 @ 25 fps: CPU Ressourcen werden frei Einsatz von state-of-the-art Algorithmen Echtzeitfähigkeit (gemäß obiger Def.) bei konventioneller serieller CPU Programmierung nicht gegeben (< 3 fps) Argument des Wartens auf bessere Hardware in der Industrie nicht haltbar (Zeitdruck) keine zusätzlichen Kosten (etwa durch DSPs, Spezialhardware) repräsentative Algorithmen (modularisiert austauschbar) Michael Rauter 2 03.12.2007
Methoden und Lösungsansätze 1 Ausgelagerte Algorithmen, Berechnungen auf dem Grafikprozessor (GPU) Multi-Threading für die Ausnutzung mehrerer CPU- Kerne einer Multi-Core CPU Bestmögliche Verwendung beider Prozessoren Auswahl geeigneter Algorithmen für Umsetzung auf der GPU Restliche Algorithmen, weitere Berechnungen auf der CPU Verfolgen des Ansatzes einer ineinander verzahnten Abarbeitungsreihenfolge durch Multi-Threading Michael Rauter 3 03.12.2007
Methoden und Lösungsansätze 2 Warum wurde dieser Ansatz verfolgt? Bisher: Performance-Steigerung eines Bildverarbeitungssystems durch gemeinsame Nutzung von Grafikkarten und Multi-Threading nicht untersucht Bedarf an wissenschaftlicher Abhandlung des Themas Ansatz für einen industriellen Einsatz interessant Brachliegende Ressourcen nutzen (Grafikkarte, CPU-Kerne) Kostenersparnis Absolviertes Praktikum am PRIP zum Thema Bildverarbeitung auf der Grafikkarte als Ausgangsbasis für die Masterarbeit Michael Rauter 4 03.12.2007
Verwendung der Grafikkarte Effiziente Nutzung der Grafikkarte für: Bewegungserkennung + Schatten/Glanzlicht Detektion Post-processing: Morphologische Operationen Pre-processing für den Tracking Algorithmus Momentbild-Berechnung für Integralbild-basierenden Mean Shift Tracker Michael Rauter 5 03.12.2007
Verwendung der CPU CPU wird für alle restlichen Aufgaben verwendet Datenerfassung Object tracking auf den GPU-verarbeiteten Bildern Mean Shift Tracker basierend auf Integralbildern Data association inklusive der Regionsbestimmung Suche neuer Objekte im gesamten Bild (keine Portale) Visualisierung der Ergebnisse Michael Rauter 6 03.12.2007
Bewegungserkennung Algorithmen 1 Hintergrund-Modellierung im IHLS-Farbraum ermöglicht Klassifizierung von Pixel eines neuen Bildes in Vordergrund- oder Hintergrundpixel Schatten- und Glanzlicht-Erkennung und Entfernung Michael Rauter 7 03.12.2007
Object Tracking Algorithmen 2 Mean Shift Tracker basierend auf Integralbildern Mean Shift Iteration: nur 10 arithmetischen Operationen und 12 Array-Zugriffen nötig Integralbild-Berechnung nur einmal pro Bild Connected Components Analysis Algorithmus Regions-Segmentierung und -Labeling Region-Labeling mittels Konturverfolgung lineare Laufzeit Ergebnis ist eine Liste von Regionen + Attribute (id, Position, Breite, Höhe, Pixelanzahl) Michael Rauter 8 03.12.2007
Multi-Threading 1 Implementierung des Multi-Threaded Systems Pipeline model (Fließbandarbeit) festgelegte Verarbeitungskette Thread reicht Rechenergebnis nächstem Thread weiter Zusammenspiel der Threads im System Michael Rauter 9 03.12.2007
Multi-Threading 2 Vergleich: Verarbeitung der Input-Bilder Serielle Abarbeitung der Berechnungsschritte Parallele Abarbeitung der Berechnungsschritte Michael Rauter 10 03.12.2007
Programmiersprachen und Bibliotheken Programmierung: C, C++ Graphics-API: OpenGL Shader-Programmierung: Cg Bibliotheken Glut, Glew (OpenGL-Context, -Extensions) Boost::Thread (Multi-Threading) OpenCV (grundlegende Bild/Videoverarbeitung) Gtk+ (Graphical User Interface) unter Windows XP entwickelt, aber alle tools & libraries auch für Linux erhältlich Michael Rauter 11 03.12.2007
Resultate Das Object Tracking System Video zur Demo-Applikation Michael Rauter 12 03.12.2007
Resultate - Performance 1 Trackt 100+ Objekte in Echtzeit Suche für neue Objekte im ganzen Bild Mehr als 30 fps für ein Video mit 768 576 pixel und 3 Farbkanälen (CPU-Last: ~64%) (Testsystem: Intel Core2 6300, Geforce 7950 GT) Speed-up um mehr als den Faktor 9.5 (im Vergleich zur optimierten (OpenCV-SSE- Unterstützung) Single-Core CPU Implementierung) Michael Rauter 13 03.12.2007
Resultate - Performance 2 Michael Rauter 14 03.12.2007
Resultate - Performance 3 Michael Rauter 15 03.12.2007
Resultate - Performance 4 Michael Rauter 16 03.12.2007
Ausblick und mögliche Verbesserungen Zu erwartende Hardwareentwicklungen Mehr Flexibilität bei der GPU-Programmierung Bessere Performance sowohl bei CPUs als auch GPUs mehr CPU-Kerne pro CPU (Multi-Threading zwingend nötig) Verbesserungspotential noch komplexere Algorithmen einsetzen gaussian mixture model für Hintergrund-Modellierung occlusion handling: Verdeckungsprobleme lösen multi-model approach multi-camera approach Michael Rauter 17 03.12.2007