Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Equipment >> Industrieroboter

Handschrifterkennung auf i.MX RT1060 MCU mit TensorFlow Lite implementieren

Diese Anleitung demonstriert, wie man Handschrifterkennung auf dem i.MX RT1060 Crossover MCU implementiert, indem ein TensorFlow Lite Modell und eine touch-fähige GUI genutzt werden.

Der i.MX RT1060, angetrieben von einem Arm® Cortex®-M7 Kern, glänzt in kosteneffektiven Industrielösungen und Hochleistungs-Consumer-Geräten, die reichhaltige Display-Schnittstellen erfordern. In diesem Tutorial gehen wir durch den Bau einer eingebetteten Machine-Learning-Anwendung, die benutzergezeichnete Ziffern mit dem populären MNIST eIQ Beispiel erkennt und klassifiziert.

Ein Blick auf den MNIST Datensatz und das Modell

Wir nutzen den standardmäßigen MNIST Datensatz, bestehend aus 60.000 Trainings- und 10.000 Testbildern zentrierter Graustufen-Handschriftenziffern, jeweils 28×28 Pixel. Die Daten wurden von US-Highschool-Schülern und Census-Bureau-Mitarbeitern gesammelt, sodass sie nordamerikanische Schreibstile widerspiegeln. Convolutional Neural Networks (CNNs) performen exzellent auf diesem Datensatz, und sogar bescheidene Architekturen erreichen hohe Genauigkeit, was TensorFlow Lite zur idealen Wahl für Deployment auf eingebetteter Hardware macht.

Handschrifterkennung auf i.MX RT1060 MCU mit TensorFlow Lite implementieren

Abbildung 1. MNIST Datensatz Beispiel

Das offizielle TensorFlow GitHub Repository stellt eine Python-Implementierung des MNIST-Modells bereit, gebaut mit Keras, tf.data und tf.estimator. Das CNN erreicht exzellente Leistung auf dem Testset und dient als Referenz für unseren Konvertierungsprozess.

Handschrifterkennung auf i.MX RT1060 MCU mit TensorFlow Lite implementieren

Abbildung 2. Modellarchitektur-Visualisierung

Unten ist die rohe Modelldefinition, die der obigen Visualisierung entspricht.

Handschrifterkennung auf i.MX RT1060 MCU mit TensorFlow Lite implementieren

Abbildung 3. TensorFlow Modelldefinition

Was ist TensorFlow Lite und wie wird es hier genutzt?

TensorFlow ist ein weit verbreitetes, quelloffenes Deep-Learning-Framework, gewartet von Google. Um TensorFlow-Inferenz auf ressourcenbeschränkte Geräte zu bringen, führte Google TensorFlow Lite ein, eine leichte Runtime, die eine Teilmenge von TensorFlow-Operationen unterstützt. Während TensorFlow Lite Modelle nicht weiter auf dem Gerät trainiert werden können, können sie mit Quantisierung, Pruning und anderen Post-Training-Techniken optimiert werden, um Größe zu reduzieren und Inferenzgeschwindigkeit zu verbessern.

Modellkonvertierung zu TensorFlow Lite

Zuerst trainieren wir das Modell mit TensorFlow 1.13.2, um Kompatibilität mit den Konvertierungstools zu gewährleisten. Das Modell wird dann mit folgendem Befehl in das .tflite Format konvertiert:

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

Nach der Konvertierung nutzen wir xxd, um das binäre Modell in unsere Anwendung einzubetten:

xxd -i converted_model.tflite > converted_model.h

Das xxd Utility erzeugt einen C/C++ Header, der das Modell als Byte-Array enthält, was dem eIQ Projekt erlaubt, es direkt zur Kompilierzeit zu laden. Detaillierte Anweisungen finden sich in den eIQ Benutzerhandbüchern und der offiziellen TensorFlow Lite Dokumentation.

Kurze Einführung in Embedded Wizard Studio

Um die Grafikfähigkeiten des MIMXRT1060-EVK zu nutzen, integrieren wir eine touch-fähige GUI, gebaut mit Embedded Wizard Studio. Die IDE generiert MCUXpresso und IAR Projekte aus NXPs SDK, sodass Entwickler die Schnittstelle sofort auf Hardware testen können. Die Evaluationsversion limitiert GUI-Komplexität und fügt ein Wasserzeichen hinzu, die Vollversion schaltet unbegrenzte Features frei.

Da der generierte GUI-Code in C vorliegt, während eIQ Beispiele in C/C++ sind, wrappen wir alle inkludierten Header mit:

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

Wir verlegen auch Source- und Header-Dateien in den Middleware-Ordner des SDK und passen Include-Pfade an. Gerätespezifische Konfigurationsdateien werden zusammengeführt, um einen reibungslosen Build zu gewährleisten.

Die fertige Anwendung und ihre Features

