【物体検出】YOLO V4 vs V3 精度がどのぐらい向上したのか比較してみた。
動画版は以下です。
YOLO V4とV3で推論を掛けて、その推論結果を比較してみたいと思います。
ソースコードは以下のものを使用しております。
動作環境
OS:Windows10 Home
CPU:Core-i7 9500H
GPU:Geforce GTX 1660TI
CUDA:10.2
CUDNN:7.6.2
OpenCV:4.2.0
データセット:COCO
weight:上記Githubで公開されている学習済みのweight(yolov3.weights, yolov4.weights)
評価結果
dog(V3)
dog(V4)
ポイント
・新しく検出できる物体が増えた!
eagle(V3)
eagle(V4)
ポイント
・タカを囲む□(以下、この物体を囲む□のことをbboxと呼ぶ)がより正確になった!
giraffe(V3)
giraffe(V4)
ポイント
・シマウマをキリンと誤検出していたものがなくなって、誤検出しなくなった!
horses(V3)
horses(V4)
ポイント
・今まで未検出だった5頭目が検出できるようになった!
person(V3)
person(V4)
ポイント
・bboxがもともと精度が高いものでも、更にギリギリで囲めるようになった!
scream(V3)
scream(V4)
ポイント
・絵画は難しい?学習に使うデータセットには類似したものがないとはいえ、全く検討違いの判定をするのは興味深い。
・逆に今まで人の感性で見ていたものも、忖度なしで評価するから、新しい観点で評価して価値を発見するかも・・?(※個人的な見解です)
まとめ
YOLO V4はV3に比べて、かなりDLの構造が深くなっています。
V3に比べて検出精度がかなり向上している反面、計算コストがあがっており、処理速度はV3に比べて遅くなっています。
FPSでいうとV4が13程度に対して、V3が7程度でした。
速度に関してはこちらの動画を参照ください。
実用レベルを目指して、精度の面を重視した変更が多数盛り込まれたようです。
詳細は以下の論文を。
V3のような物体検出アルゴリズムは、物体が少し傾くと、その物体を判定できないことが多々ありました。
しかしV4ではかなり傾けていても、一部しか写っていなくても、検出できることが増えたように感じます。
V3の速度とV4の精度があれば、かなり実用性のあるものになりそうです。
Jetson Nanoやラズパイのようなエッジデバイスで動かせるレベルになれる日も近い気がします。
今回はここまで!