TOP
SSV Software Systems Register  Register
Log in to check your private messages  Log in to check your private messages
Startseite FAQ Search Mitglieder Profile  Log in 
SSV Support-Forum
Webinar „IoT-Funksensoren richtig einsetzen ...“

 
Post new topic   Reply to topic    SSV-Forum Forum Index >>> RMG/941
<<< Previous topic - Next topic >>>  
Display posts from previous:   
Author Message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 11.03.2021, 07:38    Post subject: Webinar „IoT-Funksensoren richtig einsetzen ...“ Reply with quote

Hallo Forum.

Am 25. März 2021 veranstalten wir von 11:00 bis 12:00 Uhr das Webinar „IoT-Funksensoren richtig einsetzen“. In diesem Webinar geht es Funktechnologien für den Sensing Endpoint, die Verbindung zwischen Sensordaten und KI-Algorithmen und den vermutlich wichtigsten Aspekt der IoT-Security (sichere Over-The-Air Remote Updates).

Insgesamt werden wir über die Agenda die hier folgenden drei Fragestellungen aufgreifen:

1. Welche Funktechniken gibt es? (Ein kurzer Überblick „IoT Wireless Technologies in a Nutshell“)

2. Wie erfolgt das Zusammenspiel zwischen Funksensorik und KI? (Sensordaten in Merkmalsvektoren zusammenfassen und mit Machine-Learning-Algorithmen analysieren)

3. Warum sind Over-The-Air (OTA) Updates unbedingt erforderlich? (Umfangreiche Protokollstacks und Firmware-Komponenten, aber auch Machine-Learning-Modelle, benötigen von Zeit zu Zeit ein Update)

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 12.03.2021, 21:26    Post subject: Herausforderungen: Protokollstack ... Reply with quote

Hallo Forum.

Die Systemintegration von Funksensoren in IoT-Lösungen ist besonders in industriellen Anwendungen recht anspruchsvoll. Eine große Herausforderung ist nach wie vor der jeweilige Protokollstack. Er muss nicht nur für den Sensor selbst, sondern auch für das jeweils zum Einsatz kommende Gateway zur Verfügung stehen. Dabei sind neben den Funktionen und Schnittstellen auch die jeweiligen Lizenzmodelle zu beachten. Im Rahmen einer Entscheidungsfindung sollten sogar die hinter dem Code stehenden Entwickler bewertet werden. Schließlich erfordert eine industrielle Funksensorlösung auch für die Protokollsoftware qualifizierten Support für die kommenden 10 bis 15 Jahre. Eine Funkfirmware als Binärobjekt (Blob) aus einer intransparenten Quelle, wie für Wi-Fi- oder BLE-Implementierungen im Consumer-Bereich üblich, ist nicht in jedem Fall eine gute Wahl.



An Hand dieser Abbildung werden im Webinar die Zusammenhänge des Protokollstacks für eine Wireless-Sensing-Anwendung erläutert.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 13.03.2021, 15:29    Post subject: Herausforderungen: IoT-Security ... Reply with quote

Hallo Forum.

Ein weiterer wichtiger Themenkomplex ist die IT- bzw. IoT-Security. Dazu gehören zunächst einmal die Authentizität, Vertraulichkeit und Integrität der Sensordaten. Eine IoT-Anwendung am anderen Ende benötigt die 100%ige Sicherheit, dass die erhaltenen Daten auch tatsächlich von dem Sensor stammen, dessen Absenderkennung als Quellangabe in den Sensordaten zu finden ist und dass diese Daten auf dem Übertragungsweg nicht verändert wurden. Bei der erforderlichen Ende-zu-Ende-Sicherheit wird häufig übersehen, dass die Sicherheitsmechanismen eines von MQTT- oder HTTPS-Verbindungen genutzten TLS-Protokolls in der Praxis architekturbedingt an mehr als einem Punkt „aufgebrochen“ wird. Dadurch existieren mehrere Bereiche zwischen Sensor und Anwendung, in denen Sensordatenmanipulation oder andere unerwünschte Eingriffe erfolgen können. Um derartige Risiken weitestgehend auszuschalten, ist nicht gleich ein Blockchain erforderlich. In der Praxis reicht es aus, wenn die Sensordaten direkt an der Quelle oder in unmittelbarer Nähe mit einer digitalen Signatur versehen werden, die von der Anwendung am anderen Ende in jedem Fall überprüft wird.

