Notizen |
|
Mit dem OpenVINO™-Toolkit lassen sich schnell Anwendungen und Lösungen bereitstellen, die das menschliche Sehvermögen nachahmen. Das Toolkit erweitert Computer-Vision-Workloads (CV) auf® Intel Hardware auf der Grundlage von Convolutional Neural Networks (CNN), die die Leistung maximiert. Diese Schritte folgen in der Regel dem verfügbaren How to Build ARM CPU Plugin . Es sind jedoch bestimmte Änderungen erforderlich, um alles auf dem Raspberry Pi 4* auszuführen. Diese Anleitung enthält Schritte zum Erstellen einer Open-Source-Distribution des OpenVINO™-Toolkits für Raspbian* 32-Bit-Betriebssystem mit einer Cross-Kompilierungsmethode.
Klicken Sie auf das Thema, um weitere Informationen anzuzeigen:
Anmerkung | In dieser Anleitung wird davon ausgegangen, dass Ihr Raspberry Pi* Mainboard mit dem unten aufgeführten Betriebssystem ausgeführt wird. |
Hardware
Zielbetriebssystem
Anmerkung | Diese Anleitung enthält Befehle, die als root- oder sudo-Zugriff ausgeführt werden müssen, um korrekt installiert zu werden. |
Stellen Sie sicher, dass die Software Ihres Geräts auf dem neuesten Stand ist:
sudo apt update && sudo apt upgrade -y
Anmerkung | Sie können die Installationsanweisungen basierend auf der offiziellen Docker-Dokumentation befolgen https://docs.docker.com/engine/install |
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo groupadd docker
sudo usermod -aG docker ${USER}
sudo systemctl restart docker
Anmerkung | Die openvino_contrib- und OpenVINO-Toolkit-Version für diesen Artikel basiert auf 2022.1 |
Laden Sie den Quellcode herunter und ändern Sie die Konfigurationsdatei:
git clone --recurse-submodules --single-branch --branch=2022.1 https://github.com/openvinotoolkit/openvino_contrib.git
Wechseln Sie in das arm_plugin-Verzeichnis:
cd openvino_contrib/modules/arm_plugin
Ändern Sie den Inhalt der Dockerfile.RPi32_buster-Datei wie folgt mit Editor-Tools:
vim dockerfiles/Dockerfile.RPi32_buster
Fügen Sie "RUN pip install protobuf==3.20.0" in Zeile 114 hinzu, wie im folgenden Diagramm dargestellt.
Speichern Sie die bearbeitete Datei.
Ändern Sie den Inhalt der arm_cpu_plugin_build.sh-Datei wie unten gezeigt mit Editor-Tools:
vim scripts/arm_cpu_plugin_build.sh
Bearbeiten Sie die Zeilen 77, 78, 79 und 136 und fügen Sie Änderungen wie unten fett dargestellt hinzu:
77 checkSrcTree $OPENCV_HOME https://github.com/opencv/opencv.git 4.5.5-openvino-2022.1 4.x
78 checkSrcTree $OPENVINO_HOME https://github.com/openvinotoolkit/openvino.git 2022.1.0 releases/2022/1
81 checkSrcTree $OMZ_HOME https://github.com/openvinotoolkit/open_model_zoo.git 2022.1.0 releases/2022/1
136 -DENABLE_INTEL_MYRIAD=ON -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
Speichern Sie die bearbeitete Datei.
In diesem Schritt führen wir das Skript aus, um OpenVINO™ Toolkit und andere Komponenten wie OpenCV* in der Docker-Containerumgebung herunterzuladen und zu kompilieren:
Gehen Sie zum ARM-CPU-Plugin-Verzeichnis:
cd openvino_contrib/modules/arm_plugin
Erstellen Sie ein Docker*-Image:
docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .
Erstellen Sie das Plugin im Docker*-Container:
Der Build-Prozess wird durch /arm_cpu_plugin_build.sh Skript ausgeführt, das in /arm_cpu_plugin Verzeichnis ausgeführt wird (auszuführender Standard-Containerbefehl). Alle Zwischenergebnisse und Buildartefakte werden im Arbeitsverzeichnis gespeichert.
Man könnte also das gesamte Arbeitsverzeichnis mounten, um alle Ergebnisse außerhalb des Containers zu speichern:
mkdir build
docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin
Anmerkung | Es gibt einige Umgebungsvariablen, die /arm_cpu_plugin_build.sh Skriptausführung steuern.
|
Im Build-Ordner wird OV_ARM_package.tar.gz generiert
ls build
Übertragen Sie die OV_ARM_package.tar.gz auf das Zielgerät (Raspberry Pi 4* 32-Bit Buster)
Es gibt verschiedene Möglichkeiten, die Pakete auf das Zielgerät (Raspberry Pi 4*) zu übertragen, das Paket direkt auf das Zielgerät zu kopieren, das Paket auf einen USB-Stick zu kopieren und zu übertragen.
Dieser Artikel zeigt, wie Sie einen USB-Stick auf dem Hostcomputer mounten und das Build-Paket auf den gemounteten USB-Stick kopieren.
Stecken Sie den USB-Stick in den USB-Anschluss des Systems und überprüfen Sie dann den Start des Geräts mit dem folgenden Befehl.
sudo fdisk -l
Nachdem Sie den Gerätestart überprüft haben, mounten Sie den Gerätestart (z. B. /dev/sda) in /mnt;
sudo mount /dev/sda /mnt
Kopieren Sie als Nächstes das OpenVINO-Paket auf den USB-Stick.
sudo cp -rf build/OV_ARM_package.tar.gz /mnt/
Nach Abschluss der Cross-Kompilierung und erfolgreichem Kopieren der OV_ARM_package.tar.gz auf das Zielgerät (Raspberry Pi 4*).
Kompilierungstool installieren
sudo apt update
sudo apt install cmake -y
Extrahieren Sie das Paket OV_ARM_package.tar.gz
mkdir ~/openvino_dist/
tar -xvzf OV_ARM_package.tar.gz -C ~/openvino_dist/
Einrichtende Variable ermitteln
source ~/openvino_dist/setupvars.sh
Kompilieren des Beispielcodes
cd ~/openvino_dist/samples/cpp
./build_samples.sh
Führen Sie die folgenden Schritte aus, um zu überprüfen, ob das Toolkit und das Intel® Neural Compute Stick 2- und ARM*-Plugin auf Ihrem Gerät funktionieren:
Das Intel® OpenVINO™ Toolkit umfasst Beispielanwendungen, die die Inferenz-Engine und Intel® Neural Compute Stick 2 verwenden. Eine der Anwendungen ist hello_query_device, die sich im folgenden Verzeichnis befindet:
~/inference_engine_cpp_samples_build/armv7l/Release
Führen Sie die folgenden Befehle aus, um hello_query_device zu testen :
cd ~/inference_engine_cpp_samples_build/armv7l/Release
./hello_query_device
Es sollte ein Dialogfeld ausgegeben werden, das die auf dem System verfügbaren Geräte für die Inferenz beschreibt.
Die Anwendung benötigt ein Modell, um die Eingabe zu übergeben. Sie können Modelle für das Intel® OpenVINO™ Toolkit im IR-Format erhalten, indem Sie:
Für unsere Zwecke ist das direkte Herunterladen am einfachsten. Verwenden Sie die folgenden Befehle, um ein Modell für die Erkennung von Person, Fahrzeug und Fahrrad zu erhalten:
wget https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin -O ~/Downloads/person-vehicle-bike-detection-crossroad-0078.bin
wget https://storage.openvinotoolkit.org/repositories/open_model_zoo/2022.1/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml -O ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml
Anmerkung | Der Intel® Neural Compute Stick 2 erfordert Modelle, die für das als FP16 bezeichnete 16-Bit-Gleitkommaformat optimiert sind. Wenn es vom Beispiel abweicht, muss Ihr Modell möglicherweise mit dem Model Optimizer zu FP16 auf einer separaten Maschine konvertiert werden, da das Model Optimizer nicht auf Raspberry Pi* unterstützt wird. |
Das letzte Element, das benötigt wird, ist die Eingabe für das neuronale Netzwerk. Für das Modell, das wir heruntergeladen haben, benötigen Sie ein Bild mit drei Farbkanälen. Laden Sie die erforderlichen Dateien auf Ihr Board herunter:
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg
Es müssen einige udev-Regeln hinzugefügt werden, damit das System Intel® NCS2 USB-Geräte erkennen kann.
Anmerkung | Wenn der aktuelle Benutzer kein Mitglied der Benutzergruppe ist, führen Sie den folgenden Befehl aus und starten Sie Ihr Gerät neu. |
sudo usermod -a -G users "$(whoami)"
Richten Sie die OpenVINO™ Umgebung ein:
source /home/pi/openvino_dist/setupvars.sh
Um eine Inferenz auf dem Intel® Neural Compute Stick 2 durchzuführen, installieren Sie die USB-Regeln, indem Sie das install_NCS_udev_rules.sh -Skript ausführen:
sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh
Der USB-Treiber sollte jetzt korrekt installiert sein. Wenn der Intel® Neural Compute Stick 2 beim Ausführen von Demos nicht erkannt wird, starten Sie Ihr Gerät neu und versuchen Sie es erneut.
Wenn das Modell heruntergeladen wurde, ein Eingabebild verfügbar ist und das Intel® Neural Compute Stick 2 an einen USB-Port angeschlossen ist, führen Sie den folgenden Befehl aus, um die benchmark_app auszuführen:
cd ~/inference_engine_cpp_samples_build/armv7l/Release
./benchmark_app -i ~/Downloads/person.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD
Dadurch wird die Anwendung mit den ausgewählten Optionen ausgeführt. Das -d -Flag teilt dem Programm mit, welches Gerät für die Inferenz verwendet werden soll. Durch die Angabe von MYRIAD wird das MYRIAD-Plugin unter Verwendung der Intel® Neural Compute Stick 2 aktiviert. Nachdem der Befehl erfolgreich ausgeführt wurde, zeigt das Terminal Statistiken für die Inferenz an. Sie können das CPU-Plugin auch verwenden, um Inferenzen auf der ARM-CPU Ihres Raspberry Pi 4* Geräts auszuführen. Weitere Informationen zur Betriebsunterstützung finden Sie in der ARM* Plugin Operation Set Spezifikation , da das in diesem Beispiel verwendete Modell nicht vom ARM* Plugin unterstützt wird.
[ INFO ] First inference took 410.75 ms
[Step 11/11] Dumping statistics report
[ INFO ] Count: 388 iterations
[ INFO ] Duration: 60681.72 ms
[ INFO ] Latency:
[ INFO ] Median: 622.99 ms
[ INFO ] Average: 623.40 ms
[ INFO ] Min: 444.03 ms
[ INFO ] Max: 868.18 ms
[ INFO ] Throughput: 6.39 FPS
Wenn die Anwendung erfolgreich auf Ihrem Intel® NCS2 ausgeführt wurde, sind OpenVINO™ Toolkit und Intel® Neural Compute Stick 2 korrekt für die Verwendung auf Ihrem Gerät eingerichtet.
Sie müssen mehrere Umgebungsvariablen aktualisieren, bevor Sie OpenVINO Toolkit-Anwendungen kompilieren und ausführen. Führen Sie das folgende Skript aus, um die Umgebungsvariablen vorübergehend festzulegen:
source /home/pi/openvino_dist/setupvars.sh
**(Optional)** Die OpenVINO™Umgebungsvariablen werden entfernt, wenn Sie die Shell schließen. Optional können Sie die Umgebungsvariablen wie folgt dauerhaft festlegen:
echo "source /home/pi/openvino_dist/setupvars.sh" >> ~/.bashrc
Um Ihre Änderung zu testen, öffnen Sie ein neues Terminal. Sie sehen Folgendes:
[setupvars.sh] OpenVINO environment initialized
Damit ist die Cross-Kompilierungs- und Build-Prozedur für die Open-Source-Distribution OpenVINO™ Toolkits für Raspbian* OS und die Verwendung mit Intel® Neural Compute Stick 2- und ARM*-Plugin abgeschlossen.