Willkommen zurück zu unserer fortlaufenden Reihe über Edge Impulse, bei der wir aufzeigen, wie Entwickler Edge Impulse nutzen können, um Machine-Learning-Technologien in Embedded-Systeme einzubinden. Zur Erinnerung: Edge Impulse ist eine Plattform für die Erstellung, Bereitstellung und Verwaltung von Machine-Learning-Modellen für Edge-Bauelemente. Eines der wichtigsten Merkmale von Edge Impulse ist die Impulse-Design-Funktion, mit der Nutzer benutzerdefinierte Machine-Learning-Modelle für ihre spezifischen Anwendungsfälle erstellen können. In diesem dritten Teil befassen wir uns detailliert mit einem der wichtigsten Schritte des Edge-Impulse-Arbeitsablaufs: dem Entwurf des Impulses.
Aber lassen Sie uns zunächst definieren, was genau der Begriff „Impuls“ in Verbindung mit Edge Impulse bezeichnet. Bei Edge Impulse ist ein Impuls ein Machine-Learning-Modell, das für den Einsatz in Edge-Bauelementen entwickelt und optimiert wurde. Der Begriff „Impuls“ vermittelt die Vorstellung einer kleinen, in sich geschlossenen Einheit von Intelligenz, die in einem Bauelement eingesetzt und unabhängig ausgeführt werden kann. Ein Impuls in Edge Impulse besteht aus einer Vorverarbeitungspipeline, einem Machine-Learning-Modell und einem Bereitstellungscode. Die Vorverarbeitungspipeline umfasst eine Reihe von Verarbeitungsblöcken, die die rohen Eingabedaten in ein Format umwandeln, das das Machine-Learning-Modell verwenden kann. Dies wird der Schwerpunkt dieses Beitrags sein.
Im vorherigen Kapitel haben wir gezeigt, wie Benutzer ihre eigenen Datensätze aus der realen Welt in die Edge-Impulse-Plattform hochladen können. Sobald die Rohdaten in Edge Impulse hochgeladen, verfeinert und getaggt wurden, kann ein Entwickler mit dem „Impulse-Design“ beginnen oder seine eigene benutzerdefinierte Machine-Learning-Pipeline definieren. Der erste Schritt besteht darin, Edge Impulse mitzuteilen, welche Art von Daten hochgeladen wurde. Der Workflow bietet dem Benutzer drei vorkonfigurierte Optionen, darunter Beschleunigungsmesser-, Ton- oder Bilddaten. Darüber hinaus gibt es eine vierte generische Option mit dem Titel „Sonstige“, um andere Arten von Sensoren zu verarbeiten. Diese können von Temperatursensoren bis hin zu Lichtsensoren reichen.
Wenn es sich bei den Daten nicht um ein Bild handelt, sind es im Allgemeinen Zeitreihendaten (Abbildung 1). Mit anderen Worten: ein oder mehrere Sensorwerte werden sich im Laufe der Zeit als Reaktion auf Umweltreize ändern. Es ist wichtig zu bestimmen, ob die Veränderungen im Laufe der Zeit schnell (z. B. bei der Kfz-Aufpralldetektion) oder langsam (z. B. bei der Temperatur in bestimmten Fertigungsprozessen) erfolgen, da dies später ein wichtiger Aspekt sein wird.
Sobald der Datentyp ausgewählt wurde, werden dem Entwickler die ML-Pipeline und Optionen zur Anpassung des Eingabeblocks angezeigt (Abbildung 2). Der Inhalt des Eingabeblocks variiert je nach Datentyp. Um Embedded-Systeme besser zu verstehen, werden wir Beschleunigungsmesserdaten verwenden. Im Benutzerhandbuch von Edge Impulse finden Sie die folgenden Optionen, die Sie für Zeitreihendaten anpassen können:
Die nächste Entscheidung des Arbeitsablaufs ist die Anwendung der verschiedenen „Verarbeitungsblöcke“. Die Aufgabe des Verarbeitungsblocks ist die Vorverarbeitung und Extraktion von Merkmalen aus den Rohdaten, die zum Anlernen des Modells verwendet werden. Edge Impulse bietet praktischerweise eine Bibliothek mit vordefinierten digitalen Signalverarbeitungsblöcken für verschiedene Anwendungen. Zu den gängigsten Blöcken gehören:
Natürlich kann es sein, dass Sie sehr spezielle Daten haben oder eigene Algorithmen zur digitalen Signalverarbeitung verwenden möchten. In diesem Fall bietet Edge Impulse einen Mechanismus, mit dem Endbenutzer benutzerdefinierte Verarbeitungsblöcke definieren und diese für das Modelltraining innerhalb des Studio-Workflows von Edge Impulse verwenden können. Wenn Sie mehr über die Verwendung von benutzerdefinierten Verarbeitungsblöcken erfahren möchten, lesen Sie bitte diesen Artikel (Abbildung 3).
Außerdem können Verarbeitungsblöcke in einer Pipeline kombiniert werden, um einen benutzerdefinierten Workflow für die Datenvorverarbeitung zu erstellen. Die Ausgabe der Verarbeitungsblöcke wird dann in „Lernblöcke“ eingespeist. Ein Lernblock ist ein neuronales Netzwerk, das darauf trainiert ist, aus den verarbeiteten Daten zu lernen, die vom Workflow des Verarbeitungsblocks ausgegeben werden.
Den nächsten Beitrag in dieser Reihe werden wir dem Thema Lernblöcke widmen.
Michael Parks, P.E. ist der Eigentümer von Green Shoe Garage, einem Entwicklungsstudio für kundenspezifische Elektronik und Technologieberatung im Süden von Maryland. Er produziert den S.T.E.A.M. Power-Podcast (ein Podcast über MINT-Themen), mit dem er die Öffentlichkeit für technische und wissenschaftliche Fragen sensibilisieren möchte. Michael ist außerdem zugelassener Ingenieur im Bundesstaat Maryland und hat einen Master-Abschluss in Systemtechnik von der Johns Hopkins University.