From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

[Archive] LabVIEW Café

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

【LabVIEW TIPS】Keras/Tensorflowで広げるAI / 機械学習

【LabVIEWと機械学習】Keras/Tensorflowとのつなぎこみ1.PNG

1.なぜ機械学習をするのか

 

 恐らく、人間の代用になるような高度なアルゴリズムを用いて、定型業務だけでなく、認知・判断が必要な作業の自動化を行い、生産性を向上させる部分にあるかと思います。もちろん日本のものづくりはすでに生産性が十分に高いのですが、さらに向上させることで労働時間の短縮や時間あたりの対価の向上も見込めます。こうした状況の中、何を自動化するのか、そんなテーマを見つけるのが重要になってきます。

 

以前データ管理の説明の際に、以下の課題解決フォローをご紹介しましたが、機械学習の現場への適応においても、以下のサイクルを繰り返す必要があり、このサイクルを早く回すためには正しいツールを選択する必要があります。

 

  1. 問題(課題)の特定
  2. 課題に対して何が判明すれば解決するのか仮説を立てる
  3. それを説明するデータはあるのか確認する
  4. ない場合、データの種類、品質、数量を増加させる
  5. データの解析を行い、インサイト(気づき)を得る
  6. 気づきを問題箇所に適用する
  7. 課題が解決しない場合 2に戻る

 

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ツールキットと比較し、こんな特徴があります。

 

  • 簡単かつ迅速なプロトタイピングが可能(使いやすさ、モジュール性、拡張性)
  • 畳み込みネットワークとリカレントネットワークの両方をサポートし、両者の組み合わせもサポート(画像分野では必須です)
  • CPUとGPUどちらでも使用可能

画像処理を取り扱われるかたは、GPUの使用が必須ではないでしょうか。

 

4.実際に動かしてみる

 

LabVIEWに慣れた方の中には、Tensorflow等の環境構築をやや手間だなと感じる方も

いらっしゃると思い、今回は注意点も含めてサンプルを動かすまでをご紹介させていただきます。

 

今回試用するサンプルは、韓国のエンジニアが投稿したもので

こちらからダウンロード可能です。(Choiさん、ありがとうございます!)

MNISTというのは、人工知能や機械学習の学習チュートリアルによく使われるデータを指します。データは手書きの数字の白黒画像で、「手書きの数字を認識できるモデルを作る」というテーマで広く使われています。ここでは、雰囲気を掴む目的でKerasを触ります。KerasにMNISTのデータを学習させて、手書きの数字を認識できるモデルを作ります。

 

まずLabVIEWの環境ですがWindows OS 10 64bit、LabVIEW 2019 64bit(32bitではないです!)準備されたら、Pythonのサイトに行きましょう。ここでAnaconda等のディストリビューションは使用しないでください。

 

2.png

 

こちらのページに飛びまして、Python 3.6.8のページから

Windows x86-64 executable installer

を選択しました。インストーラーを立ち上げてPython環境をインストールします。

3.png

 

さて、KerasとTensorflowのインストールです。

コマンドプロンプトを一応管理者権限で開きます。

念のためTensorflowの環境をきれいにしておきます。

 

py -m pip uninstall -y tensorflow tensorflow-gpu keras

 

4.png

 

今回手持ちのノートPCを使用しており、GPU版のTensorflowはもともとインストールされていませんでした。

 

pip install tensorflow==1.5

 

をコンソールに入力し、インストールします

※CPUの世代的に諸事情があり、あえて1.5をインストールしています。pip install tensorflowで最新版がインストールされます。

5.png

 

表示のされ方は違いますが、一応Tensorflowのインストールに成功しました!これでサンプルを動かす準備が完了です。

さて、VIをひらいてみましょう。

6.PNG

 ブロックダイアグラムを見るとLabVIEW側では、Pythonノードを使ってPythonの環境とデータのやりとりと

サブVIでGUIの表示をしているだけです。ノードの使い方はこちらの記事を参考にすると理解しやすいです。

またPythonコードに目を向けると、かなり簡潔に記述されていることがわかります。

 

7.png

上から

  1. 訓練データ読み出しと下処理。
  2. ニューラルネットワークのモデル定義
  3. 訓練
  4. デプロイ

の流れで処理が実行されます。8.png

 

VIを実行するとPython側でデータセットを都度読み込み、モデルを作成しLabVIEWからの入力に応じて推論値を返してくれます。

 

ここで、LabVIEWのツールキットでカスタマイズできない部分を触ってみます。単純にモデルの層(レイヤー)を増やしてみました。また学習回数(エポック数)も増やしたため、過学習を防ぐために各レイヤーの間にドロップアウトも設けました。これは、学習フェーズの各更新時に、隠れユニット(隠れ層を構成するニューロン)の出て行く値をランダムに0に設定することで動作します。Kerasのドキュメントを見ると分かりやすいです。これは遺伝的アルゴリズムでいう、突然変異みたいなものですね。

 

10.png

 

やや、推論の確立があがりました。面白いですね。Kerasのドキュメントを見ると、高レベルAPIとはいえ、かなりの部分チューニングできます。例えばモデルパラメータの最適化を行う際にADAM()を使っていますが、別の関数を使用すると学習時間の短縮などに効いてきて、面白いなぁと感じています。

 

5.まとめ

環境構築時の注意点

 

  • LabVIEW は64bit版を使用、32bitではない。
  • Python 3.6.xを使用
  • インストール時にAnacondaは使用しない

機械学習を用いた計算、判断で良い結果を得るためには、当然ですが良質な計測データを最適なタイミングで取得して利用する必要があります。データ収録に関しては、IoT, 5Gなどさまざまなトレンドに追従していますので、ぜひお声がけください。

NI製品のみならず、適材適所でソリューションを紹介できればと思います。

次回は技術部の水野より、このプログラムの使い勝手をよくするアプローチについてご紹介します。

 

 

この記事を書いた人

阿部 敏朗

熊本県熊本市生まれ。茨城育ち。
日本ナショナルインスツルメンツ(NI)にて全国の自動車・半導体・センサ分野の企業様を担当。

LabVIEWや製品が新しくなるので日々勉強しつつ活動しています。
趣味は毎日の食事、AI関連の記事をよむこと、温泉、ロングウォーキング。

ご相談・お問い合わせなどありましたら、こちらよりお気軽にお問い合わせください。

メッセージ1/2
4,732件の閲覧回数

サンプルVIです。

0 件の賞賛
メッセージ2/2
4,724件の閲覧回数