Im Webinar konzentrieren wir uns auf Over-The-Air (OTA) Updates. Sie bilden die technischen und organisatorischen Voraussetzungen für den sicheren Betrieb einer Wireless-Sensorik-Lösung. Ein unidirektionaler Kommunikationspfad zur Messdatenübertragung vom Sensor bis in die Cloud reicht somit nicht mehr aus. In Gegenrichtung, also von der Cloud bis in den Sensor müssen von Zeit zu Zeit bzw. bei Bedarf Software-Updates verschickt werden. Das ist wegen der Gefahren einer missbräuchlichen Nutzung eine hochsensible Aufgabenstellung. Aber auch Zuverlässigkeitsaspekte sind hier zu beachten: bricht die Funkdatenübertragung zwischen Sensor und Gateway während eines Update-Vorgangs ab, muss der IoT-Sensor auf jeden Fall noch die „alte“ Softwareversion nutzen können. Dafür sollte der interne Flash des Sensormikrocontrollers in einen A- und B-Bereich aufgeteilt werden. (A/B-Boot- bzw. Update-Konzept: gestartet wird die Software jeweils aus einem Bereich. Das Update erfolgt in den jeweils anderen Bereich. Erst wenn ein Software-Update vollständig und ohne Fehler durchgelaufen ist, werden die Bereiche vertauscht und ein Neustart der Mikrocontrollersoftware ausgelöst, um die neue Softwareversion zu starten.)

In die Kommunikationsbeziehungen für Software-Updates sind die Gateway-Funktionen einer Anwendung eingebunden. Sie dienen nicht nur als OTA-Update-Proxy für das Sensor-Update, sondern benötigen auch selbst Funktions- und Sicherheits-Updates aus der Cloud. Durch den Einsatz von ML-Algorithmen (also der AI-Part) zur Sensordatenanalyse in Echtzeit innerhalb der Gateway-Funktionen werden auch Updates für das dabei zum Einsatz kommende Machine-Learning-Modell benötigt (ML Model Updates). Solche Edge-AI-Lösungen nutzen Modelle, die durch eine Machine-Learning-Trainingsphase (ML Model Building) in der Cloud entstehen.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 16.03.2021, 07:08    Post subject: Kommunikationsbeziehungen ... Reply with quote

Hallo Forum.

In die Kommunikationsbeziehungen für Software-Updates sind die Gateway-Funktionen einer Anwendung eingebunden. Sie dienen nicht nur als OTA-Update-Proxy für den Sensor-Update, sondern benötigen auch selbst Funktions- und Sicherheits-Updates aus der Cloud. Durch den Einsatz von KI-Algorithmen zur Sensordatenanalyse in Echtzeit innerhalb der Gateway-Funktionen werden auch Updates für das dabei zum Einsatz kommende Machine-Learning-Modell benötigt (ML Model Updates). Solche Edge-AI-Lösungen nutzen Modelle, die durch eine Machine-Learning-Trainingsphase (ML Model Building) in der Cloud in der Cloud entstehen.



VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 16.03.2021, 07:11    Post subject: Grundlagen ... Reply with quote

Hallo Forum.

Das Webinar ist im Übrigen nicht nur für Experten geeignet. Es kommen auch verschiedene Grundlagen zur Sprache. Dazu gehören zum Beispiel die Antworten auf folgende Fragen:

- Was ist bei einem Wireless-Sensor-Netzwerk der Unterschied zwischen einer Star- und Mesh-Topologie?

- Welche Aufgaben hat ein Wireless-Netzwerkkoordinator?

- Was ist der Unterschied zwischen einer Full Function Device (FFD) und einer Reduced Function Device (RFD)?

- Warum eignet sich eine RFD besonders für einen batteriebetriebenen Sensor?



