Anotações |
|
O kit de ferramentas OpenVINO™ implanta rapidamente aplicativos e soluções que imitam a visão humana. O kit de ferramentas estende as cargas de trabalho de visão computacional (CV) em todo o hardware intel® baseado em redes neurais convolucionais (CNN), que maximiza o desempenho. Essas etapas geralmente seguem o plug-in 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 SO Raspbian* de 32 bits com um método de compilação cruzada.
Clique no tópico para obter detalhes:
Nota | Este guia pressupõe que você tenha sua placa Raspberry Pi* em execução com o sistema operacional listado abaixo. |
Hardware
Sistema operacional alvo
Nota | Este guia contém comandos que precisam ser executados como acesso raiz ou de sudo para instalar corretamente. |
Certifique-se de que o software do seu dispositivo está atualizado:
sudo apt update && sudo apt upgrade -y
Nota | Você pode seguir a instrução 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
Nota | A versão do kit de ferramentas openvino_contrib e OpenVINO para este artigo é baseada em 2022.1 |
Faça download do código-fonte e modifique o arquivo de configuração:
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 as ferramentas de editor:
vim dockerfiles/Dockerfile.RPi32_buster
Adicionar "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 as ferramentas do 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.
Nesta etapa, executaremos o script para baixar e compilar cruzadamente OpenVINO™ kit de ferramentas e outros componentes, como o OpenCV* no ambiente de contêiner docker:
Vá para o diretório de plugin da CPU Arm:
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 no interior do /arm_cpu_plugin directory (comando padrão de contêiner para execução). Todos os resultados intermediários e artefatos de compilação são armazenados no diretório de trabalho.
Assim, pode-se montar todo o diretório de trabalho para ter todos os resultados armazenados fora do contêiner:
mkdir build
docker container run --rm -ti -v $PWD/build:/arm_cpu_plugin arm-plugin
Nota | Existem algumas variáveis de ambiente que controlam /arm_cpu_plugin_build.sh execução do script.
|
Na pasta de compilação , OV_ARM_package.tar.gz são geradas
ls build
Transfira o OV_ARM_package.tar.gz para o dispositivo de destino (Raspberry Pi 4* Buster de 32 bits)
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 um pen drive USB e transferê-lo.
Este artigo mostrará como montar um pen drive USB na máquina host e copiar o pacote de compilação para o pen drive montado.
Insira o pen drive USB na porta USB do sistema e, em seguida, verifique a inicialização do dispositivo usando o comando abaixo;
sudo fdisk -l
Após a verificação da 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 o pen drive USB;
sudo cp -rf build/OV_ARM_package.tar.gz /mnt/
Após concluir a compilação cruzada, e copiou com sucesso a OV_ARM_package.tar.gz para o dispositivo de destino (Raspberry Pi 4*).
Instalar ferramenta de compilação
sudo apt update
sudo apt instalar cmake -y
Extraia o pacote OV_ARM_package.tar.gz
mkdir ~/openvino_dist/
tar -xvzf OV_ARM_package.tar.gz -C ~/openvino_dist/
Obter a 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 e Stick de computação neural Intel® 2 e plugin Arm* funcionam no seu dispositivo, execute as seguintes etapas:
O kit de ferramentas Intel® OpenVINO™ inclui aplicações de amostra utilizando o mecanismo de inferência e o Stick de computação neural Intel® 2. Um dos aplicativos é hello_query_device, que pode ser encontrado 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.
O aplicativo precisa de um modelo para transmitir a entrada. Você pode obter modelos para o kit de ferramentas Intel® OpenVINO™ em formato IR por:
Para as nossas finalidades, o download diretamente é o 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 | O Stick de computação neural Intel® 2 requer modelos otimizados para o formato de ponto flutuante de 16 bits conhecido como FP16. Se for diferente do exemplo, seu modelo pode exigir uma conversão usando o Otimizador de modelos para FP16 em uma máquina separada, pois o Otimizador de modelo não é suportado no Raspberry Pi*. |
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. Faça o download dos arquivos necessários na sua placa:
wget https://cdn.pixabay.com/photo/2018/07/06/00/33/person-3519503_960_720.jpg -O ~/Downloads/person.jpg
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 reinicialize o dispositivo. |
sudo usermod -a -G users "$(whoami)"
Configure o ambiente OpenVINO™:
source /home/pi/openvino_dist/setupvars.sh
Para executar a inferência no Stick de computação neural Intel® 2, instale as regras de 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 a Stick de computação neural Intel® 2 não for detectada ao executar demonstrações, reinicie o dispositivo e tente novamente.
Quando o modelo é baixado, uma imagem de entrada está disponível e o Stick de computação neural Intel® 2 está conectado a uma porta USB, use o seguinte comando 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. O -d sinalizador diz ao programa qual dispositivo usar para inferência. Especificar a MYRIAD ativa o plugin MYRIAD , utilizando o Stick de computação neural Intel® 2. Depois que o comando for executado com êxito, o terminal exibirá estatísticas para inferência. Você também pode usar o plug-in da CPU para executar inferência na CPU ARM do seu dispositivo Raspberry Pi 4*, consulte a especificação do conjunto de operação de pluginARAR* para suporte de operação, pois o modelo usado neste exemplo não é compatível com o pluginARARAR*.
[ 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 o aplicativo tiver sido funcionado com êxito em seu Intel® NCS2, OpenVINO™ kit de ferramentas e Stick de computação neural Intel® 2 estão configuradas corretamente para uso no seu dispositivo.
Você deve atualizar várias variáveis de ambiente antes de compilar e executar OpenVINO aplicativos do kit de ferramentas. Execute o seguinte script para definir temporariamente as variáveis de ambiente:
source /home/pi/openvino_dist/setupvars.sh
**(Opcional)** As variáveis do ambiente OpenVINO™ são removidas quando você fecha o shell. Como uma 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 a compilação cruzada e o procedimento de compilação para distribuição de código aberto do kit de ferramentas OpenVINO™ para Raspbian* OS e o uso com Stick de computação neural Intel® 2 e plugin Arm*.