技術情報

産業オートメーション向け PLC にディープラーニング ネットワークを展開して統合するためのワークフローの実装

著者 Beckhoff Automation GmbH & Co. KG、Fabian Bause 博士、Nicolas Camargo Torres 博士


「ここで説明したワークフローの主な利点は、チームが迅速な反復プロセスを通じて、トレードオフに関する意思決定を評価できるようになることです。たとえば、当社の品質管理アプリケーションでは、分類精度をある程度犠牲にして、ネットワークのサイズと実行時間を削減しました。」

産業オートメーションにおいて、機械学習には多くの潜在的な用途があります。たとえば、ビジョンベースの分類器を使用すると、完成品の品質を評価したり、アセンブリに追加される前に潜在的に欠陥のあるコンポーネントを特定したり、自然による顕著なばらつきのある果物や野菜を仕分けたりすることができます。これらのアプリケーションの一部を従来のコンピューター ビジョン技術で構築することは可能かもしれませんが、ディープラーニングなどの AI の出現により、外観検査の自動化が推進されています。

しかし、エンジニアリング チームは、AI モデルを PLC や産業用 PC に展開する際に困難に直面することがよくあります。そのため、制御アルゴリズムとディープラーニング アルゴリズムを単一のシステムに統合するのではなく、別々のシステムを使用することになり、レイテンシの上昇や、展開と保守コのコスト増加につながります。チームが直面するもう 1 つの課題は、必要なスキルセットが異なることです。これまでのところ、データサイエンスと産業用制御ワークフローには、比較的共通点がほとんどありませんでした。

Beckhoff Automation チームは、MATLAB® ツールと Beckhoff Automation 製品を組み合わせた新しいワークフローを実装したことで、ローコード設計と AI モデルの学習が可能になっただけでなく、産業用システムや設備における展開と統合のプロセスが簡素化されました。私たちは MathWorks のエンジニアと協力してこのワークフローを開発し、六角ナットの外観検査に関連する品質管理アプリケーションの例でそれを実証しました (図 1)。この単純なアプリケーションは、六角ナットを不良品か否かに分類するもので、簡単な使用例を示していますが、このワークフローのステップは、より高度で複雑なアプリケーションの開発と展開を加速するために活用することができます。

ビデオの長さ 0:22

図 1. AI モデルを使用して六角ナットの品質を検査する品質管理のアプリケーション。 

手順は次のとおりです。

  1. MATLAB で Deep Learning Toolbox™ を使用してディープラーニング モデルの設計、学習、最適化を行うか、PyTorch® や TensorFlow™ などの別の機械学習フレームワークからモデルをインポートします。
  2. MATLAB Coder™ と TwinCAT 3 Target for MATLABを使用して、そのモデルからコンパイルされた TwinCAT® オブジェクトを作成します (コンパイルされた TwinCAT オブジェクトには、ディープラーニング モデルに加えて、前処理コードと後処理コードの両方を含めることができます)。
  3. 分類または予測を実行するために、TwinCAT 3 エンジニアリングの TwinCAT オブジェクトを呼び出します。同じ PLC 上で実行されている他の機能またはコンポーネントと統合します。

上記の主要ステップに加えて、デモのワークフローには次の 2 つの補足ステップも含まれます。

  1. Simulink® と Stateflow® で制御アルゴリズムを設計します。Simulink Coder™ と TwinCAT 3 Target for Simulink を使用して、この制御モデルから TwinCAT オブジェクトを作成します。
  2. MATLAB App Designer で TwinCAT 3 Interface for MATLAB and Simulink を使用するヒューマンマシンインターフェース (HMI) を設計し、MATLAB と TwinCAT のランタイム環境間でデータを交換します。

事前学習済みネットワークによる転移学習

ディープラーニング アプリケーションで使用するデータを収集して準備した後、ワークフローの最初のステップはディープラーニング モデルの学習です。MATLAB と Deep Learning Toolbox を使用するとこれを行うことができ、Deep Network Designer アプリを使用して最初からネットワークを学習させたり、ディープラーニング モデルを関数として定義して独自の学習ループを利用したり、新しいデータで事前学習済みモデルを再学習 (転移学習) させるなど、いくつかの方法があります。異常なデータが少ない場合は、Automated Visual Inspection Library for Computer Vision Toolbox™に含まれる FCDD や PatchCore などの異常検出手法も有効です。

六角ナット検査アプリケーションの例では、転移学習を採用して、畳み込みニューラル ネットワークへの再学習を行い、一連の六角ナット画像を分類しました。具体的には、事前学習済みの ResNet-18 と SqueezeNet ネットワークをMATLABに読み込んで、六角ナットの画像を分類するよう再学習させました (図 2)。

ビデオの長さ 1:33

図 2. Deep Learning Toolbox で、ディープラーニング ネットワークに学習させて、新しい画像を分類できるようにします。

ResNet-18 ネットワークは非常に正確でしたが、SqueezeNet ネットワークよりも桁違いに大きくて低速でした。SqueezeNet ネットワークは多少精度が劣るものの、それでも今回のユースケースには十分な精度でした。さらに、PLC の時間的制約が 300 ミリ秒であることを考えると、ResNet-18 では要件を満たせないことがわかり、SqueezeNet に切り替えました。畳み込み層のフィルターを枝刈りすることで、このネットワークのパフォーマンスがさらに向上し、サイズが縮小しました。この枝刈りにより、精度はわずか 7% しか低下せず、速度は 2 倍になりました。さまざまなネットワークとネットワーク圧縮オプションを迅速に評価する機能は、精度、速度、サイズに関するトレードオフの意思決定を行う必要があるチームにとって大きな利点となります。

コンパイルされた TwinCAT オブジェクトの構築と TwinCAT 3 エンジニアリングへの統合

