目次
NNC(Neural Network Console)(SONY)で自前データで画像分類
このソフトのよいところは、画像を用意しておけば、pythonのコードを一切書くことなく、画像の前処理もある程度のところまでやってくれるところにあると思います。
以下に、Google画像検索で拾ってきたりんご画像30枚と、オレンジ画像30枚を学習させて、新しいりんご画像とオレンジ画像を識別させてみた記事を記載しましたので、ぜひご覧ください。
自前のデータでNeuralNetworkConsole(SONY)で画像分類(1)
http://twosquirrel.mints.ne.jp/?p=19813
動画にしてみました。
<html>
<iframe width=“560” height=“315” src=“https://www.youtube.com/embed/iuazqlhc-FA” frameborder=“0” gesture=“media” allowfullscreen></iframe>
</html>
<html>
<iframe width=“560” height=“315” src=“https://www.youtube.com/embed/_MoPfG5UpMs” frameborder=“0” allowfullscreen></iframe>
</html>
<html>
<iframe width=“560” height=“315” src=“https://www.youtube.com/embed/4xRDMXqR8EA” frameborder=“0” gesture=“media” allowfullscreen></iframe>
</html>
開発環境
Panasonic CF-RZ4
Windows8.1 Pro (64-bit)
Microsoft Visual C++ 2015 再頒布可能パッケージ Update 3 RC
Neural Network Console_V1.0.0
なお、Neural Network Consoleのインストールフォルダ(ダウンロードしたZIPファイルを解凍した中身の保存フォルダ)は、
C:\neural_network_console_100\ フォルダ
とします。
1. フォルダの作成と、画像ファイルの用意
りんご30枚+5枚、オレンジ30枚+5枚を、googleの画像検索で拾ってきて保存するための場所を作成します。
C:\neural_network_console_100\ フォルダの下に、新たに、
images\ フォルダ
datasets\ フォルダ
projects\ フォルダ
を作成します。
さらに、images\ フォルダの中に、
appleorange\ フォルダ
を作成し、その中に、
training\
|-apple\
|-orange\
validation\
|-apple\
|-orange\
のフォルダを作成します。
2. 画像のダウンロードと保存
りんご30枚+5枚、オレンジ30枚+5枚を、googleの画像検索で拾ってきて、以下のように、名前を、半角英数字でjpg画像を保存します。このときの注意点としては、半角英数字かつjpg画像である必要があります。名前に日本語などの全角文字が入って至り、png画像などのjpg以外の画像だと、後で、うまくいかない可能性が高いです。
C:\neural_network_console_100\images\appleorange\training\apple
りんご画像、約30枚(名前は半角英数字でjpg画像にする)
C:\neural_network_console_100\images\appleorange\training\orange
オレンジ画像、約30枚(名前は半角英数字でjpg画像にする)
C:\neural_network_console_100\images\appleorange\validation\apple
りんご画像、約5枚(名前は半角英数字でjpg画像にする)
C:\neural_network_console_100\images\appleorange\validation\orange
オレンジ画像、約5枚(名前は半角英数字でjpg画像にする)
3. Neural Network Console(SONY)の起動
4. サンプルプロジェクトを名前をつけて保存
サンプルプロジェクトの、”02_binary_cnn.sdcproj”をクリック。
画面右上のimage(Save as)をクリックして、
C:/neural_network_console/projects/ フォルダの下に、「101_apple_orange_cnn.sdcproj」という名前でプロジェクトを名前をつけて保存(02_binary_cnn.sdproj を別名で保存)。
以下のような画面になります。
この後の流れ
このサンプルは、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)を行う
という流れとなります。
5. ネットワークのInputの変更
最初の入力を、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データセットを読み込みます。
7. 学習(training)
画面右上の CONFIG をクリック
Batch Size を、64 から1に変更する。
画面右上の Training の下の△ボタンをクリックすると、学習が始まり、グラフが自動的に生成されていきます。
8. 学習結果を評価(evaluation)
参考文献
公式マニュアル
https://blog.dl.sony.com/259/
日本語のドキュメントがあります!とにかく、公式マニュアルを読んでやるのが一番です!
リンク