Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Equipment >> Robot industriel

Déploiement de la reconnaissance de chiffres manuscrits sur le MCU i.MX RT1060 avec TensorFlow Lite

Ce guide montre comment implémenter la reconnaissance de chiffres manuscrits sur le MCU crossover i.MX RT1060, en tirant parti d'un modèle TensorFlow Lite et d'une interface graphique tactile.

L'i.MX RT1060, propulsé par un cœur Arm® Cortex®-M7, excelle dans les solutions industrielles rentables et les dispositifs grand public haute performance nécessitant des interfaces d'affichage riches. Dans ce tutoriel, nous parcourons la construction d'une application d'apprentissage automatique embarquée qui détecte et classe des chiffres dessinés par l'utilisateur en utilisant l'exemple populaire MNIST eIQ.

Un coup d'œil au jeu de données et modèle MNIST

Nous utilisons le jeu de données MNIST standard, composé de 60 000 images d'entraînement et 10 000 images de test de chiffres manuscrits centrés en niveaux de gris, chacun 28×28 pixels. Les données ont été collectées auprès d'étudiants de lycée et d'employés du Bureau du recensement aux États-Unis, reflétant ainsi les styles d'écriture nord-américains. Les réseaux de neurones convolutifs (CNN) performent exceptionnellement bien sur ce jeu de données, et même des architectures modestes peuvent atteindre une haute précision, faisant de TensorFlow Lite un choix idéal pour le déploiement sur matériel embarqué.

Déploiement de la reconnaissance de chiffres manuscrits sur le MCU i.MX RT1060 avec TensorFlow Lite

Figure 1. Exemple du jeu de données MNIST

Le dépôt GitHub officiel de TensorFlow fournit une implémentation Python du modèle MNIST, construite avec Keras, tf.data et tf.estimator. Le CNN atteint d'excellentes performances sur le jeu de test et sert de référence pour notre processus de conversion.

Déploiement de la reconnaissance de chiffres manuscrits sur le MCU i.MX RT1060 avec TensorFlow Lite

Figure 2. Visualisation de l'architecture du modèle

Voici la définition brute du modèle correspondant à la visualisation ci-dessus.

Déploiement de la reconnaissance de chiffres manuscrits sur le MCU i.MX RT1060 avec TensorFlow Lite

Figure 3. Définition du modèle TensorFlow

Qu'est-ce que TensorFlow Lite et comment l'utilise-t-on ici ?

TensorFlow est un framework d'apprentissage profond open-source largement adopté, maintenu par Google. Pour amener l'inférence TensorFlow sur des dispositifs à ressources contraintes, Google a introduit TensorFlow Lite, un runtime léger supportant un sous-ensemble des opérations TensorFlow. Bien que les modèles TensorFlow Lite ne puissent pas être réentraînés sur le dispositif, ils peuvent être optimisés par quantification, élagage et autres techniques post-entraînement pour réduire la taille et améliorer la vitesse d'inférence.

Conversion du modèle en TensorFlow Lite

Nous entraînons d'abord le modèle avec TensorFlow 1.13.2 pour assurer compatibilité avec les outils de conversion. Le modèle est ensuite converti au format .tflite avec la commande :

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

Après conversion, nous utilisons xxd pour intégrer le modèle binaire dans notre application :

xxd -i converted_model.tflite > converted_model.h

L'utilitaire xxd produit un en-tête C/C++ contenant le modèle comme tableau d'octets, permettant au projet eIQ de le charger directement à la compilation. Des instructions détaillées sont dans les guides utilisateur eIQ et la documentation officielle TensorFlow Lite.

Introduction rapide à Embedded Wizard Studio

Pour tirer parti des capacités graphiques du MIMXRT1060-EVK, nous incorporons une GUI tactile construite avec Embedded Wizard Studio. L'IDE génère des projets MCUXpresso et IAR à partir du SDK de NXP, permettant aux développeurs de tester l'interface immédiatement sur le matériel. La version d'évaluation limite la complexité de la GUI et ajoute un filigrane, mais la licence complète débloque des fonctionnalités illimitées.

Comme le code GUI généré est en C tandis que les exemples eIQ sont en C/C++, nous enveloppons tous les en-têtes inclus avec :

#ifdef __cplusplus extern "C" { #endif /* Code C */ #ifdef __cplusplus } #endif

Nous déplaçons aussi les fichiers sources et en-têtes dans le dossier middleware du SDK et ajustons les chemins d'inclusion. Les fichiers de configuration spécifiques au dispositif sont fusionnés pour assurer une construction fluide.

