Zum Hauptinhalt wechseln
Support-Wissensdatenbank

Cross-Kompilierung von OpenVINO™ Toolkit und NCS2-Plugin mit vorkonfigurierter Dockerdatei für 32-Bit-Debian* OS

Inhaltstyp: Installation und Setup   |   Artikel-ID: 000057005   |   Letzte Überprüfung: 20.02.2025
Notizen
  • Bei der Installation sind alle Schritte erforderlich.
  • Diese Schritte wurden mit Raspberry Pi 4* Mainboard und Raspbian* Buster, 32-Bit getestet.
  • Eine Internetverbindung ist erforderlich, um die Schritte in dieser Anleitung zu befolgen.
  • Der Artikel wurde mit dem Release 2022.1 der Open-Source-Distribution des OpenVINO™-Toolkits verifiziert.

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:

Systemvoraussetzungen
Anmerkung In dieser Anleitung wird davon ausgegangen, dass Ihr Raspberry Pi* Mainboard mit dem unten aufgeführten Betriebssystem ausgeführt wird.

Hardware

  • Raspberry Pi* 4 (Raspberry Pi* 3 Modell B+ sollte funktionieren.)
  • Mindestens eine 16-GB-microSD-Karte
  • Intel® Neural Compute Stick 2
  • Ethernet-Internetverbindung oder kompatibles drahtloses Netzwerk
  • Host-Maschine mit installiertem Docker-Container

Zielbetriebssystem

  • Raspbian* Buster, 32-Bit
Einrichten der Buildumgebung
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

Docker-Container installieren
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

Klonen openvino_contrib Repositor
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.

Screenshot

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.

Cross-Compile OpenVINO™ Toolkit in Docker-Container-Umgebung

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.

  • BUILD_JOBS steuert die Anzahl der Threads für die gleichzeitige Kompilierung
  • BUILD_TYPE Steuerungen Debug-/Release-Konfiguration (standardmäßig Release)
  • UPDATE_SOURCES steuert den Abruf von Quellen
    • Sauber : Quellen nicht neu laden, wenn sie bereits geladen sind. Nur Build-Ordner bereinigen (Standard)
    • reload - löscht alle geladenen Quellen und ruft sie erneut ab
    • Überprüfen Sie : Quellen nicht neu laden oder bereinigen
  • WITH_OMZ_DEMO baut C++ Open Model Zoo Demos (standardmäßig aktiviert)

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/

Überprüfen des Buildpakets

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:

  1. Führen Sie die hello_query_device der Beispielanwendung aus, um zu bestätigen, dass alle Bibliotheken ordnungsgemäß geladen werden.
  2. Laden Sie ein vortrainiertes Modell herunter.
  3. Wählen Sie eine Eingabe für das neuronale Netzwerk aus (z. B. eine Bilddatei).
  4. Konfigurieren Sie den Intel® Neural Compute Stick 2 Linux* USB-Treiber.
  5. Führen Sie benchmark_app mit dem ausgewählten Modell und der Eingabe aus.

Beispielanwendungen

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.

Herunterladen eines Modells

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:

  • Verwendung des Model Optimizers zur Konvertierung eines vorhandenen Modells aus einem der unterstützten Frameworks in das IR-Format für die Inference Engine. Hinweis: Das Model Optimizer-Paket ist nicht für Raspberry Pi* verfügbar.
  • Verwenden Sie das Model Downloader-Tool zum Herunterladen aus dem Open Model Zoo. Nur öffentliche vortrainierte Modelle.
  • Laden Sie die IR-Dateien direkt von storage.openvinotookit.org herunter

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.

Eingabe für das neuronale Netz

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

Konfiguration des Intel® Neural Compute Stick 2 Linux USB-Treibers

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.

Laufende benchmark_app

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.

Umgebungsvariablen

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.

Zugehörige Produkte

Dieser Artikel bezieht sich auf 2-Produkte.

Disclaimer / Rechtliche Hinweise

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.