工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

PLCnext での機械学習

今では誰もが機械学習について、そしてそれがどのようにすべてを変えるかについて聞いたことがあるでしょう。しかし、すべてを変え始める方法を知っている人はほとんどいません。このブログの手順を試したり、読んだりすることで、PLCnext コントローラーで物事を変更する方法を理解するのに役立つことを願っています。このブログでは、最初の ML モデルのトレーニング、ONNX 標準への変換、PLCnext コントローラーでのモデルの推論について説明します。圧倒されないように、有名な Iris データセットを使用してモデルを構築します。

始める前に、何を達成しようとしているのかを明確にする必要があります。そのため、このブログで扱うトピックについて簡単に説明します。私の参考文献は、このブログの最後にあります。

機械学習の概要

機械学習とは

ですから、機械学習とは何かを説明することから始めるべきだと思います。機械学習の本質は、統計とアルゴリズムを使用してデータセット内のパターンを見つけようとすることです。機械学習には、教師あり機械学習、教師なし機械学習、強化学習の 3 つのタイプがあります。教師あり学習は、今日最も使用されている「フレーバー」であり、このブログでは教師あり学習を使用します。教師あり学習では、データにラベルを付けて、探しているパターンを正確にマシンに伝えます。

教師なし学習では、データにラベルを付けず、機械に独自のパターンを見つけさせます。この手法にはあまり明確な用途がないため、教師なし学習はあまり一般的ではありません。

最後に、強化学習では、アルゴリズムは試行錯誤によって学習し、定められた目的を達成します。それはただ多くのことを試み、それが良いか悪いかによって報酬または罰則を与えられます。 Google の AlphaGo は強化学習の有名な例です。

アイリスの花のデータセット

ウィキペディアによると、アイリスの花のデータセットは次のとおりです。

わかりました。でも見た目はどうですか?

アイリス データセットには、がく片の長さ、がく片の幅、花びらの長さ、花びらの幅、およびアイリスの花の種類の 5 つのフィールドがあります。今日の目標は、がく片の長さ、がく片の幅、花弁の長さ、花弁の幅がわかったときに、アヤメの花の種類を見つけることです。そのため、花の種類を分類するようにモデルをトレーニングします。ご想像のとおり、このタイプの機械学習は分類です。

機械学習を使用して、データ セット内の値を予測することもできます。この手順は回帰と呼ばれ、分類とは異なるアルゴリズムを使用します。

アルゴリズム

今日は「Decision Tree Classifier」を使用しますが、これはタスクに最適だからというわけではありませんが、非常に直感的で、複雑な数学がなくても簡単に理解できます。ここでは、アヤメの花のデータ セットの決定木の例を見つけることができます。

ONNX

ご想像のとおり、機械学習モデルにはさまざまな形式があり、さまざまな高速化方法を備えたさまざまなハードウェアで実行する必要があります。 Open Neural Network Exchange は、この問題を軽減しようとします。世界中のオープン オフィス、Azure、およびその他の無数のアプリケーションで使用されています。このブログを読んでいるデバイスでほぼ確実に使用されます。


onnx モデルを実行するには、onnx ランタイムが必要です。これには課題が伴います。特に arm プロセッサでは、docker イメージが提供されていれば問題ありません!

テクニカル ウォークスルー

前提条件

ファームウェア 2021.0 LTS がインストールされた AXC F 2152 コントローラーと Ubuntu 20.04 VM を使用してモデルをトレーニングしています。モデルのトレーニングと推論のためのスクリプトが提供されていますが、Ubuntu VM のセットアップはブログの範囲外です。必要な 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」リポジトリを PLCnext コントローラの /opt/plcnext/onnx にドロップします。次のコマンドを root として実行します:

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

で Python 推論スクリプトを実行します

cd /app
python3 /app/inference.py

すべてがうまくいけば、Ubuntu VM での推論と同じ出力が得られます!おめでとうございます。最後までやり遂げました。さあ、物事を変えましょう!

アプリケーションに実装する方法

実は、まだ終わっていません。あやめの花を分類するのは楽しいですが、論理的なコントローラーで複数のアプリケーションを使用することは想像できません。独自のモデルを考え出し、そのモデルの 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/models

産業技術

  1. AWSでの機械学習;それをすべて知っています
  2. ミシン
  3. サプライチェーンと機械学習
  4. 調達はAIと機械学習テクノロジーを恐れるべきですか、それとも歓迎すべきですか?
  5. 現場での機械学習
  6. 予知保全における機械学習
  7. AIと機械学習がCNC機械加工に与える影響
  8. 機械学習から最も恩恵を受ける4つの業界
  9. 知っておくべき9つの機械学習アプリケーション
  10. 機械学習でバッテリーの寿命を予測する
  11. AI研究者および機械学習エンジニアとしての生活