Compilación cruzada del kit de herramientas OpenVINO™ y el complemento NCS2 mediante Dockerfile preconfigurado para debian* OS de 32 bits

Documentación

Instalación y configuración

000057005

16/06/2023

Notas
  • Todos los pasos son necesarios en la instalación.
  • Estos pasos se han probado con placa Raspberry Pi 4* y Raspbian* Buster de 32 bits.
  • Se requiere una conexión a Internet para seguir los pasos de esta guía.
  • El artículo se verificó mediante la versión 2022.1 de la distribución de código abierto del kit de herramientas de OpenVINO™.

El kit de herramientas OpenVINO™ implementa rápidamente aplicaciones y soluciones que emulan la visión humana. El kit de herramientas extiende las cargas de trabajo de visión computarización (CV) a través del hardware de Intel® basado en redes neuronales convolucionales (CNN), lo que maximiza el desempeño. Estos pasos generalmente siguen el complemento Cómo construir ARM CPU disponible. Sin embargo, se requieren cambios específicos para ejecutar todo en Raspberry Pi 4*. Esta guía proporciona los pasos para desarrollar la distribución de código abierto del kit de herramientas OpenVINO™ para el sistema operativo Raspbian* de 32 bits con un método de compilación cruzada.

Haga clic en en el tema para obtener más información:

Requisitos del sistema
Nota Esta guía da por sentado que tiene la placa Raspberry Pi* en funcionamiento con el sistema operativo que se indica a continuación.

Hardware

  • Raspberry Pi* 4 (debería funcionar Raspberry Pi* 3 Modelo B+).
  • Al menos una tarjeta microSD de 16 GB
  • Barra de cómputo neuronal Intel® 2
  • Conexión a Internet Ethernet o red inalámbrica compatible
  • Máquina host con contenedor docker instalado

Sistema operativo objetivo

  • Raspbian* Buster, 32 bits
Configuración del entorno de compilación
Nota Esta guía contiene comandos que deben ejecutarse como acceso raíz o sudo para instalarse correctamente.

Asegúrese de que el software del dispositivo esté actualizado:

sudo apt update && sudo apt upgrade -y

Instalación de un contenedor Docker
Nota Puede seguir las instrucciones de instalación basadas en la documentación oficial de 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

Clonar un repositor openvino_contrib
Nota La versión del kit de herramientas openvino_contrib y OpenVINO para este artículo se basa en la versión 2022.1

Descargue el código fuente y modifique el archivo de configuración:

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

Vaya al directorio arm_plugin:

cd openvino_contrib/modules/arm_plugin

Modifique el contenido del archivo Dockerfile.RPi32_buster como se indica a continuación con las herramientas del editor:

vim dockerfiles/Dockerfile.RPi32_buster

Añada "RUN pip install protobuf==3.20.0" en la línea 114, como se muestra en el siguiente diagrama.

Screenshot

Guarde el archivo de "resguardo".

Modifique el contenido del archivo arm_cpu_plugin_build.sh como se muestra a continuación con las herramientas del editor:

vim scripts/arm_cpu_plugin_build.sh

Edite las líneas 77, 78, 79 y 136 y agregue cambios como se muestra en negrita a continuación:

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 \

Guarde el archivo de "resguardo".

Kit de herramientas de OpenVINO™ de compilación cruzada en el entorno de contenedor de Docker

En este paso, ejecutaremos el script para descargar y compilar entre sí OpenVINO™ toolkit y otros componentes como OpenCV* en el entorno de contenedor Docker:

Vaya al directorio de complementos de ARM CPU:

cd openvino_contrib/modules/arm_plugin

Cree una imagen Docker*:

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

Cree el complemento en el contenedor Docker*:

El proceso de compilación se realiza mediante /arm_cpu_plugin_build.sh script que se ejecuta dentro del directorio /arm_cpu_plugin (comando de contenedor predeterminado que se debe ejecutar). Todos los resultados intermedios y los artefactos de construcción se almacenan dentro del directorio de trabajo.

Así que se puede montar todo el directorio de trabajo para obtener todos los resultados almacenados fuera del contenedor:

mkdir build

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

Nota

Hay algunas variables de entorno que controlan /arm_cpu_plugin_build.sh ejecución de script.

  • BUILD_JOBS controla el número de subprocesos para la compilación simultánea
  • BUILD_TYPE controles de configuración de depuración/versión (versión de forma predeterminada)
  • UPDATE_SOURCES controla la recuperación de fuentes
    • clean(Limpiar ): no vuelva a cargar las fuentes si ya está cargada. Simplemente limpie las carpetas de compilación (predeterminado)
    • reload(Recarga ): elimine todas las fuentes cargadas y recupérelas de nuevo.
    • control: no recargue ni limpie las fuentes
  • WITH_OMZ_DEMO crea demostraciones de Zoo Open Model C++ (ACTIVADA de forma predeterminada)

En la carpeta de compilación, se genera OV_ARM_package.

ls build

Transfiera el OV_ARM_package.él.gz al dispositivo de destino (Raspberry Pi 4* 32-bit Buster)
Hay varias maneras de transferir los paquetes al dispositivo de destino (Raspberry Pi 4*), copia segura directamente al dispositivo de destino, copiar el paquete a una unidad USB y transferirlo.
Este artículo mostrará cómo instalar una unidad USB en el equipo host y copiar el paquete de construcción en la unidad usb montada.

Inserte la unidad USB en el puerto USB del sistema y, a continuación, compruebe el inicio del dispositivo con el siguiente comando;

sudo fdisk -l

Una vez verificado el arranque del dispositivo, monte el arranque del dispositivo (por ejemplo, /dev/sda) en /mnt;

sudo mount /dev/sda /mnt

A continuación, copie el paquete OpenVINO en la unidad USB;

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

