スポンサーリンク

自前のデータでNeuralNetworkConsole(SONY)で画像分類(1)

インストールしてTutorial(MNIST)は試してみたものの、それでは面白くないので、自前データで機械学習をしてみたい!

基本的に、公式マニュアル https://blog.dl.sony.com/286/ と、公式動画(youtube動画リンク)に従ってやっていくのみ。

<2017/11/24追記>

動画にしてみました。

 

 

インストール方法は以下

http://twosquirrel.mints.ne.jp/?p=19679

(環境)
Panasonic CF-RZ4
Windows8.1 Pro (64-bit)
Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3 RC
Neural Network Console_V1.0.0

http://twosquirrel.mints.ne.jp/?p=19448

Kerasでりんごとオレンジの分類(おそらく色で判断しているでしょうが、、、)をやったのと同じ画像で試してみる。

(1)フォルダの作成と、画像ファイルの用意。

りんご30枚+5枚、オレンジ30枚+5枚を、googleの画像検索で拾ってきて保存するための場所を作成する。

C:\neural_network_console_100\ フォルダの下に、新たに、
images\  フォルダ
datasets\ フォルダ
projects\    フォルダ
を作成する。

(作成前)

(作成後)

さらに、images\ フォルダの中に、
appleorange\ フォルダを作成し、その中に、

training\
|-apple\
|-orange\
varidation\
|-apple\
|-orange\

のフォルダを作成。

(2)画像のダウンロードと保存。

りんご30枚+5枚、オレンジ30枚+5枚を、googleの画像検索で拾ってきて、以下のように、名前を、半角英数字で保存。おそらく、半角英数字でないと、あとでうまくいかなくなってしまう可能性が高い。

また、画像はすべてjpgで保存する。(2017/10/17追記)

C:\neural_network_console_100\images\appleorange\training\apple
りんご画像、約30枚(名前は半角英数字にする)

C:\neural_network_console_100\images\appleorange\training\orange
オレンジ画像、約30枚(名前は半角英数字にする)

C:\neural_network_console_100\images\appleorange\validation\apple
りんご画像、約5枚(名前は半角英数字にする)

C:\neural_network_console_100\images\appleorange\validation\orange
オレンジ画像、約5枚(名前は半角英数字にする)

(3)Neural Network Console の起動

C:\neural_network_console_100\ フォルダの中の、neural_network_console.exe をダブルクリックして起動。

サンプルプロジェクトの、"02_binary_cnn.sdcproj"をクリック。

このサンプルは、28 x 28 pixelのグレースケールの画像を数字の4と9に画像分類するCNN(畳み込みニューラルネットワーク)である。

今回は、(画像ファイルを用意した後、)

<1>このネットワークをコピペして、

<2>最初の入力を、28 pixelのカラー画像(りんごとオレンジ)に変更。つまり、Input Datasetを、(1,28,28)→(3,28,28)にして

<3>りんごとオレンジの、trainingデータセット、validationデータセットを読み込んで、

<4>機械学習(training)を行い、

<5>学習結果を評価(validation)を行う

方針とする。

(4)02_binary_cnn.sdproj を、別名で保存。

画面右上の(Save as)をクリックして、

C:/neural_network_console/projects/ フォルダの下に、「101_apple_orange_cnn.sdcproj」という名前でプロジェクトを名前をつけて保存(02_binary_cnn.sdproj  を別名で保存)。

以下のような画面になる。

(5)最初の入力を、28 pixelのカラー画像(りんごとオレンジ)に変更。つまり、Input Datasetを、(1,28,28)→(3,28,28)にする。

以下の画面の黒い長方形の、「Input」をクリック。

画面左下に、Layer Property “Input"の詳細が表示されるので、Sizeの1,28,28のところをクリック。

1, 28, 28 が編集できるようになるので、一番左側の “1" を、 “3"に変更する。
(これは、最初の入力画像を、28x28pixelのグレースケール画像から、28x28pixelのカラー画像(RGBの3)に変更している。)

そうすると、Main画面の数値も微妙に自動的に変更される。

ネットワークの変更はこれで終了。

(6)りんごとオレンジの、trainingデータセット、validationデータセットを読み込む。

(画像はすべてjpgであり、画像の名前は半角英数字である必要がある(2017/10/17追記))

上記の(2)でダウンロードした画像を利用して、NeuralNetworkConsole上にデータセットを作成する。

画面の右上の方にある、DATASET をクリック。

DATASET のすぐ下の、(Open dataset)をクリック。

以下のような画面になるので、Create Dataset をクリック。

以下のような画面が出てくる。

Source Dirの右側の空欄のさらに右側のアイコンをクリックして、

C:\neural_network_console_100\images\appleorange\training\ フォルダを選択した状態で、開く をクリック

Output Dirの右側の空欄のさらに右側のアイコンをクリックして、

C:\neural_network_console_100\datasets\appleorange\  フォルダ(なければ作成する)を開いて、そのまま、保存 をクリック。

Output Color Ch を、3(RGB)を選択。

画面右下のApply をクリック。

すると、数秒で、画像ファイルのdataset作成が行われて、次のような画面が出てくる。

全てのtraining画像が、28x28pixelに変換されている。

ちなみに、datasets/ フォルダの中身は以下のようになっている。

変換後の画像も保存されている。

(6-2)上記と同様に、Validation用の画像も変換する。

画面左側の Validation をクリック。

Open Dataset > Create Dataset

(7)機械学習(training)を行う。

画面右上の CONFIG をクリック

Batch Size を、64 を1に変更する。

画面右上の Training の下の△ボタンをクリック。

すると、もりもり計算されていく。

けっこうかっこいい!

数分で終了。

(8)Validationを行う。

画面右上の、Validation の下の、△ボタンをクリック。

すぐに計算が終わる。画面真ん中上のConfiusion matrix をクリック。

りんご5枚、オレンジ画像5枚、すべて正解してしまっている(おそらく、色で判断しているのとは思われるが)ことが分かる。

とえあえず、なんとか、自前データでNeural network Consoleを使って画像分類することができた!

途中、特に、最初の画像処理の読み込みのところでエラーが出まくって挫折しそうになったが、なんとかできてほっとした。

<結論>

とにかく、公式マニュアルを繰り返し読む。

https://blog.dl.sony.com/259/
Neural Network Console公式マニュアル(日本語)