Die GUI präsentiert einen touch-fähigen Eingabebereich zum Zeichnen von Ziffern und ein Ausgabefeld, das das Klassifikationsergebnis anzeigt. Zwei Buttons erlauben dem Nutzer, Inferenz auszuführen oder das Canvas zu leeren. Nach der Inferenz gibt die Anwendung die vorhergesagte Ziffer und den Konfidenzwert auf der Standardausgabe für Debugging-Zwecke aus.

Handschrifterkennung auf i.MX RT1060 MCU mit TensorFlow Lite implementieren

Abbildung 4. Anwendungs-GUI mit Eingabe, Ausgabe und Steuerbuttons

TensorFlow Lite Modellgenauigkeit

Während das CNN auf papierbasierten MNIST-Samples hohe Genauigkeit erreicht, unterscheiden sich handgezeichnete Ziffern auf einem Touchscreen signifikant. Diese Diskrepanz unterstreicht die Wichtigkeit, mit Produktionsdaten zu trainieren, die der Ziel-Eingabemodalität entsprechen. Zur Leistungsverbesserung sammeln Sie einen neuen Datensatz mit dem Touchscreen und wenden Transfer Learning an, wie im NXP Community Walk-through detailliert.

Implementierungsdetails

Embedded Wizard nutzt Slots, um auf Benutzerinteraktionen zu reagieren. Der Zeichenslot erfasst Touch-Bewegungen und rendert eine 1-Pixel-Linie in der Hauptfarbe. Der Clear-Slot setzt sowohl Eingabe- als auch Ausgabefelder auf die Hintergrundfarbe zurück. Wenn der Run-Inference-Slot getriggert wird, ruft er die Bitmap-Daten ab, skaliert sie auf 28×28 und speist sie in den TensorFlow Lite Interpreter ein.

Da das Eingabe-Canvas 112×112 ist, verarbeiten wir das Bild wie folgt:

Abbildung 5 illustriert das intermediäre Array nach der Vorverarbeitung.

Handschrifterkennung auf i.MX RT1060 MCU mit TensorFlow Lite implementieren

Abbildung 5. Vorverarbeitetes Eingabe-Array bereit für Inferenz

Der TensorFlow Lite Interpreter wird einmal beim Start initialisiert. Für jede Inferenzanfrage wird der vorverarbeitete Input-Tensor Pixel für Pixel in den Input-Buffer des Interpreters kopiert. Speicher-Footprint und Laufzeiteigenschaften sind im NXP Application Note dokumentiert.

TensorFlow Lite: Eine tragfähige Lösung

Deployment von Handschrifterkennung auf eingebetteten Geräten stellt Herausforderungen wie limitierte Rechenressourcen und variierte Eingabemodalitäten. TensorFlow Lite mildert diese durch leichte Runtime und reiches Ökosystem an Optimierungstools. Der i.MX RT1060's M7 Kern, kombiniert mit SDK Middleware, macht es machbar, komplexe Use Cases wie ein sicheres numerisches Keypad für ein digitales Schloss zu implementieren.

Training mit echten Produktionsdaten – Ziffern mit Finger auf Touchscreen gezeichnet – bleibt essenziell für hohe Genauigkeit. Zudem sollten regionale Schreibvariationen beim Dataset-Design berücksichtigt werden.

Die i.MX RT Crossover MCU Serie bietet eine ausgewogene Mischung aus Leistung und Kosten, geeignet für eine breite Palette eingebetteter Anwendungen. Für Details besuchen Sie die i.MX RT Produktseite.

Industry Articles ermöglichen es Industriepartnern, nützliche Nachrichten, Botschaften und Technologien mit All About Circuits Lesern zu teilen – auf eine Weise, wie es redaktionelle Inhalte nicht leisten können. Alle Industry Articles unterliegen strengen redaktionellen Richtlinien, um Lesern nützliche Nachrichten, technische Expertise oder Geschichten zu bieten. Die geäußerten Standpunkte und Meinungen in Industry Articles sind die des Partners und nicht notwendigerweise die von All About Circuits oder seinen Autoren.


Industrieroboter

  1. Abfall und Energiekosten senken mit autonomen Robotern
  2. Raspberry Pi Ziffernerkennung mit TensorFlow & OpenCV selbst bauen
  3. Power Management meistern mit NXP i.MX RT500 Crossover MCUs
  4. NXP i.MX RT500 für DSP-gestützte Smart Devices: Multi-Threading, XOS und Cadence Fusion F1 Audio-DSP
  5. Variational Autoencoder mit TensorFlow bauen: Ein praktischer Leitfaden
  6. Professioneller Leitfaden: Epoxidharz zur Kunstwerk‑Konservierung einsetzen
  7. CNC-Maschinenbestückung mit Cobots automatisieren: Effizienz und Präzision steigern
  8. Einsteiger-Leitfaden zur Yaskawa Motoman Roboterprogrammierung: Geschwindigkeit & Präzision steigern
  9. Einsteigerleitfaden: RoboDK auf Raspberry Pi einrichten
  10. PLC-Funktionsbausteine über OPC UA-Clients aufrufen: Praktischer Leitfaden