TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

DCNNによるマンガキャラクターの顔パーツ検出(追試2)

前回の日記で初期値の変更や正則化やBatch Normalization、フィルター枚数などを変更した場合の効果について調べた。

ここでは、さらに畳み込み層のゼロパティングの有無とカーネルサイズの影響について調べた。

ゼロパティング

畳み込み層のパディングは、一般的に入力サイズと出力サイズを同じにしたい場合に行われる。
しかし、パディングを行うと周辺部の値に良くない影響が出る。
今回の顔パーツ検出のような回帰問題では、あえてパディングを行う必要がないと考えられるため、前回まではパディングを行わなかった。

ここでは、パディングを行った場合の効果について念のため確かめた。
パディングの値として0を使用するゼロパティングを行った。

ゼロパティング training loss test loss
なし 2.97E-05 3.94E-04
あり 3.26E-05 4.22E-04

※1000エポック後のloss
予想の通り、ゼロパディングを行うとlossが増える結果となった。

カーネルサイズ

畳み込み層で使用するカーネルサイズは画像から特徴を抽出するフィルターのサイズとなる。
カーネルサイズが小さくなると表現できるフィルターのパターンが少なくなる。
逆にカーネルサイズが大きいと、より大きなパターンのフィルターとなるが、大きな範囲で特徴を抽出することになり、汎化能力が落ちることが予測される。
また、パディングを行わない場合、畳み込み層の出力のサイズは -カーネルサイズ+1 となるため、カーネルサイズが大きいと層が進むにつれサイズが小さくなることも悪影響があると思われる。

前回までは1,2,3層のカーネルサイズを他の論文を参考にして、4,5,5としていた。
ここでは、それよりも小さいサイズと大きなサイズで数パターン調べた。
結果は以下のようなグラフになった。
f:id:TadaoYamaoka:20170207234225p:plain

小さい場合は明らかにlossが増えている。
大きくした場合もlossが少し増えていそうである。

この結果からは、3,4,4が最もtest lossが小さくなった。
ただし、測定1回のみの結果なので、誤差の範囲かもしれない。
また、カーネルサイズが大きい場合もさらに学習を進めれば、最終的な検出性能は向上するかもしれない。
(論文とか見てもカーネルサイズは説明なしに決められているが、何かノウハウがあるのだろうか?)

このように、最適なハイパーパラメータを決めるには、グリッドサーチなどの手法で複数の値の組み合わせで実験が必要になる。
今回はある程度傾向が見えたのでここまでとする。