Falo pela primeira hoje sobre
Jetson Nano, essa placa que considero impressionante. Pouca coisa maior que um
Raspberry, mas com um poder de processamento descomunal: 472 gigaflops, ou
seja, 128 núcleos CUDA que processam uma rede neural convolucional que faz o
reconhecimento de imagens e de objetos. Vamos, portanto, fazer uma aplicação com o
Jetson Nano e classificação de objetos em tempo real.
Quer comprar um Jetson Nano? Recomendo esse link: http://s.click.aliexpress.com/e/crAEsYQ4
Características
GPU Arquitetura NVIDIA
Maxwell ™ com 128 núcleos NVIDIA Cuda
CPU Processador
quad-core ARM ® Cortex ® -A57 MPCore
Memória 4 GB de LPDDR4 de 64 bits
Armazenamento
16 GB de eMMC 5.1
Flash
Codificação de vídeo 4K @ 30 (H.264 / H.265)
Decodificação de vídeo 4K @ 60 (H.264 /
H.265)
Câmera 12
pistas (3x4 ou 4x2) MIPI CSI-2 DPHY 1.1 (1,5 Gbps)
Conectividade Gigabit Ethernet
Exibição HDMI
2.0 ou DP1.2 | eDP 1.4 | DSI (1 x2) 2 simultâneos
UPHY 1 PCB x1 / 2/4, 1x
USB 3.0, 3x USB 2.0
E / S 1x SDIO / 2x SPI /
6x I2C / 2x I2S / GPIOs
Recursos usados
·
Jetson Nano
·
microSD card (16GB no mínimo, 32 recomendado)
·
USB Teclado e mouse
·
Monitor ( HDMI ou DP)
·
Micro-USB power supply (5V⎓2A)
·
Webcam Logitech c270
·
Conexão com a internet
o Cabo
o Adaptador
Wi-fi
Jetson Nano
1. microSD
card slot
2. 40-pin
expansion header
3. Micro-USB
para 5V ou para data
4. Gigabit
Ethernet port
5. USB
3.0 ports (x4)
6. HDMI
output port
7. DisplayPort
connector
8. DC
5V power input
9. MIPI
CSI camera connector
40-pin expansion Header Jetson Nano
PREPARAR PARA INSTALAÇÃO
Gravar imagem no cartão micros
Para preparar seu cartão
microSD, você precisará de um computador com conexão à internet e capacidade de
ler e gravar cartões SD, seja por meio de um slot ou adaptador de cartão SD
integrados
Baixar imagem Jetson Nano
Baixe o Jetson Nano Developer
Kit SD Card Image e observe onde ela foi salva no computador.
Para formatar seu cartão
microSD é recomendado utilizar o SD Memory Card Formatter fornecido pela
Associação SD.
Para baixar clique aqui e
depois clique em “Accept” no fim da página. Instale e inicie o aplicativo.
Formatar cartão micros
1. Selecione
o cartão.
2. Selecione
“Quick format”
3. Deixe
o “Volume label” em branco
4. Clique
em “Format” para iniciar a formatação e “Yes” na caixa de diálogo de aviso.
Gravar imagem no cartão microSD
Use o Etcher para gravar a
imagem no cartão SD do Jetson Nano.
Baixe, instale e inicie o Etcher.
Clique em “Select Image” e
escolha o arquivo de imagem baixado anteriormente.
Insira o cartão microSD, se
ainda não estiver inserido.
Clique em “Cancel” se o
Windows solicitar uma caixa de diálogo falando para formatar o disco.
Clique em “Select drive” e
escolha o microSD correto.
Clique em “Flash!”. Leva cerca
de 10 minutos para que o Etcher grave e valide a imagem caso o cartão microSD
estiver conectado via USB3.
Depois de terminar, o Windows
informa que não sabe ler o cartão. Basta clicar em cancelar e remover o cartão.
FONTE DE ALIMENTAÇÃO MICRO-USB
Preparar Jetson Nano para primeiro Boot
Você precisa alimentar o
Jetson Nano com uma fonte de alimentação de boa qualidade que possa fortalecer
5V⎓2A
na porta Micro-USB.
Nem todas as fontes de
alimentação com classificação “5V⎓2A”
fazem isso, então caso o Nano fique reiniciando,
verifique se a fonte de alimentação está entregando a energia necessária.
INSTALAÇÃO E PRIMEIRO BOOT
Preparar Jetson Nano para primeiro Boot
Insira o cartão microSD(com a
imagem do sistema já gravada) no slot na parte inferior do módulo do Jetson Nano.
Ligue o monitor e conecte.
Conecte o teclado e mouse USB.
Conecte sua fonte de
alimentação Micro-USB (5V - 2A).
Conecte o cabo da internet ou
utilize um adaptador Wi-fi para rede.
O Jetson Nano será ligado e
inicializado automaticamente.
Primeiro Boot
Um LED verde ao lado do
conector Micro-USB acenderá assim que o Jetson Nano for ligado. Quando você
inicializar pela primeira vez, o Jetson Nano precisa fazer as configurações
iniciais, como:
·
Aceitar os termos
·
Selecionar o idioma do sistema, layout do
teclado e fuso horário
·
Criar nome de usuário, senha e nome do
computador.
·
Log in
Após logar, irá ver a seguinte
tela.
CLASSIFICAÇÃO DE OBJETOS
Uma ótima maneira de começar a
usar o Jetson e experimentar o poder da inteligência artificial é o Hello AI
World.
Para classificar é necessário
configurar o Jetson Nano para deep learning, seguindo os seguintes passos todos
por comandos terminal:
·
Instalando os pré-requisitos do pacote do
sistema.
·
Instalando Keras e TensorFlow e Keras no Jetson
Nano.
·
Instalando o mecanismo de dedução do Jetson.
Instalando os pré-requisitos do pacote do sistema.
Instala Git e cmake
$ sudo apt-get install git cmake
Instala software de álgebra
linear e compilador GNU.
$ sudo apt-get install libatlas-base-dev gfortran
Instala HDF5(Hierarchical Data
Format)
$ sudo apt-get install libhdf5-serial-dev hdf5-tools
Instala ferramenta de desenvolvedor python
$ sudo apt-get install python3-dev
Com uma boa conexão de
internet, os comandos vão levar apenas alguns minutos para executar.
Configurando seu ambiente Python
Baixa o pip para fazer
instalações
$ wget https://bootstrap.pypa.io/get-pip.py
Instala o pip
$ sudo python3 get-pip.py
Remove o arquivo baixado
$ rm get-pip.py
Usaremos ambientes virtuais
Python para manter nossos ambientes de desenvolvimento em Python independentes
e separados um do outro.
Usar ambientes virtuais do
Python é uma pratica recomendada e ajuda a evitar a necessidade de manter um
micro-SD para cada ambiente de desenvolvimento.
Para gerenciar nossos
ambientes virtuais em Python, usaremos o virtualenv e virtualenvwrapper,
instalados pelo seguinte comando:
$ sudo pip install virtualenv virtualenvwrapper
Após instalar, precisamos
atualizar nosso arquivo ~/ .bashrc:
$ vim ~/.bashrc
Atualizar arquivo ~/ .bashrc
Como foi utilizado o comando
“vim” para editar o arquivo é necessário seguir os seguintes comando.
Vá até o final do arquivo ~/
.bashrc, aperte a tecla “i” para editar o arquivo e adicione as seguintes
linhas:
export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh
Após adicionar as linhas,
pressione a tecla “Esc”.
Depois basta segurar a tecla
“Shift” e clicar duas vezes na tecla “Z” para salvar e sair do editor.
Configurando seu ambiente Python
Após precisamos recarregar o
~/ .bashrc utilizando o comando source:
$ source ~/.bashrc
Agora podemos criar um
ambiente em Python utilizando o comando mkvirtualevn - com o nome
deep_learning:
$ mkvirtualenv deep_learning -p python3
Instalando TensorFlow e Keras
Antes de instalar o TensorFlow
e Keras precisamos instalar o NumPy.
Primeiro, verifique se está
dentro do ambiente virtual que criou, o deep_learning utilizando o comando
workon:
$ workon deep_learning
Depois, instale o NumPy:
$ pip install numpy
A instalação do NumPy leva
cerca de 15 minutos, pois ele têm que ser compilado no sistema.
A NVIDIA fornece o TensorFlow para o Jetson Nano.
Para instalar o Jetson Nano
TensorFlow oficial é só utilizar o seguinte comando:
$ pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3
Instalar o tensforflow-gpu na
NVIDIA leva cerca de 40 minutos.
Após isso, basta instalar
SciPy e Keras que leva cerca de 35minutos:
$ pip install scipy $ pip install keras
Compilando e instalando o Jetson Inference (Dedução)
O primeiro passo é clonar o
repositório de dedução do jetson.
Clonar o repositório:
$ git clone https://github.com/dusty-nv/jetson-inference
Entra no repositório clonado:
$ cd jetson-inference
Depois utilize o seguinte
comando:
$ git submodule update --init
Agora podemos configurar a
construção utilizando o cmake.
Criar diretório build
$ mkdir build
Entrar no diretório build
$ cd build
Configura a compilação
$ cmake ..
Cmake
Há duas coisas importantes a
serem observadas ao executar o cmake:
1. O
comando cmake solicitará a permissão de root, então é necessário fornecer as
informações;
2. Durante
o processo de configuração, o cmake baixará alguns gigabytes de modelos de
amostras pré-treinadas. Certifique de possuir alguns GBs de sobra no cartão micro-SD.
Por isso é recomendado utilizar um cartão de 32 GB em vez de um de 16 GB;
Compilando e instalando o Jetson Inference (Dedução)
Depois que o cmake terminar de
configurar a compilação, podemos compilar e instalar o mecanismo de dedução do
Jetson:
$ make $ sudo make install
Compilar e instalar o
mecanismo de dedução do Jetson leva cerca de 3 minutos.
Utilizando USB Camera
Como estamos utilizando uma
câmera USB, precisamos alterar um valor padrão dentro do arquivo
imagenet-camera.cpp
Primeiro, mude de diretório
com:
$ cd ~/jetson-inference/imagenet-câmera
Depois abra o arquivo para
editar:
$ vim imagenet-camera.cpp
Após abrir o arquivo, role
aproximadamente até a linha 37 do arquivo, onde vai ver o valor da
DEFAULT_CAMERA:
#define DEFAULT_CAMERA -1 // -1 for onboard camera, or change to index of /dev/video V4L2 camera (>=0)
Para editar arquivo pelo vim,
primeiro pressione a tecla “i”.
Depois, simplesmente troque o
valor de -1 para 0:
#define DEFAULT_CAMERA 0 // -1 for onboard camera, or change to index of /dev/video V4L2 camera (>=0)
Primeiro clique na tecla “Esc”
para parar de editar e segurando a tecla “Shift” aperte duas vezes a tecla “Z” para sair do
editor .
Compilando e instalando o Jetson Inference (Dedução)
Depois de editar o arquivo
c++, é necessário recompilar o exemplo com os seguintes comandos:
$ cd ../build $ make $ sudo make install
*Tenha em mente que o make é
inteligente o suficiente para não recompilar a biblioteca inteira. O comando só
irá recompilar os arquivos que foram alterados.
Uma vez compilado, muda para o
diretório aarch64/bin e execute o binário imagenet-câmera.
Entra no diretório
aarch64/bin:
$ cd aarch64/bin/
Executa o imagenet-câmera:
$ ./imagenet-câmera
Se for a primeira vez que você
está carregando um modelo específico, pode levar de 5 a 15 minutos para
carregar o modelo. Internamente, o Jetson está otimizando e preparando o modelo
para a detecção. Só precisa ser feito uma vez para que as execuções
subsequentes sejam mais rápidas.
10 Comentários
cara parabéns pelo serviço prestado aqui,cada dia uma grata surpresa,valeu!!!
ResponderExcluirParabéns pelo excelente vídeo.
ResponderExcluirO poder de processamento do Jetson e o raspberry+NCS2 podem ser comparados?
ResponderExcluirObrigada pelo tutorial! Estou usando um cartao de 32G e nao pude instalar todos os pacotes recomendados por conta de falta de espaco. Alguma ideia do que estou fazendo de errado?
ResponderExcluirusand
Alguém que comprou chegou a ser taxado?
ResponderExcluirtem como ensinar com outras imagens
ResponderExcluire colocar o cuda nele
ResponderExcluirnao reconhece o comando mkvirtualenv
ResponderExcluirFala Fernando, blz?
ResponderExcluirSeguinte, estou seguindo esse teu artigo, fazendo o passo-a-passo.... Porém dá problema de build na lib h5py. Já tive esse problema em outras tentativas ao instalar o tensorflow. Sabes como resolver ess questão?
Desde já, muito obrigado pela sua atenção.
Fernando, não existe o arquivo "imagenet-camera" dentro do projeto.
ResponderExcluir