Tensorflow(Keras)を使ったマルチクラスの画像認識を試しています。
精度向上を目指して調査しているのですが、精度の出方に疑問があり困っています。
分類クラスは数千件、ImageGeneratorによる水増し、VGG16によるファインチューニングを行い、モデルの最終val_lossは0.1以下、検証結果はほぼ100%です。
以下、サンプル画像としていらすとやさんの素材を使用しています。(実際に使っている画像は写真なのですが、権利の関係でサンプルで失礼します)
学習後、以下のような画像を認識させた場合、正しくサーバルと認識されません(全く別のラベル「ワニ」等が出る。サーバルは全く上位に来ない)。
ですが以下のように「認識対象の画像に、学習元データを15%程透過した状態で重ねる」と「サーバル」とほぼ100%で認識されます。
(学習元データの透過率を100%にすると当然正しく認識出来ます)
学習不足ならば透過状態でも認識出来ないでしょうし、
過学習だとしても元画像を15%程度加えたぐらいで認識出来るようになるものなのでしょうか?
(もしくは「それぐらい強固に過学習してしまっている」と見るべきなのでしょうか?)
人間の眼で見る分には、認識対象画像と元画像を重ねた画像で大きな差異は見当たりません。
他要因として、色味・ノイズ量・ぼかしなども確認しましたが影響は無さそうでした。
(参考までに、認識対象画像をモノクロにするとトップ5位ぐらいにサーバルが入るようになりますが、トップにはなりません)
通常の精度向上というと、学習時のパラメータ・水増し時のパラメータ・認識対象画像の調整になるかなと思いますが、上記の状態なのでどの方針で進むべきかもよく分かっていません。
何かしらヒントになるような情報だけでも貰えると嬉しいです。
回答1件
あなたの回答
tips
プレビュー