Compilation croisée du kit d’outils OpenVINO™ et du plugin NCS2 à l’aide de Dockerfile préconfiguré pour le système d’exploitation Debian* 32 bits

Documentation

Installation et configuration

000057005

16/06/2023

Notes
  • Toutes les étapes sont nécessaires à l’installation.
  • Ces étapes ont été testées avec la carte Raspberry Pi 4* et Raspbian* Buster, 32 bits.
  • Une connexion Internet est requise pour suivre les étapes de ce guide.
  • L’article a été vérifié à l’aide de la version 2022.1 de la distribution open-source du kit d’outils OpenVINO™.

Le kit d’outils OpenVINO™ déploie rapidement des applications et des solutions qui imitent la vision humaine. Le kit d’outils étend les charges de travail de vision par ordinateur (CV) au matériel Intel® basé sur les réseaux neuronaux convolutifs (CNN), qui maximise les performances. Ces étapes suivent généralement le plugin How to Build ARM CPU disponible. Cependant, des modifications spécifiques sont nécessaires pour exécuter tout sur le Raspberry Pi 4*. Ce guide fournit des étapes pour créer une distribution open-source du kit d’outils OpenVINO™ pour le système d’exploitation Raspbian* 32 bits avec une méthode de compilation croisée.

Cliquez sur sur la rubrique pour plus d’informations :

Configuration système requise
Note Ce guide suppose que votre carte Raspberry Pi* est en fonctionnement avec le système d’exploitation répertorié ci-dessous.

Matériel

  • Raspberry Pi* 4 (Raspberry Pi* 3 Modèle B+ devrait fonctionner.)
  • Au moins une carte microSD de 16 Go
  • Stick de calcul neuronal Intel® 2
  • Connexion Internet Ethernet ou réseau sans fil compatible
  • Machine hôte avec conteneur docker installé

Système d’exploitation cible

  • Buster Raspbian*, 32 bits
Configurer votre environnement de compilation
Note Ce guide contient les commandes qui doivent être exécutées comme accès racine ou sudo pour s’installer correctement.

Assurez-vous que le logiciel de votre appareil est à jour :

sudo apt update && sudo apt upgrade -y

Installer un conteneur Docker
Note Vous pouvez suivre les instructions d’installation basées sur la documentation officielle docker
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

Dépôt de openvino_contrib clone
Note La version du kit d’outils openvino_contrib et OpenVINO de cet article est basée sur 2022.1

Téléchargez le code source et modifiez le fichier de configuration :

git clone --recurse-submodules --single-branch --branch=2022.1 https://github.com/openvinotoolkit/openvino_contrib.git

Accédez au répertoire arm_plugin :

cd openvino_contrib/modules/arm_plugin

Modifiez le contenu du fichier Dockerfile.RPi32_buster comme suit avec les outils de l’éditeur :

vim dockerfiles/Dockerfile.RPi32_buster

Ajoutez «RUN pip install protobuf==3.20.0» dans la ligne 114, comme le montre le schéma ci-dessous.

Screenshot

Enregistrez le fichier édité.

Modifiez le contenu du fichier arm_cpu_plugin_build.sh comme illustré ci-dessous avec les outils de l’éditeur :

vim scripts/arm_cpu_plugin_build.sh

Modifiez les lignes 77, 78, 79 et 136 et ajoutez des modifications comme indiqué en caractères gras ci-dessous :

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 \

Enregistrez le fichier édité.

Kit d’outils de OpenVINO™ croisé dans l’environnement conteneur Docker

Dans cette étape, nous exécuterons le script pour télécharger et compiler des OpenVINO™ kit d’outils et d’autres composants comme OpenCV* dans l’environnement conteneur Docker :

Accédez au répertoire du plugin CPU ARM :

cd openvino_contrib/modules/arm_plugin

Créez une image Docker* :

docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .

Créez le plugin dans un conteneur Docker* :

Le processus de construction est effectué par /arm_cpu_plugin_build.sh script exécuté dans /arm_cpu_plugin répertoire (commande conteneur par défaut à exécuter). Tous les résultats intermédiaires et les artefacts de construction sont stockés dans le répertoire de travail.

