質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

868閲覧

画像認識精度に対する疑問と改善方法について

sakura_hana

総合スコア11427

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

1グッド

1クリップ

投稿2019/05/14 07:31

Tensorflow(Keras)を使ったマルチクラスの画像認識を試しています。
精度向上を目指して調査しているのですが、精度の出方に疑問があり困っています。

分類クラスは数千件、ImageGeneratorによる水増し、VGG16によるファインチューニングを行い、モデルの最終val_lossは0.1以下、検証結果はほぼ100%です。
以下、サンプル画像としていらすとやさんの素材を使用しています。(実際に使っている画像は写真なのですが、権利の関係でサンプルで失礼します)

学習元データは以下とします(ラベルは「サーバル」)。
イメージ説明

学習後、以下のような画像を認識させた場合、正しくサーバルと認識されません(全く別のラベル「ワニ」等が出る。サーバルは全く上位に来ない)。
イメージ説明

ですが以下のように「認識対象の画像に、学習元データを15%程透過した状態で重ねる」と「サーバル」とほぼ100%で認識されます。
(学習元データの透過率を100%にすると当然正しく認識出来ます)
イメージ説明

学習不足ならば透過状態でも認識出来ないでしょうし、
過学習だとしても元画像を15%程度加えたぐらいで認識出来るようになるものなのでしょうか?
(もしくは「それぐらい強固に過学習してしまっている」と見るべきなのでしょうか?)

人間の眼で見る分には、認識対象画像と元画像を重ねた画像で大きな差異は見当たりません。
他要因として、色味・ノイズ量・ぼかしなども確認しましたが影響は無さそうでした。
(参考までに、認識対象画像をモノクロにするとトップ5位ぐらいにサーバルが入るようになりますが、トップにはなりません)

通常の精度向上というと、学習時のパラメータ・水増し時のパラメータ・認識対象画像の調整になるかなと思いますが、上記の状態なのでどの方針で進むべきかもよく分かっていません。
何かしらヒントになるような情報だけでも貰えると嬉しいです。

Wind👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/05/14 07:37

元データがないのでわかりませんが、学習画像の背景が似たようなものばかりで過学習しているのでは? 背景の多様性は担保されていますか?
sakura_hana

2019/05/14 08:21

「学習元データ」の方で言えば、縦長・横長の写真が混在しているので、横長は上下を黒・縦長は左右を黒で塗り潰して正方形にしてしまっています。更に水増し時にランダムの拡大縮小(zoom_range)とパースかけ(shear_range)を使っていて、その際出来た隙間も黒埋め(fill_mode='constant')しています。 確かに影響ありそうなので直して試してみます。
tiitoi

2019/05/14 10:18

> 「学習元データ」の方で言えば、縦長・横長の写真が混在しているので、横長は上下を黒・縦長は左右を黒で塗り潰して正方形にしてしまっています。 それはよくないと思います。過学習の原因になります。 画像の大きさが異なる画像を学習させる場合、通常はクロップして揃えるか、アスペクト比が多少崩れてもリサイズで対応します。 画像がよほど縦長、横長でないならば、多少歪んでもリサイズしてサイズを揃えるのが一般的です。オーグメンテーションの際の黒埋めもよくないです。
Q71

2019/05/14 22:25

それと、回転はどうですか?出されている例だと、回転しているようですが。
guest

回答1

0

自己解決

アドバイスを受けて調整したら認識率がアップしました。
tiitoiさん、Q71さん、ありがとうございます。

■学習元データ
縦長・横長の写真が混在しているので、横長の場合は上下を、縦長の場合は左右を黒で塗り潰して正方形にしていました。
この塗り潰し部分が過学習を生んでいたようでした。
また、回転もさせていませんでした(他のやや傾いた画像だと認識出来ていたのですがマグレだったようです)。

■水増し内容を調整
・ランダムクロップを追加。
・ランダム回転を追加。
・隙間の「黒埋め(fill_mode='constant')」を「画像の端の色で塗り潰し(fill_mode='nearest')」に変更。
※なお、これらに加えて元々zoom_range、shear_range、brightness_rangeを加えてます。

投稿2019/05/18 04:07

sakura_hana

総合スコア11427

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問