前提
私は2022年11月から機械学習の勉強を始めた者です。
現在私はキャッサバの葉の画像から病害を判定する画像分類モデルをNeural_Network_Consoleを用いて作成しようとしています。(https://www.kaggle.com/c/cassava-leaf-disease-classification
↑のURLのコンペで使われたものだと思われるんですが違うかもしれません)
neural_network_consoleのYoutubeの解説動画等を参考にして高精度化に努めましたがなかなか成果が出ない状況にあり、自分が試した方法が正しいものなのかを確認したいです。
【与えられたデータセット】
約2万枚の葉のデータセット。ラベル(病害)は
0: Cassava Bacterial Blight (CBB)
1: Cassava Brown Streak Disease (CBSD)
2: Cassava Green Mottle (CGM)
3: Cassava Mosaic Disease (CMD)
4: Healthy
であり、フォルダ分けされています。画像数はそれぞれ
0:931枚
1:1876枚
2:2045枚
3:11279枚
4:2209枚
です。葉っぱ以外しか映っていない画像や作業員がピースしているだけなどの画像も含まれてます。
【データセットに対して行ったこと】
与えられたデータセットのデータクレンジング(葉の模様が確認できる画像以外を除去)を行い、各ラベルは
0:913枚
1:1767枚
2:2001枚
3:11040枚
4:2094枚
となりました。ここからテスト用に各ラベル100枚ずつ別フォルダに保存しました。
残りの画像にAugmentor(https://hacknote.jp/archives/40200/)
を用いて水増しした、①各ラベル5000枚のデータセットと②各ラベル11000枚のデータセットを作成しました。なお画像サイズは224*224としました。
【学習モデルの検討】
neural_network_consoleのYoutubeにて紹介されてResNet18を使おうと思い、https://support.dl.sony.com/wp-content/uploads/sites/2/2020/01/17052647/starter_guide_Image_classification.pdf
を参考にして、neural_network_console内のResnet18のサンプルモデルに①と②のデータセットを用いて学習を行いました。学習モデルと①と②の学習曲線、①と②の評価における混合行列を以下に示します。
↑学習モデル(サンプルにあったResnet18)
↑①訓練画像各5000枚の学習曲線
↑②訓練画像各11000枚の学習曲線
↑①訓練画像各5000枚の混合行列
↑②訓練画像各11000枚の混合行列
質問したいこと
(1)上記に示した学習曲線ではTRAIN ERRORが表示されていないが、これは正常な動作なのか
(2)上記に示した混合行列を見ると、各ラベルの画像数が少ないほうがaccuracyが高いことがわかる。訓練画像データを増やしても、必ずしも精度が上がる訳ではないのか。またその場合、訓練画像データの水増しはどの程度まで行うのが効果的なのか。(元画像1枚につき〇枚の水増しを行うと良い等)
(3)今回のようにVALIDATION ERRORが振動する理由とその対策について
(4)Resnet18を使うという条件のもとで行える精度向上手法はどのようなものがあるか。(データセット拡張やResnet18に別の手法を組み合わせる等)
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー