これまでYOLOv3で作ってきた学習データを、無修正でYOLOv4でそのまま学習させると性能が上がるのかどうか?
また、検出速度の向上はあるのか?
今回はその辺りを検証し、報告します。
ただし、YOLOv4では新たな機能として、学習時に画像処理を行い、モザイクやブレなどを生じさせてデータを水増しする機能がありますが、今回は新しい機能を使わずに検証しています。この機能は、汎化性能を向上させる効果を期待できますので、後日改めて検証します。
HP OMEN 880-000jp Desktop
i7 7700 3.6GHz*8、メモリ32GB
NVidia GeForce GTX1070 8GB
Windows10Professional 64bit
OpenCV 4.2.0
CUDA 10.1.105
cuDNN 7.6.0.64
YOLOv3、YOLOv4の学習時パラメータは下記の通りです。
batch=64
subdivisions=32
width=416
height=416
YOLOv4の方がlossが緩やかに減少していくのがわかります。
また、mAPはピークの位置と収束の仕方に違いがあります。
YOLOv3では、値の振れ幅が大きく、ピーク位置もイテレーションが3000のとき、11000のとき、と数回発生しており、なかなか収束の傾向が見られません。これに対し、YOLOv4の方ではピーク位置が2000イテレーションという早い段階で訪れており、その後はYOLOv3よりも緩やかに値が収束していきました。
1000イテレーションに費やした時間
YOLOv4ではYOLOv3の場合より、おおよそ1.4倍の差があります。
ここでは、1000イテレーションごとに作成されるweightsのうち、イテレーション回数5000以上のPrecisionの結果から中央値を算出して、比較しています。
今回検証したモデルでは、Precisionが3~5%ほど向上しているのがわかります。
label1 | label2 | |||
---|---|---|---|---|
YOLOv3 | YOLOv4 | YOLOv3 | YOLOv4 | |
テスト用の画像数(枚) | 42 | 42 | 17 | 17 |
検出数(枚) | 28 | 31 | 11 | 15 |
->正解(枚) | 27 | 31 | 11 | 14 |
->不正解(枚) | 1 | 0 | 0 | 1 |
検出率(%) | 66.67 | 73.81 | 64.71 | 88.24 |
実際にYOLOv4のモデルで検出処理をしてみると、YOLOv3のときよりも検出数が上がっているのが確認できました。
上記とは別のモデルでも検証してみます。
こちらのモデルでは、最大で約30%向上しています。
label3、label4のように数パーセントしか向上していないものもありますが、対象の特徴がわかりやすく検出しやすい場合や、YOLOv3におけるPrecisionの値が高いといった場合に、そのような傾向がみられました。
RecallとF値はbest.weightsの結果を比較しました。
Precisionと同じく、RecallとF値についても、値が10%以上向上しているのが確認できました。
YOLOv4では、YOLOv3と比較して学習の処理時間がかかるものの、その精度は以前よりも全体的に向上しているということがわかりました。
より精度を求めるのであれば、YOLOv4でモデルを再作成してみるのをお勧めします。
4K(3840x2160)と2K(1920x1080)の内容がまったく同じ動画、静止画に対して、YOLOv3とYOLOv4のモデルを使って検出を行い、その処理速度を比較しました。
動画の処理速度はYOLOv4の方が遅く、静止画の場合もYOLOv4の方が遅いかほぼ同等という結果が得られました。
モデルの性能は向上しますが、残念ながら検出の処理については、学習時と同様、YOLOv3よりも多くの時間が必要になります。
ちなみに、動画処理におけるベンチマークを確認してみると、
という値が得られました。
この結果から、YOLOv4では解像度に関わらずベンチマーク通りの能力が発揮されていることがわかります。一方で、YOLOv3の方では、解像度によって10fpsの差が生まれているので、その部分は改善されたと言えます。
検出結果画像によるPrecison ,Recallなどの目視検証。
今回使用した学習時パラメータは、v3でベストと判断したものをそのまま使っていますが、モデル構造そのものが異なるので、本来であれば学習率やバッチサイズ、イテレーション回数などを広範囲に調査した上で、最適な条件で学習して比較するのがフェアです。
もしかするとスイートスポットがイテレーション2万回以上のところにあるかもしれませんし、Precision、Recall、F値の算出がv3とv4で異なっている可能性があります。
※特に正解のアノテーションが難しい不定形の対象の場合に、IoUがこれらの性能指標に大きな影響を持っていることが分かっています。
YOLOv4では、データの水増しを内部で行うための機能が追加されており、汎化性能の向上に寄与すると推測されます。
今回、YOLOv3と全く同じ条件で、比較をしましたので、v4に最適な条件でチューニングした結果は、また変わって来ると思われます。
mapコマンド周りが大きく改善されましたので、性能評価の後処理部分が大きく改善されている効果も期待できます。
▼この記事を書いたひと
R&Dセンター 野原 佐知世
R&Dの「ちょっとしたものづくり」を主に担当。360°パノラマ、機械学習などシステム、画像処理を中心に活動しています。
●富士見事務所 TEL : 052-228-8733 FAX : 052-323-3337
〒460-0014 愛知県名古屋市中区富士見町13−22 ファミール富士見711 地図
交通部 R&Dセンター