今回の概要
- 精度が低下した理由について
- 精度向上のための考察
作業内容
- 精度が落ちる理由について
いままではデータをシャッフルして学習していましたが、今回の場合はシャッフルしないほうが汎化性能を高めるためには重要であると確信しました。
image argumentationを行ってもCNNで共通の特徴が抽出される可能性が高いため、これをシャッフルした場合には学習データと検証データに似たデータが有るために汎化性能を測る上では良くありません。
そこで、シャッフルせずにVGG19に3層の全結合層で試した結果、loss = 5.122568597793579
となり、検証データの精度も全く上がりませんでした。
また、iPhoneで撮影した写真でテストしてみるとすべて0.045
となり、全く当てにならない値になってしまいました。
現時点ですと、以前までの手法のほうが良い結果が出たのではないかと考えられます。
そこで、今までの検討で変更した部分をテストデータで試行してみます。
まずは、検討の最初に行った出力変数を体積にするモデルを試してみました。
結果は、この時点から精度が悪化していることが分かりました。
相対誤差の範囲が30~120%と修正前のものより分散と最悪値が大きくなっているため、これらの変更は良いものとは言えません。
しかし、今までのデータも今回のデータも同じ家電に対しては似た値を示しています。
結果は以下に示します。
結果
results20200606.txt loss: 0.183223158121109 , acc: 0.0 [[0.40894938] [0.40193376] [0.341351 ] [0.13559507] [0.18933596] [0.33866742] [0.33038357]]
精度向上のための考察
これらの結果から、VGG19での学習では似ている家電の分別は可能なものの、回帰値として体積を算出する場合には大きな誤差を伴うということがわかってきました。
つまり、VGG19では家電の種類の分別は可能であることは確認できましたが、回帰値として体積などの値は抽出が難しいことが言えます。
そこで、これに続く案としてとしては、機能を大幅に制限する案となりますが、家電の種類毎に分類したあとに、その家電に対するモデルを設けて体積を判別させる方法があります。
まずはSSDなどで家電の画像を抽出して、切り取った画像から統計モデルで学習し、体積を回帰値として算出するものになります。
もう1つの案は、深度推定アルゴリズムとSSDを併用した体積推定アルゴリズムです。
深度推定アルゴリズムにより空間的な解釈を見出し、SSDで標的家電を抽出して、それらのデータを全結合やSVMなどの統計モデルで体積値と対応付ける手法です。
どちらも複雑なアルゴリズムであるため、前もっての見極めが必要と考えられます。
次回は、そのための考察を行います。