各種ネットワーク構造の表現力検証
ドイツの交通標識データセットを使って各種ネットワーク構造の表現力を調べていきたいと思います。評価するネットワークは、AlexNet, VggNet16, ResNet50, InceptionV3の4種類になります。
1) ネットワーク表現力の検証
トレーニングデータは十分にあるため、パラメータをランダム値から出発して再トレーニングする場合に達成可能な精度を見比べると、データセットに対するネットワークの表現力を検証することができます。
再トレーニングしたネットワークの中で、InceptionV3を使った認識が最もよい精度を得ることができます。
また、Kerasライブラリ中のVggNet16, ResNet50とInceptionV3は、それぞれ1526万2059個、3206万8523個、2189万891個のパラメータを持っており、一EPOCHのトレーニング時間はそれぞれ13s、20s、63sとなります。その結果からみると、トレーニング時間は必ずしもパラメータ数と比例しない。特にInceptionV3は、ResNet50に比べてパラメータ数が3割ほど減っているのにも関わらず、トレーニング時間が三倍となっており、Kerasライブラリ中のInceptionV3ネットワークは並列度を十分に引き出せる実装になっていない可能性が高いです。
2) 移転学習の効果、
Kerasライブラリ中のVggNet16, ResNet50とInceptionV3を使う際に、ImageNetのトレーニングで得たパラメータを変更せずに移転学習を行うと、更新するパラメータ数が出力のフルコネクト層に限られるため、トレーニング時間が短縮させることができます。実験の結果、VggNet16が13sから6s, ResNet50が20sから7s、InceptionV3は63sから26sへ短縮することができたようです。しかし、移転学習を行った結果、各ネットワークで得られるピーク精度も変わり、InceptionV3が必ずしも良い精度が得られるネットワークではなくなります。
実験に使用したコード:
AgvPython/trafficsign_transfer.py at master · GerryZhang0925/AgvPython · GitHub