Índice:
- Etapa 1: Sipeed MAix: AI no limite
- Etapa 2: Prepare seu ambiente
- Etapa 3: compilar o código
- Etapa 4: enviando o arquivo.bin
- Etapa 5: Conectando-se ao Arduino
- Etapa 6: Conectando-se ao Raspberry Pi
- Etapa 7: Conclusão
Vídeo: Câmera AI para Raspberry Pi / Arduino: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
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
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
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
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
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
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:
CÂMERA UNICORN - Compilação de câmera Raspberry Pi Zero W NoIR 8MP: 7 etapas (com fotos)
CÂMERA UNICORN - Compilação de câmera Raspberry Pi Zero W NoIR 8MP: Compilação de câmera Pi Zero W NoIR 8MP Este Instructable foi criado para ajudar qualquer pessoa que queira uma câmera infravermelha ou uma câmera portátil muito legal ou uma câmera portátil Raspberry Pi ou apenas queira se divertir, heheh . Este é o mais acessível e configurável
Estabilizador de câmera para ENV2 ou outros telefones com câmera: 6 etapas
Estabilizador de câmera para ENV2 ou outros telefones com câmera: Você já quis fazer um vídeo, mas só tem um telefone com câmera? Você já fez um vídeo com uma câmera de telefone, mas não consegue segurá-lo? Bem, então este é o instrutível para você
Suporte removível para carro para câmera com lapso de tempo: 5 etapas
Suporte removível para carro para câmera de lapso de tempo: https://www.instructables.com/id/Camera_for_time_lapse_pictures_made_easy/Aqui está um filme que fiz com a câmera de lapso de tempo mostrado no link acima.http: //www.youtube.com / watch? v = AWh46mqROkQEste instrutível é mais ou menos uma continuação do meu
Suporte para câmera para microfone: 6 etapas (com fotos)
Suporte de câmera para microfone: Em um show recente, eu precisava ter uma visão do palco. Normalmente há espaço de sobra para colocar um tripé no fundo da sala e uma câmera me enviar um feed do que estava acontecendo. Neste local específico, não havia espaço extra no ba
Adicione um Pc Sync Jack a um cabo Nikon Sc-28 Ttl (use as configurações automáticas para um flash na câmera e dispare os flashes fora da câmera !!): 4 etapas
Adicione um Pc Sync Jack a um cabo Nikon Sc-28 Ttl (use as configurações automáticas para um flash na câmera e disparar flashes fora da câmera !!): neste guia, mostrarei como remover um daqueles conectores TTL de 3 pinos proprietários incômodos. o lado de um cabo TTL da câmera Nikon SC-28 e substitua-o por um conector de sincronização de PC padrão. isso permitirá que você use um flash dedicado, s