C++プログラマのブログ

プログラミングについて、勉強したことをまとめます。

NeuralNetworkConsoleで遊んでみた

表題の通り、最近話題のNeuralNetworkConsoleで遊んでみました。
ネットワークの構成をGUIでできちゃうのですごい便利らしいです。
とりあえず顔識別機を学習してみました。
ただし、C++等から学習結果を利用するにはnnabla(sonyのdeeplearningライブラリ)を使う必要があるようです。

インストール

以下のページにアクセスしてメールアドレスを入力すると、メールが来ます。 メール内のリンクをたたくとダウンロードが始まります。
「上記に同意して送信」を押しても送信されません。メールアドレス入力後、tab⇒Enterで行けるようです

dl.sony.com

初回起動時

以下のような画面がでると思います。
規約を読んで同意できればI AgreeでOK。

f:id:red_grape:20170829215904p:plain:w300

CUDA設定

GPUによる高速化をする場合、初回起動時の画面で「Engine」をクリック。
CPU、GPUを選択するラジオボタンGPUを選択します。
f:id:red_grape:20170829220640p:plain:w300

自前データの読み込み

mnist等既存のデータセットではなく、自前データを学習したい場合は読み込みが必要です。 「DATASET」から「Create Dataset」をクリックし、以下の画面に遷移します。
f:id:red_grape:20170829223624p:plain:w300
「Source Dir」に読み込みたいデータをラベル事にフォルダ分けして配置します。(Matlabで読み込む場合と同じ構成) 「Output Dir」に読み込み結果ファイルを出力するディレクトリをしています。 後は学習とValidationに使う割合を指定したり、画像のサイズを指定したりして「Apply」でOK。

新規プロジェクト生成

「New Project」をクリック。
プロジェクト単位で学習するようです。

f:id:red_grape:20170829220954p:plain:w300 f:id:red_grape:20170829221116p:plain:w300

ネットワーク生成

一番面白いところです。 入力層を左の画面からドロップします。 f:id:red_grape:20170829221643p:plain:w300 f:id:red_grape:20170829221239p:plain:w300

できましたね。
特徴量のサイズ等レイヤのプロパティは左下のUIから設定できます。 f:id:red_grape:20170829221950p:plain:w300

後は左のUIから好きな層をドロップしてつないでいくだけでネットワークができちゃいます。
f:id:red_grape:20170829222310p:plain:w300

学習データ指定

左上の「DATASET」から「Training」と「Validation」用のデータセットを選択できます。 下の画像の赤枠をクリックすると読み込み済みのデータを選択できます。 自前で用意したデータを使う場合、自前データの読み込みで予め読み込んでおきましょう。
f:id:red_grape:20170829222818p:plain:w300

学習

左上の「TRAINING」を選択し、録画開始みたいな三角形を押すだけです。
今回は人の顔を学習させてみました。結果は以下の通りです。
f:id:red_grape:20170829223134p:plain:w300

学習結果

「EVALUATION」から各データに対する学習結果を確認できます。 ちゃんと顔を認識できていそうですね。 f:id:red_grape:20170829224119p:plain