Aufbau eines Open-Source-OpenVINO™-Toolkits für Raspbian* OS und Intel® Neural Compute Stick 2
Notizen |
|
Das OpenVINO™-Toolkit stellt schnell Anwendungen und Lösungen bereit, die das menschliche Sehvermögen nachahmen. Das Toolkit erweitert Computer Vision (CV)-Workloads auf Intel® Hardware, die auf Convolutional Neural Networks (CNN) basiert und die Leistung maximiert. Diese Schritte folgen im Allgemeinen diesem Artikel über Intel® Neural Compute Stick 2 und Open Source OpenVINO™ Toolkit, enthalten jedoch spezifische Änderungen, damit alles auf Ihrem Mainboard läuft.
Dieser Leitfaden bietet Schritte zum Aufbau einer Open-Source-Distribution des OpenVINO™ Toolkits für Raspbian* BS und zur Verwendung mit Intel® Neural Compute Stick 2 (Intel® NCS2).
Hinweis | Der ursprüngliche Intel® Movidius™ Neural Compute Stick ist auch mit dem OpenVINO™ Toolkit kompatibel, und dieses Gerät kann anstelle der Intel® Neural Compute Stick 2 in diesem Artikel verwendet werden. |
Klicken Sie auf oder das Thema, um weitere Informationen anzuzeigen:
Systemvoraussetzungen
Hinweis | Dieser Leitfaden nimmt an, dass Ihr Raspberry Pi* Mainboard mit einem unten aufgeführten Betriebssystem aktiviert ist. |
Hardware
- Raspberry Pi* 4 (Raspberry Pi* 3 Model B+ sollte funktionieren.)
- Mindestens eine 8-GB-microSD-Karte
- Intel® Neural Compute Stick 2
- Ethernet-Internetverbindung oder kompatibles drahtloses Netzwerk
- Dediziertes DC-Netzteil
Vorgesehenes Betriebssystem
Raspbian* Stretch, 32-Bit
- Raspbian* Buster, 32-Bit
Einrichten Ihrer Build-Umgebung
Hinweis | Dieser Leitfaden enthält Befehle, die als Root- oder S ascii-Zugriff ausgeführt werden müssen, um sie korrekt zu installieren. |
Stellen Sie sicher, dass Ihre Gerätesoftware auf dem neuesten Stand ist:
sudo apt update && sudo apt upgrade -y
Einige der Abhängigkeiten des Toolkits haben keine vorgebauten ARMv7-Binärdateien und müssen von der Quelle aus erstellt werden. Dies kann die Build-Zeit im Vergleich zu anderen Plattformen erheblich erhöhen. Die Vorbereitung auf den Aufbau des Toolkits erfordert die folgenden Schritte:
Installation von Build-Tools
sudo apt install build-essential
Installation von CMake* von der Quelle aus
Holen Sie CMake von der Kitware* GitHub* Versionsseite, extrahieren Sie sie und geben Sie den extrahierten Ordner ein:
cd ~/
wget https://github.com/Kitware/CMake/releases/download/v3.14.4/cmake-3.14.4.tar.gz
tar xvzf cmake-3.14.4.tar.gz
cd ~/cmake-3.14.4
Führen Sie das Bootstrap-Skript aus, um zusätzliche Abhängigkeiten zu installieren, die mit dem Build beginnen:
./bootstrap
make -j4
sudo make install
Hinweis | Die Anzahl der Jobs, die der Make-Befehl verwendet, kann mit der Kennzeichnung -j angepasst werden. Es wird empfohlen, die Anzahl der Jobs auf die Anzahl der Kerne auf Ihrer Plattform zu setzen. |
Sie können die Anzahl der Kerne in Ihrem System überprüfen, indem Sie den folgenden Befehl verwenden:
grep -c ^processor /proc/cpuinfo
Beachten Sie, dass das Einstellen der zu hohen Zahl zu Speicherüberläufen führen kann, wenn der Build nicht auftritt. Wenn die Zeit dies zulässt, wird empfohlen, 1 bis 2 Jobs auszuführen.
Installation von OpenCV aus der Quelle
Das Intel® OpenVINO™ Toolkit nutzt die Leistung von OpenCV*, um vision-basierte Inferenzierung zu beschleunigen. Während der CMake-Prozess für das Intel® OpenVINO™ Toolkit OpenCV* herunterlädt, wenn keine Version für unterstützte Plattformen installiert ist, gibt es für ARMv7-Plattformen keine spezifische Version. Als solches müssen Sie OpenCV aus der Quelle erstellen.
OpenCV erfordert einige zusätzliche Abhängigkeiten. Installieren Sie Folgendes über Ihren Paketmanager:
sudo apt install git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libatlas-base-dev python3-scipy
Hinweis | Es wird empfohlen, beim Klonen von Repository von OpenCV* GitHub-Seite den neuesten und stabilen Zweig oder Tag anzugeben, anstatt standardmäßig den Master-Branch direkt zu klonen. |
Klonen Sie das Repository von der OpenCV* GitHub-Seite, bereiten Sie die Build-Umgebung vor und erstellen Sie:
cd ~/
git clone --depth 1 --branch 4.5.2-openvino https://github.com/opencv/opencv.git
cd opencv && mkdir build && cd build
cmake –DCMAKE_BUILD_TYPE=Release –DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j4
sudo make install
Herunterladen des Quellcodes und Installation von Abhängigkeiten
Hinweis | Es wird empfohlen, beim Klonen des Repositorys von openvinotoolkit GitHub-Seite den neuesten und stabilen Branch oder Tag anzugeben, anstatt standardmäßig direkt den Master-Branch zu klonen. |
Die Open-Source-Version des Intel® OpenVINO™ Toolkits ist über GitHub verfügbar. Der Repository-Ordner trägt den Titel openvino.
cd ~/
git clone --depth 1 --branch 2021.3 https://github.com/openvinotoolkit/openvino.git
Das Repository verfügt auch über Untermodule, die abgerufen werden müssen:
cd ~/openvino
git submodule update --init --recursive
Das Intel® OpenVINO™ Toolkit verfügt über eine Reihe von Build-Abhängigkeiten. Das install_build_dependencies.sh Skript holt sie für Sie ab. Wenn beim Ausführen des Skripts Probleme auftreten, müssen Sie jede Abhängigkeit einzeln installieren.
Führen Sie das Skript aus, um die Abhängigkeiten für das Intel® OpenVINO™ Toolkit zu installieren:
sh ./install_build_dependencies.sh
Wenn das Skript erfolgreich abgeschlossen wurde, sind Sie bereit, das Toolkit zu erstellen. Falls an dieser Stelle ein Fehler aufgetreten ist, stellen Sie sicher, dass Sie aufgelistete Abhängigkeiten installieren und es erneut versuchen.
Gebäude
Der erste Schritt zum Beginn des Builds ist das System, auf dem sich die Installation von OpenCV befindet. Verwenden Sie den folgenden Befehl:
export OpenCV_DIR=/usr/local/lib/cmake/opencv4
Um den Python API-Wrapper zu erstellen, installieren Sie alle zusätzlichen Pakete, die in der /inference-engine/ie_bridges/python/requirements.txt -Datei aufgeführt sind:
cd ~/openvino/inference-engine/ie_bridges/python/
pip3 install -r requirements.txt
Hinweis | Verwenden Sie die -DENABLE_PYTHON=ON option. To specify an exact Python version, use the following options: -DPYTHON_EXECUTABLE=`which python3.7` \ -DPYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ -DPYTHON_INCLUDE_DIR=/usr/include/python3.7 Verwenden Sie die -DNGRAPH_ONNX_IMPORT_ENABLE=ON option to enable the building of the nGraph ONNX importer. Verwenden Sie die -DNGRAPH_PYTHON_BUILD_ENABLE=ON option to enable the nGraph binding. Verwenden Sie die -DCMAKE_INSTALL_PREFIX={BASE_dir}/openvino_dist to specify the directory for the CMake building to build in: for example, -DCMAKE_INSTALL_PREFIX=/home/pi/openvino_dist |
Das Toolkit verwendet ein CMake-Gebäudesystem, um den Bauprozess zu leiten und zu vereinfachen. Um sowohl die Inferenz-Engine als auch das MYRIAD-Plugin für Intel® Neural Compute Stick 2 zu erstellen, verwenden Sie die folgenden Befehle:
Hinweis | Entfernen Sie alle Backslashes (\), wenn Sie die folgenden Befehle ausführen. Die Backslashes werden verwendet, um zu informieren, dass diese Befehle nicht getrennt werden. |
cd ~/openvino
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/home/pi/openvino_dist \
-DENABLE_MKL_DNN=OFF \
-DENABLE_CLDNN=OFF \
-DENABLE_GNA=OFF \
-DENABLE_SSE42=OFF \
-DTHREADING=SEQ \
-DENABLE_OPENCV=OFF \
-DNGRAPH_PYTHON_BUILD_ENABLE=ON \
-DNGRAPH_ONNX_IMPORT_ENABLE=ON \
-DENABLE_PYTHON=ON \
-DPYTHON_EXECUTABLE=$(which python3.7) \
-DPYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-DPYTHON_INCLUDE_DIR=/usr/include/python3.7 \
-DCMAKE_CXX_FLAGS=-latomic ..
make -j4
sudo make install
Wenn der Make-Befehl aufgrund eines Problems mit einer OpenCV-Bibliothek fehlschlägt, stellen Sie sicher, dass Sie dem System gesagt haben, auf dem Sich Ihre Installation von OpenCV befindet. Wenn das Build zu diesem Zeitpunkt abgeschlossen ist, kann das Intel® OpenVINO™ Toolkit ausgeführt werden. Beachten Sie, dass Builds im Ordner ~/openvino/inference-engine/bin/armv7l/Release platziert werden.
Verifizierung der Installation
Nachdem Sie den Inferenz-Engine-Build erfolgreich abgeschlossen haben, sollten Sie überprüfen, ob alles korrekt eingerichtet ist. Führen Sie die folgenden Schritte durch, um zu überprüfen, ob das Toolkit und Intel® Neural Compute Stick 2 auf Ihrem Gerät funktionieren:
- Führen Sie das Beispielprogramm object_detection_sample_ssd aus , um sicherzustellen, dass alle Bibliotheken korrekt geladen werden.
- Laden Sie ein trainiertes Modell herunter.
- Wählen Sie eine Eingabe für das neuronale Netzwerk aus.
- Konfigurieren Sie den Intel® Neural Compute Stick 2 Linux* USB-Treiber.
- Führen Sie object_detection_sample_ssd mit dem ausgewählten Modell und der Eingabe aus.
Beispielanwendungen
Das Intel® OpenVINO™ Toolkit umfasst einige Beispielanwendungen, die die Inferenz-Engine und Intel® Neural Compute Stick 2 verwenden. Eines der Programme ist object_detection_sample_ssd, die sie finden in:
~/openvino/bin/armv7l/Release
Führen Sie die folgenden Befehle aus, um object_detection_sample_ssd zu testen:
cd ~/openvino/bin/armv7l/Release
./object_detection_sample_ssd -h
Es sollte einen Hilfedialog drucken, in dem die verfügbaren Optionen für das Programm beschrieben werden.
Herunterladen eines Modells
Das Programm 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:
- Verwenden des Model Optimizer zur Konvertierung eines bestehenden Modells von einem der unterstützten Frameworks in ein IR-Format für die Inferenz-Engine
- Verwenden des Model Downloader-Tools zum Herunterladen aus dem Open Model Zoo
- Laden Sie die IR-Dateien direkt von download.01.org herunter
Für unsere Zwecke ist das Herunterladen direkt am leichtesten. Verwenden Sie die folgenden Befehle, um ein person-vehicle-bike detection -Modell zu greifen:
cd ~/Downloads
wget https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.bin
wget https://download.01.org/opencv/2021/openvinotoolkit/2021.2/open_model_zoo/models_bin/3/person-vehicle-bike-detection-crossroad-0078/FP16/person-vehicle-bike-detection-crossroad-0078.xml
Hinweis | Der Intel® Neural Compute Stick 2 erfordert Modelle, die für das als FP16 bezeichnete 16-Bit-Fließkommaformat optimiert sind. Ihr Modell, wenn es sich von dem Beispiel unterscheidet, kann eine Konvertierung mit dem Model Optimizer zu FP16 erfordern. |
Eingabe für das neuronale Netzwerk
Der letzte benötigte Punkt ist die Eingabe für das neuronale Netzwerk. Für das Modell, das wir heruntergeladen haben, benötigen Sie ein Bild mit 3 Farbkanälen. Laden Sie die notwendigen Dateien auf Ihr Mainboard herunter:
cd ~/Downloads
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O walk.jpg
Konfiguration des Intel® Neural Compute Stick 2 Linux USB-Treibers
Einige UDEV-Regeln müssen hinzugefügt werden, damit das System Intel® NCS2 USB-Geräte erkennen kann.
Hinweis | Wenn der aktuelle Benutzer nicht Mitglied der Benutzergruppe ist, führen Sie den folgenden Befehl aus und starten Sie Ihr Gerät neu. |
sudo usermod -a -G users "$(whoami)"
Set up the OpenVINO™ Umgebung:
source /home/pi/openvino_dist/bin/setupvars.sh
To perform Inferenz auf dem Intel® Neural Compute Stick 2, installieren Sie die USB-Regeln, indem Sie die install_NCS_udev_rules.shSkript:
sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh
The USB driver should be installed correctly now. If the Intel® Neural Compute Stick 2 is not detected when running demos, restart your device and try again.
Ausführen vonobject_detection_sample_ssd
Wenn das Modell heruntergeladen wird, ist ein Eingabe-Image verfügbar und die Intel® Neural Compute Stick 2 an einen USB-Port angeschlossen ist, verwenden Sie den folgenden Befehl, um den object_detection_sample_ssd auszuführen:
cd ~/openvino/bin/armv7l/Release
./object_detection_sample_ssd -i ~/Downloads/walk.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD
Dadurch wird die Anwendung mit den ausgewählten Optionen ausgeführt. Die Kennzeichnung -d weist das Programm an, welches Gerät für die Inferenz verwendet werden soll. -MYRIAD aktiviert das MYRIAD-Plugin unter Verwendung der Intel® Neural Compute Stick 2. Nachdem der Befehl erfolgreich ausgeführt wurde, wird das Terminal Statistiken für die Inferenz anzeigen und eine Bildausgabe erzeugen.
[ INFO ] Image out_0.bmp created!
[ INFO ] Execution successful
[ INFO ] This sample is an API example, for any performance measurements please use the dedicated benchmark_app tool
Verwenden Sie das Standardmäßige Bildanzeigeprogramm Raspbian*, um die resultierende Bildausgabe zu öffnen:
gpicview out_0.bmp
Wenn die Anwendung erfolgreich auf Ihrem Intel® NCS2 ausgeführt wurde, sind OpenVINO™ Toolkit und Intel® Neural Compute Stick 2 korrekt für den Einsatz auf Ihrem Gerät eingerichtet.
Verifizierung der nGraph-Modulbindung für Python
Führen Sie die object_detection_sample_ssd Python-Demo aus:
source /home/pi/openvino_dist/bin/setupvars.sh
cd /home/pi/openvino_dist/deployment_tools/inference_engine/samples/python/object_detection_sample_ssd
python3 object_detection_sample_ssd.py -i ~/Downloads/walk.jpg -m ~/Downloads/person-vehicle-bike-detection-crossroad-0078.xml -d MYRIAD
Wenn die Anwendung auf Ihrem Intel® NCS2 erfolgreich ausgeführt wurde, ist das nGraph-Modul korrekt mit dem Python bindend.
Umgebungsvariablen
Sie müssen mehrere Umgebungsvariablen aktualisieren, bevor Sie OpenVINO Toolkit-Anwendungen kompilieren und ausführen können. Führen Sie das folgende Skript aus, um die Umgebungsvariablen vorübergehend einzustellen:
source /home/pi/openvino_dist/bin/setupvars.sh
**(Optional)** Die OpenVINO Umgebungsvariablen werden entfernt, wenn Sie die Shell schließen. Als Option können Sie die Umgebungsvariablen dauerhaft wie folgt festlegen:
echo "source /home/pi/openvino_dist/bin/setupvars.sh" >> ~/.pluginrc
Um Ihre Änderung zu testen, öffnen Sie ein neues Terminal. Sie werden Folgendes sehen:
[setupvars.sh] OpenVINO Umgebung initialisiert
Dies schließt das Build-Verfahren für die Open-Source-Distribution des OpenVINO™ Toolkits für Raspbian* OS und die Verwendung mit Intel® Neural Compute Stick 2 ab.