Neural Network Consoleの自動最適化機能は便利! ― 2020年01月25日 13:21
XPSスペシャルエディションは今のところ絶好調です。
1週間連続でブン回しています。温風ヒーターみたいな状態ですが空調が効いているので問題なし。
この1週間は、NNC(Neural Network Console)の自動最適化機能を試しています。
これってすごく便利です。
自動でネットワーク構造やパラメータを変えて学習してくれる。
自分では思いつかないような設定を勝手に作ってくれるので、”なるほど”って思うこともあります。
Training Data=20,000ヶ、Validation Data=5,000ヶで300 epochで、Best Validationが0.000989になったものがありました。
最初(リファレンス)はBest Validationが0.013だったので約1桁も良くなっています。
ある程度候補となるモデルが定まってきたら、学習サンプルを追加して再学習してみたいと思っています。
GPUの威力! ― 2020年01月18日 19:07
パソコン(XPSスペシャルエディション)にPython関連のセットアップが完了したので、いよいよディープラーニングの学習をやってみました。
ディープラーニングにあけるGPUの威力を試した結果です。
学習はNNCで行っているので、NNCのSetupで”ENGIN”タブの”CUDA-Enabled GPU”を選択するだけでいいはず。

とりあえず、CPUで8時間くらいかかったモデルとデータで試してみたら、猛烈に速い!
表示されている終了までの時間が20分、学習曲線がどんどん伸びていく。
GPUの威力は絶大です。
これなら、いろいろ詩行錯誤ができそう。
ディープラーニングにはGPUは必須ですね。
クラウドでも学習環境を提供しているサービスがあるので、それを利用するのもいいかもしれません。
これで、パソコン関連の環境は整ったので本格的に目視判別の自動化システムを構築していける。
これからPythonとNnabla(Neural Network Libraries)を使って、ラインで学習済みのモデルを使用するためのソフトを作っていきたいと思っています。
それとデータのN増し、これが一番大変かな。。。
ついでに学習中のパソコンの状態ですが、GPUは外部排気の構造で熱風が出ている。
CPUも常にブーストクロックで動作しているのでかなりの電力を使っていると思う。
CPUのクロックが下がることはないので冷却効率は悪くなさそう。
製造工程内にPCを設置しているので音は全く気にならないが、学習中はCPU、GPUともに冷却ファンはフル回転しているので、それなりの音はしていると思うけど一般的な事務所なら気にならないレベルだろう。
でも、会社の空調が効いた部屋ならいいけど、自宅では使いたくないかな。。。
ディープラーニング【システム構築の準備編・・・その1】 ― 2020年01月03日 13:00
・Neural Network Libraries(nnabla)について
NNCのサポートページ(チュートリアル)を見ると、Neural Network Console(NNC)による学習済みニューラルネットワークのNeural Network Librariesを用いた利用方法は2つの方法があることがわかりました。
一つは「コマンドラインインターフェイスを用いて推論を実行する方法」で、もう一つは「Python APIを用いて推論を実行する方法」
2つの方法ともにPythonが必要で、NNCがインストールしてあれば同梱のPython環境がそのまま利用可能なようです。
1. コマンドラインインターフェイスを用いて推論を実行する方法
”一切のコーディングを行うことなく、最も簡単に推論を実行させることができる”とある。
ただし、毎回Pythonを起動し、学習済みネットワークの構造やパラメータ、認識対象のデータセットの読み込みを行うため、実行速度が遅いという欠点があるようだ。
この方法は実験的に推論を実行させたい用途などに適していて、システムに組み込みで使用するのには向いていないみたいだ。
まずは、Neural Network Librariesが利用できるように環境を準備する。
Neural Network Librariesをインストールする必要があるので、以下のドキュメントをご参照して
インストールします。
インストールが完了したら、CLIコマンドをチュートリアルのとおりに実行すれば推論できます。
チュートリアルではPython環境でCLI.pyを実行するようになっていますが、Windowsのコマンドプロンプトでnnabla_cli.exeを実行しても同様なことが可能です。
チュートリアルに書いてあるようにこのやり方は推論対象のデータセットをCSV形式のファイルで準備しておいて結果も指定したCSVファイルに書き出されます。
確かにシステムに組み込んで使用するには向いていないですが、リアルタイムの必要がなければ十分活用できるかもしれません。
2. Python APIを用いて推論を実行する方法
チュートリアルには、”Neural Network Librariesの豊富な機能を直接利用することができ、外部のプログラムとの連携の容易さや、パフォーマンスにも優れています。”と書いてあります。
求めていたものは、これですかね!
この方法では、Pythonでコードを書く必要がありますが、システムに組み込むには最適な方法です。
しかも、NNCで作成したネットワークや学習済みデータはそのまま流用できるので、ネットワークの検討・作成~学習はNNCで行うことができます。
Neural Network Librariesを使用すればネットワークの作成~学習もコードを書いて実現できますが、せっかくNNCがあるのでこれを利用しないのはもったいない。
SONYさんもこのように運用するためにNNCで作成したネットワークをPythonコードにExportする機能が用意してあり、チュートリアルにも記載されています。
3.C++ ライブラリ
Neural Network LibrariesはC++ライブラリもあるのでC++の開発環境でもシステムを構築できます。
そもそも、Neural Network LibrariesのコアはC++で書かれているそうです。
ただ、現時点でC++ライブラリのドキュメントが整備されていないみたいです。
また、C++のライブラリは自分で構築しないといけないみたい。
なので、かなり敷居が高く感じられました。
組み込み系のバリバリなエンジニアさんなら苦にならないのでしょうが。。。
ここで、ソフト作成をPythonかC++でやるか少し迷ってしまいました。
実は、C++やVBでのソフトは作成した経験はあるのですがPythonは未経験で全く触ったことがありません。
Pythonは非常に人気が高まっていて特にデータサイエンス・機械学習の分野でスタンダードな言語のようです。
言語仕様も習得しやすく、情報も豊富です。
ライブラリ(モジュール)も豊富に存在していて、”やりたいこと”を1から作らなくていいみたい。
プロのプログラマーでない私にとっては開発言語は手段の一つ、そもそも、AI(ディープラーニング)自体が私にとって初めてなこと。
新しいことに触れると”ものの見方”や”考え方”の幅が広がるような気がします。
もし満足できないものしか作れないとわかったらプロの人にお願いすればいい。
得た知識はその時にも役に立つはず、きっと。
ということで、グラフィカルユーザインターフェース(GUI)はどうすればいいの? とかPythonはインタープリタだよね。遅くないの?って疑問は残っていますが、とりあえずPythonで進めようと思います。
使用するパソコンはWindowsなのでPythonのインストールから始めないといけない。
次はPython関係の環境構築に関して調べて整備していきます。
ディープラーニング【システム構築の準備編・・・その2】 へ続く・・・
AI(ディープラーニング)で課題解決! ― 2020年01月02日 15:30
AI(ディープラーニング)を試してみました。
きっかけは、ソニーさんのニューラルネットワークコンソール(NNC)です。
それまでは、ディープラーニングには興味はありましたが、環境の構築だけで挫折しそうだったので敬遠していました。
2017年の秋ごろにNNCを知って、これならデータさえ揃えれば気軽に試せると思って飛びつきました。
そして、年が明けた2018年1月から詩行錯誤しながら試してみたところ実用できそうな感触を得ました。
・抱えていた課題
半導体(IR-LED)の組み立て工程で発光パターンをカメラで撮影して目視で検査を行っています。
10年くらい前に輝度の面積比率などのパラメータで自動判別できないか検討しましたが、面積比率のパラメータだけでは目視判定の精度に至らず断念、”次の世代の人たちに託そう”と勝手に思い始めていました。
目視判定はベテランの検査員が行っていますが、判定基準が明確になっていないこともあり、新たな検査員を育てることが非常に難しい状況になっていて自動判別化が急務になっています。
ベテラン作業員はあと数年で定年で、”私どうしよう”って一人で重荷を背負っている状態。
それなら、10年前にやり残したことをやるしかない。 やらない理由はない!
・本当に課題を解決できるのか
NNCで試した時は良品と不良品を合わせて200枚(各100枚)程度のデータで行ったけど
さすがにデータ量が少ないと思って画像を90度刻みで回転させて約400枚に水増ししました。
結果は約96%の正解率(Accuracy)でしたが、これを99%以上にするにはどのようにしたらよいのか
見当がつかない。
画像の認識なのでCNNが良さそうなのはネットの情報でわかりましたが、CNNの構成や各種設定(ハイパーパラメータ)はどのようにした方がよいのか、、、わ・か・ら・な・い。
最終的には始業錯誤するしかないみたいだ。
でも原理など基本的なところがわかっていないとかなり効率が悪い。。。
いけない、いけない。
”できない・やらない理由”を考えてもしょうがない。
せっかく”やってみて”実用的なことがわかったのだから、次にどうすればよいか考えよう。
ディープラーニングの原理とかを理解するのが目的ではなく、課題解決することが目的だから
とにかく現場で使えるようにするにはどうすればよいかを考えよう。
原理とかアルゴリズムの詳細は社内の頭のいい人を巻き込んで説明してもらえばいいだけ。
適用を許可してもらうために関係部署への根回しも少しづつやっていこう。
NNCでは、学習と評価はできるけどシステムに組み込まないと現場では使えない。
NNCはSONYさんが誰でもAIを使える(体験できる?)システムとして無料で公開したソフト。
幸いなことに先人たちが既に使い方や活用方法などの情報を発信している。
まだ小さいけどコミュニティも立ち上がっている。
実装には、”Neural Network Libraries”が用意されているらしい。
何とかなるだろう。
・とりあえず何をやっていくか
まずは、ゴール。
現在、”目視で判定している発光パターン検査の判定部分をAIで自動化する”
最終的に分類も含めた完全自動化に持っていきたいけど、それは次のステップにしよう。
大雑把なアクションアイテムは以下の項目かな。
①AIを活用した発光パターン目視判定の自動化をPRする
②データ(サンプル)集め
③データのラベル付け&クレンジング
④システムへの実装
・AIを活用した発光パターン目視判定の自動化をPRする
現状を整理して今後の方向性を提示する。
実はIR-LEDの1品種だけは発光パターンの自動判別を行っていて自動機で選別まで実施している。
これは20年以上前に誰でも知っているであろう某中央研究所で検討・開発されたアルゴリズムで実装されている。
アルゴリズム自体は教科書でも出てくるマハラノビス距離を用いたもので、発光パターンの30度刻みの濃淡投影分布の形状で判別を行う。
形状の数値化は波形解析で用いられるフーリエ変換係数を用いて良品サンプルのデータとのマハラノビス距離で判別を行うというもの。
試しに未適用の品種で目視判定と比較したところ、目視で不良判定されたサンプルの約60%が良品判定された。
判定閾値(マハラノビス距離)を小さくすれば不良判定される割合は減るが、今度は良品が不良となり歩留りが低下する。
要するに目視判定と同等に判別できていない。。。
次に同じサンプルを用いてAI(ディープラーニング)で評価してみる。
かなりの精度で良品と不良が判別される。
完全良品や完全不良は素人の私でも識別できるがグレーのものは違いが判らない。
これを見事に判別した結果を見ると少し寒気がした。
これらのデータを盛り込んだ資料を提示してPRすればいいかな。
下図が従来のマハラノビス距離とAIで判定させた時のそれぞれの累積確率分布。

※実際のデータではなくてイメージです。
・データ収集とデータのラベル付け&クレンジング
データ(サンプル)集めは、作業者にお願いして不良品を保管しておいてもらう。
良品は流れ品の発光パターンを撮影したものを使えばいいか。
それより手間がかかりそうなのがデータのラベル付け&クレンジングかな。
・システムへの実装
”Neural Network Libraries”を調査して開発環境(言語)を決めないといけない。
現システムは約20年前に導入したもので、PCはWindows2K、カメラはアナログでPCにビデオキャプチャボードを入れたもの。
この機会にPCとカメラは新調したい。
今回は前置きでここまでにして、次回からはAIでの自動判別を実現するために行った(行う)具体的な内容を書いていきたいと思います。
(実際のデータや結果は公開できませんが、実装するにあたって調べたことやNNCを活用するうえで役に立ちそうなことなどを記載していきます)

最近のコメント