Notes |
|
La boîte à outils OpenVINO™ déploie rapidement des applications et des solutions qui imitent la vision humaine. La boîte à outils étend les charges de travail de vision par ordinateur (CV) sur le matériel Intel® en s’appuyant sur les réseaux neuronaux convolutifs (CNN), ce qui optimise les performances. Ces étapes suivent généralement le plug-in How to Build ARM CPU disponible. Cependant, des modifications spécifiques sont nécessaires pour tout exécuter sur le Raspberry Pi 4*. Ce guide fournit les étapes à suivre pour créer une distribution open source du kit d’outils OpenVINO™ pour le système d’exploitation Raspbian* 32 bits à l’aide d’une méthode de compilation croisée.
Cliquez sur la rubrique pour plus d’informations :
Note | Ce guide suppose que votre carte Raspberry Pi* est opérationnelle avec le système d’exploitation répertorié ci-dessous. |
Matériel
Système d’exploitation cible
Note | Ce guide contient des commandes qui doivent être exécutées en tant qu’accès root ou sudo pour s’installer correctement. |
Assurez-vous que le logiciel de votre appareil est à jour :
sudo apt update && sudo apt upgrade -y
Note | Vous pouvez suivre les instructions d’installation basées sur la documentation officielle du 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
Note | La version openvino_contrib et OpenVINO boîte à outils de cet article est basée sur la version 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 ci-dessous avec les outils de l’éditeur :
vim dockerfiles/Dockerfile.RPi32_buster
Ajouter «RUN pip install protobuf==3.20.0» à la ligne 114, comme indiqué dans le diagramme ci-dessous.
Enregistrez le fichier modifié.
Modifiez le contenu du fichier arm_cpu_plugin_build.sh comme indiqué 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 les modifications comme indiqué en 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 modifié.
Dans cette étape, nous allons exécuter le script pour télécharger et croiser OpenVINO™ toolkit et d’autres composants comme OpenCV* dans l’environnement de conteneur Docker :
Accédez au répertoire du plug-in du processeur ARM :
cd openvino_contrib/modules/arm_plugin
Créez une image Docker* :
docker image build -t arm-plugin -f dockerfiles/Dockerfile.RPi32_buster .
Générez le plugin dans le conteneur Docker* :
Le processus de génération 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 génération sont stockés dans le répertoire de travail.
Ainsi, on peut monter tout le répertoire de travail pour obtenir tous les résultats stockés en dehors du conteneur :
mkdir build
docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin
Note | Il existe quelques variables d’environnement qui contrôlent /arm_cpu_plugin_build.sh 'exécution du script.
|
Dans le dossier de build , OV_ARM_package.tar.gz est générée
ls build
Transférer le OV_ARM_package.tar.gz sur l’appareil cible (Raspberry Pi 4* 32-bit Buster)
Il existe différentes façons de transférer les paquets sur l’appareil cible (Raspberry Pi 4*), de copier en toute sécurité directement sur l’appareil cible, de copier le package sur une clé USB et de le transférer.
Cet article montrera comment monter une clé USB sur la machine hôte et copier le package de génération sur la clé USB montée.
Insérez la clé USB dans le port USB du système, puis vérifiez le démarrage de l’appareil à l’aide de la commande ci-dessous ;
sudo fdisk -l
Une fois le démarrage de périphérique vérifié, montez le démarrage de périphérique (par exemple /dev/sda) dans /mnt;
sudo mount /dev/sda /mnt
Ensuite, copiez le package OpenVINO sur la clé USB ;
sudo cp -rf build/OV_ARM_package.tar.gz /mnt/
Après avoir terminé la compilation croisée, et copié avec succès le OV_ARM_package.tar.gz sur l’appareil cible (Raspberry Pi 4*).
Installer l’outil de compilation
sudo apt update
sudo apt install cmake -y
Extrayez 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
Compiler l’exemple de code
cd ~/openvino_dist/samples/cpp
./build_samples.sh
Pour vérifier que le kit d’outils, Stick de calcul neuronal Intel® 2 et le plug-in Arm* fonctionnent sur votre appareil, procédez comme suit :
Le kit d’outils Intel® OpenVINO™ comprend des exemples d’applications utilisant le moteur d’inférence et Stick de calcul neuronal Intel® 2. L’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 devrait imprimer une boîte de dialogue décrivant les périphériques d’inférence disponibles sur le système.
L’application a besoin d’un modèle pour transmettre l’entrée. Vous pouvez obtenir des modèles pour le kit d’outils Intel® OpenVINO™ au format IR en :
Pour nos besoins, le téléchargement direct est le plus facile. Utilisez les commandes suivantes pour saisir 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 à 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 Model Optimizer en FP16 sur une machine distincte, car Model Optimizer n’est pas pris en charge sur Raspberry Pi*. |
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
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 d’utilisateurs, exécutez la commande suivante et redémarrez votre appareil. |
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 des démos, redémarrez votre appareil et réessayez.
Lorsque le modèle est téléchargé, qu’une image en entrée est disponible et que 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
Cette opération permet d’exécuter l’application avec les options sélectionnées. L’indicateur -d indique au programme le périphérique à utiliser pour l’inférence. La spécification de MYRIAD active le plugin MYRIAD , en utilisant l’Stick de calcul neuronal Intel® 2. Une fois la commande exécutée avec succès, le terminal affiche des statistiques d’inférence. Vous pouvez également utiliser le plug-in CPU pour exécuter l’inférence sur le CPU ARM de votre périphérique Raspberry Pi 4*. Reportez-vous à la spécification du jeu d’opérations du plug-in ARM pour la prise en charge des opérations, car le modèle utilisé dans cet exemple n’est pas pris en charge par le plug-in 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 s’est exécutée correctement sur votre Intel® NCS2, OpenVINO™ boîte à outils et Stick de calcul neuronal Intel® 2 sont correctement configurés pour une utilisation sur votre appareil.
Vous devez mettre à jour plusieurs variables d’environnement avant de compiler et d’exécuter OpenVINO 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 d’environnement OpenVINO™ sont supprimées lorsque vous fermez le shell. En option, vous pouvez définir définitivement les variables d’environnement 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 croisée et de construction pour la distribution open source de OpenVINO™ kit d’outils pour le système d’exploitation Raspbian*, et l’utilisation avec Stick de calcul neuronal Intel® 2 et le plug-in ARM*.