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.
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.
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.
Der Code ist ziemlich einfach. Wir können ihn in ein paar Schritte unterteilen:
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:
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.