Kit de ferramentas de compilação cruzada OpenVINO™ e plugin NCS2 usando Dockerfile pré-configurado para o sistema operacional Debian* de 32 bits
Notas |
|
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.
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.
|
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:
- Execute o aplicativo de hello_query_device para confirmar se todas as bibliotecas são carregadas corretamente.
- Baixe um modelo pré-treinado.
- Selecione uma entrada para a rede neural (ou seja, um arquivo de imagem).
- Configure o driver USB Stick de computação neural Intel® 2 Linux*.
- 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 |