Como Treinar Maix Bit para Identificar Objetos

Treinar o Maix Bit para reconhecimento de objetos pode parecer uma tarefa que envolva um bom conhecimento em miniconda, porém o método de treinamento a seguir é exclusivo aqui no Brasil e é muito mais simples que o convencional.

Observações Iniciais

Antes de tudo, é necessário que você atenda duas regras para que seja realizado os passos a posteriores, essas regras são:

  1. Tenha uma placa Maix Bit ou equivalente, pois servirá também como chave de acesso para o treinamento;
  2. O modelo de treinamento apenas servirá para chip K210;
  3. Baixar os arquivos de apoio no Github para o treinamento.

Preparar Dados para Treinamento

Todo o processo a seguir é uma verdadeira receita de bolo e negligenciar qualquer passo causará erros no treinamento, por isso cada passo deve ser seguido a risca.

Dimensionamento e Resolução das Imagens

Todas as imagens que serão submetidas para o treinamento deverão está no dimensionamento de ‘224×224’ com resolução de ‘3’, ou seja, ‘224x224x3’ e em formato .jpeg como na imagem abaixo:

Imagem de referência de 224x224x3 de um carro

Selecionar Objetos nas imagens

Abra o labelImg na pasta “labelImg” dos arquivos baixados para o treinamento, selecione as imagens da sua base de dados e comece a marcar os objetos desejados como no vídeo abaixo:

Estrutura de Dados para Treinamento

Todo modelo a ser submetido ao treinamento do Maix bit no site do maixhub devem seguir um padrão de organização de pastas que devem ter a correspondência exata das classes em imagens e em xml. Sendo organizadas da seguinte forma:

__datasets.zip
|
|___datasets
  |
  |____images
  |    |
  |    |___classes
  |
  |
  |____xml
  |    |
  |    |___classes
  |
  |
  |____labels.txt

Classes

As “classes” são objetos que serão usados para serem treinados e devem ser separados em pastas dentro de “images” e “xml“, sendo que os arquivos “xml” devem ter a mesma numeração e correspondência exata das imagens como na estrutura abaixo:

__datasets.zip
|
|___datasets
  |
  |____images
  |    |
  |    |___car
  |    |   |
  |    |   |__0.jpg
  |    |   |
  |    |   |__1.jpg
  |    |
  |    |___motorcycle
  |        |
  |        |__0.jpg
  |        |
  |        |__1.jpg
  |
  |____xml
  |    |
  |    |___car
  |    |   |
  |    |   |__0.xml
  |    |   |
  |    |   |__1.xml
  |    |
  |    |___motorcycle
  |        |
  |        |__0.xml
  |        |
  |        |__1.xml
  |
  |____labels.txt

Labels

No caso das labels é exatamente o nome dos objetos que serão usados para serem reconhecidos e devem ser formatado em arquivo de texto e separados por quebra de linha como o exemplo abaixo:

car
motorcycle

Obter Código de Maquina do Maix Bit

Para obter a chave de máquina para conseguir treinar o Maix Bit é necessário baixar um arquivo binário chamado key_gen_v1.2.bin e instalar na placa usando o kflash como na imagem abaixo:

Gravando binário no Maix Bit para obter a chave de máquina

Após ter feito os passos anteriores, é só abrir a serial com baudrate de 115200, clicar no botão reset e visualizar o retorno na serial como na imagem abaixo:

Obtendo a chave de máquina do Maix Bit

Treinar Modelo para Maix Bit

Antes de enviar o modelo para treinamento, o ideal é verificar se todos os arquivos estão formatados como na estrutura do tópico “X”. Após a verificação, compile o “datasets” para .zip.

A Sipeed fornece um conjunto de plataformas que facilitam o uso de seus produtos e uma dessas plataformas é a MaixHub que é um conjunto de ferramentas destinadas ao “Maixpy“, uma dessas ferramentas é o treinamento de modelos.

Tradução do MaixHub

Ao acessar o site encontrará um monte de caracteres chineses, mas caso não consiga entender, você pode traduzir através do navegador ou pela própria opção “Language” do site.

Tradução do site no MaixHub

Treinamento de Modelo

Após ter criado uma conta, logado e também ter feito o processo de captura da chave de máquina do Maix Bit. Selecione todas essas opções abaixo, insira a chave em “código de máquina” e clique em próximo.

Treinar do modelo para o Maix Bit no MaixHub

Modelo em Treinamento

Após ter enviando o arquivo “datasets.zip” para o MaixHub, o modelo entrará inicialmente em uma fila para o treinamento e quando for “Fila: 1” o modelo começará o treinamento.

Treinamento do modelo para o Maix Bit no MaixHub em andamento

Erro no Treinamento do Maix Bit

Assim que o modelo estiver sendo treinado, fique atento no primeiros minutos pois o primeiro processo do MaixHub é a verificação dos arquivos, caso haja um erro será retornado o tipo de rro como na imagem abaixo:

Erro ao treinar o modelo para o Maix Bit no MaixHub

Treinamento do Maix Bit Concluído

Após a conclusão do treinamento, faça o download do seu modelo treinado e em seguida extraia o arquivo compactado em uma pasta desejada. Caso não tenha nenhum software para extrair, sugerimos o uso do Winrar.

Arquivos resultantes do treinamento no MaixHub

Os arquivos que serão usados são apenas o “boot.py”, “m.kmodel” e “label,txt”. Ambos correspondem, respectivamente o código que será enviado para o Maix bit, o modelo treinado que deve ser colocado em um cartão microSD ou gravado na EEPROM pelo Kflash e os objetos das classes.

Pontos Negativo do Treinamento no MaixHub

Infelizmente nem todo recurso é 100% vantajoso e embora o MaixHub seja uma plataforma que democratiza o treinamento, alguns pontos

Fila de treinamento

O MaixHub engloba todo o mundo mas é especialmente mais forte na china e por isso é melhor por o modelo para treinar durante a manhã devido ao fuso horário.

Resolução da Tela

O treinamento do Maix Bit no MaixHub aceita apenas 224x224x3 ou 240x240x3 e por isso o código resultante do treinamento só trabalhará com a resolução no qual foi treinado, limitando o aproveitamento total do display 320×240.

Enviar Modelo para Maix Bit

Por fim, para usar o Maix Bit e o modelo treino é necessário reinstalar o binário maixpy_v0.6.2_41_g02d12688e pelo Kflahs e enviar o código do arquivo “boot.py” para a IDE e compilar.

kflash_gui para gravar na memória do Maix bit

Exemplo de Funcionamento de Modelo Treinado

Os arquivos de referência que foi disponibilizados no GitHub não são, em hipótese alguma, bons modelos treinados e por isso há muita dificuldade de reconhecimento dos objetos treinados. No entanto, a depender da iluminação e ângulo da câmera é possível reconhecer algum carro como na imagem abaixo:

Treinar Maix Bit pode ser muito mais fácil do que aparenta ser, se for usado esse novo método que é exclusivo aqui no Brasil.
Imagem com Zoom

As imagens capturadas do Maix bit como na imagem acima, são retiradas da IDE e sempre perdem um pouco da qualidade se comparado com o display usado na placa.