Brückenschlag zwischen Edge AI und Gesichtserkennung auf dem OrangePi 5

Ari Mahpour
|  Erstellt: November 27, 2024  |  Aktualisiert am: Januar 17, 2025
Brückenschlag zwischen Edge AI und Gesichtserkennung auf dem OrangePi 5

AI-Inferenz-Engines werden am Edge immer beliebter. Wir finden, dass maschinelle Lernalgorithmen und sogar große Sprachmodelle auf eingebettete Systeme im Hobby- und kommerziellen Bereich übertragen werden. In diesem Projekt werden wir einen Echtzeit-Gesichtsdetektor mit einem Orange Pi 5 bauen, der vom Rockchip 3588 Prozessor angetrieben wird. Das bedeutet, wir werden in Echtzeit menschliche Gesichter aus unserem Webcam-Video-Stream erkennen.

Projekteinrichtung

Um zu beginnen, werden wir einen Orange Pi 5, eine USB-Webcam und den Code in meinem öffentlichen Repository verwenden. Sie können sich auf Erste Schritte mit dem Orange Pi 5 und dem Rockchip RK3588 Prozessor beziehen, um Ihren Orange Pi 5 einzurichten. Das Tolle an diesem Beispiel ist, dass es auch auf einem PC oder einem anderen leistungsstarken eingebetteten Gerät, das Linux ausführt (z.B. Raspberry Pi 5), laufen kann. Nachdem Sie Ihren Orange Pi 5 (oder ein anderes Gerät) eingerichtet und in Betrieb genommen haben, müssen wir einige Bibliotheken installieren. Dieses Beispiel ist auf Linux ausgelegt (speziell auf Ubuntu), daher gehen wir davon aus, dass Sie Zugang zum Debian-Paketmanager haben. Führen Sie den folgenden Befehl in einem Terminal aus:

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

Dies wird alle notwendigen Pakete zur Ausführung der Demo installieren. Installieren Sie auch das OpenCV Python-Paket mit pip:

pip3 install opencv-python

Sie können auch die README konsultieren, um weitere Schritte zur Überprüfung Ihrer Einrichtung zu finden.

CPU vs. GPU vs. FPGA

In AI Vision mit dem Kria KV260 Vision AI Starter Kit haben wir demonstriert, wie man einen Gesichtserkennungs-AI-Inferenzmotor mit einem FPGA baut, aber die Komplexität war extrem hoch. In diesem Beispiel werden wir eine deutlich einfachere Methode zur Durchführung desselben Vorgangs erkunden. Dies ist einfacher, weil wir die Komplexität auf CPUs oder GPUs verlagern, die wir beide in diesem Artikel erkunden werden. Die wahre Schönheit liegt darin, wie gut OpenCV für unsere Computer optimiert ist. Die Verwendung der Bibliothek abstrahiert vollständig alle Maschinenlernkomplexitäten, die wir beim Versuch, unser eigenes neuronales Netzwerk auf einem FPGA zu bauen, erlebt haben.

Überblick über den Code und Ausführung des Projekts

Der Code ist ziemlich einfach. Wir können ihn in ein paar Schritte unterteilen:

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. Konfigurieren Sie OpenCL (d.h., bestimmen Sie, ob eine GPU verwendet wird).
  2. Laden Sie den Cascade Classifier
  3. Erfassen Sie den Videostream und stellen Sie ihn auf Graustufen ein
  4. Führen Sie den Cascade mit OpenCV aus
  5. Wenn ein Gesicht erkannt wird, zeichnen Sie einen blauen Kasten darum
  6. Wiederholen Sie die Schritte 3-5 in einer Schleife, bis die "Kill"-Bedingung erfüllt ist (z.B. Drücken von "q" oder Schließen des Pop-up-Fensters)

Die eigentliche Magie hierbei liegt im "Cascade Classifier", den wir mit OpenCV nutzen. Dies ist ein auf maschinellem Lernen basierendes Werkzeug zur Objekterkennung, das durch eine Reihe von zunehmend komplexen Stufen arbeitet (ähnlich dem Konzept eines neuronalen Netzwerks). Denken Sie daran wie an eine fein abgestimmte Montagelinie, bei der jede Stufe eine Aufgabe hat: spezifische Merkmale wie Kanten, Ecken oder Formen zu erkennen. Wenn ein Bereich des Bildes alle diese Inspektionskontrollpunkte besteht, dann wird er als erkanntes Objekt markiert. Wenn nicht, wird er frühzeitig verworfen, um Zeit und Rechenleistung zu sparen.

