Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Machine Learning op PLCnext

Inmiddels heeft iedereen gehoord over Machine Learning en hoe dit alles zal veranderen. Maar weinigen hebben een idee hoe ze alles kunnen veranderen. Ik hoop dat wanneer u de stappen in deze blog probeert, of er zelfs over leest, u begrijpt hoe u aan de slag kunt om dingen te veranderen met uw PLCnext Controller. In deze blog ga ik in op het trainen van je eerste ML-model, het omzetten naar de ONNX-standaard en het afleiden van het model op een PLCnext-controller. Om het niet te overweldigend te maken, zal ik de beroemde Iris-dataset gebruiken om ons model te bouwen.

Voordat we beginnen, moet het heel duidelijk zijn wat we zullen proberen te bereiken. Daarom zal ik een kleine uitleg geven over de onderwerpen die in deze blog aan de orde komen. Mijn referenties vind je aan het einde van deze blog.

Inleiding tot machinaal leren

Wat is machine learning

Dus ik denk dat we moeten beginnen met uit te leggen wat machine learning is. De essentie van machine learning is dat we met behulp van statistieken en algoritmen patronen in datasets gaan zoeken. We maken onderscheid tussen drie belangrijke soorten machine learning:gesuperviseerd machine learning, unsupervised machine learning en versterkend leren. Begeleid leren is tegenwoordig de meest gebruikte "smaak" en we zullen in deze blog gebruik maken van begeleid leren. Bij begeleid leren labelen we data en vertellen we de machine precies naar welke patronen we op zoek zijn.

Bij unsupervised learning labelen we onze data niet en laten we de machine zijn eigen patronen zoeken, aangezien deze techniek minder voor de hand liggende toepassingen heeft, is unsupervised learning minder populair.

Ten slotte leert een algoritme bij versterkingsleren door vallen en opstaan ​​​​om een ​​​​vermeld doel te bereiken. Het probeert gewoon veel dingen en wordt beloond of bestraft, afhankelijk van of het een goede of slechte actie was. Googles AlphaGo is een beroemd voorbeeld van versterkend leren.

De Irisbloem dataset

Volgens Wikipedia is de Iris bloem dataset:

Oké, prima, maar hoe ziet het eruit?

In de Iris-dataset zijn er 5 velden:kelkbladlengte, kelkbladbreedte, bloembladlengte, bloembladbreedte en de variëteit van de irisbloem. Ons doel vandaag is om het type Irisbloem te vinden als we de kelkbladlengte, kelkbladbreedte, bloembladlengte en bloembladbreedte kennen. Dus we zullen het model trainen om het type bloem te classificeren. Zoals je had kunnen raden, is dit type machine learning classificatie.

Machine learning kan ook worden gebruikt om een ​​waarde in de dataset te voorspellen. Deze procedure wordt regressie genoemd en gebruikt andere algoritmen dan classificatie.

Het algoritme

Vandaag zullen we de "Beslissingsboomclassificatie" gebruiken, niet omdat deze perfect is voor de taak, maar hij is zeer intuïtief en kan gemakkelijk worden begrepen zonder ingewikkelde wiskunde. Hier vindt u een voorbeeld van een beslisboom voor onze dataset Irisbloemen.

ONNX

Zoals je je kunt voorstellen, kunnen Machine Learning-modellen in een groot aantal verschillende formaten worden geleverd en moeten ze op veel verschillende hardware met verschillende versnellingsmethoden worden uitgevoerd. De Open Neural Network Exchange probeert dat probleem te verhelpen. Het wordt gebruikt in open office, azuurblauwe en talloze andere toepassingen over de hele wereld. Het wordt vrijwel zeker gebruikt op het apparaat waarop je deze blog leest.


Om onnx-modellen uit te voeren, hebben we de onnx-runtime nodig, dit brengt uitdagingen met zich mee. Vooral op armprocessors, maar met de geleverde docker-afbeeldingen zou het goed moeten komen!

Technische doorloop

Vereisten

Ik gebruik een AXC F 2152-controller met firmware 2021.0 LTS geïnstalleerd en een Ubuntu 20.04 VM om het model te trainen. De scripts voor het trainen en afleiden van het model worden geleverd, maar de installatie van de Ubuntu-VM valt buiten het bereik van de blog. Je kunt goede uitleg vinden over het installeren van de benodigde Python-pakketten en alle gebruikte pakketten zouden correct moeten worden geïnstalleerd met pip3.

Op de PLCnext-controller moeten we een container-engine installeren. Een goede uitleg van de procedure vindt u hier.

Een vergelijkbare procedure is ook mogelijk met de AXC F 3152.

Je hebt minimaal een minimale ervaring met Python en containers nodig voor deze blog.

Het model trainen

Download de inhoud van deze GitHub-repository en zorg ervoor dat alle benodigde pakketten zijn geïnstalleerd.

Het eerste script dat we gaan uitvoeren is het treinscript waarin we ons model gaan aanpassen aan de irisgegevensset.
Hieronder vind je een code die uit dit trainingsscript is geknipt. Dit script maakt een ".onnx"-bestand aan dat een getraind model bevat.

# 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())

Conferentie over Ubuntu

Controleer uw model door het op uw ontwikkelmachine uit te voeren. Wanneer u het inferencing-script uitvoert, zou u 2 gehele getallen moeten krijgen die overeenkomen met een type Irisbloem.

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]

Inferentie op PLCnext

Open uw favoriete sFTP-client en zet de ".onnx" en "inference.py" repository neer in /opt/plcnext/onnx op uw PLCnext-controller. Ga verder met het uitvoeren van de volgende opdracht als root:

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

voer het python-inferentiescript uit met

cd /app
python3 /app/inference.py

Als alles goed is gegaan, krijg je dezelfde output als bij de gevolgtrekking op je Ubuntu VM! Gefeliciteerd, je hebt het tot het einde gehaald. Ga nu dingen veranderen!

Hoe te implementeren in een applicatie?

Eigenlijk zijn we nog niet klaar. Ik bedoel, het classificeren van irisbloemen is leuk, maar ik kan me niet meerdere toepassingen voorstellen op een logische controller. U moet uw eigen model bedenken en een API voor dat model maken, zodat u er conclusies uit kunt trekken. U kunt ervoor kiezen om gegevens aan het model te leveren met OPC UA of er een aangepast REST-endpoint voor te bouwen. Hoe dan ook, je zult wat meer code moeten schrijven dan door mij is verstrekt.

Rekening houdend met het feit dat het maken van de afbeeldingen me letterlijk dagen en een slapeloze nacht kostte, raad ik je aan om je afbeelding bovenop de verstrekte afbeelding te bouwen. In de referentie vindt u een goede bron voor het bouwen van een Python-container-app.

Referenties:

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

Accepteer a.u.b. marketingcookies om deze video te bekijken.

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

Industriële technologie

  1. Machine learning op AWS; Weet het allemaal
  2. Naaimachine
  3. De toeleveringsketen en machine learning
  4. Moet inkoop angst opwekken of AI en machine learning-technologie verwelkomen?
  5. Machine learning in het veld
  6. Machine learning in voorspellend onderhoud
  7. Hoe AI en machine learning van invloed zijn op CNC-bewerkingen
  8. De 4 industrieën die het meest profiteren van machine learning
  9. De 9 machine learning-applicaties die u moet kennen
  10. Voorspel de levensduur van de batterij met machine learning
  11. Het leven als AI-onderzoeker en machine learning-ingenieur