03-30-2020 02:08 AM - 編集済み 04-14-2020 07:37 PM
【LabVIEWと機械学習】Keras/Tensorflowとのつなぎこみ
1.なぜ機械学習をするのか
恐らく、人間の代用になるような高度なアルゴリズムを用いて、定型業務だけでなく、認知・判断が必要な作業の自動化を行い、生産性を向上させる部分にあるかと思います。もちろん日本のものづくりはすでに生産性が十分に高いのですが、さらに向上させることで労働時間の短縮や時間あたりの対価の向上も見込めます。こうした状況の中、何を自動化するのか、そんなテーマを見つけるのが重要になってきます。
以前データ管理の説明の際に、以下の課題解決フォローをご紹介しましたが、機械学習の現場への適応においても、以下のサイクルを繰り返す必要があり、このサイクルを早く回すためには正しいツールを選択する必要があります。
2.NI LabVIEWのメリット
①多種多様なプロトコルや3rd party製品を含んだシステムへの接続・対応
②実機との通信、データの収集を行う場合、飛躍的に短い期間でソフトウェア構築が可能な開発環境
であることはLabVIEWユーザーの方であれば、経験からご存知かと思います。(実はそうなんです)
こうしたツールの特性を活かして、気づきが得られるような、より高度な自動化を行うにあたり機械学習の恩恵も加えていただければと思います。
3.LabVIEWを用いた機械学習
さて、LabVIEWを用いた機械学習の適用ですが、大まかに以下の2つのアプローチがあります。
🔔1.LabVIEW上で自らアルゴリズムを作る:
自分で統計的手法を作る。開発環境のみを必要とするため、最も安価であるが時間がかかります。例えば「Deep learningをLabVIEWで実装してみた」のサンプルなどがこれにあたります。有償になってしまいますが、機械学習ツールキットなどを用いればアルゴリズム構築期間は短縮できます。
🍎2.別環境でアルゴリズムを作成、LabVIEWに取り込む
LabVIEWにはインターフェース用の関数があるためMATLABやPythonで構築したモデルなどが取り込めます。普段からお馴染みの環境を使用できますが、ゼロからはじめるとツールの学習の時間がかかります。
ただ、私としては、後者が今後の主流になっていくと考えています。
すでにモデルや各種計算などのライブラリが豊富に用意、また今回試用するKeras等の使い勝手の良いAPIも用意されているからです。
(なにより無料です)
Kerasは、ニューラルネットワークAPIで、TensorFlowなどのニューラルネットワークライブラリを使用しながらPython上で簡潔にプログラムを構築できます。使用にあたっては、TensorFlowなども一緒にインストールする必要があります。
その他KerasにはLabVIEWツールキットと比較し、こんな特徴があります。
画像処理を取り扱われるかたは、GPUの使用が必須ではないでしょうか。
4.実際に動かしてみる
LabVIEWに慣れた方の中には、Tensorflow等の環境構築をやや手間だなと感じる方も
いらっしゃると思い、今回は注意点も含めてサンプルを動かすまでをご紹介させていただきます。
今回試用するサンプルは、韓国のエンジニアが投稿したもので
こちらからダウンロード可能です。(Choiさん、ありがとうございます!)
MNISTというのは、人工知能や機械学習の学習チュートリアルによく使われるデータを指します。データは手書きの数字の白黒画像で、「手書きの数字を認識できるモデルを作る」というテーマで広く使われています。ここでは、雰囲気を掴む目的でKerasを触ります。KerasにMNISTのデータを学習させて、手書きの数字を認識できるモデルを作ります。
まずLabVIEWの環境ですがWindows OS 10 64bit、LabVIEW 2019 64bit(32bitではないです!)準備されたら、Pythonのサイトに行きましょう。ここでAnaconda等のディストリビューションは使用しないでください。
こちらのページに飛びまして、Python 3.6.8のページから
Windows x86-64 executable installer
を選択しました。インストーラーを立ち上げてPython環境をインストールします。
さて、KerasとTensorflowのインストールです。
コマンドプロンプトを一応管理者権限で開きます。
念のためTensorflowの環境をきれいにしておきます。
py -m pip uninstall -y tensorflow tensorflow-gpu keras
今回手持ちのノートPCを使用しており、GPU版のTensorflowはもともとインストールされていませんでした。
pip install tensorflow==1.5
をコンソールに入力し、インストールします。
※CPUの世代的に諸事情があり、あえて1.5をインストールしています。pip install tensorflowで最新版がインストールされます。
表示のされ方は違いますが、一応Tensorflowのインストールに成功しました!これでサンプルを動かす準備が完了です。
さて、VIをひらいてみましょう。
ブロックダイアグラムを見るとLabVIEW側では、Pythonノードを使ってPythonの環境とデータのやりとりと
サブVIでGUIの表示をしているだけです。ノードの使い方はこちらの記事を参考にすると理解しやすいです。
またPythonコードに目を向けると、かなり簡潔に記述されていることがわかります。
上から
の流れで処理が実行されます。
VIを実行するとPython側でデータセットを都度読み込み、モデルを作成しLabVIEWからの入力に応じて推論値を返してくれます。
ここで、LabVIEWのツールキットでカスタマイズできない部分を触ってみます。単純にモデルの層(レイヤー)を増やしてみました。また学習回数(エポック数)も増やしたため、過学習を防ぐために各レイヤーの間にドロップアウトも設けました。これは、学習フェーズの各更新時に、隠れユニット(隠れ層を構成するニューロン)の出て行く値をランダムに0に設定することで動作します。Kerasのドキュメントを見ると分かりやすいです。これは遺伝的アルゴリズムでいう、突然変異みたいなものですね。
やや、推論の確立があがりました。面白いですね。Kerasのドキュメントを見ると、高レベルAPIとはいえ、かなりの部分チューニングできます。例えばモデルパラメータの最適化を行う際にADAM()を使っていますが、別の関数を使用すると学習時間の短縮などに効いてきて、面白いなぁと感じています。
5.まとめ
環境構築時の注意点
機械学習を用いた計算、判断で良い結果を得るためには、当然ですが良質な計測データを最適なタイミングで取得して利用する必要があります。データ収録に関しては、IoT, 5Gなどさまざまなトレンドに追従していますので、ぜひお声がけください。
NI製品のみならず、適材適所でソリューションを紹介できればと思います。
次回は技術部の水野より、このプログラムの使い勝手をよくするアプローチについてご紹介します。
この記事を書いた人
阿部 敏朗
熊本県熊本市生まれ。茨城育ち。
日本ナショナルインスツルメンツ(NI)にて全国の自動車・半導体・センサ分野の企業様を担当。
LabVIEWや製品が新しくなるので日々勉強しつつ活動しています。
趣味は毎日の食事、AI関連の記事をよむこと、温泉、ロングウォーキング。
03-30-2020 02:12 AM
サンプルVIです。