Stummel Anwenden von KI auf die Echtzeit-Videoverarbeitung: Die Grundlagen und mehr – Unite.AI
Vernetzen Sie sich mit uns

Vordenker

Anwenden von KI auf die Echtzeit-Videoverarbeitung: Die Grundlagen und mehr

mm

Veröffentlicht

 on

Von Maksym Tatariants, Daten Wissenschaft Ingenieur bei MobiDev.

Der Einsatz künstlicher Intelligenz (KI) in der Videoverarbeitung ist nichts Neues. Wenn Sie über die Bildverarbeitung hinausblicken, handelt es sich um einen der häufigsten Anwendungsfälle für KI. Und genau wie die Bildverarbeitung nutzt auch die Videoverarbeitung etablierte Techniken wie Computer Vision, Objekterkennung, maschinelles Lernen und Deep Learning, um diesen Prozess zu verbessern. 

Ob Sie Computer Vision und NLP verwenden Videobearbeitung und Generierung, Objekterkennung in Automatisches Tagging von Videoinhalten Aufgaben, maschinelles Lernen zur Rationalisierung KI-Videoanalyse, oder Deep Learning zur Beschleunigung in Echtzeit Hintergrund entfernen, die Anwendungsfälle nehmen von Tag zu Tag zu.

Lesen Sie weiter, um zu erfahren, welchen Ansatz Sie beim Einsatz von KI in der Videoverarbeitung wählen können.

Die Grundlagen der Echtzeit-Videoverarbeitung

Beginnen wir mit den Grundlagen. Die Echtzeit-Videoverarbeitung ist eine wesentliche Technologie in Überwachungssystemen, die Objekt- und Gesichtserkennung nutzen. Es ist auch der Prozess der Wahl, der KI-Software für die visuelle Inspektion im Industriesektor antreibt.

Wie funktioniert also die Videoverarbeitung? Die Videoverarbeitung umfasst eine Reihe von Schritten, darunter Dekodierung, Berechnung und Kodierung. Folgendes müssen Sie wissen:

  • Dekodierung: Der Prozess, der erforderlich ist, um ein Video von einer komprimierten Datei zurück in sein Rohformat zu konvertieren.
  • Berechnung: Ein spezifischer Vorgang, der an einem Rohvideoframe ausgeführt wird.
  • Encoding: Der Prozess der Rückkonvertierung des verarbeiteten Frames zurück in seinen ursprünglichen komprimierten Zustand.

Das Ziel jeder Videoverarbeitungsaufgabe besteht nun darin, diese Schritte so schnell und genau wie möglich abzuschließen. Die einfachsten Möglichkeiten, dies zu erreichen, sind: Paralleles Arbeiten und Optimieren des Algorithmus im Hinblick auf Geschwindigkeit. In einfachen Worten? Sie müssen die Dateiaufteilung und die Pipeline-Architektur nutzen.

Was ist das Aufteilen von Videodateien?

Durch die Aufteilung von Videodateien können die Algorithmen gleichzeitig arbeiten und somit langsamere, genauere Modelle verwenden. Dies wird dadurch erreicht, dass Videos in separate Teile aufgeteilt werden, die dann gleichzeitig verarbeitet werden.

Sie können sich die Videoaufteilung als eine Form der Generierung virtueller Dateien und nicht als Generierung von Unterdateien vorstellen. 

Dennoch ist die Aufteilung von Videodateien nicht die beste Option für die Echtzeit-Videoverarbeitung. Warum genau? Dieser Vorgang macht es für Sie schwierig, anzuhalten, fortzufahren und zurückspulen eine Datei, während sie verarbeitet wird.

Was ist Pipeline-Architektur?

Die andere Option ist die Pipeline-Architektur. Dieser Prozess dient dazu, die während der Verarbeitung ausgeführten Aufgaben aufzuteilen und zu parallelisieren, anstatt das Video vollständig aufzuteilen.

Hier ist ein kurzes Beispiel dafür, wie die Pipeline-Architektur in der Praxis aussieht und wie sie in einem Videoüberwachungssystem verwendet werden kann, um Gesichter in Echtzeit zu erkennen und unkenntlich zu machen.

In diesem Beispiel hat die Pipeline die Aufgaben in Dekodierung, Gesichtserkennung, Gesichtsunschärfe und Kodierung aufgeteilt. Und wenn Sie die Geschwindigkeit der Pipeline verbessern möchten, können Sie Pipeline verwenden Deep-Learning-Techniken.

Dekodierung und Kodierung erklärt

Was ist mit Dekodierung und Kodierung? Es gibt zwei Möglichkeiten, diese Prozesse abzuschließen: Software und Hardware.

