Hoje quero falar com vocês
sobre o K210, um chip que considero muito especial porque tem um coprocessador
de rede neural, ou seja, ele consegue processar uma rede neural de maneira
muito eficaz e bem mais rápida que o ESP32. Além de ter um processador NPU, tem
dois núcleos que 64 bits, processador de FFT, mais um coprocessador de áudio,
sem contar uma câmera muito boa. Tudo isso, pessoal, por U$23.
Neste vídeo, então, vamos
fizemos uma aplicação com o MaixPy e treinamos um modelo customizado de Rede Neural
Convolucional. Tratamos do Setup MaixPy, Setup Ambiente, executamos um teste
do modelo obtendo imagens do google para realizar o treinamento. Ainda,
trabalhamos o código do script de treino para converter o modelo para o
MaixPy e rodamos o modelo no Sipeed Maix Bit.
RECURSOS USADOS
- Sipeed Maix BiT
- Cabo USB tipo C
- Cartão SD
SETUP MAIXPY
Primeiro é necessário
atualizar o firmware do MaixPy.
Baixe o KFlash que pode ser
encontrado aqui para gravar o firmware no MaixPy.
Baixe o Firmware do MaixPy
aqui.
Conecte o Sipeed Maix Bit na
USB do computador.
ATUALIZAÇÃO DO FIRMWARE
SETUP AMBIENTE
Com algumas modificações, é
possível executar o script de treinamento no Windows, mas para converter o
modelo para o MaixPy é necessário usar o sistema Linux. Portanto, o ambiente
preferível é o Ubuntu nativo ou executando em máquina virtual.
Começar instalando o
Miniconda, que é um gerenciador de ambiente do Python. Vamos Criar um ambiente
isolado, para que não alterar nada do ambiente python do sistema.
Após a instalação, crie um
novo ambiente e instale os pacotes necessários:
Um prefixo vai aparecer com o
nome do ambiente, indicando que você está utilizando ele agora:
Clone o projeto do githube entre nele:
Agora o ambiente está pronto,
vamos testar!
TESTE DO MODELO
Dentro do diretório
SipeedCustomModel vamos verificar se o modelo MobileNet padrão que veio do
repositório está bom.
Execute o script test.py, ele
fará o download do modelo pré-treinado MobileNet da internet e executará a
inferência nas três imagens fornecidas.
Imagens para teste do modelo:
CÓDIGO TEST.PY
Importações
Prepara Imagem
Predict Image
TESTE MODELO - RESULTADO
Podemos ver que ele pode identificar
um cachorro pastor alemão corretamente por estar com uma alta pontuação de
confiança. Mas identificou o Papai Noel como Bearskin e o Arduino Uno como um
modem podemos dizer que o modelo não foi treinando e/ou não têm noção do que
têm na imagem.
OBTENDO IMAGENS DO GOOGLE PARA O TREINO DO MODELO
Dentro do diretório
SipeedCustomModel clone o diretório PickImagesFromGoogle do github e entre
nele:
Crie um diretório chamado
Imagens e dentro desse diretório crie um diretório para cada objeto que deseja
reconhecer. Nesse exemplo vamos criar 3 (Papai Noel, Teclado, Uno).
Abra o GoogleImages no GoogleChrome, digite na pesquisa o que deseja reconhecer como por exemplo Arduino Uno.
Clique com o botão direito na
página e clique em “Inspecionar”.
Vai abrir uma tela lateral,
nessa tela lateral click em “Console”
Abra o arquivo js_console.js
no diretório PickImagesFromGoogle e copie e de rode linha por linha no Console
do Chrome
CÓDIGO OBTER URLS JS
Preparação e pegar as URLs
Escreve as URLs no arquivo e baixa
OBTENDO IMAGENS DO GOOGLE
Após ter rodado todas as
linhas, irá baixar um arquivo urls.txt contendo todas as urls das imagens,
jogue esse arquivo no diretório PickImagesFromGoogle.
No diretório
PickImagesFromGoogle rode o comando abaixo alterando o diretório
“Imangens/PapaiNoel” para o diretório referente ao que você quer reconhecer e
criou as pastas. Exemplo: “Imagens/Uno”
CÓDIGO BAIXAR IMAGENS.PY
Imports e pegar or argumentos
OBTENDO IMAGENS DO GOOGLE
Aguarde o download de todas as
imagens, vai levar alguns minutos dependo da sua conexão com a internet.
Após terminar vasculhe na
pasta arquivos que possam ter sido baixados errados e exclua-os (Exemplo imagem
50.jpg).
Repita os passos para os
outros objetos lembrando de mudar o nome do diretório para qual elas vão no
comando.
*A quantidade de imagens é de
acordo quantas imagens apareceram na hora da pesquisa, então se quiser mais
imagens, basta rolar para baixo na pesquisa do google para aparecer mais e
fazer os passos novamente.
Após repetir com todos, o
banco de imagens está pronto!
TREINAMENTO
Treino
Dentro do diretório
SipeedCustomModel rode o script de treino:
Espere concluir as épocas de
treino
Convertendo o Modelo
Após concluir é criado o arquivo “my_model.h5” que é o
nosso modelo criado.
Agora é necessário converter
esse modelo.
Não é possível converter ele
diretamente para o MaixPy então primeiro convertemos ele para tflite(TensorFlow
Lite) primeiro com o comando:
Depois basta converter de
tflite para o modelo utilizado no MaixPy:
Crie um arquivo chamado
labels.txt com o nome na ordem dos objetos treinados. Exemplo:
- Uno
- PapaiNoel
- Teclado
Copie os arquivos labels.txt e
model.kmodel para o cartão SD e coloque
o cartão SD no Sipeed Maix Bit.
Ligue o MaixPy conectado com o
computador.
RODAR MODELO NO SIPEED MAIX BIT
MaixPy IDE
No MaixPy IDE vá em “File”
Clique em “Open”
Selecione o arquivo “mobilenet.py” dentro da pasta
“SipeedCustomModel/maixpy_run/”
Clique em Start para executar
o Script
5 Comentários
fora do ar
ResponderExcluirhttps://github.com/gvtfrog/SipeedCustomModel/
Buenas noches señor Ferrando k, mi proyecto de grado es detención de objetos para ciegos se puede usar el k210
ResponderExcluirgracias por su información
Interessante!
ResponderExcluirNão consigo achar o chip pra comprar, alguém consegue um local confiável pra fazer a compra do chip?
ResponderExcluirhttps://pt.aliexpress.com/item/4000009313628.html?spm=a2g0o.productlist.main.5.609d6850YCyBNf&algo_pvid=9f045152-21fd-4f1f-8a80-febcf19fdbed&algo_exp_id=9f045152-21fd-4f1f-8a80-febcf19fdbed-2&pdp_npi=4%40dis%21EUR%216.77%215.75%21%21%217.19%216.11%21%40210318ef17106608771423465e6b20%2110000000025574333%21sea%21NL%210%21AB&curPageLogUid=VH5UcB2qKksz&utparam-url=scene%3Asearch%7Cquery_from%3A&gatewayAdapt=glo2bra
ResponderExcluir