Selbstverständlich wird auch über geeignete Funkfrequenzen, ISM-Frequenzbänder und Kanäle für IoT-Funksensoren gesprochen. Es kommen aber auch einige Expertendetails, wie z. B. die Sleeping slave changing to active time oder die Active slave channel access time zur Sprache (inkl. der Frage warum 15 Millisekunden hier zwar ein recht guter Wert sind, aber die Stromaufnahme im RFD-Sleep-Modus sehr viel wichtiger für die Batterielebensdauer ist). Sogar Messverfahren in Bezug auf die Compliance zu Funknormen werden kurz vorgestellt.



Der Wireless-Themenblock des Webinars wird mit einer kurzen Übersicht zu den Funktechnologien abgeschlossen, die wir aktuell für die Entwicklung industrieller IoT-Sensoren verwenden.



VG KDW


Last edited by kdw on 17.03.2021, 07:54; edited 2 times in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 17.03.2021, 07:22    Post subject: Edge AI als Treiber … Reply with quote

Hallo Forum.

Nach den Wireless-Themen geht es mit der künstlichen Intelligenz (KI) und dem maschinellen Lernen (ML) weiter. Warum werden Funksensoren und ML-Aspekte überhaupt in einem Webinar gemeinsam betrachtet? Der Grund ist der relativ neue Hype um die „Edge AI“ bzw. „Intelligent Endpoints“. Halbleiterfirmen, wie Arm, sprechen hier schon von einer „Trillion Intelligent Endpoints“ mit Wireless-Sensorik und lokaler Endpoint AI.

Die künstliche Intelligenz (Artificial Intelligence = AI) einer Edge AI-IoT-Applikation wird durch Supervised Machine Learning-Methoden gebildet. Zum Sensor gehört dann jeweils ein ML-Modell für die Inferenzphase (beispielsweise eine Echtzeitdatenanalyse mittels einer zuvor erlernten und zur jeweiligen Aufgabenstellung passenden Mustererkennung). Den dafür zum Einsatz kommenden ML-Algorithmus kann man sich als Mapping-Funktion vorstellen: zu den jeweiligen Eingangsparametern X werden über ein mathematisches Regressions- oder Klassifizierungsverfahren die passenden Ausgangswerte Y geliefert. Der Zusammenhang zwischen X und Y wird von der Mapping-Funktion aus zuvor erfassten Trainingsdaten erlernt. Das mathematische Mapping-Verfahren lässt sich durch ein neuronales Netzwerk realisieren.

Die ML-Modellbildung mit einem neuronalen Netzwerk ist auf Grund der zahlreichen Iterationen ein rechenintensiver Vorgang, der mit einer ausreichend großen Menge an Trainingsdaten erfolgen sollte. Darüber hinaus benötigt ein ML-Modell hin und wieder einige weitere Lernphasen, um auf Veränderungen in der Inferenzumgebung zu reagieren und die Inferenzfehlerquote zu optimieren. Des Weiteren muss die aktuelle Modellversion allen Sensing-Endpunkten einer Edge AI-Anwendung zentral zur Verfügung stehen. Durch diese unterschiedlichen Anforderungen ist eine Cloud oder ein gleichwertiger On-Prem-Service in den meisten Fällen der beste Ort für Modellbildung, Maintenance und Modellspeicherung.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 20.03.2021, 09:39    Post subject: Echtzeit-Datenabbild … Reply with quote

Hallo Forum.

Wir vertreten den Standpunkt, dass man Umgebungen (z. B. eine Maschine, Anlage oder die gesamte Smart Factory) mit möglichst vielen Sensoren ausstatten sollte, um jederzeit über ein qualitativ hochwertiges Datenabbild der Realität zu verfügen. Auf Grund dieses Datenbildes lassen sich dann schnellstmöglich wirkungsvolle Entscheidungen treffen. Mit anderen Worten: zunächst einmal geht es um die Frage, wie ein qualitativ hochwertiges Datenabbild zu Stande kommt.



Unabhängig davon, ob die Sensoren ihre Messwerte nun per Kabel oder drahtlos weitergeben, geht es in einer praktischen Aufgabenstellung insgesamt immer um eine bestimmte Fragestellung. Hierzu ein Beispiel aus dem SSV-Alltag: Der Betreiber eines Maschinenparks möchte für eine größere Werkzeugmaschine eine Echtzeitinformation an eine MES-Software übermittelt bekommen, aus der hervorgeht, in welchem der folgenden Zustände sich die Maschine jeweils befindet:

