EUR | USD

Ausführen von Code für maschinelles Lernen in einem eingebetteten IoT-Knoten zur einfachen Identifizierung von Objekten

Von Bill Giovino

Zur Verfügung gestellt von Nordamerikanische Fachredakteure von Digi-Key

IoT-Netzwerke (IoT: Internet of Things, Internet der Dinge) die in dynamischen Umgebungen arbeiten, werden über die Objekterkennung hinaus auf die visuelle Objektidentifizierung in Anwendungen wie Sicherheit, Umweltüberwachung, Schutz und industrielles IoT (IIoT) erweitert. Da die Objektidentifizierung anpassungsfähig ist und die Verwendung von Modellen des maschinellen Lernens (ML) beinhaltet, handelt es sich um ein komplexes Gebiet, das von Grund auf schwierig zu erlernen und schwer effizient umzusetzen sein kann.

Die Schwierigkeit ergibt sich aus der Tatsache, dass ein ML-Modell nur so gut ist wie sein Datensatz, und sobald die korrekten Daten erfasst sind, muss das System entsprechend geschult werden, damit es praktisch einsetzbar ist.

Dieser Artikel zeigt Entwicklern, wie sie Googles ML-Modell „TensorFlow Lite for Microcontrollers“ in einen Mikrocontroller von Microchip Technology implementieren können. Anschließend wird erklärt, wie die Lerndatensätze zur Bildklassifizierung und Objekterkennung mit TensorFlow Lite verwendet werden können, um Objekte mit einem Minimum an benutzerdefinierter Codierung einfach zu identifizieren.

Anschließend wird ein TensorFlow-Lite-ML-Starterkit von Adafruit Industries vorgestellt, das Entwickler mit den Grundlagen von ML vertraut machen kann.

ML für eingebettete Bildverarbeitungssysteme

Im weitesten Sinne verleiht ML einem Computer oder einem eingebetteten System ähnliche Mustererkennungsfähigkeiten wie einem Menschen. Aus der Sicht der menschlichen Sinnesorgane bedeutet dies, dass Sensoren wie Mikrofone und Kameras eingesetzt werden, um die menschliche Sinneswahrnehmung des Hörens und Sehens zu imitieren. Während Sensoren für die Erfassung von Audio- und visuellen Daten einfach zu verwenden sind, müssen die Daten, sobald sie digitalisiert und gespeichert sind, verarbeitet werden, damit sie mit gespeicherten Mustern im Speicher abgeglichen werden können, die bekannte Klänge oder Objekte repräsentieren. Die Herausforderung besteht darin, dass die von einer Kamera erfassten Bilddaten für ein visuelles Objekt zum Beispiel nicht genau mit den gespeicherten Daten im Speicher für ein Objekt übereinstimmen. Eine ML-Anwendung, die das Objekt visuell identifizieren muss, muss die Daten so verarbeiten, dass sie das von der Kamera erfasste Muster genau und effizient an ein im Speicher abgelegtes Muster anpassen kann.

Es gibt verschiedene Bibliotheken oder Engines, die verwendet werden, um die von den Sensoren erfassten Daten abzugleichen. TensorFlow ist eine Open-Source-Code-Bibliothek, die zum Abgleich von Mustern verwendet wird. Die Code-Bibliothek „TensorFlow Lite for Microcontrollers“ wurde speziell für den Betrieb auf einem Mikrocontroller entwickelt. Daher wurden die Speicher- und CPU-Anforderungen für den Betrieb auf dieser leistungsbegrenzten Hardware reduziert. Konkret erfordert es einen 32-Bit-Mikrocontroller und benötigt weniger als 25 Kilobyte (kB) Flash-Speicher.

Doch auch der Einsatz von „TensorFlow Lite for Microcontrollers“ als ML-Engine erfordert immer noch einen Lerndatensatz der Muster, die es identifizieren soll. Unabhängig davon, wie gut die ML-Engine ist, ist das System nur so gut wie sein Lerndatensatz, und für visuelle Objekte können einige der Lerndatensätze für viele große Modelle mehrere Gigabyte an Daten erfordern. Mehr Daten erfordern eine höhere CPU-Leistung, um schnell eine genaue Übereinstimmung zu finden, weshalb diese Art von Anwendungen normalerweise auf leistungsstarken Computern oder High-End-Laptops laufen.

Für die Verwendung eingebetteter Systeme sollte es nur notwendig sein, in einem Lerndatensatz nur die spezifischen Modelle zu speichern, die für die Anwendung erforderlich sind. Wenn ein System Werkzeuge und Hardware erkennen soll, dann können Modelle, die Obst und Spielzeug darstellen, entfernt werden. Dadurch wird die Größe des Lerndatensatzes reduziert, was wiederum den Speicherbedarf des eingebetteten Systems senkt und so die Leistung bei gleichzeitiger Kostensenkung verbessert.

Ein ML-Mikrocontroller

