Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Equipment >> Robô industrial

Implementando Reconhecimento de Dígitos Manuscritos no MCU i.MX RT1060 com TensorFlow Lite

Este guia demonstra como implementar reconhecimento de dígitos manuscritos no MCU crossover i.MX RT1060, aproveitando um modelo TensorFlow Lite e GUI habilitada para toque.

O i.MX RT1060, alimentado por um núcleo Arm® Cortex®-M7, se destaca em soluções industriais custo-efetivas e dispositivos de consumo de alto desempenho que requerem interfaces de display ricas. Neste tutorial, percorremos a construção de uma aplicação de machine learning embarcado que detecta e classifica dígitos desenhados pelo usuário usando o popular exemplo MNIST eIQ.

Visão do Dataset e Modelo MNIST

Usamos o dataset MNIST padrão, consistindo de 60.000 imagens de treino e 10.000 de teste de dígitos manuscritos centralizados em escala de cinza, cada um 28×28 pixels. Os dados foram coletados de estudantes do ensino médio e funcionários do Census Bureau nos EUA, refletindo estilos de caligrafia norte-americanos. Redes neurais convolucionais (CNNs) têm desempenho excepcional neste dataset, e até arquiteturas modestas podem atingir alta precisão, tornando o TensorFlow Lite uma escolha ideal para implantação em hardware embarcado.

Implementando Reconhecimento de Dígitos Manuscritos no MCU i.MX RT1060 com TensorFlow Lite

Figura 1. Exemplo do dataset MNIST

O repositório oficial do TensorFlow no GitHub fornece uma implementação Python do modelo MNIST, construída com Keras, tf.data e tf.estimator. A CNN atinge excelente desempenho no conjunto de teste e serve como referência para nosso processo de conversão.

Implementando Reconhecimento de Dígitos Manuscritos no MCU i.MX RT1060 com TensorFlow Lite

Figura 2. Visualização da arquitetura do modelo

Abaixo está a definição bruta do modelo correspondente à visualização acima.

Implementando Reconhecimento de Dígitos Manuscritos no MCU i.MX RT1060 com TensorFlow Lite

Figura 3. Definição do modelo TensorFlow

O Que é TensorFlow Lite e Como É Usado Aqui?

TensorFlow é um framework de deep learning open-source amplamente adotado, mantido pelo Google. Para levar inferência TensorFlow a dispositivos com recursos limitados, o Google introduziu o TensorFlow Lite, um runtime leve que suporta um subconjunto de operações TensorFlow. Embora modelos TensorFlow Lite não possam ser treinados adicionalmente no dispositivo, eles podem ser otimizados com quantização, poda e outras técnicas pós-treinamento para reduzir tamanho e melhorar velocidade de inferência.

Convertendo o Modelo para TensorFlow Lite

Primeiro treinamos o modelo usando TensorFlow 1.13.2 para garantir compatibilidade com as ferramentas de conversão. O modelo é então convertido para o formato .tflite com o seguinte comando:

tflite_convert --saved_model_dir= --output_file=converted_model.tflite --input_shape=1,28,28 --input_array=Placeholder --output_array=Softmax --inference_type=FLOAT --input_data_type=FLOAT --post_training_quantize --target_ops TFLITE_BUILTINS

Após a conversão, usamos xxd para embutir o modelo binário em nossa aplicação:

xxd -i converted_model.tflite > converted_model.h

O utilitário xxd produz um header C/C++ contendo o modelo como array de bytes, permitindo que o projeto eIQ o carregue diretamente em tempo de compilação. Instruções detalhadas podem ser encontradas nos guias do usuário eIQ e na documentação oficial do TensorFlow Lite.

Introdução Rápida ao Embedded Wizard Studio

Para aproveitar as capacidades gráficas do MIMXRT1060-EVK, incorporamos uma GUI habilitada para toque construída com Embedded Wizard Studio. A IDE gera projetos MCUXpresso e IAR a partir do SDK da NXP, permitindo que desenvolvedores testem a interface imediatamente no hardware. A versão de avaliação limita a complexidade da GUI e adiciona marca d'água, mas a licença completa desbloqueia recursos ilimitados.

Como o código GUI gerado é em C enquanto os exemplos eIQ são em C/C++, envolvemos todos os headers incluídos com:

#ifdef __cplusplus extern "C" { #endif /* código C */ #ifdef __cplusplus } #endif

Também realocamos arquivos de origem e header para a pasta middleware do SDK e ajustamos caminhos de include. Arquivos de configuração específicos do dispositivo são mesclados para garantir build suave.