Ein Kaskadenklassifikator dreht sich alles um Geschwindigkeit und Effizienz. Er verwendet vordefinierte Merkmale (d.h. Muster wie Kanten oder Kontraste) und verarbeitet diese in Stufen, was ihn perfekt für Echtzeitaufgaben auf Geräten mit begrenzten Verarbeitungskapazitäten macht. Neuronale Netzwerke hingegen spielen in einer anderen Liga. Sie lernen automatisch Merkmale direkt aus den Daten, sodass sie komplexere und vielfältigere Szenarien bewältigen können. Diese Leistung hat jedoch ihren Preis: Neuronale Netzwerke benötigen deutlich mehr Rechenressourcen und Zeit. Kaskadenklassifikatoren sind schnell und leichtgewichtig, aber weniger flexibel, während neuronale Netzwerke robust, aber ressourcenhungrig sind. Es geht immer darum, das richtige Werkzeug für die Aufgabe zu wählen.

In unserem Fall verwenden wir ein vortrainiertes Modell, den Haar-Frontalgesichtsdetektor (in Form einer XML-Datei), der genau weiß, wonach er in einem Gesicht suchen und was er herausfiltern muss. Praktisch gesehen ist dies als einfaches Beispiel, das wir erkundet haben, gut genug. Wie oben erwähnt, wird es nicht so präzise sein, aber es ist immer noch gut genug für die meisten einfachen Gesichtserkennungsbeispiele.

Um den Code auszuführen, müssen Sie nur:

python3 face_detection.py --use-gpu

Oder lassen Sie die --use-gpu-Flagge weg, wenn Sie keine GPU auf Ihrem Gerät haben (d.h., Sie verwenden kein Orange Pi 5). An diesem Punkt sollte ein kleines Fenster aufpoppen und ein blaues Feld sollte über Ihrem Gesicht erscheinen. In meinem Fall tauchte sofort eines auf:

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
Abbildung 1: Echtzeit-Gesichtserkennung mit OpenCV und einer Webcam

Schlussfolgerung

Dieses Projekt demonstriert, wie zugänglich Echtzeit-Gesichtserkennung mit Werkzeugen wie OpenCV und Geräten wie dem Orange Pi 5 geworden ist. Durch die Nutzung des leichten und effizienten Cascade Classifiers (durch das Laden einer vortrainierten XML-Datei) haben wir ein funktionales Beispiel ohne die Komplexitäten von neuronalen Netzwerken oder FPGA-Programmierung erstellt. Obwohl dieser Ansatz seine Grenzen hat, wie z.B. den Umgang mit unterschiedlichen Beleuchtungen oder Winkeln, ist es ein perfekter Einstiegspunkt, um mit Edge AI zu experimentieren.

Mit nur wenigen Bibliotheken und minimaler Einrichtung können Sie dieses Projekt auf einem eingebetteten Gerät oder sogar einem Standard-PC replizieren. Da sich KI-Inferenz-Engines weiter verbessern, erwarten Sie, dass komplexere Modelle auf ressourcenbeschränkten Geräten laufen, was fortgeschrittene KI für alle zugänglicher macht. Um das Repository mit allen notwendigen Codes zum Starten zu besuchen, gehen Sie zu https://gitlab.com/ai-examples/orange-pi-face-detection.

Über den Autor / über die Autorin

Über den Autor / über die Autorin

Ari ist ein PCB-Designer mit umfassender Erfahrung in der Entwicklung, Herstellung, Prüfung und Integration verschiedener Softwaresysteme. Dabei bringt er leidenschaftlich gern Entwickler aus den Bereichen Design, Prüfung und Abnahme zusammen, um gemeinsam an Projekten zu arbeiten und diese voranzutreiben.

Ähnliche Resourcen

Verwandte technische Dokumentation

Zur Startseite
Thank you, you are now subscribed to updates.
Altium Need Help?