目次
SONYのNeural Network Console
こんにちは。
AI coordinatorの清水秀樹です。
以前から興味があったSONY製のNeural Network Consoleを使ってみたので、その内容の紹介です。
今回使おうと思ったのはニューラルネットワークの構築にGUIを使った分かりやすい設計の魅力もそうだけど、NVIDIA製のGPUを簡単にセットアップできそうだったからです。
自分でCUDAを使ってのセットアップは難易度が高そうだったので、いままでGPUを使ったDeepLearningにチャレンジしてきませんでしたが、さすがにCPUでのDeepLearningが辛くなってきたので、今回導入に踏み切りました。
しかも自動で学習モデルを最適化する機能が搭載されているとのこと。
これはすばらしい。
いつもどんな学習モデルが良いのか分からないまま手探りでCPUで実行しているため、非常に非効率でした。
また、GUIのおかげで誰でも簡単にDeepLearningを始められるツールにもなっています。
導入手順もあわせて紹介しますので、興味がある方や、気軽にDeepLearningを始めたい方は是非チャレンジしてみてください。
環境のセットアップ方法
Neural Network ConsoleはWindowsにしか対応していません。
mac osXには対応していないのが残念です。
筆者もこれが理由で中々導入に踏み切れませんでした。
でも学習モデルの最適化やGPUを手軽に使用できる機能は魅力的ですよね。
ということでNeural Network Consoleをインストールします。
インストール手順は簡単です。
公式サイトからメールアドレスを入力すると、ダウンロードリンク付きのメールが送られてきますので、そこからEXEファイルをダウンロードして起動する形になります。
以下、公式サイトのトップページです。
Windowsアプリではじめるをクリックすると、以下のページまでスクロールされます。
このページでメールアドレスを入力して、上記に同意して送信をクリックします。
しばらくするとメールが届きます。
英語と日本語混ざったメールが届きます。
ダウンロードリンクをクリックして、ファイルをダウンロードしましょう。
メール内には以下の注意書きもあります。
注意書き通り、Visual Studio 2015 のパッケージインストールと、NVIDIA製GPUのグラフィックドライバーの最新化を実施しておきます。
準備が整ったら、neural_network_console_100.zipファイルを解凍してNeural Network Consoleを起動しましょう。
ちなみに解凍には結構時間がかかります。
筆者の環境で20分ぐらいかかりました。
気長に待ちましょう。
解凍が終わったら、neural_network_console.exeファイルを起動します。
起動したら早速GPUを使えるようにセットアップしましょう。
とはいっても何も難しことはありません。
Setup画面のENGINEからラジオボタンでGPUを選択するだけです。
Applyを押下して、はい出来上がり。
Setupが終わったらチュートリアルを試してみましょう。
解凍したフォルダ内のマニュアル通りに進めていけば問題ありません。
初回はサンプルデータセットのダウンロードに数分時間がかかります。
気長に待ちましょう。
ダウンロードが完了すると、以下の画面になります。
この画面はではMNIST数字の4と9を学習させるモデルのようです。
左上にあるDATASETをクリックするとデータの中身が確認できます。
データの中身が確認できたら、トレーニングを実行してみましょう。
左上にあるTrainingボタンを押下すると学習が始まります。
さすがGPUです。
epoch = 100が一瞬で完了しました。
学習が完了するとグラフで学習結果を確認できます。
さすがSONY。
簡単に使うことができました。
学習評価を知るには左上の矢印ボタンを押下します。
Accuracyで評価を知ることができます。
この学習結果では95%の精度を出すことができたようです。
こんな感じでチュートリアル通りに実行していけば、使い方のイメージが付きやすいかと思います。
独自画像データで学習
それでは使い方が分かったところで、独自画像データの学習にチャレンジしたいと思います。
注意点として、Neural Network Consoleに画像を読み込ます際は、予め画像サイズをそろえておく必要があるところです。
まあ、順を追って手順を説明します。
画像データの準備
何はともあれ、画像がないと始まりません。
頑張って画像を集めましょう。
そして集めたファイルを一定のサイズにリサイズします。
窓の杜に「縮小専用」というフリーツールがあるので、今回はこれを使用します。
画像サイズは、50X50でやります。
この辺はお好みで良いと思います。
サイズが大きくなれば学習精度の高いモデルが作成できると思いますが、学習時間もそれなりにかかります。
縮小専用画面の右下に「画像ファイルをここにドラッグ&ドロップしてください」とあるので、学習させたい画像データ全てをドラッグ&ドロップしましょう。
リサイズ後の画像ファイルは「Resized」という新しいフォルダ内に作成されています。
こんな感じで学習データを準備します。
Neural Network Consoleを使って画像データをCSV化
画像データが準備できたら、画像をNeural Network Consoleに読み込ませて、CSV化します。
例として、ここでは男性の画像と女性の画像を集めたデータをCSV化します。
フォルダ構成は以下のようにしています。
input
|——man(リサイズ後の男性の画像)
|——woman(リサイズ後の女性の画像)
output(空フォルダ)
フォルダの準備はこれで完了です
続いてNeural Network Consoleのホームに戻り、左メニューのDATASETを選択し、Create Datasetを選択します。
するとポップアップが表示されます。
Source Dir:には先ほど作成したinputフォルダを指定します。
Output Dir:には先ほど作成した空のoutputフォルダを指定します。
Output Color Ch:はカラー画像を学習させるため3(RGB)を選択します。
Output Width及びOutput Heightにはリサイズした画像サイズをしてします。
今回は50x50にしているので、それぞれ50を指定します。
最後にRatio(%)では、画像データの中からトレーニング用データとテスト用データの割合を指定します。
この辺もお好みで。
今回は80%、20%にします。
すべての入力が完了したら、Applyを押下して完了です。
しばらく画像の読み込み処理が走ります。
以上で画像の読み込みは終了です。
学習モデルを作成する
ここでは一から学習モデルを作成するのは面倒なので、サンプルで準備されているモデルを流用します。
チュートリアルで使った「01_logistic_regression.sdcproj」をベースを使ってみます。
設定を数か所変更する必要があるので、順を追って説明します。
まず、学習させる画像サイズを指定します。
つまりInputのサイズを変更します。
画像右のInputを選択すると、画像左下にInputのパラメータが表示されるので、赤枠で囲った部分を変更します。
ここではカラー画像の3と画像サイズ50x50を指定します。
続いて画像ファイルの読み込み設定です。
画像左上のDATASETをクリックし、そのすぐ下の右上矢印マークを押すとTrainingデータをValidationデータそれぞれを指定できるので、先ほど読み込ませたデータを指定します。
これで学習モデルに使用する画像データの指定が完了しました。
学習方法を指定する
最後に学習方法を設定します。
画像右上のCONFIGを選択すると、学習方法を指定できます。
Max Epochは学習回数を指定します。
Batch Sizeは一度に学習させる枚数を指定します。
そして筆者にとって、最もうれしい機能である自動で最適な学習モデルを探し出してくれる機能を指定する部分がEnableです。
これにレ点しておけば、勝手に学習モデルの最適化をしてくれます。
これで学習方法の設定は完了です。
学習開始
すべての設定が完了したので、いよいよ学習開始です。
画像上の矢印ボタンを押下すると学習が始まります。
学習モデルを最適化するように設定してトレーニングしているので、ストップボタンを押すまで永遠に学習を繰り返します。
眺めているだけでも楽しいですよ。
以上、Neural Network Consoleの使い方でした。
その他のDeepLearning記事はこちらから
それではまた。
Neural Network Consoleでは、1枚の画像中に複数のラベリングされたバウンディングボックスなどの画像は使用できないのでしょうか?
お問い合わせありがとうございます。
やりたいことは何でしょうか?
上の方とは別人ですが、多分同じことをやりたいと思っております。
この例でいうと男性と女性を学習させてそのあとに、1枚の大きな画像(学習例は50×50だとしても、その1枚は800×600とか)に男性が複数、女性が複数いるとそれぞれにラベリングされたバウンディングボックスで表示したいということだと思います。
YOLOとかSSDとかの一般物体検出ですね。
つまり学習画像サイズと関係なく、認識させたい画像があり、その画像内に複数の正解例があるという形式です。
理解しました。
要するにCNNからR-CNNをNeural Network Consoleを使用して実装したいということですね。
しっかり研究していませんが、Neural Network ConsoleはただのCNNモデルを作成しているに過ぎず、
Rの部分は何らかの技術で抽出し、作成したCNNモデルとぶつける感じで実装できるかと思います。