L'application finale et ses fonctionnalités

La GUI présente une zone de saisie tactile pour dessiner des chiffres et un champ de sortie affichant le résultat de classification. Deux boutons permettent à l'utilisateur de lancer l'inférence ou d'effacer le canevas. Après l'inférence, l'application affiche le chiffre prédit et le score de confiance sur la sortie standard pour le débogage.

Déploiement de la reconnaissance de chiffres manuscrits sur le MCU i.MX RT1060 avec TensorFlow Lite

Figure 4. GUI de l'application avec saisie, sortie et boutons de contrôle

Précision du modèle TensorFlow Lite

Bien que le CNN atteigne une haute précision sur les échantillons MNIST papier, les chiffres manuscrits dessinés sur un écran tactile diffèrent significativement. Cette divergence souligne l'importance d'entraîner avec des données de production correspondant à la modalité d'entrée cible. Pour améliorer la performance, collectez un nouveau jeu de données en utilisant l'écran tactile et appliquez l'apprentissage par transfert, comme détaillé dans le tutoriel NXP Community.

Détails d'implémentation

Embedded Wizard utilise des slots pour réagir aux interactions utilisateur. Le slot de dessin capture les mouvements tactiles, traçant une ligne de 1 pixel dans la couleur principale. Le slot d'effacement réinitialise les champs de saisie et sortie à la couleur de fond. Quand le slot d'exécution-inférence est déclenché, il récupère les données bitmap, les redimensionne à 28×28, et les alimente dans l'interpréteur TensorFlow Lite.

Comme le canevas de saisie est 112×112, nous prétraitons l'image comme suit :

La Figure 5 illustre le tableau intermédiaire après prétraitement.

Déploiement de la reconnaissance de chiffres manuscrits sur le MCU i.MX RT1060 avec TensorFlow Lite

Figure 5. Tableau d'entrée prétraité prêt pour l'inférence

L'interpréteur TensorFlow Lite est initialisé une fois au démarrage. Pour chaque requête d'inférence, le tenseur d'entrée prétraité est copié pixel par pixel dans le tampon d'entrée de l'interpréteur. L'empreinte mémoire et les caractéristiques d'exécution sont documentées dans la note d'application NXP.

TensorFlow Lite : une solution viable

Déployer la reconnaissance de chiffres manuscrits sur dispositifs embarqués pose des défis comme les ressources de calcul limitées et les modalités d'entrée variées. TensorFlow Lite atténue ces problèmes en fournissant un runtime léger et un riche écosystème d'outils d'optimisation. Le cœur M7 de l'i.MX RT1060, combiné au middleware du SDK, rend faisable l'implémentation de cas d'usage complexes comme un clavier numérique sécurisé pour une serrure digitale.

L'entraînement de modèles sur des données de production réelles — chiffres dessinés au doigt sur un écran tactile — reste essentiel pour maintenir une haute précision. De plus, les variations régionales d'écriture doivent être considérées lors de la conception du jeu de données.

La série de MCU crossover i.MX RT offre un mélange équilibré de performance et coût, la rendant adaptée à une large gamme d'applications embarquées. Pour plus de détails, visitez la page produit i.MX RT.

Les articles industriels permettent aux partenaires de partager actualités, messages et technologies avec les lecteurs d'All About Circuits d'une manière que le contenu éditorial ne permet pas. Tous les articles industriels sont soumis à des directives éditoriales strictes dans le but d'offrir aux lecteurs des actualités utiles, une expertise technique ou des histoires. Les opinions exprimées sont celles du partenaire et non nécessairement celles d'All About Circuits ou de ses rédacteurs.


Robot industriel

  1. Réduire le Gaspillage et les Coûts Énergétiques avec les Robots Autonomes
  2. Créer un Reconnaissance de Chiffres sur Raspberry Pi avec TensorFlow et OpenCV
  3. Maîtriser la gestion d'énergie avec MCUs crossover NXP i.MX RT500
  4. Exploiter le NXP i.MX RT500 pour les appareils intelligents avec DSP : Multi-threading, XOS et Cadence Fusion F1 Audio DSP
  5. Construction d'un autoencodeur variationnel avec TensorFlow : guide pratique
  6. Automatiser le chargement des machines CNC avec des cobots : gagner en efficacité et en précision
  7. Guide du débutant pour la programmation des robots Yaskawa Motoman : Gagner en rapidité et précision
  8. Guide débutant : Installation de RoboDK sur Raspberry Pi
  9. Invoquer des blocs de fonction PLC via clients OPC UA : guide pratique