Ainsi, on pouvait monter l’ensemble du répertoire de travail pour obtenir tous les résultats stockés à l’extérieur du conteneur :

mkdir build

docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin

Note

Certaines variables environnementales contrôlent /arm_cpu_plugin_build.sh 'exécution d’un script.

  • BUILD_JOBS contrôle le nombre de threads pour la compilation simultanée
  • BUILD_TYPE contrôle la configuration de débogage/de version (version par défaut)
  • récupération des sources par UPDATE_SOURCES contrôle
    • clean - ne rechargez pas les sources s’ils sont déjà chargés. Juste nettoyer les dossiers de construction (par défaut)
    • rechargement – supprimer toutes les sources chargées et les récupérer à nouveau
    • vérifier - ne pas recharger ou nettoyer les sources
  • WITH_OMZ_DEMO crée des démos de Zoo C++ Open Model (activée par défaut)

Dans le dossier de construction , OV_ARM_package.tar.gz est généré

ls build

Transférer le OV_ARM_package.tar.gz sur le périphérique cible (Raspberry Pi 4* Buster 32 bits)
Il existe différentes façons de transférer les packages sur le périphérique cible (Raspberry Pi 4*), de sécuriser la copie directement sur le périphérique cible, de copier le package sur une clé USB et de le transférer.
Cet article montrera comment monter un lecteur de pouce USB dans l’ordinateur hôte et copier le package de construction sur le pouce monté.

Insérez le lecteur pouce USB dans le port USB du système, puis vérifiez le démarrage du périphérique à l’aide de la commande ci-dessous ;

sudo fdisk -l

Une fois que l’amorçage de l’appareil a été vérifié, montez l’amorçage du périphérique (par exemple /dev/sda) dans /mnt;

sudo mount /dev/sda /mnt

Ensuite, copiez le package de OpenVINO sur le lecteur USB du pouce ;

sudo cp -rf build/OV_ARM_package.tar.gz /mnt/

Vérifier le package de construction

Après avoir terminé la compilation croisée et copié avec succès le OV_ARM_package.tar.gz sur le périphérique cible (Raspberry Pi 4*).

Outil de compilation d’installation

sudo apt update
sudo apt installer cmake -y

Extraire le OV_ARM_package.tar.gzpackage

mkdir ~/openvino_dist/
tar -xvzf OV_ARM_package.tar.gz -C ~/openvino_dist/

Source de la variable d’installation

source ~/openvino_dist/setupvars.sh

Compilez l’exemple de code

cd ~/openvino_dist/samples/cpp
./build_samples.sh

Pour vérifier que le kit d’outils et le Stick de calcul neuronal Intel® 2 et le plugin ARM* fonctionnent sur votre appareil, suivez les étapes suivantes :

  1. Exécutez l’application d’exemple hello_query_device pour confirmer que toutes les bibliothèques se chargent correctement.
  2. Téléchargez un modèle pré-entraîné.
  3. Sélectionnez une entrée pour le réseau neuronal (c’est-à-dire un fichier d’image).
  4. Configurez le pilote USB Linux* Stick de calcul neuronal Intel® 2.
  5. Exécutez benchmark_app avec le modèle et l’entrée sélectionnés.

Exemples d’applications

Le kit d’outils Intel® OpenVINO™ comprend des exemples d’applications utilisant le moteur d’inférence et le Stick de calcul neuronal Intel® 2. Une des applications est hello_query_device, qui se trouve dans le répertoire suivant :

~/inference_engine_cpp_samples_build/armv7l/Release

Exécutez les commandes suivantes pour tester hello_query_device :

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

Il doit imprimer une boîte de dialogue, décrivant les périphériques disponibles pour l’inférence présente sur le système.

Télécharger un modèle

L’application a besoin d’un modèle pour passer l’entrée. Vous pouvez obtenir des modèles pour le kit d’outils Intel® OpenVINO™ au format IR en :

  • Utiliser l’optimiseur de modèle pour convertir un modèle existant d’un des cadres pris en charge en format IR pour le moteur d’inférence. Notez que le package d’optimiseur de modèle n’est pas disponible pour Raspberry Pi*.
  • Utiliser l’outil de téléchargement de modèles pour le téléchargement depuis le Zoo Open Model. Seuls les modèles publics pré-formés.
  • Téléchargez les fichiers IR directement à partir de storage.openvinotookit.org

