Optical Flow – Typische Anwendungsfälle
Optical Flow bietet Vorteile für Anwendungsfälle wie
- Objektverfolgung für intelligente Videoanalyse
- Videobildinterpolation, und Extrapolation
- Stereo-Tiefenschätzung
- Video-Aktionserkennung
Objektverfolgung für die intelligente Videoanalyse
Bis vor einigen Jahren erforderte die intelligente Videoanalyse (IVA) die physische Betrachtung und manuelle Analyse der aufgenommenen Videos. Dank der rasanten Entwicklungen im Bereich der Computer-Vision und Deep-Learning-Techniken ist ein Großteil dieser Analyse nun automatisiert. Die Identifizierung von Objekten/Personen/Fahrzeugen von Interesse auf dem Videomaterial von Sicherheitskameras und deren Verfolgung über die Videobilder hinweg kann mithilfe von Computer-Vision-Algorithmen erfolgen. Aufgrund der hohen Rechenkomplexität und der Anforderungen an die Parallelität sind Grafikprozessoren die ideale Plattform für die Ausführung dieser Anwendungen. Die gängigste Methode besteht darin, die Objekte/Personen/Fahrzeuge von Interesse in jedem Videobild zu erkennen und zu identifizieren und einen Algorithmus auszuführen, der die Objekte in aufeinanderfolgenden Bildern korreliert, um ihre Bewegung zu verfolgen. Diese Methode ist zwar genau, erfordert jedoch eine extrem hohe Rechenkomplexität, da die Objekterkennung/-identifizierung ein rechenintensiver Vorgang ist (in der Regel unter Verwendung neuronaler Netze).
Die Hardware Optical Flow Engine verringert die Anforderungen an die Rechenkomplexität erheblich, indem sie die Verfolgung von Objekten unterstützt. Sobald ein Objekt durch den Detektor erkannt/identifiziert wurde, kann es beispielsweise in aufeinanderfolgenden Videobildern durch einen Algorithmus verfolgt werden, der auf dem optischen Hardware-Fluss der GPU basiert. Dadurch muss der Erkennungsalgorithmus nicht mehr bei jedem Bild ausgeführt werden, was zu einer massiven Verringerung des Rechenaufwands führt. Der Detektor kann nun bei jedem K-ten Bild ausgeführt werden, ohne die Genauigkeit zu beeinträchtigen (K > 1, typischerweise K = 4). Dadurch bleiben die CUDA-Kerne des Grafikprozessors frei, um Inferenzen auf zusätzlichen Kanälen oder andere rechenintensive Aufgaben auszuführen.
Optical Flow SDK 2.0 enthält eine auf optischem Fluss basierende Objektverfolgungsbibliothek, zusammen mit Quellcode und gebrauchsfertiger API. In unseren Experimenten hat sich gezeigt, dass der auf optischem Fluss basierende Objekt-Tracker die GPU-Auslastung im Vergleich zu einigen der gängigsten Algorithmen um bis zu 80 % reduziert, ohne die Genauigkeit der Verfolgung zu beeinträchtigen.
Video-Frame-Interpolation und -Extrapolation
Optischer Fluss kann auch sehr effektiv für die Interpolation oder Extrapolation von Video-Frames in Echtzeit verwendet werden. Dies kann bei der Verbesserung der flüssigen Videowiedergabe, der Erstellung von Zeitlupenvideos oder der Verringerung der offensichtlichen Latenz bei VR-Erlebnissen nützlich sein, wie sie von Oculus verwendet werden (Details)
Die Optical-Flow-Funktionalität in Turing- und Ampere-GPUs beschleunigt diese Anwendungsfälle, indem sie die intensive Flussvektorberechnung auf eine dedizierte Hardware-Engine auf dem GPU-Silizium auslagert und so GPU- und CPU-Zyklen für andere Aufgaben freisetzt. Diese Funktionalität in der Hardware ist unabhängig von CUDA-Kernen.
FAQ
A: Nachdem Sie das SDK heruntergeladen haben, lesen Sie bitte die „ReadMe.txt“, in der die minimal erforderliche Anzeigetreiberversion aufgeführt ist. Sie müssen die richtigen Treiber installieren, sonst kann das SDK nicht gestartet werden, und dies ist das erste, was Sie überprüfen sollten, falls die Initialisierung fehlschlägt.
A: Die Client-Anwendung sollte die Fähigkeiten mithilfe der Fähigkeits-API abfragen, bevor eine Funktion aktiviert wird.
A: Wir empfehlen allen Anwendungsentwicklern dringend, vor dem Schreiben einer Anwendung die Programmierhandbücher im Detail zu lesen. Für einige Hinweise zu dieser Frage lesen Sie bitte insbesondere den folgenden Abschnitt in der Dokumentation:
- „Guidelines for Efficient Usage of NVOF API“ im NVOF API Programming Guide, enthalten im Optical Flow SDK
A: Das Optical Flow SDK bietet Beispiele, die speziell für eine optimale Leistung entwickelt wurden. Sie können die Leistung mit jedem der Beispiele messen.
A: Die NVOF-API stellt APIs zur Verfügung, mit denen Benutzer die vom zugrunde liegenden Treiber maximal unterstützten API-Versionen abfragen können. Je nach der vom Treiber maximal unterstützten API-Version kann die Anwendung zur Laufzeit Code starten, der mit der entsprechenden API kompiliert wurde.
A: Bitte lesen Sie den in der SDK-Dokumentation enthaltenen NVOFA-Anwendungshinweis, um eine Vorstellung von der Leistung zu erhalten. Die Leistung hängt von vielen Faktoren ab, von denen einige sind: Verwendete GPU und ihre Taktfrequenz, verwendete Einstellungen (z. B. Preset, Rastergröße und Funktionen wie ROI), verfügbare Speicherbandbreite, Anwendungsdesign.
Support
In unserer Forum-Community können Entwickler Fragen stellen, Erfahrungen austauschen und an Diskussionen mit NVIDIA und anderen Experten auf diesem Gebiet teilnehmen.
Sehen Sie sich die Foren hier an.
Zusätzliche Ressourcen
- NVIDIA Video Codec SDK
- DeepStream SDK für intelligente Videoanalyse
- Deep Learning Software
- GitHub – NVIDIA Optical flow in OpenCV
- GTC 2020 Session – NVIDIA Video Technologies: Video Codec und Optical Flow SDK
- GTC 2020 Session – Video Codec SDK und Optical Flow SDK auf NVIDIA GPUs effektiv nutzen
- NVIDIA DevBlog – 5. Dezember 2019 – OpenCV beschleunigen: Optical Flow Algorithmen mit NVIDIA Turing GPUs
- NVIDIA Developer News – 23. August 2019 – Forscher bei VideoGorillas nutzen KI, um archivierte Inhalte auf 4K-Auflösung und höher zu remastern
- Oculus Developer Blog – 23. Mai, 2019 – ASW und Passthrough+ mit NVIDIA Optical Flow
- NVIDIA DevBlog – 13. Februar 2019 – Eine Einführung in das NVIDIA Optical Flow SDK