Интеграция машинного обучения в контроллеры PLCnext
Введение в машинное обучение
Что такое машинное обучение
Сущность ML — поиск закономерностей в данных с помощью статистики и алгоритмов. Выделяют три основных типа: обучение с учителем (supervised), без учителя (unsupervised) и с подкреплением (reinforcement). В этом блоге используется обучение с учителем: данные размечаются, и модель ищет заданные паттерны.
При обучении без учителя данные не размечаются, модель ищет паттерны сама — менее популярный подход. При обучении с подкреплением алгоритм учится методом проб и ошибок для достижения цели (пример — AlphaGo).
Набор данных Iris
Набор Iris содержит 5 полей: длина и ширина чашелистика, длина и ширина лепестка, вид ириса. Цель — классифицировать вид ириса по четырём измерениям. Это задача классификации. Регрессия — предсказание числового значения.
Алгоритм: Дерево решений (Decision Tree Classifier)
Выбран за интуитивность и простоту понимания без сложной математики. Пример дерева решений для Iris:
Формат ONNX
Модели ML бывают в разных форматах и должны запускаться на разном железе. Open Neural Network Exchange (ONNX) решает эту проблему. Используется в Azure, Office и множестве приложений. Для запуска ONNX-моделей нужен ONNX Runtime, на ARM-процессорах есть нюансы, но с предоставленными Docker-образами всё работает.
Техническое руководство
Предварительные требования
- Контроллер AXC F 2152 с прошивкой 2021.0 LTS
- VM Ubuntu 20.04 для обучения модели
- Скрипты обучения и инференса предоставлены, настройка VM — за рамками блога
- На контроллере нужен движок контейнеров (инструкция здесь)
- Аналогично работает на AXC F 3152
- Минимальный опыт с Python и контейнерами
Обучение модели
Скачайте репозиторий 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-контейнера.
Ссылки
- What is Machine Learning
- Iris flower data set
- Decision tree for Iris
- ONNX
- PLCnext Docker Getting Started
- Containerize Python App in 5 Minutes
- ONNX Models
Промышленные технологии
- Освоение машинного обучения на AWS: всеобъемлющее руководство
- Эволюция и производство швейных машин: от изобретений XIX века к современной автоматизации
- Использование машинного обучения для оптимизации управления цепочкой поставок MRO
- Принятие ИИ и машинного обучения в закупках: возможности, вызовы и лучшие практики
- Машинное обучение ускоряет безопасность трубопроводов: детекция дефектов в реальном времени сэкономила $10 м…
- Революция в надежности активов: машинное обучение для предиктивного обслуживания
- Как ИИ и машинное обучение революционизируют ЧПУ обработку
- Топ-4 отраслей, революционированных машинным обучением
- 9 ключевых применений машинного обучения, которые вы должны знать
- Точный прогноз срока службы батарей с ИИ: исследование DOE Argonne