Connect with us

Vordenker

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

mm

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 – ist es einer der häufigsten Anwendungsfälle für KI. Und genauso wie bei der Bildverarbeitung 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 Video-Bearbeitung und -Generierung, Objekterkennung bei Video-Inhalt-Auto-Tagging-Aufgaben, maschinelles Lernen, um KI-Video-Analyse zu rationalisieren oder Deep Learning, um die Echtzeit-Hintergrundentfernung zu beschleunigen, die Anwendungsfälle wachsen von Tag zu Tag.

Lesen Sie weiter, um zu erfahren, welchen Ansatz Sie bei der Verwendung von KI bei 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 bevorzugte Prozess, der die KI-Visions-Software in der Industrie antreibt.

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

  • Dekodierung: Der Prozess, der erforderlich ist, um ein Video aus einer komprimierten Datei in sein rohes Format zurückzuwandeln.
  • Berechnung: Ein bestimmter Vorgang, der auf einem rohen Videoframe ausgeführt wird.
  • Kodierung: Der Prozess, den bearbeiteten Frame wieder in seinen ursprünglichen komprimierten Zustand zurückzuwandeln.

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: paralleles Arbeiten und Optimieren des Algorithmus für Geschwindigkeit. In einfachen Worten? Sie müssen Dateiaufteilung und Pipeline-Architektur nutzen.

Was ist Videodateiaufteilung?

Die Videodateiaufteilung ermöglicht es den Algorithmen, gleichzeitig zu arbeiten, und ermöglicht es ihnen, langsamere, 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 Subdateigenerierung.

Trotzdem ist die Videodateiaufteilung 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 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 das Video einfach aufzuteilen.

Hier ist ein schnelles 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 zu verschwimmen.

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

Dekodierung und Kodierung erklärt

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

Sie sind möglicherweise 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-Cores.

Welche Optionen stehen Ihnen also bei der Hardware-Beschleunigung für die Kodier- und Dekodierprozesse zur Verfügung? Hier sind einige der beliebtesten Optionen:

  • OpenCV mit CUDA-Unterstützung kompilieren: Das Kompilieren von OpenCV mit CUDA optimiert sowohl die Dekodierung 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 Dekodierung als auch numerische Berechnungen mit einer GPU ohne Kopieren aus dem 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 besteht darin, den integrierten NVIDIA-Decoder und -Encoder zu verwenden, der mit benutzerdefinierten Installationen von FFmpeg und Gstreamer geliefert wird. 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-Verarbeitungs-Framework verwenden: Die letzte Option besteht darin, einen Python-Wrapper zu verwenden, um den Frame direkt in einen PyTorch-Tensor auf der GPU zu dekodieren. Diese Option entfernt das zusätzliche Kopieren vom CPU zur GPU.

Gesichtserkennung und -verschwimmen

Objekterkennungsmodelle (SSDs oder RetinaFace) sind eine beliebte Option für die Gesichtserkennung. Diese Lösungen arbeiten daran, 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 über die OpenCV-Bibliothek dnn-Modul verfügbar.

Was kommt also nach der Gesichtserkennung? Als nächstes wird das Python- und OpenCV-basierte System zeigen Begrenzungsboxen und Erkennungskonfidenz. Schließlich wird ein Verschwimmalgorithmus auf die zugeschnittenen Bereiche angewendet.

Wie können Sie KI-gesteuerte Live-Video-Verarbeitungs-Software erstellen?

Es ist kein Geheimnis, dass die Videoverarbeitung, die Codecs, die sie antreiben, und sowohl die erforderliche Hardware als auch Software ziemlich technisch sind.

Trotzdem bedeutet das nicht, dass Sie diese Tools nicht verwenden können, um Ihre eigene Live-Video-Verarbeitungs-Software zu erstellen.

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

  1. Beginnen Sie damit, Ihr vorgebildetes neuronales Netzwerk anzupassen, um die erforderlichen Aufgaben abzuschließen.
  2. Konfigurieren Sie Ihre Cloud-Infrastruktur, um die Videoverarbeitung zu verarbeiten und wie erforderlich zu skalieren.
  3. Bauen Sie eine Software-Lawine, um den Prozess zu kondensieren und spezifische Anwendungsfälle wie mobile Anwendungen und Admin- oder Web-Panel zu integrieren.

Die Entwicklung eines MVP für ähnliche Video-Verarbeitungs-Software kann bis zu vier Monate dauern, wenn ein vorgebildetes neuronales Netzwerk und einfache Anwendungsschichten 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 Proof-of-Concept-Entwicklung zu beginnen, um die Projektdetails zu erkunden und einen optimalen Fluss zu finden.

Maksym ist darauf bedacht, neue Erkenntnisse und Erfahrungen in Data Science und Machine Learning zu gewinnen. Er ist besonders an Deep-Learning-basierten Technologien und ihrer Anwendung auf Geschäftsanwendungsfälle interessiert.