Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Teknologi Industri

Mengintegrasikan Machine Learning ke dalam PLCnext Controller

Pendahuluan

Sampai sekarang semua orang telah mendengar tentang Machine Learning dan bagaimana hal itu akan mengubah segalanya. Namun sangat sedikit yang memiliki ide bagaimana memulai untuk mengubah segalanya. Saya berharap ketika Anda mencoba langkah-langkah dalam blog ini, atau bahkan membaca tentangnya, akan membantu Anda memahami cara memulai untuk mengubah hal-hal dengan PLCnext Controller Anda. Dalam blog ini saya membahas pelatihan model ML pertama Anda, mengonversinya ke standar ONNX, dan melakukan inferensi model pada PLCnext controller. Agar tidak membuat hal terlalu membingungkan, saya akan menggunakan dataset Iris yang terkenal untuk membangun model kita.

Sebelum memulai, seharusnya sangat jelas apa yang ingin kita capai. Oleh karena itu saya akan memberikan penjelasan kecil tentang topik yang dibahas dalam blog ini. Referensi saya dapat ditemukan di akhir blog ini.

Pengantar Machine Learning

Apa itu Machine Learning

Jadi, saya kira kita harus mulai dengan menjelaskan apa itu machine learning. Intinya machine learning adalah kita akan mencoba menemukan pola dalam dataset dengan menggunakan statistik dan algoritma. Kita membedakan antara tiga tipe utama machine learning: supervised machine learning, unsupervised machine learning, dan reinforcement learning. Supervised learning adalah "rasa" yang paling banyak digunakan saat ini dan kita akan menggunakan supervised learning dalam blog ini. Dalam supervised learning kita melabeli data dan memberitahu mesin pola apa yang kita cari.

Dalam unsupervised learning kita tidak melabeli data kita dan kita biarkan mesin menemukan pola sendiri, karena teknik ini memiliki aplikasi yang kurang jelas, unsupervised learning kurang populer.

Terakhir, dalam reinforcement learning sebuah algoritma belajar dengan coba dan kesalahan untuk mencapai tujuan yang dinyatakan. Itu hanya mencoba banyak hal dan mendapatkan hadiah atau dihukum tergantung apakah itu tindakan baik atau buruk. Google's AlphaGo adalah contoh terkenal reinforcement learning.

Dataset Bunga Iris

Menurut Wikipedia dataset bunga Iris adalah:

Oke, bagaimana tampilannya?

Dalam dataset Iris ada 5 field: panjang sepal, lebar sepal, panjang kelopak, lebar kelopak, dan varietas bunga Iris. Tujuan kita hari ini adalah menemukan jenis bunga Iris ketika kita tahu panjang sepal, lebar sepal, panjang kelopak, dan lebar kelopak. Jadi kita akan melatih model untuk mengklasifikasi jenis bunga. Seperti yang Anda duga, tipe machine learning ini adalah klasifikasi.

Machine learning juga dapat digunakan untuk memprediksi nilai dalam dataset. Prosedur ini disebut regresi dan menggunakan algoritma yang berbeda dari klasifikasi.

Algoritma

Hari ini kita akan menggunakan "Decision Tree Classifier" bukan karena sempurna untuk tugas, tetapi sangat intuitif dan dapat dengan mudah dipahami tanpa matematika canggih. Di sini Anda dapat menemukan contoh decision tree untuk dataset bunga Iris kita.

Mengintegrasikan Machine Learning ke dalam PLCnext Controller

ONNX

Seperti yang Anda bayangkan, model Machine Learning dapat hadir dalam berbagai format dan perlu berjalan pada banyak hardware yang berbeda dengan metode akselerasi yang berbeda. Open Neural Network Exchange mencoba mengatasi masalah tersebut. Ini digunakan di open office, azure dan aplikasi lainnya yang tak terhitung jumlahnya di seluruh dunia. Ini hampir pasti digunakan pada perangkat yang Anda gunakan untuk membaca blog ini.


Untuk menjalankan model onnx kita memerlukan onnx runtime, ini datang dengan tantangannya. Khususnya pada prosesor arm, tetapi dengan docker images yang disediakan, Anda akan baik-baik saja!

Walkthrough Teknis

Prasyarat

