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

Maschinelles Lernen auf PLCnext

Mittlerweile hat jeder von Machine Learning gehört und wie es alles verändern wird. Aber die wenigsten haben eine Idee, wie man anfangen kann, alles zu ändern. Ich hoffe, wenn Sie die Schritte in diesem Blog ausprobieren oder sogar darüber lesen, werden Sie verstehen, wie Sie beginnen, Dinge mit Ihrer PLCnext-Steuerung zu ändern. In diesem Blog gehe ich darauf ein, Ihr erstes ML-Modell zu trainieren, es in den ONNX-Standard zu konvertieren und das Modell auf einer PLCnext-Steuerung zu inferieren. Um die Dinge nicht zu überwältigen, werde ich den berühmten Iris-Datensatz verwenden, um unser Modell zu erstellen.

Bevor wir beginnen, sollte klar sein, was wir erreichen wollen. Daher werde ich eine kleine Erklärung zu den in diesem Blog behandelten Themen geben. Meine Referenzen finden Sie am Ende dieses Blogs.

Einführung in maschinelles Lernen

Was ist maschinelles Lernen

Ich denke, wir sollten damit beginnen, zu erklären, was maschinelles Lernen ist. Das Wesen des maschinellen Lernens besteht darin, dass wir versuchen, mithilfe von Statistiken und Algorithmen Muster in Datensätzen zu finden. Wir unterscheiden drei Haupttypen des maschinellen Lernens:überwachtes maschinelles Lernen, unüberwachtes maschinelles Lernen und Verstärkungslernen. Überwachtes Lernen ist heute die am häufigsten verwendete „Geschmacksrichtung“, und wir werden in diesem Blog überwachtes Lernen verwenden. Beim überwachten Lernen kennzeichnen wir Daten und sagen der Maschine genau, nach welchen Mustern wir suchen.

Beim unüberwachten Lernen kennzeichnen wir unsere Daten nicht und lassen die Maschine ihre eigenen Muster finden, da diese Technik weniger offensichtliche Anwendungen hat und unüberwachtes Lernen weniger beliebt ist.

Beim bestärkenden Lernen schließlich lernt ein Algorithmus durch Versuch und Irrtum, um ein festgelegtes Ziel zu erreichen. Es probiert einfach eine Menge Dinge aus und wird belohnt oder bestraft, je nachdem, ob es eine gute oder eine schlechte Aktion war. Googles AlphaGo ist ein berühmtes Beispiel für Reinforcement Learning.

Der Irisblüten-Datensatz

Laut Wikipedia ist der Irisblüten-Datensatz:

Ok, gut, aber wie sieht es aus?

Im Iris-Datensatz gibt es 5 Felder:Kelchblattlänge, Kelchblattbreite, Blütenblattlänge, Blütenblattbreite und die Sorte der Irisblüte. Unser heutiges Ziel ist es, die Art der Irisblüte zu finden, wenn wir die Kelchblattlänge, Kelchblattbreite, Blütenblattlänge und Blütenblattbreite kennen. Also trainieren wir das Modell, um die Art der Blume zu klassifizieren. Wie Sie sich denken können, handelt es sich bei dieser Art des maschinellen Lernens um die Klassifizierung.

Machine Learning kann auch verwendet werden, um einen Wert im Datensatz vorherzusagen. Dieses Verfahren heißt Regression und verwendet andere Algorithmen als die Klassifizierung.

Der Algorithmus

Heute verwenden wir den „Decision Tree Classifier“, nicht weil er perfekt für die Aufgabe ist, sondern weil er sehr intuitiv ist und ohne komplizierte Mathematik leicht verständlich ist. Hier finden Sie ein Beispiel für einen Entscheidungsbaum für unseren Irisblüten-Datensatz.

ONNX

Wie Sie sich vorstellen können, können Modelle für maschinelles Lernen in einer Vielzahl von Formaten vorliegen und müssen auf vielen unterschiedlichen Hardwarekomponenten mit unterschiedlichen Beschleunigungsmethoden ausgeführt werden. Der Open Neural Network Exchange versucht, dieses Problem zu entschärfen. Es wird in Open Office, Azure und unzähligen anderen Anwendungen auf der ganzen Welt eingesetzt. Es wird mit ziemlicher Sicherheit auf dem Gerät verwendet, auf dem Sie diesen Blog lesen.


Um Onnx-Modelle auszuführen, benötigen wir die Onnx-Laufzeit, dies bringt Herausforderungen mit sich. Besonders auf Arm-Prozessoren, aber mit den bereitgestellten Docker-Images sollte es Ihnen gut gehen!

Technische Komplettlösung

Voraussetzungen

Ich verwende einen AXC F 2152-Controller mit installierter Firmware 2021.0 LTS und einer Ubuntu 20.04-VM, um das Modell zu trainieren. Die Skripts zum Trainieren und Ableiten des Modells werden bereitgestellt, aber die Einrichtung der Ubuntu-VM ist nicht Gegenstand des Blogs. Sie finden gute Erklärungen zur Installation der benötigten Python-Pakete und alle verwendeten Pakete sollten korrekt mit pip3 installiert werden.

