1.はじめに
・上の記事でYOLO v1の仕組みとYOLO v2とYOLO v3の改良点ついて簡単に理解しました。
・今回は次のバージョンであるYOLO v4に加えられた改良点を簡単にまとめてみたいと思います。
2.YOLO v4
v4リポジトリ
2.1.v3とv4の「精度と速度」比較の図
縦軸:上に行くほど物体検出の精度が高い
横軸:左に行くほど物体検出の速度が速い
3.前提知識
・YOLOなどの物体検出器はバックボーン(背骨)とネック(首)とヘッド(頭)の3つの層で構成されています。
・YOLO v3を例にしてみると、バックボーン(背骨)では「Darknet-53」が、ネック(首)では「FPN」が、ヘッド(頭)では「YOLO v3」のモデル構造がそれぞれ使われていて、これ全体で「YOLO v3」としています。
◎YOLO v4はバックボーン、ネック、ヘッドのそれぞれで使われるモデルの組み合わせを色々実験することで、物体検出器を良くしました。
4.YOLO v4の構造の組み合わせ
バックボーン | ネック | ヘッド |
---|---|---|
CSPDarknet-53 | PAN、SPP | YOLO v3 |
4.1.バックボーン(CSPDarknet-53)
・CSPDarknet-53はYOLO v3で使われていたDarknet-53に「CPSNet」という手法を付け加えた構造になっています。
4.1.1.CSPNetって何?
CSPNetとは物体検出の精度をあまり落とさずに、計算の量を少なくする手法
・「バックボーン」にCPS化したDarknet-53、「ネック」にはPANとSPPを選んだやつのAPが1番高くなっています。
4.2.ネック(PAN、SPP)
4.2.1.PAN(Path Aggregation Network)って何?
PANとはFPNの改良版
・PANではFPNの構造に新たな部分が加えられています。
・この新たに加えられた部分によって、FPNよりもさまざまなスケールの物体検出が「正確な位置と共に」検出できるようになります。
4.2.2.SPP(Spatial Pyramid Pooling)って何?
SPPとは付け加えることによってさらに色んなスケールの物体検出が可能になるもの
・ネックの部分ではこのPANとSPPを両方使って検出精度を高めました。
4.3.ヘッド(YOLO v3)
4.3.1.ヘッドとしてのYOLO v3って何?
小さな正方形に分ける→各小さな正方形ごとにバウンディングボックスを予測→クラスも予測、、、のやつ
・詳しくはYOLO又はYOLO v3の記事を参照してください。
4.4.オプション
・YOLO v4では大きな部分でバックボーン、ネック、ヘッドの変更が行われました。
・その他に速さと精度の向上のために、細かい部分で様々なオプションが付け加えられています。
・論文中ではその細かい部分でのオプションを「フリービー」と「スペシャル」といったYOLO v4オリジナルの言葉で表現されています。
4.4.1.フリービー(Freebies)って何?
検出の速さを遅くすることなく、検出の精度を上げる手法
v4に加えられたフリービーの種類
・CutMix
・Mosaic data augmentation
・DropBlock正則化
・Class label smoothing
・CIoU損失
・CmBN
・SAT (Self-Adversarial Training)
・Eliminate grid sensitivity
・複数のアンカーを同一の正解データに適用する
・Cosine annealingスケジューラー
・最適なハイパーパラメータ
・訓練にランダムな形を使う(Random training shapes)
等
4.4.1.スペシャル(Specials)って何?
検出の速さは少し遅くなるが、検出の精度を上げる手法
v4に加えられたスペシャルの種類
・Mish活性化関数
・Cross-stage partial connections (CSP)
・Multi-input weighted residual connections (MiWRC)
・SPPブロック
・SAMブロック
・PAN(path-aggregation block)
・DIoU-NMS
等
・上記に書いた色んな種類の「フリービー」と「スペシャル」がv4に加えられました。
・つまり、
YOLO v3をベースに当時あった色々な手法を組み合わせて作った最強の分類器がYOLO v4だよ
ということです。
YOLOシリーズ各バージョンの簡単な違いについてのまとめ
参考