A Aplicação Final e Seus Recursos

A GUI apresenta uma área de entrada capaz de toque para desenhar dígitos e um campo de saída que exibe o resultado da classificação. Dois botões permitem ao usuário executar inferência ou limpar a tela. Após a inferência, a aplicação imprime o dígito previsto e pontuação de confiança na saída padrão para fins de depuração.

Implementando Reconhecimento de Dígitos Manuscritos no MCU i.MX RT1060 com TensorFlow Lite

Figura 4. GUI da aplicação com entrada, saída e botões de controle

Precisão do Modelo TensorFlow Lite

Embora a CNN atinja alta precisão em amostras MNIST baseadas em papel, dígitos manuscritos desenhados em tela de toque diferem significativamente. Esta discrepância ressalta a importância de treinar com dados de produção que correspondam à modalidade de entrada alvo. Para melhorar desempenho, colete um novo dataset usando a tela de toque e aplique transfer learning, conforme detalhado no walk-through da NXP Community.

Detalhes de Implementação

Embedded Wizard usa slots para reagir a interações do usuário. O slot de desenho captura movimentos de toque, renderizando uma linha de 1 pixel na cor principal. O slot de limpar reseta ambos campos de entrada e saída para a cor de fundo. Quando o slot run-inference é acionado, ele recupera os dados do bitmap, redimensiona para 28×28 e o alimenta no interpretador TensorFlow Lite.

Como o canvas de entrada é 112×112, pré-processamos a imagem da seguinte forma:

A Figura 5 ilustra o array intermediário após pré-processamento.

Implementando Reconhecimento de Dígitos Manuscritos no MCU i.MX RT1060 com TensorFlow Lite

Figura 5. Array de entrada pré-processado pronto para inferência

O interpretador TensorFlow Lite é inicializado uma vez na inicialização. Para cada requisição de inferência, o tensor de entrada pré-processado é copiado pixel a pixel para o buffer de entrada do interpretador. A pegada de memória e características de runtime são documentadas na application note da NXP.

TensorFlow Lite: Uma Solução Viável

Implantar reconhecimento de dígitos manuscritos em dispositivos embarcados apresenta desafios como recursos computacionais limitados e modalidades de entrada variadas. O TensorFlow Lite mitiga esses problemas fornecendo um runtime leve e rico ecossistema de ferramentas de otimização. O núcleo M7 do i.MX RT1060, combinado com o middleware do SDK, torna viável implementar casos de uso complexos como teclado numérico seguro para fechadura digital.

Treinar modelos em dados de produção reais — dígitos desenhados com dedo em tela de toque — permanece essencial para manter alta precisão. Além disso, variações regionais de caligrafia devem ser consideradas ao projetar o dataset.

A série MCU crossover i.MX RT oferece mix equilibrado de desempenho e custo, tornando-a adequada para ampla gama de aplicações embarcadas. Para mais detalhes, visite a página de produto i.MX RT.

Artigos da Indústria são uma forma de conteúdo que permite parceiros da indústria compartilhar notícias úteis, mensagens e tecnologia com leitores do All About Circuits de forma que conteúdo editorial não é bem adequado. Todos os Artigos da Indústria estão sujeitos a diretrizes editoriais rigorosas com a intenção de oferecer aos leitores notícias úteis, expertise técnica ou histórias. Os pontos de vista e opiniões expressos nos Artigos da Indústria são do parceiro e não necessariamente do All About Circuits ou seus escritores.

Robô industrial

  1. Reduzindo Desperdício e Custos de Energia com Robôs Autônomos
  2. Construa um Reconhecedor de Dígitos no Raspberry Pi com TensorFlow e OpenCV
  3. Dominando Gerenciamento de Potência com MCUs Crossover NXP i.MX RT500
  4. Aproveitando o NXP i.MX RT500 para Dispositivos Inteligentes com DSP: Multi-threading, XOS e Cadence Fusion F1 Audio DSP
  5. Construindo um Autoencoder Variacional com TensorFlow: Guia Prático
  6. Guia Profissional para Uso de Resina Epóxi na Preservação de Obras de Arte
  7. Automatize o Atendimento de Máquinas CNC com Cobots: Aumente a Eficiência e a Precisão
  8. Guia para Iniciantes: Programação de Robôs Yaskawa Motoman — Aumente Velocidade e Precisão
  9. Guia para Iniciantes: Configurando RoboDK no Raspberry Pi
  10. Invocando Function Blocks PLC via Clientes OPC UA: Guia Prático