Índice:

Sipeed MaiX Bit OpenMV Demos - Visão computacional: 3 etapas
Sipeed MaiX Bit OpenMV Demos - Visão computacional: 3 etapas

Vídeo: Sipeed MaiX Bit OpenMV Demos - Visão computacional: 3 etapas

Vídeo: Sipeed MaiX Bit OpenMV Demos - Visão computacional: 3 etapas
Vídeo: TinyML - Usando Machine Learning em IoT 2024, Novembro
Anonim
Image
Image

Este é o segundo artigo da série sobre Sipeed AI na plataforma de microcontrolador Edge. Desta vez, escreverei sobre o MaiX Bit (link para Seeed Studio Shop), uma placa de desenvolvimento menor e pronta para a placa de ensaio. Suas especificações são muito parecidas com a da MaiX Dock, placa que usei no último tutorial, já que usam o mesmo chip, Kendryte K210.

Vamos usar o firmware do micropython para experimentar algumas demos do OpenMV. Aqui está a descrição da página inicial do OpenMV:

O projeto OpenMV é sobre a criação de módulos de visão de máquina de baixo custo, extensíveis e baseados em Python e visa se tornar o “Arduino da Visão de Máquina“.… Python torna o trabalho com algoritmos de visão de máquina muito mais fácil. Por exemplo, o método find_blobs () no código encontra blobs de cores e retorna uma lista de objetos de valor 8 que representam cada blob de cores encontrado. Em Python, iterar pela lista de objetos retornados por find_blobs () e desenhar um retângulo ao redor de cada mancha de cor é feito facilmente em apenas duas linhas de código.

Portanto, apesar do MaiX Bit apresentar um acelerador de rede neural dedicado, às vezes pode ser mais fácil apenas usar algoritmos codificados por OpenMV para fazer o trabalho ou usá-los lado a lado.

Alguns casos de uso que me vêm à mente são:

1) Detecção de linha para bot seguidor de linha

2) Detecção de semáforos com detecção de círculo e cor

3) Usando a detecção de rosto para encontrar os rostos para reconhecimento de rosto (com DNN)

Repositório Github para este artigo

Etapa 1: Firmware Flash Micropython

Conectar ao MaiX Bit
Conectar ao MaiX Bit

Em primeiro lugar, precisaremos atualizar o firmware do micropython em nossa placa. Um binário pré-compilado está incluído no repositório github para este artigo, junto com kflash.py (um utilitário flash). Se você deseja compilar o firmware a partir do código-fonte, basta baixar o código-fonte em https://github.com/sipeed/MaixPy, instalar o conjunto de ferramentas e compilar o código-fonte no arquivo maixpy.bin. Instruções detalhadas de construção podem ser encontradas aqui.

Atualize o arquivo binário com

sudo python3 kflash.py kpu.bin

Depois de piscar com sucesso, siga para a próxima etapa.

Etapa 2: conectar-se ao bit MaiX

Agora nosso MaiX Bit deve estar acessível através de uma conexão serial USB com baudrate 115200. Você pode usar seu software favorito para comunicação serial ou apenas os comandos cat e echo, o que for adequado às suas necessidades. Eu estava usando a tela para comunicação serial e achei muito conveniente.

O comando para estabelecer uma sessão de comunicação serial com tela é

sudo screen / dev / ttyUSB0 115200

onde / dev / ttyUSB0 é o endereço do seu dispositivo.

Pode ser necessário pressionar o botão reset em seu microcontrolador para ver a mensagem de saudação e o prompt do interpretador Python.

Etapa 3: execute as demonstrações

Agora você pode acessar o modo de cópia pressionando Ctrl + E e copiar e colar os códigos de demonstração. Para executá-los, pressione Ctrl + D no modo de cópia.

Se não quiser gravar os vídeos, você precisa comentar as falas de gravação do vídeo. Caso contrário, o código lançará uma exceção se não houver um cartão SD inserido

Aqui estão breves descrições de cada demonstração:

Encontrar círculos - usa a função find_circles do OpenMV. Precisa de mais ajustes para sua aplicação específica, particularmente o limite (controla quais círculos são detectados na transformação de Hough. Apenas os círculos com uma magnitude maior ou igual ao limite são retornados) e os valores r_min, r_max.

Encontrar retângulos - usa a função find_rects do OpenMV. Você pode brincar com o valor limite, mas o valor que tenho na demonstração funciona muito bem para encontrar retângulos.

Encontre rostos, encontre olhos - usa a função find_features com Haar Cascades para detectar olhos e rosto frontal na imagem. Você pode brincar com os valores de limite e escala para obter a compensação certa entre velocidade e precisão.

Encontrar linhas infinitas - usa a função find_lines para encontrar todas as linhas infinitas na imagem usando a transformação de hough.

Detectar cor - usa a função get_statistics para obter o objeto percentil e então converte os valores médios da tupla LAB em tupla de valores RGB. Eu mesmo escrevi este exemplo e ele funciona muito bem, mas tenha em mente que os resultados da detecção de cores serão afetados pelas condições de luz ambiente.

Você pode encontrar muitos outros demos interessantes no repositório github OpenMV! Eles são principalmente compatíveis com o micropython MaiX Bit, a única coisa que você precisa lembrar é adicionar sensor.run (1) após definir o formato de pixel e o tamanho do quadro.

Boas experiências com código OpenMV. Se você tiver alguma dúvida ou quiser compartilhar alguns de seus resultados interessantes, não hesite em me contactar no Youtube ou LinkedIn. Agora, com licença, vou fazer alguns robôs!

Recomendado: