** * Dieser Artikel ist für den Ubuntu-Container (ubuntu_openvino_2020R3.tar) von AE2100. ** </ font>
――Dieser Artikel erklärt, wie Sie den OKI AI-Edge-Computer "AE2100" einrichten.
OpenVINO enthält Anwendungsquellen für Samples und Demos. Von diesen enthält Demos Anwendungen, die Beispiele für die Verwendung der Inferenz-Engine für verschiedene Anwendungsfälle sind (z. B. Schätzung der Körperhaltung von Personen, Objekterkennung, Gesichtserkennung, Schätzung der Sichtlinie usw.). Liste der Inference Engine-Demos
Dieses Mal werden wir Demos erstellen und ein Programm ausführen (Human Pose Optimization C ++ Demo), das die Haltung einer Person auf dem AE2100 schätzt. Details zur Demo "Human Pose Optimization"
Die wichtigste Änderung von "Lassen Sie uns das OpenVINO-Beispiel auf dem OKI AI-Edge-Computer" AE2100 "(2)" in diesem Artikel ausführen, der zum zweiten Mal in der Ubuntu-Version ausgeführt wird, ist das Erstellen von Demos. (OpenVINO2020 erfordert keine Bearbeitung von build_demos.sh oder ibcpu_extension.so mehr.)
Außerdem unterstützt human_pose_estimation_demo jetzt die asynchrone Ausführung. Daher vergleichen wir das Verhalten der synchronen Ausführung und der asynchronen Ausführung.
Die Containerversion von AE2100 lautet "ubuntu_openvino_2020R3.tar". Erstellen Sie Demos in der Entwicklungsumgebung und führen Sie sie auf dem AE2100 aus.
Informationen zum Aufbau der Entwicklungsumgebung finden Sie in der "SDK-Bedienungsanleitung der AE2100-Serie - Deep Learning Edition-" (Version: 1.2) S.10.
Bitte bereiten Sie 4 GB oder mehr Speicher für die Entwicklungsumgebung vor. Bitte beachten Sie, dass bei geringem Arbeitsspeicher der Build möglicherweise in der Mitte gestoppt wird.
Es wird davon ausgegangen, dass VcXsrv gemäß dem ersten Artikel auf dem Windows-PC installiert wurde. Lassen Sie uns das OpenVINO-Beispielprogramm auf der Ubuntu-Containerversion (1) des OKI AI-Edge-Computers "AE2100" ausführen.
Erstellen Sie Demos, die mit OpenVINO geliefert werden, in der Entwicklungsumgebung.
Wenn Sie OpenVINO mit den Standardeinstellungen installiert haben, befinden sich Demos am folgenden Speicherort. /opt/intel/openvino/inference_engine/demos
Legen Sie die OpenVINO-Umgebungsvariablen fest.
# source /opt/intel/openvino/bin/setupvars.sh
Führen Sie zum Erstellen build_demos.sh aus.
# cd /opt/intel/openvino/inference_engine/demos
# ./build_demos.sh
Beim Erstellen wird die ausführbare Datei in das folgende Verzeichnis ausgegeben. /root/omz_demos_build/intel64/Release
Hier wird die Modelldatei mit dem mit OpenVINO gelieferten model_downloader heruntergeladen.
Wechseln Sie in das Verzeichnis, in dem sich model_downloader befindet.
# cd /opt/intel/openvino/deployment_tools/tools/model_downloader
Aktivieren Sie die virtuelle Python-Umgebung.
# source /opt/intel/openvino/deployment_tools/model_optimizer/venv/bin/activate
Installieren Sie das Python-Paket, das erforderlich ist, damit model_downloader funktioniert.
(venv)# pip3 install -r requirements.in
Legen Sie die OpenVINO-Umgebungsvariablen fest.
(venv)# source /opt/intel/openvino/bin/setupvars.sh
Lassen Sie uns eine Liste von Modelldateien ausgeben, die mit model_downloader abgerufen werden können.
(venv)# python3 downloader.py --print_all
action-recognition-0001-decoder
action-recognition-0001-encoder
age-gender-recognition-retail-0013
driver-action-recognition-adas-0002-decoder
driver-action-recognition-adas-0002-encoder
emotions-recognition-retail-0003
face-detection-adas-0001
face-detection-adas-binary-0001
face-detection-retail-0004
face-detection-retail-0005
face-reidentification-retail-0095
(Unten weggelassen)
Dieses Mal werde ich "Human-Pose-Estimation-0001" herunterladen, ein Modell für die Haltungsschätzung.
(venv)# python3 downloader.py --name human-pose-estimation-0001 --precisions FP16
(venv)# deactivate
Die Modelldatei wird an den folgenden Speicherort ausgegeben. ./intel/human-pose-estimation-0001
Verschieben Sie hier die in der Entwicklungsumgebung vorbereitete Ausführungsdatei und Modelldatei auf den AE2100.
Verschieben Sie zunächst die ausführbare Datei und das Modell, die auf der Seite der Entwicklungsumgebung erstellt wurden, in den Ordner.
# cd
# mkdir human_pose
# cd human_pose
# cp /root/omz_demos_build/intel64/Release/human_pose_estimation_demo ./
# cp /opt/intel/openvino/deployment_tools/tools/model_downloader/intel/human-pose-estimation-0001/FP16/* ./
Laden Sie als Nächstes die Videodatei herunter, für die die Haltung geschätzt wird.
# wget https://github.com/intel-iot-devkit/sample-videos/raw/master/one-by-one-person-detection.mp4
Überprüfen Sie die vorbereitete Datei.
# ls
human-pose-estimation-0001.bin human-pose-estimation-0001.xml human_pose_estimation_demo one-by-one-person-detection.mp4
Erstellen Sie ein Teerarchiv.
# cd ..
# tar cvf human_pose.tar human_pose
Melden Sie sich mit TeraTerm beim AE2100 an und übertragen Sie die oben auf der Seite der Entwicklungsumgebung erstellte TAR-Datei per Drag & Drop auf den AE2100.
Kopieren Sie nach dem Übertragen der TAR-Datei auf den AE2100 die TAR-Datei in den Container.
root@ae2100:~# docker cp human_pose.tar ubuntu-openvino:/root/
Geben Sie den Container mit dem folgenden Befehl ein. (Wenn der Container nicht gestartet wird, starten Sie ihn unter Bezugnahme auf "SDK-Bedienungsanleitung der AE2100-Serie - Deep Learning Edition-" (Version: 1.2) S.20.)
root@ae2100:~# docker exec -it ubuntu-openvino /bin/bash
Extrahieren Sie die TAR-Datei im Container.
# cd
# tar xvf human_pose.tar
Da ffmpeg und GTK + zum Ausführen der Demo erforderlich sind, installieren Sie die abhängigen Pakete, wenn Sie sie nicht installiert haben. Sie benötigen eine Verbindung zum Internet.
# cd /opt/intel/openvino/install_dependencies
# apt-get clean
# ./install_openvino_dependencies.sh
Führen Sie abschließend das Demo-Programm "Human Pose Optimization" auf dem AE2100 aus.
Legen Sie die OpenVINO-Umgebungsvariablen im Container der Ausführungsumgebung fest.
# source /opt/intel/openvino/bin/setupvars.sh
Da das Fenster angezeigt werden muss, starten Sie Xlaunch auf der Windows-PC-Seite gemäß dem vorherigen Artikel. Geben Sie die IP-Adresse des Windows-PCs an, der das Ziel für die Fensteranzeige ist.
# export DISPLAY=192.168.100.101:0.0
Jetzt, da wir bereit sind, möchten wir "Human Pose Optimization" ausführen.
In "Lassen Sie uns das OpenVINO-Beispielprogramm auf dem OKI AI-Edge-Computer" AE2100 "(2)" ausführen, habe ich den Betrieb auf der GPU und HDDL (Myriad X 2-Chip) verglichen, diesmal jedoch mit HDDL synchronisiert. Vergleichen wir die Verarbeitung und die asynchrone Verarbeitung.
Bei der synchronen Verarbeitung werden Bilder Frame für Frame verarbeitet, bei der asynchronen Verarbeitung werden jedoch mehrere Frames parallel verarbeitet. Daher wird erwartet, dass die Ausführung durch asynchrone Verarbeitung schneller erfolgt. Bei der asynchronen Verarbeitung in diesem Demoprogramm werden zwei Frames parallel verarbeitet.
Sie können zwischen synchroner und asynchroner Verarbeitung wechseln, indem Sie im Ausführungsfenster die Tabulatortaste drücken. Sie können zum Beenden auch die Esc-Taste drücken.
Wechseln Sie in das Ausführungsverzeichnis.
# cd
# cd human_pose
Der folgende Befehl schätzt die Haltung des zuvor heruntergeladenen Videos und das Ergebnis ist Win. Es wird auf dem Teig angezeigt.
# ./human_pose_estimation_demo -i one-by-one-person-detection.mp4 -m human-pose-estimation-0001.xml -d HDDL
Die folgende Abbildung zeigt das Ausführungsergebnisfenster. Während der Synchronisierung wird SYNC auf dem Bildschirm angezeigt. Der Durchsatz beträgt ca. 4fps.
Drücken Sie dann die Tabulatortaste im Fenster, um zur asynchronen Verarbeitung zu wechseln. Wenn eine asynchrone Verarbeitung durchgeführt wird, wird ASYNC auf dem Bildschirm angezeigt. Der Durchsatz für die asynchrone Verarbeitung beträgt ca. 11 fps.
Es wurde bestätigt, dass die asynchrone Verarbeitung schneller ist als die synchrone Verarbeitung. Drücken Sie nach Bestätigung des Ausführungsergebnisses die Esc-Taste, um das Fenster zu schließen.
Ich möchte die Gelegenheit nutzen, um vorzustellen, wie die asynchrone Verarbeitung in Zukunft implementiert werden kann.
Dieses Mal habe ich Domos gebaut und auf AE2100 ausgeführt. Beim nächsten Mal werde ich versuchen, ein Objekt zu erkennen, indem ich eine Webkamera an den AE2100 anschließe.
Recommended Posts