Möglicherweise kennen Sie das Konzept der Hardwarebeschleunigung bereits. Möglich wird dieser Vorgang durch Decoder und Encoder, die in den neuesten NVIDIA-Grafikkarten sowie den CUDA-Kernen verbaut sind.

Welche Optionen stehen Ihnen also zur Verfügung, wenn es um die Hardwarebeschleunigung für die Kodierungs- und Dekodierungsprozesse geht? Hier sind einige der beliebtesten Optionen:

  • Kompilieren Sie OpenCV mit CUDA-Unterstützung: Das Kompilieren von OpenCV mit CUDA optimiert sowohl die Dekodierung als auch alle Pipeline-Berechnungen, die OpenCV verwenden. Bedenken Sie, dass Sie sie in C++ schreiben müssen, da der Python-Wrapper dies nicht unterstützt. Aber in Situationen, in denen sowohl eine Dekodierung als auch numerische Berechnungen mit einer GPU ohne Kopieren aus dem CPU-Speicher erforderlich sind, ist dies immer noch eine der besseren verfügbaren Optionen.
  • Kompilieren Sie FFmpeg oder GStreamer mit Unterstützung für NVDEC/NVENC-Codecs: Eine weitere Option besteht darin, den integrierten NVIDIA-Decoder und -Encoder zu verwenden, der in benutzerdefinierten Installationen von FFmpeg und Gstreamer enthalten ist. Wir empfehlen jedoch nach Möglichkeit die Verwendung von FFmpeg, da es weniger Wartung erfordert. Außerdem basieren die meisten Bibliotheken auf FFmpeg, was bedeutet, dass Sie die Leistung der Bibliothek automatisch steigern, indem Sie sie ersetzen.
  • Verwenden Sie das NVIDIA Video Processing Framework: Die letzte Option besteht darin, einen Python-Wrapper zu verwenden, um den Frame direkt in einen PyTorch-Tensor auf der GPU zu dekodieren. Mit dieser Option entfällt das zusätzliche Kopieren von der CPU zur GPU.

Gesichtserkennung und -unschärfe

Objekterkennungsmodelle (SSDs oder RetinaFace) sind eine beliebte Option zur Vervollständigung der Gesichtserkennung. Diese Lösungen dienen dazu, das menschliche Gesicht in einem Rahmen zu lokalisieren. Und basierend auf unserem ERFAHRUNGEN , neigen wir dazu, die Modelle Caffe Face Tracking und TensorFlow Objekterkennung zu bevorzugen, da sie die besten Ergebnisse lieferten. Darüber hinaus sind beide über die OpenCV-Bibliothek verfügbar DNS-Modul.

Wie geht es also weiter, nachdem ein Gesicht erkannt wurde? Als nächstes die Python und OpenCV-basiertes System wird zeigen Begrenzungsrahmen und Erkennungssicherheit. Abschließend wird ein Unschärfealgorithmus auf die zugeschnittenen Bereiche angewendet.

Wie können Sie eine KI-gestützte Live-Videoverarbeitungssoftware erstellen?

Es ist kein Geheimnis, dass die Videoverarbeitung, die zugrunde liegenden Codecs sowie die erforderliche Hardware und Software ziemlich technischer Natur sind.

Das bedeutet jedoch nicht, dass Sie diese Tools nicht zum Erstellen Ihrer eigenen Live-Videoverarbeitungssoftware verwenden können. 

Hier ist eine kurze Aufschlüsselung dessen, was Sie tun müssen:

  1. Passen Sie zunächst Ihr vorab trainiertes neuronales Netzwerk an, um die erforderlichen Aufgaben zu erfüllen.
  2. Konfigurieren Sie Ihre Cloud-Infrastruktur für die Videoverarbeitung und skalieren Sie sie nach Bedarf.
  3. Bauen Sie einen Software-Anwalt auf, um den Prozess zu verkürzen und spezifische Anwendungsfälle wie mobile Anwendungen und Admin- oder Web-Panels zu integrieren.

Die Entwicklung eines MVP für eine ähnliche Videoverarbeitungssoftware kann mit einem vorab trainierten neuronalen Netzwerk und einfachen Anwendungsschichten bis zu vier Monate dauern. Umfang und Zeitplan hängen jedoch von den Details des jeweiligen Projekts ab. In den meisten Fällen ist es sinnvoll, mit der Proof-of-Concept-Entwicklung zu beginnen, um die Projektspezifika zu erkunden und einen optimalen Ablauf zu finden.

Maksym ist daran interessiert, neue Erkenntnisse und Erfahrungen in den Bereichen Data Science und maschinelles Lernen zu sammeln. Sein besonderes Interesse gilt Deep-Learning-basierten Technologien und deren Anwendung auf Geschäftsanwendungsfälle.