Vordenker
Anwendung von KI bei der Echtzeit-Videoverarbeitung: Grundlagen und mehr

Von Maksym Tatariants, Data-Science-Ingenieur bei MobiDev.
Es gibt nichts Neues daran, künstliche Intelligenz (KI) bei der Videoverarbeitung zu verwenden. Wenn man über die Bildverarbeitung hinausgeht – einem der häufigsten Anwendungsbereiche für KI – verwendet die Videoverarbeitung etablierte Techniken wie Computer-Vision, Objekterkennung, maschinelles Lernen und Deep Learning, um diesen Prozess zu verbessern.
Ob Sie Computer-Vision und NLP bei der Videobearbeitung und -erstellung, Objekterkennung bei der Automatischen Videobeschriftung oder maschinelles Lernen zur Optimierung der KI-Videanalyse oder Deep Learning zur Beschleunigung der Hintergrundentfernung in Echtzeit verwenden, die Anwendungsbereiche wachsen täglich.
Lesen Sie weiter, um zu erfahren, welchen Ansatz Sie bei der Verwendung von KI in der Videoverarbeitung verwenden können.
Die Grundlagen der Echtzeit-Videoverarbeitung
Lassen Sie uns mit den Grundlagen beginnen. Die Echtzeit-Videoverarbeitung ist eine wesentliche Technologie in Überwachungssystemen, die Objekt- und Gesichtserkennung verwenden. Es ist auch der Prozess, der die KI-Visionssoftware in der industriellen Branche antreibt.
Wie funktioniert also die Videoverarbeitung? Die Videoverarbeitung umfasst eine Reihe von Schritten, die Decodierung, Berechnung und Kodierung umfassen. Hier ist, was Sie wissen müssen:
- Decodierung: Der Prozess, der erforderlich ist, um ein Video von einer komprimierten Datei in sein rohes Format zurückzuwandeln.
- Berechnung: Eine bestimmte Operation, die auf einem rohen Videoframe ausgeführt wird.
- Kodierung: Der Prozess, der den verarbeiteten Frame wieder in seinen ursprünglichen komprimierten Zustand zurückwandelt.
Nun ist das Ziel jeder Videoverarbeitungsaufgabe, diese Schritte so schnell und genau wie möglich abzuschließen. Die einfachsten Möglichkeiten, dies zu erreichen, sind die parallele Verarbeitung und die Optimierung des Algorithmus für Geschwindigkeit. In einfachen Worten? Sie müssen Dateiaufteilung und Pipeline-Architektur nutzen.
Was ist die Aufteilung von Videodateien?
Die Aufteilung von Videodateien ermöglicht es den Algorithmen, gleichzeitig zu arbeiten und langsamerere, genauere Modelle zu verwenden. Dies wird erreicht, indem Videos in separate Teile aufgeteilt werden, die dann gleichzeitig verarbeitet werden.
Sie können die Videodateiaufteilung als eine Form der virtuellen Dateigenerierung betrachten, anstatt der Generierung von Unterdateien.
Trotzdem ist die Aufteilung von Videodateien nicht die beste Option für die Echtzeit-Videoverarbeitung. Warum genau? Dieser Prozess macht es schwierig, eine Datei zu pausieren, fortzusetzen und zurückzuspulen, während sie verarbeitet wird.
Was ist die Pipeline-Architektur?
Die andere Option ist die Pipeline-Architektur. Dieser Prozess teilt und parallelisiert die Aufgaben, die während der Verarbeitung ausgeführt werden, anstatt die Videodatei einfach aufzuteilen.
Hier ist ein Beispiel für die Pipeline-Architektur in der Praxis und wie sie in einem Videosicherheitssystem verwendet werden kann, um Gesichter in Echtzeit zu erkennen und zu verschwimmen.
In diesem Beispiel hat die Pipeline die Aufgaben in Decodierung, Gesichtserkennung, Gesichtsverschwimmen und Kodierung aufgeteilt. Und wenn Sie die Pipeline-Geschwindigkeit verbessern möchten, können Sie Deep-Learning-Techniken verwenden.
Decodierung und Kodierung erklärt
Was ist mit der Decodierung und Kodierung? Es gibt zwei Möglichkeiten, diese Prozesse durchzuführen: Software und Hardware.
Sie sind vielleicht bereits mit dem Konzept der Hardware-Beschleunigung vertraut. Dieser Prozess wird durch Decodierer und Encodierer ermöglicht, die in den neuesten NVIDIA -Grafikkarten installiert sind, sowie durch die CUDA-Kerne.
Welche Optionen haben Sie also für die Hardware-Beschleunigung der Kodier- und Decodierprozesse? Hier sind einige der beliebtesten Optionen:
- OpenCV mit CUDA-Unterstützung kompilieren: Das Kompilieren von OpenCV mit CUDA optimiert sowohl die Decodierung als auch die Pipeline-Berechnungen, die OpenCV verwenden. Beachten Sie, dass Sie sie in C++ schreiben müssen, da der Python-Wrapper dies nicht unterstützt. Aber in Situationen, in denen sowohl Decodierung als auch numerische Berechnungen mit einer GPU ohne Kopieren von CPU-Speicher erforderlich sind, ist es immer noch eine der besseren Optionen.
- FFmpeg oder GStreamer mit NVDEC/NVENC-Codecs-Unterstützung kompilieren: Eine weitere Option ist die Verwendung des integrierten NVIDIA-Decoders und -Encoders, der in benutzerdefinierten Installationen von FFmpeg und Gstreamer enthalten ist. Wir empfehlen jedoch, FFmpeg zu verwenden, da es weniger Wartung erfordert. Außerdem werden die meisten Bibliotheken von FFmpeg angetrieben, was bedeutet, dass Sie die Bibliotheksleistung automatisch verbessern, indem Sie sie ersetzen.
- NVIDIA Video Processing Framework verwenden: Die letzte Option ist die Verwendung eines Python-Wrappers, um den Frame direkt in einen PyTorch-Tensor auf der GPU zu decodieren. Diese Option entfernt das zusätzliche Kopieren von der CPU zur GPU.
Gesichtserkennung und -verschwimmen
Objekterkennungsmodelle (SSDs oder RetinaFace) sind eine beliebte Option für die Gesichtserkennung. Diese Lösungen helfen, das menschliche Gesicht in einem Frame zu lokalisieren. Und basierend auf unserer Erfahrung bevorzugen wir die Caffe-Gesichtsverfolgung und die TensorFlow-Objekterkennung, da sie die besten Ergebnisse lieferten. Darüber hinaus sind beide mit der OpenCV-Bibliothek dnn-Modul verfügbar.
Was kommt also nach der Gesichtserkennung? Als Nächstes wird das Python- und OpenCV-basierte System Umrisslinien und Erkennungssicherheit anzeigen. Schließlich wird ein Verschwimmalgorithmus auf die zugeschnittenen Bereiche angewendet.
Wie können Sie KI-gesteuerte Live-Videoverarbeitungssoftware erstellen?
Es ist kein Geheimnis, dass die Videoverarbeitung, die Codecs, die sie antreiben, und die erforderliche Hardware und Software ziemlich technisch sind.
Trotzdem bedeutet das nicht, dass Sie diese Tools nicht verwenden können, um Ihre eigene Live-Videoverarbeitungssoftware zu erstellen.
Hier ist eine kurze Zusammenfassung dessen, was Sie tun müssen:
- Passen Sie zunächst Ihr vorgebildetes neuronales Netzwerk an, um die erforderlichen Aufgaben auszuführen.
- Konfigurieren Sie Ihre Cloud-Infrastruktur, um die Videoverarbeitung zu verarbeiten und wie erforderlich zu skalieren.
- Erstellen Sie eine Softwareanwendung, um den Prozess zu kondensieren und bestimmte Anwendungsfälle wie Mobile-Anwendungen und Admin- oder Web-Panel zu integrieren.
Die Entwicklung eines MVP für ähnliche Videoverarbeitungssoftware kann bis zu vier Monate dauern, wenn ein vorgebildetes neuronales Netzwerk und einfache Anwendungslayer verwendet werden. Die Reichweite und der Zeitplan hängen jedoch von den Details jedes Projekts ab. In den meisten Fällen ist es sinnvoll, mit der Entwicklung eines Proof-of-Concept zu beginnen, um die Projektspezifika zu erkunden und einen optimalen Ablauf zu finden.