Um TensorFlow Lite für Mikrocontroller auszuführen, zielt Microchip Technology auf maschinelles Lernen in Mikrocontrollern mit dem Arm®-Cortex®-M4F-basierten Mikrocontroller ATSAMD51J19A-AFT (Abbildung 1). Er verfügt über 512 kB Flash-Speicher mit 192 kB SRAM-Speicher und läuft bei 120 Megahertz (MHz). Der ATSAMD51J19A-AFT ist Teil der ML-Mikrocontroller-Familie ATSAMD51 von Mikrochip Technology. Er entspricht den Qualitätsstandards AEC-Q100 Klasse 1 der Automobilbranche und arbeitet bei Temperaturen von -40 °C bis +125 °C, so dass er für die härtesten IoT- und IIoT-Umgebungen geeignet ist. Es handelt sich um einen Niederspannungs-Mikrocontroller, der bei 120 MHz mit Spannungen von 1,71 bis 3,63 Volt arbeitet.

Diagramm: Der ATSAMD51J19A von Microchip basiert auf einem Arm-Cortex-M4F-Kern (zum Vergrößern anklicken)Abbildung 1: Der ATSAMD51J19A basiert auf einem Arm-Cortex-M4F-Kern, der mit 120 MHz läuft. Es handelt sich um einen voll ausgestatteten Mikrocontroller mit 512 kB Flash und 192 kB SRAM. (Bildquelle: Microchip Technology)

Zu den Netzwerkoptionen des ATSAMD51J19A gehören CAN 2.0B für industrielle Netzwerke und 10/100 Ethernet für die meisten verkabelten Netzwerke. Dadurch kann der Mikrocontroller in einer Vielzahl von IoT-Netzwerken eingesetzt werden. Eine USB2.0-Schnittstelle unterstützt sowohl den Host- als auch den Geräte-Betriebsmodus und kann für Geräte-Debugging oder Systemvernetzung verwendet werden.

Ein kombinierter Befehls- und Daten-Cache von 4 kB verbessert die Leistung bei der Verarbeitung von ML-Code. Eine vorhandene Gleitkommaeinheit (FPU) verbessert die Leistung des ML-Codes zur Verarbeitung roher Sensordaten.

Speichern von Lerndatensätzen

Der ATSAMD51J19A verfügt außerdem über eine QSPI-Schnittstelle für die externe Programm- oder Datenspeicherung. Dies ist nützlich für die zusätzliche Datenspeicherung von Lerndatensätzen, die die Kapazität des On-Chip-Flash-Speichers übersteigen. Die QSPI unterstützt XiP (eXecute in Place) für eine externe Highspeed-Programmspeichererweiterung.

Der ATSAMD51J19A verfügt außerdem über einen Host-Controller für SD/MMC-Speicherkarten (SDHC), der für ML-Anwendungen sehr nützlich ist, da er einen einfachen Speicheraustausch von ML-Code und Lerndatensätzen ermöglicht. Während die Engine von „TensorFlow Lite for Microcontrollers“ in den 512 kB Flash auf dem ATSAMD51J19A laufen kann, können die Lerndatensätze regelmäßig aktualisiert und verbessert werden. Der Lerndatensatz kann in einem externen QSPI-Flash oder QSPI-EEPROM gespeichert und, je nach Netzwerkkonfiguration, über das Netzwerk ferngesteuert aktualisiert werden. Bei einigen Systemen kann es jedoch bequemer sein, eine Speicherkarte physisch gegen eine andere auszutauschen, die über einen verbesserten Lerndatensatz verfügt. In dieser Konfiguration muss der Entwickler entscheiden, ob das System für einen Hot-Swap der Speicherkarte ausgelegt werden soll oder ob der IoT-Knoten abgeschaltet werden muss.

Wenn der IoT-Knoten extrem platzkritisch ist, dann wäre es vorteilhaft, statt externen Speicher zu verwenden, so viel von der Anwendung wie möglich in den Speicher des Mikrocontrollers zu legen. Der ATSAMD51J20A-AFT von Microchip Technology ist ähnlich und pinkompatibel zum ATSAMD51J19A, bietet jedoch 1 MB Flash und 256 kB SRAM, wodurch mehr On-Chip-Speicher für Lerndatensätze zur Verfügung steht.

Entwickeln mit TensorFlow Lite für Mikrocontroller

Adafruit Industries unterstützt die Entwicklung auf dem ATSAMD51J19A mit dem Entwicklungskit 4317 für „TensorFlow Lite for Microcontrollers“ (Abbildung 2). Das Board verfügt über 2 MB QSPI-Flash, das zum Speichern von Lerndatensätzen verwendet werden kann. Das Kit wird mit einer Mikrofonbuchse für die ML-Audioerkennung geliefert. Sein 1,8-Zoll-TFT-LCD-Farbdisplay mit 160 x 128 Pixeln kann für die Entwicklung und Fehlersuche verwendet werden. Die Anzeige kann auch für Spracherkennungs-Demos verwendet werden, wenn „TensorFlow Lite for Microcontrollers“ mit einem Spracherkennungs-Lerndatensatz verwendet wird. Da die Anwendung verschiedene Wörter erkennt, können diese auf dem Bildschirm angezeigt werden.