Auf dem PLCnext-Controller muss eine Container-Engine installiert sein. Eine gute Erklärung der Vorgehensweise finden Sie hier.

Ein ähnliches Vorgehen ist auch mit dem AXC F 3152 möglich.

Für diesen Blog benötigen Sie mindestens eine minimale Erfahrung mit Python und Containern.

Modell trainieren

Laden Sie den Inhalt dieses GitHub-Repositorys herunter und stellen Sie sicher, dass alle erforderlichen Pakete installiert sind.

Das erste Skript, das wir ausführen werden, ist das Train-Skript, mit dem wir unser Modell an den Iris-Datensatz anpassen.
Unten finden Sie einen Codeausschnitt aus diesem Trainingsskript. Dieses Skript erstellt eine „.onnx“-Datei, die ein trainiertes Modell enthält.

# Slit the dataset in a training and testing dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, Y_test = train_test_split(X, y)
# Define the model and fit the model with training data and print information about the model
clr = DecisionTreeClassifier()
clr.fit(X_train, y_train)
print(clr)
#Convert the model from sklearn format to ONNX (Open Neural Network Exchange)
initial_type = [('float_input', FloatTensorType([None, 4]))]
onx = convert_sklearn(clr, initial_types=initial_type)
with open("decision_tree_iris.onnx", "wb") as f:
f.write(onx.SerializeToString())

Inferenz auf Ubuntu

Überprüfen Sie Ihr Modell, indem Sie es auf Ihrem Entwicklungscomputer ausführen. Wenn Sie das Inferenzskript ausführen, sollten Sie 2 Ganzzahlen erhalten, die einer Art von Iris-Blüte entsprechen.

import numpy as np
import onnxruntime as rt
X_test = np.array([[5.8,4.0,1.2,0.2],[7.7,3.8,6.7,2.2,]])
sess = rt.InferenceSession("decision_tree_iris.onnx")
input_name = sess.get_inputs()[0].name
label_name = sess.get_outputs()[0].name
pred_onx = sess.run(
[label_name], {input_name: X_test.astype(np.float32)})[0]
print(pred_onx)

output : [0 2]

Inferenz auf PLCnext

Öffnen Sie Ihren bevorzugten sFTP-Client und legen Sie die Repositorys „.onnx“ und „inference.py“ in /opt/plcnext/onnx auf Ihrem PLCnext-Controller ab. Fahren Sie mit der Ausführung des nächsten Befehls als root fort:

balena-engine run -it --name onnx -v /opt/plcnext/onnx/:/app pxcbe/onnx-runtime-arm32v7

Führen Sie das Python-Inferenzskript mit

aus
cd /app
python3 /app/inference.py

Wenn alles gut gegangen ist, erhalten Sie die gleiche Ausgabe wie bei der Inferenz auf Ihrer Ubuntu-VM! Herzlichen Glückwunsch, Sie haben es bis zum Ende geschafft. Jetzt geh und ändere die Dinge!

Wie in einer Anwendung implementieren?

Eigentlich sind wir noch nicht fertig. Ich meine, das Klassifizieren von Irisblumen macht Spaß, aber ich kann mir nicht mehrere Anwendungen dafür auf einem logischen Controller vorstellen. Sie müssen sich Ihr eigenes Modell ausdenken und eine API für dieses Modell erstellen, damit Sie daraus Rückschlüsse ziehen können. Sie können wählen, ob Sie Daten mit OPC UA an das Modell liefern oder einen benutzerdefinierten REST-Endpunkt dafür erstellen. Auf jeden Fall müssen Sie etwas mehr Code schreiben, als von mir bereitgestellt.

In Anbetracht dessen, dass das Erstellen der Bilder buchstäblich Tage und schlaflose Nächte gekostet hat, schlage ich vor, dass Sie Ihr Bild auf dem bereitgestellten Bild aufbauen. In der Referenz finden Sie eine gute Ressource zum Erstellen einer Python-Container-App.

Referenzen:

https://www.technologyreview.com/2018/11/17/103781/what-is-machine-learning-we-drew-you-another-flowchart/https://en.wikipedia.org/wiki/Iris_flower_data_set

Bitte akzeptieren Sie Marketing-Cookies, um dieses Video anzusehen.

https://www.researchgate.net/figure/Decision-tree-for-Iris-dataset_fig1_293194222https://onnx.ai/

https://github.com/PLCnext/Docker_GettingStarted

https://www.wintellect.com/containerize-python-app-5-minutes/

https://github.com/onnx/models

Industrietechnik

  1. Maschinelles Lernen auf AWS; Alles wissen
  2. Nähmaschine
  3. Die Lieferkette und maschinelles Lernen
  4. Sollte die Beschaffung KI und maschinelles Lernen fürchten oder begrüßen?
  5. Maschinelles Lernen im Feld
  6. Maschinelles Lernen in der vorausschauenden Wartung
  7. Wie sich KI und maschinelles Lernen auf die CNC-Bearbeitung auswirken
  8. Die 4 Branchen, die am meisten vom maschinellen Lernen profitieren
  9. Die 9 maschinellen Lernanwendungen, die Sie kennen sollten
  10. Akkulebensdauer mit maschinellem Lernen vorhersagen