Verificación del paquete de compilación

Después de completar la compilación cruzada y copiar correctamente el OV_ARM_package.guiz en el dispositivo de destino (Raspberry Pi 4*).

Instalar la herramienta de compilación

sudo apt update
sudo apt install cmake -y

Extraiga el OV_ARM_package.agua.gzpackage

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

Fuente de la variable de configuración

source ~/openvino_dist/setupvars.sh

Compile el código de muestra

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

Para verificar que el kit de herramientas y el complemento Barra de cómputo neuronal Intel® 2 y ARM* funcionen en su dispositivo, complete los siguientes pasos:

  1. Ejecute la aplicación de ejemplo hello_query_device para confirmar que todas las bibliotecas se carguen correctamente.
  2. Descargue un modelo previamente capacitado.
  3. Seleccione una entrada para la red neuronal (es decir, un archivo de imagen).
  4. Configure el controlador USB Barra de cómputo neuronal Intel® 2 Linux*.
  5. Ejecute benchmark_app con el modelo y la entrada seleccionados.

Aplicaciones de muestra

El kit de herramientas de OpenVINO™ Intel® incluye aplicaciones de muestra que utilizan el Motor de inferencia y la Barra de cómputo neuronal Intel® 2. Una de las aplicaciones es hello_query_device, que se encuentra en el siguiente directorio:

~/inference_engine_cpp_samples_build/armv7l/Release

Ejecute los comandos siguientes para probar hello_query_device:

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

Debe imprimir un diálogo que describa los dispositivos disponibles para la inferencia presentes en el sistema.

Descargar un modelo

La aplicación necesita un modelo para pasar la entrada. Puede obtener modelos para el kit de herramientas Intel® OpenVINO™ en formato IR:

  • Uso del optimizador de modelos para convertir un modelo existente de uno de los marcos compatibles en formato IR para el motor de inferencia. Tenga en cuenta que el paquete de optimizador de modelos no está disponible para Raspberry Pi*.
  • Uso de la herramienta Desherramientado modelo para descargar desde zoo Open Model. Solo modelos públicos previamente capacitados.
  • Descargue los archivos IR directamente desde storage.openvinotookit.org

Para nuestros propósitos, descargar directamente es más fácil. Utilice los siguientes comandos para tomar un modelo de detección person-vehicle-bike:

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

Nota El Barra de cómputo neuronal Intel® 2 requiere modelos optimizados para el formato de punto flotante de 16 bits conocido como FP16. Si difiere del ejemplo, el modelo puede requerir la conversión a FP16 del optimizador de modelo en un equipo independiente, ya que el optimizador de modelo no es compatible con Raspberry Pi*.

Entrada para la red neuronal

El último elemento necesario es la entrada para la red neuronal. Para el modelo que hemos descargado, necesita una imagen con tres canales de color. Descargue los archivos necesarios en la placa:

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

Configuración del controlador USB Barra de cómputo neuronal Intel® 2 Linux

Se deben agregar algunas reglas uindex para permitir que el sistema reconozca Intel® NCS2 dispositivos USB.

Nota Si el usuario actual no es miembro del grupo de usuarios, ejecute el siguiente comando y reinicie el dispositivo.

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

Configure el entorno de OpenVINO™:

source /home/pi/openvino_dist/setupvars.sh

Para realizar inferencia en el Barra de cómputo neuronal Intel® 2, instale las reglas USB ejecutando el script install_NCS_udev_rules.sh :

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

El controlador USB debe estar instalado correctamente ahora. Si no se detecta el Barra de cómputo neuronal Intel® 2 al ejecutar demostraciones, reinicie el dispositivo e inténtelo de nuevo.

Ejecución de benchmark_app

Cuando se descargue el modelo, una imagen de entrada esté disponible y el Barra de cómputo neuronal Intel® 2 esté conectado a un puerto USB, utilice el siguiente comando para ejecutar el 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

Se ejecutará la aplicación con las opciones seleccionadas. El indicador -d indica al programa qué dispositivo utilizar para inferencia. Al especificar MYRIAD , se activa el complemento MYRIAD utilizando el Barra de cómputo neuronal Intel® 2. Después de que se ejecute correctamente el comando, el terminal mostrará las estadísticas de inferencia. También puede utilizar el complemento de CPU para ejecutar inferencia en la CPU ARM de su dispositivo Raspberry Pi 4*, consulte la especificación del conjunto de operación del complemento ARM* para la compatibilidad con la operación, ya que el modelo utilizado en este ejemplo no es compatible con el complemento 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 la aplicación se ejecutó correctamente en su Intel® NCS2, OpenVINO™ kit de herramientas y Barra de cómputo neuronal Intel® 2 están configurados correctamente para su uso en el dispositivo.

Variables de entorno

Debe actualizar varias variables de entorno antes de compilar y ejecutar OpenVINO aplicaciones del kit de herramientas. Ejecute el siguiente script para establecer temporalmente las variables de entorno:

source /home/pi/openvino_dist/setupvars.sh

**(Opcional)** Las variables de entorno OpenVINO™ se eliminan cuando cierra el shell. Como opción, puede establecer permanentemente las variables de entorno de la siguiente manera:

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

Para probar el cambio, abra un nuevo terminal. Verá lo siguiente:

[setupvars.sh] OpenVINO environment initialized

Esto completa el procedimiento de compilación y compilación cruzada para la distribución de código abierto del kit de herramientas de OpenVINO™ para el so Raspbian* y su uso con Barra de cómputo neuronal Intel® 2 y complementos ARM*.

Temas relacionados
Creación de demostraciones de Zoo Open Model en Raspberry Pi*
Kit de herramientas OpenVINO™ Open Model Zoo
Foro comunitario y asistencia técnica