Índice:

Câmera AI para Raspberry Pi / Arduino: 7 etapas
Câmera AI para Raspberry Pi / Arduino: 7 etapas

Vídeo: Câmera AI para Raspberry Pi / Arduino: 7 etapas

Vídeo: Câmera AI para Raspberry Pi / Arduino: 7 etapas
Vídeo: Top 5 complex DIY projects with Raspberry Pi. 2024, Novembro
Anonim
Image
Image

Se você tem acompanhado as notícias recentemente, houve uma explosão de start-ups desenvolvendo chips para acelerar a inferência e o treinamento de algoritmos de ML (aprendizado de máquina). No entanto, a maioria desses chips ainda está em desenvolvimento e não é realmente algo que seu fabricante médio possa adquirir. A única exceção significativa até agora foi o Intel Movidius Neural Compute Stick, que está disponível para compra e vem com um bom SDK. Tem algumas desvantagens significativas - nomeadamente o preço (cerca de 100 USD) e o facto de vir no formato de stick USB. É ótimo se você quiser usá-lo com um laptop ou Raspberry PI, mas e se você quiser fazer alguns projetos de reconhecimento de imagem com o Arduino? Ou Raspberry Pi Zero?

Etapa 1: Sipeed MAix: AI no limite

Sipeed MAix: AI at the Edge
Sipeed MAix: AI at the Edge

Não muito tempo atrás eu coloquei em minhas mãos a placa de desenvolvimento Sipeed M1w K210, que tem CPU dual-core RISC-V de 64 bits e possui um KPU (Processador de Rede Neural) integrado, projetado especificamente para acelerar CNN para processamento de imagem. Você pode ler mais detalhes aqui.

O preço desta placa me chocou francamente, é apenas 19 dólares para a placa de desenvolvimento AI-on-the-edge completa com suporte Wi-fi! Porém, há uma advertência (é claro que há): o firmware do micropython para a placa ainda está em desenvolvimento e, no geral, não é muito amigável no momento. A única maneira de acessar todas as suas funções agora é escrever seu próprio código C embutido ou modificar algumas demos existentes.

Este tutorial explica como usar o modelo de detecção de classe Mobilenet 20 para detectar os objetos e enviar o código do objeto detectado por meio do UART, de onde pode ser recebido pelo Arduino / Raspberry Pi.

Agora, este tutorial assume que você está familiarizado com Linux e os fundamentos da compilação de código C. Se ouvir essa frase te deixou um pouco tonto:) então pule para a Etapa 4, onde você carrega meu binário pré-compilado no Sipeed M1 e pula a compilação.

Etapa 2: Prepare seu ambiente

Prepare o seu ambiente
Prepare o seu ambiente

Eu usei o Ubuntu 16.04 para compilação e upload de código C. É possível fazer isso no Windows, mas eu mesmo não tentei.

Baixe o RISC-V GNU Compiler Toolchain, instale todas as dependências necessárias.

git clone --recursive

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk compilação essencial bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

Copie o conjunto de ferramentas baixado para o diretório / opt. Depois disso, execute os seguintes comandos

./configure --prefix = / opt / kendryte-toolchain --with-cmodel = medany

faço

Adicione / opt / kendryte-toolchain / bin ao seu PATH agora.

Agora você está pronto para compilar o código!

Etapa 3: compilar o código

Compile o código
Compile o código

Baixe o código do meu repositório github.

Baixe o SDK autônomo do Kendryte K210

Copie a pasta / kpu do meu repositório github para a pasta / src no SDK.

Execute os seguintes comandos na pasta SDK (não na pasta / src!)

mkdir build && cd build

cmake.. -DPROJ = project_name -DTOOLCHAIN = / opt / kendryte-toolchain / bin && make

onde project_name é o nome do seu projeto (você decide) e -DTOOLCHAIN = deve apontar para a localização do seu conjunto de ferramentas risc-v (você baixou na última etapa, lembra?)

Excelente! Agora, com sorte, você verá a compilação concluída sem erros e terá um arquivo.bin para fazer upload.

Etapa 4: enviando o arquivo.bin

Carregando o arquivo.bin
Carregando o arquivo.bin

Agora conecte seu Sipeed M1 ao computador e da pasta / build execute o seguinte comando

sudo python3 isp_auto.py -d / dev / ttyUSB0 -b 200000 kpu.bin

Onde kpu.bin é o nome do seu arquivo.bin

O upload geralmente leva de 2 a 3 minutos, depois de concluído, você verá a placa executando a detecção de 20 classes. A última etapa para nós é conectá-lo ao Arduino mega ou Raspberry Pi.

!!! Se você acabou de sair da Etapa 2 !

Execute o seguinte comando da pasta onde você clonou meu repositório github

sudo python3 isp_auto.py -d / dev / ttyUSB0 -b 200000 kpu_bin.bin

O upload geralmente leva de 2 a 3 minutos, depois de concluído, você verá a placa executando a detecção de 20 classes. A última etapa para nós é conectá-lo ao Arduino mega ou Raspberry Pi.

Etapa 5: Conectando-se ao Arduino

Conectando-se ao Arduino
Conectando-se ao Arduino
Conectando-se ao Arduino
Conectando-se ao Arduino
Conectando-se ao Arduino
Conectando-se ao Arduino

Usei o Arduino Mega com Seeed Studio Mega Shield, por isso soldei um conector Grove na placa Sipeed M1. No entanto, você pode apenas usar fios de jumper e conectar o Sipeed M1 diretamente ao Arduino Mega, seguindo este diagrama de fiação.

Depois disso, carregue o esboço camera.ino e abra o monitor Serial. Quando você aponta a câmera para objetos diferentes (a lista de 20 classes está no esboço), ela deve exibir o nome da classe no monitor serial!

Parabéns! Agora você tem um módulo de detecção de imagem em funcionamento para o seu Arduino!

Etapa 6: Conectando-se ao Raspberry Pi

Conectando-se ao Raspberry Pi
Conectando-se ao Raspberry Pi
Conectando-se ao Raspberry Pi
Conectando-se ao Raspberry Pi

Eu usei o chapéu Grove Pi + para o Raspberry Pi 2B, mas, novamente, como no Arduino, você pode simplesmente conectar o Sipeed M1 diretamente à interface UART do Raspberry Pi seguindo este diagrama de fiação.

Depois disso, inicie camera_speak.py e aponte a câmera para diferentes objetos, o terminal irá mostrar o seguinte texto "Eu acho que é" e também se você tiver alto-falantes conectados, ele falará essa frase em voz alta. Muito legal, não é?

Etapa 7: Conclusão

Vivemos em uma época muito emocionante, com a IA e o aprendizado de máquina penetrando em todas as áreas de nossas vidas. Estou ansioso para o desenvolvimento nesta área. Estou mantendo contato com a equipe Sipeed e sei que eles estão desenvolvendo ativamente o invólucro do micropython para todas as funções necessárias, incluindo a aceleração da CNN.

Quando estiver pronto, provavelmente publicarei mais instruções sobre como usar seus próprios modelos CNN com micropython. Pense em todos os aplicativos interessantes que você pode ter para uma placa que pode executar suas próprias redes neurais de processamento de imagem por esse preço e com esta pegada!

Recomendado: