Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

Apprentissage automatique sur PLCnext

À présent, tout le monde a entendu parler de l'apprentissage automatique et de la façon dont il va tout changer. Mais très peu ont une idée par où commencer pour tout changer. J'espère que lorsque vous essayez les étapes de ce blog, ou même que vous lisez à ce sujet, cela vous aidera à comprendre comment commencer à changer les choses avec votre PLCnext Controller. Dans ce blog, je vais former votre premier modèle ML, le convertir au standard ONNX et inférer le modèle sur un contrôleur PLCnext. Pour ne pas rendre les choses trop écrasantes, je vais utiliser le célèbre jeu de données Iris pour construire notre modèle.

Avant de commencer, il devrait être très clair ce que nous allons essayer de réaliser. Je vais donc donner une petite explication sur les sujets traités dans ce blog. Mes références se trouvent à la fin de ce blog.

Introduction à l'apprentissage automatique

Qu'est-ce que l'apprentissage automatique ?

Donc, je suppose que nous devrions commencer par expliquer ce qu'est l'apprentissage automatique. L'essence de l'apprentissage automatique est que nous essaierons de trouver des modèles dans des ensembles de données à l'aide de statistiques et d'algorithmes. Nous distinguons trois principaux types d'apprentissage automatique :l'apprentissage automatique supervisé, l'apprentissage automatique non supervisé et l'apprentissage par renforcement. L'apprentissage supervisé est la "saveur" la plus utilisée aujourd'hui et nous utiliserons l'apprentissage supervisé dans ce blog. Dans l'apprentissage supervisé, nous étiquetons les données et indiquons à la machine exactement quels modèles nous recherchons.

Dans l'apprentissage non supervisé, nous n'étiquetons pas nos données et nous laissons la machine trouver ses propres modèles, car cette technique a des applications moins évidentes, l'apprentissage non supervisé est moins populaire.

Enfin, dans l'apprentissage par renforcement, un algorithme apprend par essais et erreurs pour atteindre un objectif déclaré. Il essaie simplement beaucoup de choses et obtient une récompense ou une pénalité selon qu'il s'agit d'une bonne ou d'une mauvaise action. AlphaGo de Google est un exemple célèbre d'apprentissage par renforcement.

Ensemble de données sur les fleurs d'iris

Selon Wikipedia, l'ensemble de données de la fleur d'Iris est :

D'accord, d'accord, mais à quoi ça ressemble ?

Dans le jeu de données Iris, il y a 5 champs :longueur des sépales, largeur des sépales, longueur des pétales, largeur des pétales et variété de fleur d'iris. Notre objectif aujourd'hui est de trouver le type de fleur d'iris lorsque nous connaissons la longueur des sépales, la largeur des sépales, la longueur des pétales et la largeur des pétales. Nous allons donc former le modèle pour classer le type de fleur. Comme vous l'avez peut-être deviné, ce type d'apprentissage automatique est la classification.

L'apprentissage automatique peut également être utilisé pour prédire une valeur dans l'ensemble de données. Cette procédure est appelée régression et utilise des algorithmes différents de la classification.

L'algorithme

Aujourd'hui, nous allons utiliser le "Decision Tree Classifier" non pas parce qu'il est parfait pour la tâche, mais il est très intuitif et peut être facilement compris sans mathématiques sophistiquées. Vous trouverez ici un exemple d'arbre de décision pour notre ensemble de données sur les fleurs d'iris.

ONNX

Comme vous pouvez l'imaginer, les modèles d'apprentissage automatique peuvent se présenter dans une grande variété de formats et doivent fonctionner sur de nombreux matériels différents avec différentes méthodes d'accélération. L'Open Neural Network Exchange tente d'atténuer ce problème. Il est utilisé dans les bureaux ouverts, azur et d'innombrables autres applications à travers le monde. Il est presque certainement utilisé sur l'appareil sur lequel vous lisez ce blog.


Pour exécuter des modèles onnx, nous avons besoin du runtime onnx, cela s'accompagne de défis. Surtout sur les processeurs arm, mais avec les images docker fournies, ça devrait aller !

Guide technique

Prérequis

J'utilise un contrôleur AXC F 2152 avec le firmware 2021.0 LTS installé et une machine virtuelle Ubuntu 20.04 pour former le modèle. Les scripts de formation et d'inférence du modèle sont fournis, mais la configuration de la machine virtuelle Ubuntu est hors de portée du blog. Vous pouvez trouver de bonnes explications sur la façon d'installer les packages Python nécessaires et tous les packages utilisés doivent s'installer correctement avec pip3.

Sur le contrôleur PLCnext, nous aurons besoin d'un moteur de conteneur installé. Vous pouvez trouver une bonne explication de la procédure ici.

Une procédure similaire avec l'AXC F 3152 est également possible.

Vous aurez besoin d'au moins une expérience minimale avec Python et les conteneurs pour ce blog.

Entraîner le modèle

Téléchargez le contenu de ce référentiel GitHub et assurez-vous que tous les packages nécessaires sont installés.

Le premier script que nous allons exécuter est le script de train où nous allons adapter notre modèle à l'ensemble de données de l'iris.
Vous trouverez ci-dessous un code extrait de ce script de formation. Ce script créera un fichier ".onnx" contenant un modèle entraîné.

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

Inférence sur Ubuntu

Vérifiez votre modèle en l'exécutant sur votre machine de développement. Lorsque vous exécutez le script d'inférence, vous devriez obtenir 2 entiers correspondant à un type de fleur d'iris.

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]

Inférence sur PLCnext

Ouvrez votre client sFTP préféré et déposez les référentiels « .onnx » et « inference.py » dans /opt/plcnext/onnx sur votre contrôleur PLCnext. Procédez à l'exécution de la commande suivante en tant que root :

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

exécutez le script d'inférence python avec

cd /app
python3 /app/inference.py

Si tout s'est bien passé, vous obtenez le même résultat qu'avec l'inférence sur votre machine virtuelle Ubuntu ! Félicitations, vous êtes allé jusqu'au bout. Maintenant, allez changer les choses !

Comment mettre en œuvre dans une application ?

En fait, nous n'avons pas encore fini. Je veux dire, classer les fleurs d'iris est amusant mais je ne peux pas imaginer plusieurs applications pour cela sur un contrôleur logique. Vous devrez créer votre propre modèle et créer une API pour ce modèle afin de pouvoir l'inférer. Vous pouvez choisir de fournir des données au modèle avec OPC UA ou de créer un point de terminaison REST personnalisé pour celui-ci. Quoi qu'il en soit, vous devrez écrire un peu plus de code que celui fourni par moi.

Tenant compte du fait que la construction des images m'a littéralement pris des jours et une nuit blanche, je vous suggère de construire votre image au-dessus de l'image fournie. Dans la référence, vous pouvez trouver une bonne ressource pour créer une application de conteneur Python.

Références :

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

Veuillez accepter les cookies marketing pour regarder cette vidéo.

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

Technologie industrielle

  1. Apprentissage automatique sur AWS ; Tout savoir
  2. Machine à coudre
  3. La chaîne d'approvisionnement et l'apprentissage automatique
  4. Les achats doivent-ils craindre ou accueillir favorablement l'IA et la technologie d'apprentissage automatique ?
  5. Apprentissage automatique sur le terrain
  6. Apprentissage automatique dans la maintenance prédictive
  7. Comment l'IA et l'apprentissage automatique impactent l'usinage CNC
  8. Les 4 industries qui bénéficient le plus du machine learning
  9. Les 9 applications d'apprentissage automatique que vous devez connaître