1) Maschine wird nicht benötigt (Versorgungsspannung = Aus)
2) Maschine ist im Standby-Zustand (Versorgungsspannung = Ein)
3) Maschine ist aktiv und produziert …
4) Es liegt eine Rüstphase vor
5) Geplanter Halt, die Maschine wartet auf etwas
6) Ungeplanter Halt, Maschine ist defekt (z B. Not-Aus-Schalter betätigt)
7) Maschine zeigt ein auffälliges Betriebsverhalten (z. B. eine Unwucht)

Um diese sieben Zustände möglichst genau voneinander unterscheiden zu können, sind verschiedene Sensoren erforderlich. Die Zustände 3) und 7) sind mit Hilfe einer mehrdimensionalen Vibrations- bzw. Stromsensorik ausreichend sicher bestimmbar. Aus den Messwerten dieser Sensoren lässt sich auch ableiten, ob ein Zustand ungleich 3) oder 7) vorliegt, also irgendwas aus dem Bereich 1), 2), 4), 5) oder 6). Um zwischen den Zuständen 1), 2), 4), 5) und 6) differenzieren zu können, sind weitere spezielle Sensoren erforderlich. Evtl. kann man 1), 2) und 6) über einen optischen Farbsensor bestimmen, der an der Maschinenampel befestigt wird und RGB-Farbewerte bestimmen kann (ist die Versorgungsspannung der Maschine ausgeschaltet, wird keine Farbe der Maschinenampel aktiv sein). In der Rüstphase 4) ist die Tür zum Maschineninnenraum geöffnet, evtl. befindet sich sogar eine Person im inneren Arbeitsbereich der Maschine. Um den Zustand der Tür zum Arbeitsbereich zu bestimmen, wäre ein binärer Türsensor erforderlich. Der Zustand 5) ist dann jeweils der inaktive Wartezustand ohne Rüstphase und Not-Aus (Maschinenampel nicht Rot, aber aktiv) usw.

Datentechnisch werden die Messwerte aller Sensoren, die zu einem bestimmten Zeitpunkt t anfallen, in einem einzigen Array zugeführt. Ein solcher Merkmalsvektor lässt sich zum Beispiel mit Hilfe eines Supervised Machine Learning-Verfahrens mit einer Datenanalyse in Echtzeit klassifizieren, um den jeweiligen Zustand der Maschine aus dem Bereich 1) bis 7) zu bestimmen.

Anmerkung: Wie entsteht ein Merkmalsvektor? Wie werden Trainingsdaten für das Supervised Machine Learning erfasst? Siehe hierzu: https://ssv-comm.de/forum/dokumente/PCIndustrie-3-2020.pdf.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 24.03.2021, 12:18    Post subject: Der KI-Part ... Reply with quote

Hallo Forum.

Ein sehr wichtiger Baustein für das Zusammenspiel zwischen Funksensorik und KI sind künstliche neuronale Netzwerke (KNNs). Mit solchen Netzen lassen sich beliebige Machine Learning- (ML-) Aufgabenstellungen aus dem Bereich Klassifizierung oder Regression lösen. KNNs eignen sich hervorragend für das Supervised Machine Learning, also um aus zuvor aufbereiteten Trainingsdaten die jeweils per Label gekennzeichneten Muster zu erlernen (Klassifizierung) oder den Zusammenhang zwischen Eingangs- und Ausgangsdaten zu bestimmen (Regression).



Ein neuronales Netzwerk arbeitet in einer solchen Aufgabenstellung als Mapping-Funktion: Zu den jeweiligen Eingangsdaten X gehört ein bestimmtes Ausgangsmuster Y. Das Eingangsdatenmuster wird in der ML-Welt auch als Merkmalsvektor (Feature Vector) bezeichnet.

