Kit de ferramentas de compilação cruzada OpenVINO™ e plugin NCS2 usando Dockerfile pré-configurado para o sistema operacional Debian* de 32 bits

Documentação

Instalação e configuração

000057005

16/06/2023

Notas
  • Todas as etapas são necessárias na instalação.
  • Essas etapas foram testadas com a placa Raspberry Pi 4* e Raspbian* Buster, de 32 bits.
  • Uma conexão com a Internet é necessária para seguir as etapas deste guia.
  • O artigo foi verificado usando a versão 2022.1 da distribuição de código aberto do kit OpenVINO™ ferramentas.

O OpenVINO™ de ferramentas implanta rapidamente aplicações e soluções que emularão a visão humana. O kit de ferramentas estende cargas de trabalho de visão computacional (CV) em todo o hardware Intel® com base em Redes Neurais Convolutional (CNN), o que maximiza o desempenho. Essas etapas geralmente seguem o plugin como construir a CPU ARM disponível. No entanto, alterações específicas são necessárias para executar tudo no Raspberry Pi 4*. Este guia fornece etapas para a criação de distribuição de código aberto do kit de ferramentas OpenVINO™ para o sistema operacional Raspbian* de 32 bits com um método de compilação cruzada.

Clique no tópico para obter detalhes:

Requisitos do sistema
Nota Este guia assume que você tem sua placa Raspberry Pi* funcionando e funcionando com o sistema operacional listado abaixo.

Hardware

  • Raspberry Pi* 4 (Raspberry Pi* 3 Modelo B+ deve funcionar.)
  • Pelo menos um cartão microSD de 16 GB
  • Stick de computação neural Intel® 2
  • Conexão de Internet Ethernet ou rede sem fio compatível
  • Máquina host com contêiner docker instalado

Sistema operacional de destino

  • Raspbian* Buster, 32 bits
Configurando seu ambiente de compilação
Nota Este guia contém comandos que precisam ser executados como acesso raiz ou sudo para instalar corretamente.

Certifique-se de que o software do seu dispositivo está atualizado:

sudo apt update && sudo apt upgrade -y

Instalar o contêiner Docker
Nota Você pode seguir as instruções de instalação com base na documentação oficial do 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

Repositório openvino_contrib clone
Nota A openvino_contrib e OpenVINO kit de ferramentas para este artigo é baseada em 2022.1

Baixe o código fonte e modifique o arquivo config:

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

Vá para o diretório arm_plugin:

cd openvino_contrib/modules/arm_plugin

Modifique o conteúdo do arquivo Dockerfile.RPi32_buster conforme abaixo com ferramentas de editor:

vim dockerfiles/Dockerfile.RPi32_buster

Adicione "RUN pip install protobuf==3.20.0" na linha 114, conforme mostrado no diagrama abaixo.

Screenshot

Salve o arquivo editado.

Modifique o conteúdo do arquivo arm_cpu_plugin_build.sh conforme mostrado abaixo com ferramentas de editor:

vim scripts/arm_cpu_plugin_build.sh

Edite as linhas 77, 78, 79 e 136 e adicione alterações conforme mostrado em negrito abaixo:

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 \

Salve o arquivo editado.

Kit de ferramentas cross-Compile OpenVINO™ ambiente do Docker

Nesta etapa, executaremos o script para baixar e compilar OpenVINO™ kit de ferramentas e outros componentes, como OpenCV* no ambiente de contêineres Docker:

Vá para o diretório de plugins arm CPU:

cd openvino_contrib/modules/arm_plugin

Construa uma imagem do Docker*:

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

Construa o plugin no contêiner Docker*:

O processo de compilação é executado /arm_cpu_plugin_build.sh script executado dentro /arm_cpu_plugin diretório (comando de contêiner padrão a ser executado). Todos os resultados intermediários e artefatos de compilação são armazenados dentro do diretório de trabalho.

Assim, é possível montar todo o diretório de trabalho para obter todos os resultados armazenados fora do contêiner:

mkdir build

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

Nota

Há algumas variáveis de ambiente que controlam /arm_cpu_plugin_build.sh execução de scripts.

  • BUILD_JOBS o número de threads para compilação simultânea
  • BUILD_TYPE controla a configuração de depuração/versão (Versão por padrão)
  • UPDATE_SOURCES recuperação de fontes
    • limpe - não recarregue fontes se já estiver carregado. Basta limpar pastas de compilação (padrão)
    • recarrege - exclua todas as fontes carregadas e recupere-as novamente
    • verificar - não recarregue ou limpe fontes
  • WITH_OMZ_DEMO cria demos C++ Open Model Zoo (ON por padrão)

Na pasta de compilação , OV_ARM_package.tar.gz é gerado

ls build

Transfira o OV_ARM_package.tar.gz para o dispositivo de destino (Raspberry Pi 4* 32 bits Buster)
Há várias maneiras de transferir os pacotes para o dispositivo de destino (Raspberry Pi 4*), cópia segura diretamente para o dispositivo de destino, copiar o pacote para uma unidade de polegar USB e transferi-lo.
Este artigo mostrará como montar uma unidade de polegar USB na máquina host e copiar o pacote de compilação para a unidade de polegar montada.

Insira a unidade de polegar USB na porta USB do sistema e verifique a inicialização do dispositivo usando o comando abaixo;

fdisk sudo -l

Após verificar a inicialização do dispositivo, monte a inicialização do dispositivo (por exemplo, /dev/sda) em /mnt;

sudo mount /dev/sda /mnt

Em seguida, copie o pacote OpenVINO para a unidade de polegar USB;

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

