Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

Интеграция машинного обучения в контроллеры PLCnext

Введение в машинное обучение

Что такое машинное обучение

Сущность ML — поиск закономерностей в данных с помощью статистики и алгоритмов. Выделяют три основных типа: обучение с учителем (supervised), без учителя (unsupervised) и с подкреплением (reinforcement). В этом блоге используется обучение с учителем: данные размечаются, и модель ищет заданные паттерны.

При обучении без учителя данные не размечаются, модель ищет паттерны сама — менее популярный подход. При обучении с подкреплением алгоритм учится методом проб и ошибок для достижения цели (пример — AlphaGo).

Набор данных Iris

Набор Iris содержит 5 полей: длина и ширина чашелистика, длина и ширина лепестка, вид ириса. Цель — классифицировать вид ириса по четырём измерениям. Это задача классификации. Регрессия — предсказание числового значения.

Алгоритм: Дерево решений (Decision Tree Classifier)

Выбран за интуитивность и простоту понимания без сложной математики. Пример дерева решений для Iris:

Интеграция машинного обучения в контроллеры PLCnext

Формат ONNX

Модели ML бывают в разных форматах и должны запускаться на разном железе. Open Neural Network Exchange (ONNX) решает эту проблему. Используется в Azure, Office и множестве приложений. Для запуска ONNX-моделей нужен ONNX Runtime, на ARM-процессорах есть нюансы, но с предоставленными Docker-образами всё работает.

Техническое руководство

Предварительные требования

Обучение модели

Скачайте репозиторий GitHub, установите пакеты. Первый скрипт — обучение на данных Iris. Фрагменты кода:

# Разделение датасета на обучающую и тестовую выборки
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, Y_test = train_test_split(X, y)
# Определение модели и обучение
clr = DecisionTreeClassifier()
clr.fit(X_train, y_train)
print(clr)
# Конвертация из sklearn в ONNX
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())

Инференс на Ubuntu

Проверьте модель на машине разработки. Запуск скрипта инференса должен вернуть два целых числа — классы ирисов.

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]

Инференс на PLCnext

Скопируйте .onnx и inference.py в /opt/plcnext/onnx на контроллере (sFTP). Выполните от root:

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

Запустите скрипт:

cd /app
python3 /app/inference.py

Если всё прошло хорошо, вывод совпадёт с Ubuntu. Поздравляем!

Как внедрить в приложение?

Классификация ирисов — учебный пример. Для реальных задач нужна своя модель и API для инференса (OPC UA, REST и т.д.). Сборка образов заняла у автора дней, рекомендуется строить свой образ на базе предоставленного. В ссылках — ресурс по созданию Python-контейнера.

Ссылки

Промышленные технологии

  1. Освоение машинного обучения на AWS: всеобъемлющее руководство
  2. Эволюция и производство швейных машин: от изобретений XIX века к современной автоматизации
  3. Использование машинного обучения для оптимизации управления цепочкой поставок MRO
  4. Принятие ИИ и машинного обучения в закупках: возможности, вызовы и лучшие практики
  5. Машинное обучение ускоряет безопасность трубопроводов: детекция дефектов в реальном времени сэкономила $10 м…
  6. Революция в надежности активов: машинное обучение для предиктивного обслуживания
  7. Как ИИ и машинное обучение революционизируют ЧПУ обработку
  8. Топ-4 отраслей, революционированных машинным обучением
  9. 9 ключевых применений машинного обучения, которые вы должны знать
  10. Точный прогноз срока службы батарей с ИИ: исследование DOE Argonne