実現したいこと
YOLOv5で自前の学習画像を用いて2クラス分類を行いたいです。
※ここではクラス名は 'A' , 'B' とします。
発生した問題点
YOLOv5で自前の画像で学習させ、別のテスト画像でテストした結果、すべてのテスト画像がクラス ’A’ に分類されていまい正しく分類してくれないことに困っています。
また、学習後に自動で出力される画像を確認してみたところ、以下のような画像が出力されました。見てみると、train とval は減少して収束しているように見えます。しかし、適合率(precision)と再現率(recall)は、様々なパラメータなどで何度も試しましたが 、適合率が 0.5、再現率が 1.0 とある値にいきなり収束してしまっているように思います。
これらの問題を解決できる良い方法は何かございませんでしょうか?
試したこと
前提としてデータセットは以下のもので試しました。
学習画像:クラス 'A' :約1200枚、クラス 'B' :約1200枚
検証画像:今回は学習画像と同じに設定
テスト画像:約1000枚
エポック数に関しては、上の画像では200ですが、増やしても再現率・適合率はずっと変わりませんでした。
再現率が1.0とコンスタントに異常に高いのは学習がうまくいっておらず、すべてクラス 'A' に分類されてしまっているからなのでは?と考え様々なハイパーパラメータを試してみましたが、結局、適合率・再現率は変わらずすべてのテストデータがクラス'A'に分類されていしまいました。
試したハイパーパラメータは、デフォルトのハイパーパラメータ設定ファイルの hyp.scratch-low.yaml の
lr1 や lr0 を 0.001 から 0.01 に下げてみたり、ほかにも閾値?と思われる、anchor_t (anchor-multiple threshold) や iou_t (IOU traning threshold)などを様々な値で試したりしましたがうまくいきませんでした。
あなたの回答
tips
プレビュー