Im Rahmen des Webinars zeigen wir mit Hilfe eines Regressionsbeispiels die Zusammenhänge beim Supervised Machine Learning auf. Dazu gehört auch eine kleine Live-Demo mit TensorFlow (TensorFlow ist eine weit verbreitete Open-Source-Bibliothek für neuronale Netzwerke). Dabei schauen wir uns ein TensorFlow-Regressionsmodell etwas genauer an (Wie entsteht das Modell? Wie erfolgen an Hand des Modells Vorhersagen? Wie wird sieht der TensorFlow Lite Workflow aus, um das Modell auf einer Edge Device einzusetzen?).

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 26.03.2021, 07:09    Post subject: Slides als PDF ... Reply with quote

Hallo Forum.

Das Webinar hat planmäßig stattgefunden. Vielen Dank für die Teilnahme und das Feed-back. Hier ist der Link zum PDF mit den Slides:

https://www.ssv-embedded.de/doks/webinar/webinar_iot-funksensorik_25032021.pdf

Da ich einige Frage erhalten habe und diese ausführlich beantworten möchte, werde ich hier nach und nach die Antworten veröffentlichen.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 26.03.2021, 07:37    Post subject: Frage zum Wireless-M-Bus … Reply with quote

Hallo Forum.

Uns erreichte die Frage, warum wir nicht auf den Wireless-M-Bus eingegangen sind, obwohl dieser Funkstandard in der Ankündigung des Webinars explizit erwähnt wurde.

Die Antwort: Ja, das stimmt. Namentlich erwähnt wurde der Wireless-M-Bus nicht. Aber meine Aussagen zum „Sub-GHz-Bereich“ bezogen sich implizit auch auf den Wireless-M-Bus mit 868 MHz. Ansonsten gibt es m. E. beim Wireless-M-Bus keine neuen Entwicklungen oder sonstige herausragende Merkmale, die als Beispiel für unser Thema zu gebrauchen waren.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 26.03.2021, 17:05    Post subject: Fragen zum TensorFlow-Code … Reply with quote

Hallo Forum.

Es gab inzwischen einige Nachfragen, ob wir den TensorFlow-Beispielcode zur Verfügung stellen können. Die Antwort ist auf jeden Fall ein Ja. Hier schon einmal der Hauptteil:

Code:
# TensorFlow regression model example ...

import tensorflow as tf
import numpy as np
from tensorflow import keras

x = np.array([-1.0, 0.0, 1.0, 2.0,  3.0,  4.0], dtype=float)
y = np.array([-2.0, 1.0, 4.0, 7.0, 10.0, 13.0], dtype=float)

model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])

model.compile(optimizer='sgd', loss='mean_squared_error')

history = model.fit(x, y, epochs=400)

# Save the Keras model to .h5 file ...
model.save("my_model.h5")


Siehe hierzu auch die Seite 16 im PDF mit den Webinar-Slides. Dieser Beispielcode mit dem „Hallo Welt!“ des Supervised Machine Learnings für TensorFlow wurde von mir gestern unter Google-Colab ausgeführt. Siehe hierzu auch https://colab.research.google.com/ (falls Sie Colab zuvor noch nicht genutzt haben, sollten sich zunächst einmal eine der zahlreichen Einführungen zu dieser Cloud-basierten Python-Entwicklerplattform anschauen).

Was soll der Beispielcode aus dem Webinar aufzeigen? Es geht darum, die beiden Parameter m und b für die Gleichung y = mx + b aus den vorhandenen Daten x = np.array([…]) und y = np.array([…]) mit Hilfe eines Lernalgorithmus automatisch zu erlernen.



Der Lernalgorithmus einer Supervised Machine Learning-Anwendung soll die Gewichtungen für ein Modell aus den zur Verfügung stehenden Trainingsdaten erlernen. Diese Gewichtungen beschreiben die Wahrscheinlichkeit, dass die Datenmuster, die das Modell aus den Daten erlernt (in unserem Beispiel x = np.array([…]) und y = np.array([…])), die tatsächlichen Beziehungen in diesen Daten widerspiegeln. Mit diesem erlernten Modell kann man anschließend für einen bisher unbekannten x-Wert den jeweiligen y-Wert vorhersagen, wenn für x und y die gleichen Beziehungen wie für die Trainingsdaten gelten.