Das Kit von Adafruit Industries enthält außerdem acht Drucktasten, einen dreiachsigen Beschleunigungsmesser, einen Lichtsensor, einen Mini-Lautsprecher und eine Lithium-Polymer-Batterie. Der USB2.0-Anschluss des ATSAMD51J19A ist auf einen Anschluss zum Laden, Debuggen und Programmieren des Akkus herausgeführt.

Bild zu Adafruit Industries 4317 TensorFlow Lite für MikrocontrollerAbbildung 2: Das Entwicklungskit „4317 TensorFlow Lite for Microcontrollers“ von Adafruit Industries wird mit einem Farb-TFT-LCD für die Entwicklung geliefert und kann die Ergebnisse von ML-Operationen anzeigen. (Bildquelle: Adafruit Industries)

Das Adafruit-Kit wird mit der neuesten Version von TensorFlow Lite für Mikrocontroller geliefert. Lerndatensätze können über den USB-Port in den 512 kB Flash-Speicher des Mikrocontrollers ATSAMD51J19A oder in den externen 2 MB QSPI-Speicher geladen werden.

Zur Evaluierung der Bilderkennung kann der TensorFlow-Objekterkennungslernsatz auf die Entwicklungsplatine geladen werden. Das Entwicklungsboard verfügt über Anschlüsse für den Anschluss an die parallelen und seriellen Schnittstellen des Mikrocontrollers, von denen viele für den Anschluss einer externen Kamera verwendet werden können. Wenn der Lernsatz zur Objekterkennung auf den Mikrocontroller geladen ist, kann die LCD-Anzeige verwendet werden, um die Ausgabe der Ergebnisse der Objekterkennungs-ML-Verarbeitung anzuzeigen. Wenn also eine Banane erkannt wird, kann das TFT-Display die erkannten Objekte zusammen mit einem prozentualen Vertrauen anzeigen. Eine Beispiel-Ergebnisanzeige könnte folgendermaßen aussehen:

Banane: 95%
Schraubenschlüssel: 12%
Brille: 8%
Kamm: 2%

Bei der Entwicklung von Anwendungen zur Erkennung von IoT-Objekten kann dies die Entwicklung beschleunigen und bei der Diagnose falscher Erkennungsergebnisse helfen.

Fazit

ML ist ein expandierender Bereich, der spezialisierte Fähigkeiten erfordert, um Mikrocontroller-Engines und -Modelle von Grund auf neu zu entwickeln und effizient am Netzwerkrand zu implementieren. Die Verwendung einer vorhandenen Code-Bibliothek wie „TensorFlow Lite for Microcontrollers“ auf kostengünstigen, hocheffizienten Mikrocontrollern oder Entwicklungsplatinen spart jedoch Zeit und Geld. Das Ergebnis ist ein hochleistungsfähiges ML-System, das zur schnellen, zuverlässigen und effizienten Erkennung von Objekten in einem IoT-Knoten verwendet werden kann.

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der Digi-Key Electronics oder offiziellen Politik der Digi-Key Electronics wider.

Über den Autor

Bill Giovino

Bill Giovino ist Elektronikingenieur mit einem BSEE von der Syracuse University und einer der wenigen, die erfolgreich vom Entwicklungsingenieur über den Anwendungsingenieur zum Technologiemarketing wechselten.

Seit über 25 Jahren wirbt Bill für neue Technologien vor technischem und nicht-technischem Publikum für viele Unternehmen, darunter STMicroelectronics, Intel und Maxim Integrated. Während seiner Zeit bei STMicroelectronics trug Bill dazu bei, die frühen Erfolge des Unternehmens in der Mikrocontroller-Industrie voranzutreiben. Bei Infineon inszenierte Bill die ersten Erfolge des Unternehmens im Bereich Mikrocontroller-Design in den USA. Als Marketingberater für sein Unternehmen CPU Technologies hat Bill vielen Unternehmen geholfen, unterbewertete Produkte in Erfolgsgeschichten zu verwandeln.

Bill war zudem ein früher Anwender des Internets der Dinge, einschließlich der Implementierung des ersten vollständigen TCP/IP-Stacks auf einem Mikrocontroller. Die Botschaft von „Verkauf durch Aufklärung“ und die zunehmende Bedeutung einer klaren, gut geschriebenen Kommunikation bei der Vermarktung von Produkten im Internet sind Bills Anliegen. Er ist Moderator der beliebten „Semiconductor Sales & Marketing Group“ auf LinkedIn und spricht fließend B2E.

Über den Verlag

Nordamerikanische Fachredakteure von Digi-Key