À nos fins, le téléchargement direct est le plus simple. Utilisez les commandes suivantes pour récupérer un modèle de détection de personne-véhicule-vélo :

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

Note La Stick de calcul neuronal Intel® 2 nécessite des modèles optimisés pour le format en virgule flottante de 16 bits, connu sous le nom de FP16. S’il diffère de l’exemple, votre modèle peut nécessiter une conversion à l’aide de l’optimiseur de modèle pour FP16 sur une autre machine, car l’optimiseur de modèle n’est pas pris en charge sur Raspberry Pi*.

Entrée pour le réseau neuronal

Le dernier élément nécessaire est l’entrée pour le réseau neuronal. Pour le modèle que nous avons téléchargé, vous avez besoin d’une image avec trois canaux de couleur. Téléchargez les fichiers nécessaires sur votre carte :

wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg

Configuration du pilote USB Linux Stick de calcul neuronal Intel® 2

Certaines règles udev doivent être ajoutées pour permettre au système de reconnaître Intel® NCS2 périphériques USB.

Note Si l’utilisateur actuel n’est pas membre du groupe de l’utilisateur, exécutez la commande suivante et redémarrez votre périphérique.

sudo usermod -a -G users "$(whoami)"

Configurez l’environnement OpenVINO™ :

source /home/pi/openvino_dist/setupvars.sh

Pour effectuer une inférence sur le Stick de calcul neuronal Intel® 2, installez les règles USB en exécutant le script install_NCS_udev_rules.sh :

sh /home/pi/openvino_dist/install_dependencies/install_NCS_udev_rules.sh

Le pilote USB doit être installé correctement maintenant. Si le Stick de calcul neuronal Intel® 2 n’est pas détecté lors de l’exécution de démos, redémarrez votre appareil et réessayez.

Exécution de benchmark_app

Lorsque le modèle est téléchargé, une image d’entrée est disponible et le Stick de calcul neuronal Intel® 2 est branché sur un port USB, utilisez la commande suivante pour exécuter le benchmark_app :

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

Cela exécute l’application avec les options sélectionnées. Le drapeau -d indique au programme quel périphérique utiliser pour l’inférence. La spécifier MYRIAD active le plugin MYRIAD , en utilisant le Stick de calcul neuronal Intel® 2. Après l’exécution réussie de la commande, le terminal affichera des statistiques d’inférence. Vous pouvez également utiliser le plugin CPU pour exécuter une inférence sur le processeur ARM de votre périphérique Raspberry Pi 4*, reportez-vous aux spécifications de fonctionnement du plugin ARM* pour la prise en charge du fonctionnement car le modèle utilisé dans cet exemple n’est pas pris en charge par le plugin ARM*.

[ 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


Si l’application a fonctionné correctement sur votre Intel® NCS2, OpenVINO™ kit d’outils et les Stick de calcul neuronal Intel® 2 sont configurés correctement pour être utilisés sur votre appareil.

Variables environnementales

Vous devez mettre à jour plusieurs variables environnementales avant de compiler et d’exécuter OpenVINO les applications du kit d’outils. Exécutez le script suivant pour définir temporairement les variables d’environnement :

source /home/pi/openvino_dist/setupvars.sh

***(facultatif)** Les variables environnementales OpenVINO™ sont supprimées lorsque vous fermez le shell. En option, vous pouvez définir de manière permanente les variables environnementales comme suit :

echo "source /home/pi/openvino_dist/setupvars.sh" >> ~/.bashrc

Pour tester votre modification, ouvrez un nouveau terminal. Vous verrez ce qui suit :

[setupvars.sh] OpenVINO environment initialized

Cela termine la procédure de compilation et de compilation croisée pour la distribution open-source du kit d’outils OpenVINO™ pour le système d’exploitation Raspbian*, et l’utilisation avec le plugin Stick de calcul neuronal Intel® 2 et ARM*.

Rubriques connexes
Créer des démos de Zoo Open Model sur Raspberry Pi*
zoo Open Model OpenVINO™ kit d’outils
Forum de la communauté et assistance technique