In dem Beispiel wird zunächst ein sogenanntes „Sequential Model“ erzeugt. In diesem Fall das denkbar einfachste Modell, dass überhaupt möglich ist: Ein einziger Eingang sowie eine Verarbeitungsstufe mit einem Ausgang:

Code:
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])


Dann wird der Lernalgorithmus für eine lineare Regression in Bezug auf die zum Einsatz kommenden Methoden spezifiziert (Optimierungsmethode „stochastic gradient descent = sgd“ und die Verlustfunktion „loss function = mean squared error“).

Code:
model.compile(optimizer='sgd', loss='mean_squared_error')


Nachdem das Modell als Instanz existiert und die Lernalgorithmusparameter festgelegt wurden, kann der eigentliche Lernvorgang mit Hilfe der Daten x = np.array([…]) und y = np.array([…]) beginnen. Die maximale Anzahl der Iterationen (Durchläufe unter Zuhilfenahme der Optimierungsfunktion) wird hier mit 400 festgelegt.

Code:
history = model.fit(x, y, epochs=400)


Abschließend wird das neu erzeugte TensorFlow-Modell in eine Datei geschrieben. Mit Hilfe dieser Datei ist das Modell auf anderen Rechnersystemen, die ebenfalls eine TensorFlow-Laufzeitumgebung besitzen müssen, für die Inferenz nutzbar (Vorhersage des y-Werts für bisher unbekannt x-Werte).

Code:
model.save("my_model.h5")


VG KDW

P.S.: Wenn Sie einen Google-Konto besitzen, können Sie den Code einfach per Copy aus dem Fenster weiter herauskopieren und per Paste in eine Colab-Codezelle kopieren und den Code dann sofort dort ausführen.


Last edited by kdw on 10.04.2021, 08:20; edited 2 times in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 01.04.2021, 06:40    Post subject: Erfolgskurve der Trainingsschleife … Reply with quote

Hallo Forum.

Der eigentliche Lernvorgang zur Modellbildung in einer Supervised Machine Learning-Anwendung erfolgt in einer Trainingsschleife, die beim Einsatz von TensorFlow und dem Keras-API durch den folgenden Code ausgelöst wird:

Code:
history = model.fit(x, y, epochs=400)


Im Beispielcode aus dem Webinar vom 25. März wird die Trainingsschleife insgesamt 400-mal durchlaufen. Zur Optimierung der beiden lernfähigen Parameter m und b für die Gleichung y = mx + b dient der Gradientenabstieg (Verlauf der Änderung = Abstieg) per „stochastic gradient descent (SGD)“. Der Lernerfolg der Schleifendurchläufe lässt sich visualisieren.

Code:
import matplotlib.pyplot as plt

loss = history.history['loss']
epochs = range(1, len(loss) + 1)

plt.plot(epochs, loss, 'bo', label='Training loss')
plt.title('Training loss')
plt.show()




Man erkennt in dem Diagramm Training loss recht deutlich, dass es ausgereicht hätte, die Trainingsschleife ca. 50-mal zu durchlaufen, um ein zufriedenstellendes Ergebnis zu erhalten.

VG KDW


Last edited by kdw on 09.04.2021, 21:23; edited 3 times in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 09.04.2021, 21:13    Post subject: Predictions … Reply with quote

Hallo Forum.

Ein Supervised Machine Learning-Modell, also eine Rechenvorschrift mit Parametern, dient zur Vorhersage (Prediction) von y-Werten für bisher unbekannte x-Werte. Der Vorhersageprozess wird auch als die Inferenzphase einer Machine Learning-Anwendung bezeichnet (Inferenz bedeutet hier die Anwendung des Machine Learning-Modells zur Entscheidungsfindung).

Code:
# Load model file and predict something

import tensorflow as tf
import numpy as np
from tensorflow import keras

model = keras.models.load_model("my_model.h5")
print(np.round(model.predict([3]), 1))