MATLAB 関数 (この場合はディープラーニング モデルを呼び出す関数) から TwinCAT オブジェクトを作成するには、2 つの手順が必要です。最初のステップは、MATLAB Coder を使用して関数用に C/C++ コードを生成することです。2 番目のステップは、TwinCAT Target for MATLAB を使用して、生成されたコードを TwinCAT オブジェクトにコンパイルすることです。これら 2 つのステップを実行するスクリプトを作成すると、ワークフローのこの部分を自動化できます (図 3)。ディープラーニング ネットワークに変更が加えられた場合、チームはこのスクリプトを再実行するだけで、更新された TwinCAT オブジェクトをすぐに生成できます。

ビデオの長さ 0:20

図 3. TwinCAT オブジェクトの構築に使用される C/C++ コードを生成します。

ここで注目すべき重要な点は、 MATLABのディープラーニング ネットワークを Beckhoff PLC に展開する別の方法があることです。この手法により、チームは MATLAB から ONNX ファイルをエクスポートし、このファイルを TwinCAT 3 に読み込み、推論エンジン (TwinCAT Machine Learning Server) を使用して分類または回帰タスクを実行できます。GPU でモデルを計算するオプションもあります。この MATLAB Coder と TwinCAT Target for MATLAB をベースにした当社のワークフローアプローチの利点の 1 つは、 MATLAB に実装された別の前処理機能と後処理機能を含めることができる点で、代替手段に比べても優れています。ONNX エクスポート手法では、ネットワークのみが展開されます。

TwinCAT オブジェクトをコンパイルすると、他のオブジェクトと同様に TwinCAT エンジニアリングで使用できるようになります。自動化担当のエンジニアは、今では TwinCAT オブジェクトとして実装されているディープラーニング モデルを、構造化テキストを含む他の PLC コードと統合することができます。たとえば、私たちのアプリケーションの例では、コンパイルされたオブジェクトを呼び出して、カメラから取り込んだ画像 (サイズを変更してピクセルの行列に変換済み) を渡すコードを記述しました。次に、コードは分類器の出力を処理しました。これには、予測結果 (六角ナットが正常か不良か) と、結果の信頼性を反映する確率スコアの両方が含まれています (図 4)。

ディープラーニング モデルと TwinCAT Vision のシステム統合を示すスクリーンショット。

図 4. TwinCAT Vision を使用したディープラーニング モデルのシステム統合。

モーションコントロールの設計と展開

品質管理アプリケーション設計の例を完成させるには、カメラの画角内に六角ナットを配置するために使用されるサーボモーターの制御システムが必要でした。この制御システムを TwinCAT エンジニアリングで直接実装することもできましたが、この機会を利用して、分類器の展開で使用したのと同じ Beckhoff PLC をターゲットにしながらモデルベース デザインを使用しました。まず、Simulink で Stateflow を使用してモーション コントローラーをモデル化しました。次に、シミュレーションを実行して設計を検証した後、Simulink Coder を使用してモデルから C/C++ コードを生成し、TwinCAT 3 Target for Simulink でコードを TwinCAT オブジェクトにコンパイルしました。その後、このオブジェクトを TwinCAT エンジニアリングで視覚化し、設計の他の要素と統合することができました (図 5)。

駆動制御と位置フィードバック用の入力、ロジック ゲート、出力を備えたモーション制御システムを示すSimulinkモデル。

図 5. モーション制御用のSimulinkモデル。

MATLAB App Designer と TwinCAT Interface for MATLAB を使用した HMI 設計

ほとんどの産業オートメーションのユースケースでは、オペレーターが機器の監視・制御、リアルタイム データの表示、アラート受信、生産プロセスの管理等を行えるように HMI が提供されています。品質管理アプリケーションの例用に HMI を作成するために、まず、MATLAB App Designer を使用してユーザーインターフェイスの設計レイアウトから着手しました。オペレーターは、インターフェースを介して六角ナットの動きを制御し、現在カメラの下に配置されている六角ナットを表示し、ディープラーニング ネットワークの結果 (分類と確率スコアを含む) を確認し、分類器の実行時間などのベンチマークを監視することができます (図 6)。ユーザー インターフェイスと PLC ランタイム環境間のすべてのデータ交換は、Automation Device Specific (ADS) 通信プロトコルを使用する TwinCAT 3 Interface for MATLAB and Simulink を介して行われます。

六角ナットの品質管理 HMI を示すスクリーンショット。

図 6. MATLAB App Designer と TwinCAT 3 Interface for MATLAB and Simulink を使用して構築された六角ナットの品質管理 HMI。

今後の反復プロセス

ここで説明するワークフローの主な利点は、チームが迅速な反復プロセスを通じて、トレードオフに関する意思決定を評価できるようになることです。たとえば、私たちの品質管理アプリケーションでは、分類精度をある程度犠牲にして、ネットワーク サイズと実行時間を削減しました。設計要件でさらに低いレイテンシが求められた場合でも、ネットワークを変更してさらなる改善を行ったり、より高性能なクラスのコンポーネントとプロセッサを備えた PLC を選んだりすることもできるようになるはずです。

特定のプロジェクト要件を満たせるよう、このワークフローを拡張することも可能です。その拡張の 1 つが、ディープ ニューラル ネットワークの分類結果を利用して、制御システムに影響を与えることです。私たちが構築した特定の品質管理デモンストレーターでは必要ありませんでしたが、制御システムが分類結果に基づいて即座にアクションを実行する機能は、幅広い産業オートメーションのユースケースに適用が可能ですので、このワークフローを採用する多くのチームにとって当然の流れとなるでしょう。

公開年 2024

詳細

関連する機能の記事を見る