FC2カウンター FPGAの部屋 白線追従走行用畳み込みニューラルネットワークの製作13(9075枚のトレーニング用画像データで学習)

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

白線追従走行用畳み込みニューラルネットワークの製作13(9075枚のトレーニング用画像データで学習)

白線追従走行用畳み込みニューラルネットワークの製作12(テスト用画像ファイルとラベル・ファイルの作成)”の続き。

前回で、4125 個のテスト用画像データを作ることができた。9075 個のトレーニング用画像データを使用して、今回は学習をしてみようと思う。

まずは、C:\Users\Masaaki\Google ドライブ\Python\deep-learning-from-scratch\dataset_straight に9075 個のトレーニング用画像データのtrain_straight_run_image と train_straight_run_label 、4125 個のテスト用画像データの test_straight_run_image と test_straight_run_label をコピー&ペーストした。
wlt_cnn_69_170823.png

同じフォルダの straight_dataset.py を修正した。
wlt_cnn_70_170823.png

C:\Users\Masaaki\Google ドライブ\Python\deep-learning-from-scratch\ch07_straight フォルダのDLFS_Chap7_integer.ipynb を jupyuter Notebook で開いて、train_convnet.py を実行して学習を行った。
ニューラルネットワークの階層は畳み込み層 - ReLU - プーリング - 全結合層 - ReLU - 全結合層 - softmax だ。
wlt_cnn_71_170823.png

畳み込みフィルタ数(CONV数) 30 個で、max_epochs = 10 の学習結果の精度は約 92.0 % だった。画像を増やす前は七十パーセント台だったので、だいぶ精度が良くなった。
wlt_cnn_72_170823.png

いろいろとCONV数と max_epochs を変えて精度を調べたデータを示す。ただし、複数回学習すると同じパラメータでも精度が 10 % 程度変動することがある。今回のデータは平均したデータではなく、1回やってみて出たデータである。

直線走行CONV_NNのCONV数とmax_epochsによる精度の違い
トレーニング画像数9075、テスト画像数4125

CONV=30, max_epochs = 10
pool_output_size =2340
test acc:0.854545454545

CONV=30, max_epochs = 20
test acc:0.888

CONV=30, max_epochs = 40
test acc:0.875636363636

CONV=30, max_epochs = 60
test acc:0.843636363636

CONV=30, max_epochs = 80
test acc:0.877575757576


CONV=10, max_epochs = 10
pool_output_size =780
test acc:0.941333333333

CONV=10, max_epochs = 20
test acc:0.931878787879

CONV=10, max_epochs = 40
test acc:0.900121212121

CONV=10, max_epochs = 60
test acc:0.868848484848

CONV=10, max_epochs = 80
test acc:0.881454545455


CONV=8, max_epochs = 10
pool_output_size =624
test acc:0.900363636364

CONV=8, max_epochs = 20
test acc:0.908606060606

CONV=8, max_epochs = 40
test acc:0.919515151515


CONV=6, max_epochs = 10
pool_output_size =468
test acc:0.882666666667

CONV=6, max_epochs = 20
test acc:0.923151515152

CONV=6, max_epochs = 40
test acc:0.901818181818


CONV=12, max_epochs = 10
pool_output_size =936
test acc:0.938424242424

CONV=14, max_epochs = 10
pool_output_size =1092
test acc:0.900848484848

CONV=16, max_epochs = 10
pool_output_size =1248
test acc:0.955151515152

CONV=18, max_epochs = 10
pool_output_size =1404
test acc:0.930666666667

CONV=20, max_epochs = 10
pool_output_size =1560
test acc:0.935272727273

CONV=22, max_epochs = 10
pool_output_size =1716
test acc:0.928

CONV=24, max_epochs = 10
pool_output_size =1872
test acc:0.843393939394

CONV=26, max_epochs = 10
pool_output_size =2028
test acc:0.922181818182

CONV=28, max_epochs = 10
pool_output_size =2184
test acc:0.914666666667


CONV=4, max_epochs = 10
pool_output_size =312
test acc:0.889696969697

CONV=4, max_epochs = 20
test acc:0.933575757576

CONV=4, max_epochs = 40
test acc:0.908363636364


CONV=3, max_epochs = 10
pool_output_size =234
test acc:0.837090909091

CONV=3, max_epochs = 20
test acc:0.918545454545

CONV=3, max_epochs = 40
test acc:0.879515151515


CONV=2, max_epochs = 10
pool_output_size =156
test acc:0.922181818182

CONV=2, max_epochs = 20
test acc:0.947878787879

CONV=2, max_epochs = 40
test acc:0.895272727273


max_epochs = 10 の時のCONV数における精度のグラフを書いてみた。
wlt_cnn_73_170824.png
先ほど書いたように値には変動があるが、傾向は見られると思う。案外、CONV数 2 でも精度が出ている。これだったらPYNQ ボードでなくても ZYBO に畳み込みニューラルネットワークが入るかもしれない?

CONV数 2 、max_epochs = 20 でやってみたところ、精度は約 93.1 % だったので、使えそうだ。
wlt_cnn_74_170824.png
  1. 2017年08月24日 05:04 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3893-7a13b78c
この記事にトラックバックする(FC2ブログユーザー)