Saya menggunakan AXC F 2152 controller dengan firmware 2021.0 LTS yang terinstal dan Ubuntu 20.04 VM untuk melatih model. Skrip untuk pelatihan dan inferensi model disediakan tetapi pengaturan Ubuntu VM berada di luar cakupan blog ini. Anda dapat menemukan penjelasan yang bagaimana cara menginstal paket Python yang diperlukan dan semua Paket yang digunakan seharusnya terinstal dengan benar dengan pip3.

Pada PLCnext controller kita memerlukan container engine yang terinstal. Anda dapat menemukan penjelasan yang baik tentang prosedur di sini.

Prosedur serupa dengan AXC F 3152 juga mungkin.

Anda memerlukan setidaknya pengalaman minimal dengan Python dan container untuk blog ini.

Melatih Model

Unduh isi repositori GitHub ini dan pastikan semua paket yang diperlukan telah terinstal.

Skrip pertama yang akan kita jalankan adalah skrip train tempat kita akan memasang model kita ke dataset iris.
Di bawah Anda dapat menemukan potongan kode dari skrip pelatihan ini. Skrip ini akan membuat file ".onnx" yang berisi model yang telah dilatih.

# Split dataset menjadi training dan testing dataset
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, Y_test = train_test_split(X, y)
# Definisikan model dan pasang model dengan data training dan cetak informasi tentang model
clr = DecisionTreeClassifier()
clr.fit(X_train, y_train)
print(clr)
#Konversi model dari format sklearn ke 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())

Inferensi pada Ubuntu

Periksa model Anda dengan menjalankannya pada mesin pengembangan Anda. Ketika Anda menjalankan skrip inferensi Anda seharusnya mendapatkan 2 integer yang sesuai dengan jenis bunga 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]

Inferensi pada PLCnext

Buka klien sFTP favorit Anda dan salin repositori ".onnx" dan "inference.py" ke /opt/plcnext/onnx pada PLCnext controller Anda. Lanjutkan dengan menjalankan perintah berikut sebagai root:

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

jalankan skrip python inference dengan

cd /app
python3 /app/inference.py

Jika semuanya berjalan dengan baik, Anda mendapatkan output yang sama dengan inferensi pada VM Ubuntu Anda! Selamat, Anda telah berhasil sampai akhir. Sekarang pergi ubah hal-hal!

Bagaimana mengimplementasikan dalam aplikasi?

Sebenarnya, kita belum selesai. Saya berarti, mengklasifikasi bunga Iris itu menyenangkan tetapi saya tidak bisa membayangkan banyak aplikasinya pada kontroler logis. Anda perlu mencoba model Anda sendiri dan membuat API untuk model tersebut sehingga Anda dapat melakukan inferensi dengan itu. Anda dapat memilih untuk mengirim data ke model dengan OPC UA atau membangun custom REST-endpoint untuk itu. Bagaimanapun Anda perlu menulis lebih banyak kode daripada yang disediakan oleh saya.

Mengingat membangun image secara harfiah memakan waktu hari dan malam tanpa tidur, saya sarankan Anda membangun image Anda di atas image yang disediakan. Dalam referensi Anda dapat menemukan sumber yang baik untuk membangun aplikasi container Python.

Referensi:

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

Harap terima cookie pemasaran untuk menonton video ini.

https://www.researchgate.net/figure/Decision-tree-for-Iris-dataset_fig1_293194222 https://onnx.ai/

https://github.com/PLCnext/Docker_GettingStarted

https://www.wintellect.com/containerize-python-app-5-minutes/

https://github.com/onnx/models

Teknologi Industri

  1. Menguasai Machine Learning di AWS: Panduan Lengkap
  2. Evolusi dan Produksi Mesin Jahit: Dari Inovasi Abad 19 hingga Otomasi Modern
  3. Memanfaatkan Pembelajaran Mesin untuk Mengoptimalkan Rantai Pasokan MRO
  4. Menerima AI dan Pembelajaran Mesin dalam Pengadaan: Peluang, Tantangan, dan Praktik Terbaik
  5. Machine Learning Mempercepat Keamanan Saluran: Deteksi Gangguan Real-Time Hemat $10 Juta
  6. Mengubah Keandalan Aset: Machine Learning untuk Predictive Maintenance
  7. Bagaimana AI dan Machine Learning Merevolusi Pemesinan CNC
  8. 4 Industri Teratas yang Dikembangkan oleh Machine Learning
  9. 9 Aplikasi Penting Machine Learning yang Harus Anda Ketahui
  10. Prediksi Umur Baterai Akurat dengan AI – Studi DOE Argonne