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

Машинное обучение на PLCnext

К настоящему времени все слышали о машинном обучении и о том, как оно все изменит. Но очень немногие имеют представление о том, как начать все менять. Я надеюсь, что когда вы попробуете выполнить действия, описанные в этом блоге, или даже прочитаете об этом, это поможет вам понять, как приступить к изменению вещей с помощью вашего контроллера PLCnext. В этом блоге я рассказываю об обучении вашей первой модели машинного обучения, преобразовании ее в стандарт ONNX и выводе модели на контроллере PLCnext. Чтобы не усложнять задачу, я буду использовать знаменитый набор данных Iris для построения нашей модели.

Прежде чем мы начнем, должно быть очень ясно, чего мы пытаемся достичь. Поэтому я дам небольшое пояснение по темам, рассматриваемым в этом блоге. Мои ссылки можно найти в конце этого блога.

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

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

Итак, я думаю, мы должны начать с объяснения того, что такое машинное обучение. Суть машинного обучения заключается в том, что мы попытаемся найти закономерности в наборах данных с использованием статистики и алгоритмов. Мы различаем три основных типа машинного обучения:контролируемое машинное обучение, неконтролируемое машинное обучение и обучение с подкреплением. Обучение с учителем сегодня является наиболее часто используемым «разновидностью», и в этом блоге мы будем использовать обучение с учителем. В обучении с учителем мы помечаем данные, чтобы точно сообщить машине, какие шаблоны мы ищем.

При неконтролируемом обучении мы не маркируем наши данные и позволяем машине искать собственные закономерности, поскольку этот метод имеет менее очевидные применения, неконтролируемое обучение менее популярно.

Наконец, при обучении с подкреплением алгоритм учится методом проб и ошибок для достижения поставленной цели. Он просто пробует много вещей и получает вознаграждение или наказание в зависимости от того, было ли это хорошим или плохим действием. Google AlphaGo — известный пример обучения с подкреплением.

Набор данных о цветке ириса

Согласно Википедии, набор данных о цветке ириса:

Хорошо, хорошо, но как это выглядит?

В наборе данных Iris есть 5 полей:длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка и разновидность цветка ириса. Наша цель сегодня - найти тип цветка ириса, когда мы знаем длину чашелистика, ширину чашелистика, длину и ширину лепестка. Итак, мы обучим модель классифицировать тип цветка. Как вы могли догадаться, этот тип машинного обучения — классификация.

Машинное обучение также можно использовать для прогнозирования значения в наборе данных. Эта процедура называется регрессией и использует алгоритмы, отличные от алгоритмов классификации.

Алгоритм

Сегодня мы будем использовать «Классификатор дерева решений» не потому, что он идеально подходит для этой задачи, а потому, что он очень интуитивно понятен и его легко понять без сложной математики. Здесь вы можете найти пример дерева решений для нашего набора данных цветов ириса.

ОННКС

Как вы можете себе представить, модели машинного обучения могут иметь самые разные форматы и должны работать на множестве различных аппаратных средств с различными методами ускорения. Open Neural Network Exchange пытается решить эту проблему. Его используют в open office, azure и бесчисленном множестве других приложений по всему миру. Он почти наверняка используется на устройстве, на котором вы читаете этот блог.


Для запуска моделей onnx нам нужна среда выполнения onnx, а это сопряжено с проблемами. Особенно на процессорах arm, но с предоставленными образами докеров все должно быть в порядке!

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

Предпосылки

Я использую контроллер AXC F 2152 с установленной прошивкой 2021.0 LTS и виртуальную машину Ubuntu 20.04 для обучения модели. Сценарии для обучения и вывода модели предоставляются, но установка виртуальной машины Ubuntu выходит за рамки блога. Вы можете найти хорошие объяснения того, как установить необходимые пакеты Python, и все используемые пакеты должны быть правильно установлены с помощью pip3.

На контроллере PLCnext нам понадобится установленный контейнерный движок. Хорошее объяснение процедуры можно найти здесь.

Аналогичная процедура возможна и с AXC F 3152.

Для этого блога вам потребуется хотя бы минимальный опыт работы с Python и контейнерами.

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

Загрузите содержимое этого репозитория GitHub и убедитесь, что установлены все необходимые пакеты.

Первый сценарий, который мы собираемся запустить, — это сценарий обучения, в котором мы собираемся подогнать нашу модель к набору данных радужной оболочки.
Ниже вы можете найти код, вырезанный из этого обучающего скрипта. Этот скрипт создаст файл «.onnx», содержащий обученную модель.

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

Вывод в Ubuntu

Проверьте свою модель, запустив ее на своем компьютере для разработки. Когда вы запускаете скрипт логического вывода, вы должны получить 2 целых числа, соответствующих типу цветка ириса.

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

Откройте ваш любимый sFTP-клиент и поместите репозиторий «.onnx» и «inference.py» в /opt/plcnext/onnx на вашем контроллере PLCnext. Приступайте к выполнению следующей команды от имени пользователя root:

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

запустите скрипт вывода Python с помощью

cd /app
python3 /app/inference.py

Если все прошло хорошо, вы получите тот же вывод, что и при выводе на вашей виртуальной машине Ubuntu! Поздравляем, вы дошли до конца. А теперь иди меняй вещи!

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

На самом деле, мы еще не закончили. Я имею в виду, что классифицировать ирисы — это весело, но я не могу представить себе несколько приложений для этого на логическом контроллере. Вам нужно будет придумать свою собственную модель и создать API для этой модели, чтобы вы могли делать с ней выводы. Вы можете доставлять данные в модель с помощью OPC UA или создавать для нее пользовательскую конечную точку REST. В любом случае вам нужно будет написать больше кода, чем я предоставил.

Принимая во внимание, что создание образов буквально заняло у меня дни и бессонные ночи, предлагаю вам построить свое изображение поверх предоставленного изображения. В справочнике вы можете найти хороший ресурс для создания контейнерного приложения Python.

Ссылки:

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

Чтобы посмотреть это видео, примите маркетинговые файлы cookie.

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/модели

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

  1. Машинное обучение на AWS; Знай все
  2. Швейная машина
  3. Цепочка поставок и машинное обучение
  4. Должны ли закупщики опасаться или приветствовать ИИ и технологии машинного обучения?
  5. Машинное обучение в полевых условиях
  6. Машинное обучение в профилактическом обслуживании
  7. Как искусственный интеллект и машинное обучение влияют на обработку с ЧПУ
  8. 4 отрасли, которые больше всего выигрывают от машинного обучения
  9. 9 приложений машинного обучения, о которых вы должны знать
  10. Прогнозирование срока службы батареи с помощью машинного обучения