In unserem Beispiel können wir jederzeit die Datei my_model.h5 laden und eine Echtzeit-Vorhersage durchführen. Dieser Vorgang kann auf dem gleichen System, auf dem das Modell (also die Datei my_model.h5) erzeugt wurde, oder auf einem x-beliebigen anderen Rechnersystem mit einer TensorFlow-Laufzeitumgebung erfolgen. Das Codefragment

Code:
model.predict([3])


bildet die Eingabe für die Vorhersage (x = 3). Als Ausgabe (also der y-Wert für die Prediction) würden wir 10 erhalten, weil unser Modell der Gleichung y = 3x + 1 entspricht.

VG KDW


Last edited by kdw on 14.04.2021, 06:36; edited 1 time in total
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 14.04.2021, 06:33    Post subject: TensorFlow Lite Converter ... Reply with quote

Hallo Forum.

Die Datei my_model.h5 mit unserem Regressions-ML-Modell kann nun jederzeit geladen und in eine *.tflite-Datei für eine TensorFlow Lite-Laufzeitumgebung umgewandelt werden. Hier der dafür erforderliche Code:

Code:
# TensorFlow Lite: Load model file and convert model to *.tflite ...

import tensorflow as tf
import numpy as np
from tensorflow import keras

model = keras.models.load_model("my_model.h5")

# Convert the Keras model to .tflite file ...
converter = tf.lite.TFLiteConverter.from_keras_model(model)
#converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
#converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()
open('my_model.tflite', 'wb').write(tflite_model)


Für eigene Versuche können die auskommentierten Codezeilen mit den Optimierern (#converter.optimizations) aktiviert werden. Die *.tflite-Datei wird dadurch kompakter, eine Inferenz auf dem Zielsystem aber ggf. ungenauer.

VG KDW
Back to top
View user's profile Send private message
kdw



Joined: 05 May 2006
Posts: 1460

PostPosted: 14.04.2021, 06:48    Post subject: TensorFlow Lite Predictions … Reply with quote

Hallo Forum.

Die *.tflite-Datei lässt nun jederzeit mit dem hier folgenden Code für eine Inferenz nutzen. Dieser Code nutzt den sogenannten TensorFlow Lite Interpreter. Das sieht auf den ersten Blick etwas merkwürdig aus. Es hat aber den Vorteil, dass der Interpreter auch im C/C++ Quellcode zur Verfügung steht (unser Beispiel nutzt eine Python-Variante), der sich praktisch auf jede Ziel-Hardware portieren lässt.

Code:
# TensorFlow Lite: load *.tflite model file and predict something ...

import numpy as np
import tensorflow as tf

# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path="my_model.tflite")
interpreter.allocate_tensors()

# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()

# Use model with input data.
input_shape = input_details[0]['shape']
input_data = np.array([[3.0]], dtype=np.float32)
interpreter.set_tensor(input_details[0]['index'], input_data)

interpreter.invoke()

# The function `get_tensor()` returns a copy of the tensor data.
# Use `tensor()` in order to get a pointer to the tensor.
output_data = interpreter.get_tensor(output_details[0]['index'])
print(np.round(output_data, 1))


Der eigentliche x-Wert für die Inferenz gemäß y = mx + b ist in diesem Beispiel das hier folgende Codefragment mit der „3.0“:

Code:
input_data = np.array([[3.0]], dtype=np.float32)


Das war alles. Nun ist der gesamte Code aus dem Webinar mit den versprochenen Kommentaren online. Viel Erfolg bei ausprobieren.

VG KDW

P.S.: Siehe auch https://github.com/kdw1000/Test/blob/master/_250321.ipynb. Hier ist jetzt der vollständige Code mit farblicher Syntaxhervorhebung und inklusive der Laufzeitausgaben zu finden, den ich im Webinar unter Google Colab ausgeführt habe.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    SSV-Forum Forum Index >>> RMG/941 All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

SSV Software Systems GmbH

Dünenweg 5
30419 Hannover

Fon: +49(0)511  ·  40 000-0
Fax: +49(0)511  ·  40 000-40

sales@ssv-embedded.de


Impressum    ·    Datenschutz    ·    AGB

© 2023 SSV SOFTWARE SYSTEMS GmbH. Alle Rechte vorbehalten.

ISO 9001:2015