Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Tecnología Industrial

Aprendizaje automático en PLCnext

A estas alturas, todo el mundo ha oído hablar de Machine Learning y de cómo cambiará todo. Pero muy pocos tienen idea de cómo empezar a cambiarlo todo. Espero que cuando pruebe los pasos de este blog, o incluso que lea sobre ellos, le ayude a entender cómo empezar a cambiar las cosas con su PLCnext Controller. En este blog, trato de entrenar su primer modelo ML, convertirlo al estándar ONNX e inferir el modelo en un controlador PLCnext. Para no ir y hacer que las cosas sean abrumadoras, usaré el famoso conjunto de datos de Iris para construir nuestro modelo.

Antes de comenzar, debe quedar muy claro lo que intentaremos lograr. De ahí que daré una pequeña explicación sobre los temas que se manejan en este blog. Mis referencias se pueden encontrar al final de este blog.

Introducción al aprendizaje automático

¿Qué es el aprendizaje automático?

Entonces, supongo que deberíamos comenzar explicando qué es el aprendizaje automático. La esencia del aprendizaje automático es que intentaremos encontrar patrones en conjuntos de datos con el uso de estadísticas y algoritmos. Diferenciamos entre tres tipos principales de aprendizaje automático:aprendizaje automático supervisado, aprendizaje automático no supervisado y aprendizaje reforzado. El aprendizaje supervisado es el "sabor" más utilizado en la actualidad y utilizaremos el aprendizaje supervisado en este blog. En el aprendizaje supervisado, etiquetamos los datos y le decimos a la máquina exactamente qué patrones estamos buscando.

En el aprendizaje no supervisado, no etiquetamos nuestros datos y dejamos que la máquina busque sus propios patrones, ya que esta técnica tiene aplicaciones menos obvias, el aprendizaje no supervisado es menos popular.

Por último, en el aprendizaje por refuerzo, un algoritmo aprende por ensayo y error para lograr un objetivo establecido. Simplemente intenta muchas cosas y obtiene una recompensa o penalización dependiendo de si fue una buena o mala acción. AlphaGo de Google es un famoso ejemplo de aprendizaje por refuerzo.

El conjunto de datos de la flor de Iris

Según Wikipedia, el conjunto de datos de la flor de Iris es:

Vale, bien, pero ¿cómo se ve?

En el conjunto de datos de Iris hay 5 campos:longitud del sépalo, anchura del sépalo, longitud del pétalo, anchura del pétalo y la variedad de flor de Iris. Nuestro objetivo hoy es encontrar el tipo de flor de Iris cuando conocemos la longitud del sépalo, el ancho del sépalo, la longitud del pétalo y el ancho del pétalo. Así que entrenaremos al modelo para clasificar el tipo de flor. Como habrás adivinado, este tipo de aprendizaje automático es la clasificación.

El aprendizaje automático también se puede utilizar para predecir un valor en el conjunto de datos. Este procedimiento se llama regresión y utiliza algoritmos diferentes a la clasificación.

El Algoritmo

Hoy usaremos el "Clasificador de árbol de decisión" no porque sea perfecto para la tarea, sino porque es muy intuitivo y se puede entender fácilmente sin necesidad de matemáticas complejas. Aquí puede encontrar un ejemplo de un árbol de decisiones para nuestro conjunto de datos de flores de Iris.

ONNX

Como puede imaginar, los modelos de Machine Learning pueden venir en una amplia variedad de formatos y deben ejecutarse en una gran cantidad de hardware diferente con diferentes métodos de aceleración. Open Neural Network Exchange intenta mitigar ese problema. Se usa en Open Office, Azure y muchas otras aplicaciones en todo el mundo. Es casi seguro que se usa en el dispositivo en el que estás leyendo este blog.


Para ejecutar modelos onnx, necesitamos el tiempo de ejecución onnx, esto viene con sus desafíos. Especialmente en los procesadores de brazo, pero con las imágenes acoplables proporcionadas, ¡debería estar bien!

Paseo técnico

Requisitos

Estoy usando un controlador AXC F 2152 con firmware 2021.0 LTS instalado y una máquina virtual Ubuntu 20.04 para entrenar el modelo. Se proporcionan los scripts para entrenar e inferir el modelo, pero la configuración de Ubuntu VM está fuera del alcance del blog. Puede encontrar buenas explicaciones sobre cómo instalar los paquetes de Python necesarios y todos los paquetes usados ​​deben instalarse correctamente con pip3.

En el controlador PLCnext, necesitaremos instalar un motor contenedor. Puede encontrar una buena explicación del procedimiento aquí.

También es posible un procedimiento similar con la AXC F 3152.

Necesitarás al menos una experiencia mínima con Python y contenedores para este blog.

Entrenamiento del modelo

Descargue el contenido de este repositorio de GitHub y asegúrese de que todos los paquetes necesarios estén instalados.

El primer script que vamos a ejecutar es el script de tren donde vamos a ajustar nuestro modelo al conjunto de datos del iris.
A continuación puede encontrar un código cortado de este script de entrenamiento. Este script creará un archivo ".onnx" que contiene un modelo entrenado.

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

Inferencia en Ubuntu

Verifique su modelo ejecutándolo en su máquina de desarrollo. Cuando ejecute el script de inferencia, debería obtener 2 números enteros correspondientes a un tipo de flor de 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]

Inferencia en PLCnext

Abra su cliente sFTP favorito y suelte el repositorio ".onnx" e "inference.py" en /opt/plcnext/onnx en su controlador PLCnext. Continúe con la ejecución del siguiente comando como root:

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

ejecute el script de inferencia de python con

cd /app
python3 /app/inference.py

Si todo salió bien, ¡obtendrá el mismo resultado que con la inferencia en su VM de Ubuntu! Enhorabuena, has llegado hasta el final. ¡Ahora ve a cambiar las cosas!

¿Cómo implementar en una aplicación?

En realidad, aún no hemos terminado. Quiero decir, clasificar las flores de iris es divertido, pero no puedo imaginar múltiples aplicaciones para ello en un controlador lógico. Deberá crear su propio modelo y crear una API para ese modelo para poder inferir con él. Puede optar por entregar datos al modelo con OPC UA o crear un punto final REST personalizado para él. De todos modos, deberá escribir más código que el proporcionado por mí.

Teniendo en cuenta que construir las imágenes literalmente me tomó días y noches de insomnio, le sugiero que construya su imagen sobre la imagen provista. En la referencia, puede encontrar un buen recurso para crear una aplicación de contenedor de Python.

Referencias:

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

Acepte las cookies de marketing para ver este video.

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/modelos

Tecnología Industrial

  1. Aprendizaje automático en AWS; Conócelo todo
  2. Máquina de coser
  3. La cadena de suministro y el aprendizaje automático
  4. ¿Deberían las adquisiciones temer o dar la bienvenida a la inteligencia artificial y la tecnología de aprendizaje automático?
  5. Aprendizaje automático en el campo
  6. Aprendizaje automático en mantenimiento predictivo
  7. Cómo la IA y el aprendizaje automático impactan en el mecanizado CNC
  8. Las 4 industrias que más se benefician del aprendizaje automático
  9. Las 9 aplicaciones de aprendizaje automático que debes conocer
  10. Prediga la vida útil de la batería con el aprendizaje automático
  11. La vida como investigador de inteligencia artificial e ingeniero de aprendizaje automático