Verificando o pacote de compilação

Após concluir a compilação cruzada e copiar com êxito o OV_ARM_package.tar.gz para o dispositivo de destino (Raspberry Pi 4*).

Instalar a ferramenta de compilação

sudo apt update
sudo apt instalar cmake -y

Extraia o OV_ARM_package.tar.gzpackage

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

Origem da variável de configuração

source ~/openvino_dist/setupvars.sh

Compile o código de amostra

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

Para verificar se o kit de ferramentas, Stick de computação neural Intel® 2 e plugin ARM* funcionam no seu dispositivo, preencha as seguintes etapas:

  1. Execute o aplicativo de hello_query_device para confirmar se todas as bibliotecas são carregadas corretamente.
  2. Baixe um modelo pré-treinado.
  3. Selecione uma entrada para a rede neural (ou seja, um arquivo de imagem).
  4. Configure o driver USB Stick de computação neural Intel® 2 Linux*.
  5. Execute benchmark_app com o modelo e a entrada selecionados.

Aplicações de amostra

O kit® de OpenVINO™ Intel inclui aplicações de amostra utilizando o mecanismo de inferência e Stick de computação neural Intel® 2. Uma das aplicações é hello_query_device, que pode ser encontrada no seguinte diretório:

~/inference_engine_cpp_samples_build/armv7l/Release

Execute os seguintes comandos para testar hello_query_device :

cd ~/inference_engine_cpp_samples_build/armv7l/Release

./hello_query_device

Ele deve imprimir uma caixa de diálogo, descrevendo os dispositivos disponíveis para inferência presentes no sistema.

Baixando um modelo

A aplicação precisa de um modelo para passar a entrada. Você pode obter modelos para o kit de OpenVINO™ Intel® no formato IR:

  • Usando o Otimizador de Modelos para converter um modelo existente de uma das estruturas suportadas em formato IR para o mecanismo de inferência. Observe que o pacote do Otimizador de Modelos não está disponível para Raspberry Pi*.
  • Usando a ferramenta Model Downloader para baixar a partir do Open Model Zoo. Apenas modelos públicos pré-treinados.
  • Baixe os arquivos de IR diretamente do storage.openvinotookit.org

Para nossos propósitos, baixar diretamente é mais fácil. Use os seguintes comandos para obter um modelo de detecção pessoa-veículo-bicicleta:

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 A Stick de computação neural Intel® 2 requer modelos otimizados para o formato de ponto flutuante de 16 bits, conhecido como FP16. Se ele difere do exemplo, seu modelo pode exigir conversão usando o Otimizador de Modelo para FP16 em uma máquina separada, pois o Otimizador de Modelo não é suportado no Raspberry Pi*.

Entrada para a rede neural

O último item necessário é a entrada para a rede neural. Para o modelo que baixamos, você precisa de uma imagem com três canais de cor. Baixe os arquivos necessários para sua placa:

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

Configurando o driver USB Stick de computação neural Intel® 2 Linux

Algumas regras de udev devem ser adicionadas para permitir que o sistema reconheça Intel® NCS2 dispositivos USB.

Nota Se o usuário atual não for membro do grupo do usuário, execute o comando a seguir e reinicie o seu dispositivo.

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

Configure o ambiente OpenVINO™ ambiente:

source /home/pi/openvino_dist/setupvars.sh

Para realizar inferência no Stick de computação neural Intel® 2, instale as regras do USB executando o script install_NCS_udev_rules.sh :

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

O driver USB deve ser instalado corretamente agora. Se o Stick de computação neural Intel® 2 não for detectado ao executar demonstrações, reinicie o dispositivo e tente novamente.

Executando benchmark_app

Quando o modelo for baixado, uma imagem de entrada estiver disponível e o Stick de computação neural Intel® 2 estiver conectado a uma porta USB, use o comando a seguir para executar o 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

Isso executará o aplicativo com as opções selecionadas. A -d indica ao programa qual dispositivo usar para inferência. A especificação do MYRIAD ativa o plugin MYRIAD , utilizando o Stick de computação neural Intel® 2. Após a execução com êxito do comando, o terminal exibirá estatísticas para inferência. Você também pode usar o plugin da CPU para executar inferência na CPU ARM do seu dispositivo Raspberry Pi 4*, consulte a especificação do conjunto de operações de plugin ARM* para suporte de operação, pois o modelo usado neste exemplo não é suportado pelo 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


Se a aplicação foi realizada com sucesso em seu Intel® NCS2, OpenVINO™ kit de ferramentas e Stick de computação neural Intel® 2 são configurados corretamente para uso em seu dispositivo.

Variáveis de ambiente

Você deve atualizar várias variáveis de ambiente antes de compilar e executar OpenVINO aplicativos de kit de ferramentas. Execute o seguinte script para definir temporariamente as variáveis do ambiente:

source /home/pi/openvino_dist/setupvars.sh

**(Opcional)** As variáveis OpenVINO™ ambiente são removidas quando você fecha o shell. Como opção, você pode definir permanentemente as variáveis do ambiente da seguinte forma:

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

Para testar sua mudança, abra um novo terminal. Você verá o seguinte:

[setupvars.sh] OpenVINO environment initialized

Isso conclui o procedimento de compilação cruzada e compilação para distribuição de código aberto do kit de ferramentas OpenVINO™ raspbian* e uso com Stick de computação neural Intel® 2 e plugin ARM*.

Tópicos relacionados
Construindo demonstrações de zoo de modelo aberto no Raspberry Pi*
OpenVINO™ kit de ferramentas Open Model Zoo
Fórum comunitário e suporte técnico