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

Integra Machine Learning en controladores PLCnext: Guía práctica

Hasta ahora todos han oído hablar de Machine Learning y cómo lo cambiará todo. Pero muy pocos tienen una idea de cómo empezar a cambiar las cosas. Espero que al probar los pasos de este blog, o incluso al leerlo, te ayude a entender cómo empezar a cambiar las cosas con tu controlador PLCnext. En este blog voy a entrenar tu primer modelo ML, convertirlo al estándar ONNX e inferenciar el modelo en un controlador PLCnext. Para no abrumar, usaré el famoso dataset Iris para construir nuestro modelo.

Antes de empezar, debe quedar muy claro qué intentamos lograr. Por eso daré una pequeña explicación sobre los temas tratados en este blog. Mis referencias se encuentran al final.

Introducción al Machine Learning

¿Qué es Machine Learning?

Supongo que deberíamos empezar explicando qué es el aprendizaje automático. La esencia del machine learning es que intentamos encontrar patrones en conjuntos de datos con el uso de estadísticas y algoritmos. Diferenciamos entre tres tipos principales de machine learning: aprendizaje supervisado, aprendizaje no supervisado y aprendizaje por refuerzo. El aprendizaje supervisado es el "sabor" más usado hoy y usaremos aprendizaje supervisado en este blog. En el aprendizaje supervisado etiquetamos los datos y le decimos a la máquina exactamente qué patrones buscamos.

En el aprendizaje no supervisado no etiquetamos nuestros datos y dejamos que la máquina encuentre sus propios patrones. Como 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 prueba y error para alcanzar un objetivo establecido. Simplemente prueba muchas cosas y recibe una recompensa o penalización dependiendo de si fue una buena o mala acción. AlphaGo de Google es un ejemplo famoso de aprendizaje por refuerzo.

El dataset de flores Iris

Según Wikipedia, el dataset de flores Iris es un conjunto de datos clásico para clasificación. Pero, ¿cómo se ve?

En el dataset 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 Iris. Nuestro objetivo hoy es encontrar el tipo de flor Iris cuando conocemos la longitud y anchura del sépalo y del pétalo. Así que entrenaremos el modelo para clasificar el tipo de flor. Como habrás adivinado, este tipo de machine learning es clasificación.

El machine learning también puede usarse para predecir un valor en el dataset. Este procedimiento se llama regresión y usa algoritmos diferentes a la clasificación.

El Algoritmo

Hoy usaremos el "Decision Tree Classifier" (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 matemáticas complejas. Aquí puedes encontrar un ejemplo de un árbol de decisión para nuestro dataset de flores Iris.

Integra Machine Learning en controladores PLCnext: Guía práctica

ONNX

Como te puedes imaginar, los modelos de Machine Learning pueden venir en una amplia variedad de formatos y necesitan ejecutarse en mucho hardware diferente con distintos métodos de aceleración. Open Neural Network Exchange (ONNX) intenta mitigar ese problema. Se usa en Open Office, Azure y muchas otras aplicaciones en todo el mundo. Casi con seguridad se usa en el dispositivo en el que estás leyendo este blog.

Para ejecutar modelos ONNX necesitamos el ONNX Runtime, lo que conlleva desafíos. Especialmente en procesadores ARM, pero con las imágenes Docker proporcionadas, ¡deberías estar bien!

Recorrido técnico

Requisitos previos

Estoy usando un controlador AXC F 2152 con firmware 2021.0 LTS instalado y una VM Ubuntu 20.04 para entrenar el modelo. Los scripts para entrenar e inferenciar el modelo se proporcionan pero la configuración de la VM Ubuntu está fuera del alcance del blog. Puedes encontrar buenas explicaciones sobre cómo instalar los paquetes Python necesarios y todos los paquetes usados deberían instalarse correctamente con pip3.

En el controlador PLCnext necesitaremos un motor de contenedores instalado. Puedes encontrar una buena explicación del procedimiento aquí.

Un procedimiento similar con el AXC F 3152 también es posible.

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

Entrenamiento del modelo

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

El primer script que vamos a ejecutar es el script de entrenamiento donde vamos a ajustar nuestro modelo al dataset iris. A continuación puedes encontrar un fragmento de código de este script de entrenamiento. Este script creará un archivo .onnx que contiene nuestro modelo entrenado.

# Dividir el dataset en conjunto de entrenamiento y prueba
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, Y_test = train_test_split(X, y)
# Definir el modelo y ajustar el modelo con datos de entrenamiento e imprimir información sobre el modelo
clr = DecisionTreeClassifier()
clr.fit(X_train, y_train)
print(clr)
# Convertir el modelo de formato sklearn a 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

Comprueba tu modelo ejecutándolo en tu máquina de desarrollo. Cuando ejecutes el script de inferencia deberías obtener 2 enteros correspondientes a un tipo de flor 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

Abre tu cliente sFTP favorito y coloca el archivo .onnx y inference.py del repositorio en /opt/plcnext/onnx en tu controlador PLCnext. Procede ejecutando el siguiente comando como root:

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

Ejecuta el script de inferencia Python con:

cd /app
python3 /app/inference.py

¡Si todo fue bien, obtienes la misma salida que con la inferencia en tu VM Ubuntu! ¡Felicidades, lo has logrado! Ahora ve a cambiar cosas.

¿Cómo implementar en una aplicación?

En realidad, aún no hemos terminado. Quiero decir, clasificar flores Iris es divertido pero no puedo imaginar múltiples aplicaciones para ello en un controlador lógico. Necesitarás idear tu propio modelo y crear una API para ese modelo para poder inferenciar con él. Puedes elegir entregar datos al modelo con OPC UA o construir un endpoint REST personalizado para ello. De cualquier forma necesitarás escribir más código del que yo he proporcionado.

Teniendo en cuenta que la construcción de las imágenes me llevó literalmente días y una noche sin dormir, te sugiero que construyas tu imagen sobre la imagen proporcionada. En las referencias puedes encontrar un buen recurso para construir una app contenedorizada en Python.

Referencias:

Tecnología Industrial

  1. Revolucionando la fiabilidad de activos: Aprendizaje automático para mantenimiento predictivo
  2. La evolución y fabricación de máquinas de coser: de la innovación del siglo XIX a la automatización moderna
  3. Aprendizaje Automático Acelerará la Seguridad en Tuberías: Detección de Fallas en Tiempo Real Ahorra $10M
  4. Por dentro del rol de investigadores de IA e ingenieros de ML en JPMorgan
  5. Aprovechando el Machine Learning para Optimizar la Gestión de Cadena de Suministro MRO
  6. Adoptar IA y aprendizaje automático en compras: Oportunidades, desafíos y mejores prácticas
  7. Cómo la IA y el aprendizaje automático revolucionan el mecanizado CNC
  8. Las 4 Industrias Revolucionadas por el Machine Learning
  9. 9 Aplicaciones esenciales de Machine Learning que debes conocer
  10. Predicción Precisa de Vida Útil de Baterías con IA – Estudio DOE Argonne
  11. Dominando Machine Learning en AWS: una guía completa