13.6. Edge Impulse

O Edge Impulse é uma plataforma end-to-end para criar modelos de aprendizagem automática que correm em microcontroladores: recolha e etiquete dados, projete e treine um modelo no browser, e obtenha-o otimizado para caber num dispositivo medido em kilobytes. É implementado diretamente no OpenMV – uns cliques transformam um modelo treinado em ficheiros prontos a correr na câmara. A documentação própria do Edge Impulse aprofunda cada passo.

13.6.1. Recolha de dados

Um modelo tem melhor desempenho com o tipo de imagens com que foi treinado, por isso capture o conjunto de dados com a câmara que o irá executar. O editor de conjuntos de dados do IDE foi concebido exatamente para isso – crie pastas de classes, capture imagens etiquetadas a partir do buffer de fotograma em direto, e carregue o conjunto de dados diretamente para um projeto Edge Impulse a partir do submenu Exportar (inicie sessão na sua conta primeiro). A partir daí, trabalha no Edge Impulse Studio.

Veja também

O guia de configuração da OpenMV Cam do próprio Edge Impulse para instalar as ferramentas e ligar a câmara.

13.6.2. Treino

O treino ocorre inteiramente no browser: projete um impulso (os blocos de entrada, processamento e aprendizagem), treine-o e verifique a precisão nos dados de teste reservados.

Dois tipos de modelos adequam-se à câmara. Um classificador de imagens produz uma lista de pontuações de classe, que se lê diretamente da saída do modelo – não é necessário nenhum pós-processador. O FOMO, um detetor de objetos rápido concebido para microcontroladores, requer um passo de descodificação, e a câmara inclui um pós-processador para isso (ml.postprocessing.edgeimpulse), pelo que esses modelos também correm sem código adicional.

13.6.3. Implementação na câmara

Quando o treino terminar, abra a página Deployment do projeto, escolha o alvo OpenMV Library e clique em Build. O download é um zip com o modelo treinado (trained.tflite), as suas etiquetas (labels.txt) e um script de exemplo. O modelo é quantizado em inteiros. O Edge Impulse aborda isto e a alternativa de firmware personalizado no seu guia de execução no OpenMV.

Adicione o ficheiro .tflite à câmara com o editor ROMFS do IDE, que o converte para a NPU da placa quando existir, e carregue-o num script com ml.Model. Os modelos também podem correr a partir da unidade flash da câmara – copie os ficheiros e aponte ml.Model para o caminho – mas o ROMFS é a melhor opção: os modelos aí armazenados são executados diretamente a partir da flash sem uma cópia em RAM.

Veja também

O capítulo de aprendizagem automática para executar modelos com o módulo ml – carregamento, o pipeline de inferência e a descodificação da saída.