【YOLO】YOLO v4の改良点を簡単にまとめてみた【物体検出アルゴリズム】

# 1.はじめに
https://qiita.com/kindamu24005/items/efd53c7511a40ddac636

https://qiita.com/kindamu24005/items/0c304e6ded20cb6cf5fc

https://qiita.com/kindamu24005/private/b7c7ddb5c3e13c698a45

・上の記事で**YOLO v1**の仕組みと**YOLO v2**と**YOLO v3**の改良点ついて簡単に理解しました。
・今回は次のバージョンである**YOLO v4**に加えられた**改良点**を簡単にまとめてみたいと思います。

# 2.YOLO v4

### v4リポジトリ

https://github.com/AlexeyAB/darknet

:::note
**YOLO v4**は、、、
### ・製作者が「Joseph Redmon氏」から「Alexey Bochkovskiy氏」に変わりました。
### ・v3と比べて物体検出の「精度」は<font color="red">大幅に上がりました。</font>
### ・v3と比べて物体検出の「速さ」は同等です。
### ・GPUが一つあれば「誰でも訓練し、リアルタイムでの推論が可能」になりました。
:::
## 2.1.v3とv4の「精度と速度」比較の図
<B>縦軸：上に行くほど物体検出の精度が高い
横軸：左に行くほど物体検出の速度が速い</B>
![yolov2のdiff2.009.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/1494a9b1-d8e1-7073-3046-32fa533ac9ea.jpeg)

# 3.前提知識
・YOLOなどの**物体検出器**は<B>バックボーン(背骨)</B>と<B>ネック(首)</B>と<B>ヘッド(頭)</B>の<B>3つの層</B>で構成されています。
![v4diff.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/4972c604-4013-dd76-82f9-27e11b1ac082.jpeg)
・**YOLO v3を例**にしてみると、<B>バックボーン(背骨)</B>では<font color="red"><B>「Darknet-53」</B></font>が、<B>ネック(首)</B>では<font color="red"><B>「FPN」</B></font>が、<B>ヘッド(頭)</B>では<font color="red"><B>「YOLO v3」</B></font>のモデル構造がそれぞれ使われていて、これ全体で<B>「YOLO v3」</B>としています。

### ◎YOLO v4はバックボーン、ネック、ヘッドのそれぞれで使われるモデルの組み合わせを色々実験することで、物体検出器を良くしました。
![v4diff.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/1bcc3ac8-6d83-b3d5-289f-2f1a0ef53ba4.jpeg)



# 4.YOLO v4の構造の組み合わせ

|バックボーン|ネック|ヘッド|
|:---:|:---:|:---:|
|<font color="red"><B>CSPDarknet-53|<font color="red"><B>PAN、SPP|<font color="red"><B>YOLO v3|

## 4.1.バックボーン(CSPDarknet-53)
・<B>CSPDarknet-53</B>はYOLO v3で使われていたDarknet-53に<B>「CPSNet」という手法を付け加えた構造</B>になっています。

### 4.1.1.CSPNetって何？
#### <font color="red">CSPNetとは物体検出の精度をあまり落とさずに、計算の量を少なくする手法</font>
![v4diff.003.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/9d5daa71-109f-2a1e-998d-c5de17deaa56.jpeg)
・「バックボーン」に<B>CPS化したDarknet-53</B>、「ネック」には<B>PAN</B>と<B>SPP</B>を選んだやつの<B>APが1番高く</B>なっています。

## 4.2.ネック(PAN、SPP)
### 4.2.1.PAN(Path Aggregation Network)って何？
#### <font color="red">PANとはFPNの改良版</font>
![v4diff.004.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/7c3168f4-8ec6-015d-103a-37ba416da9fe.jpeg)
・PANでは<B>FPNの構造に新たな部分</B>が加えられています。
・この**新たに加えられた部分**によって、FPNよりもさまざまなスケールの物体検出が<B>「正確な位置と共に」</B>検出できるようになります。

### 4.2.2.SPP(Spatial Pyramid Pooling)って何？
#### <font color="red">SPPとは付け加えることによってさらに色んなスケールの物体検出が可能になるもの</font>

・ネックの部分ではこの**PAN**と**SPP**を両方使って検出精度を高めました。

## 4.3.ヘッド(YOLO v3)
### 4.3.1.ヘッドとしてのYOLO v3って何？
#### <font color="red">小さな正方形に分ける→各小さな正方形ごとにバウンディングボックスを予測→クラスも予測、、、のやつ</font>
![v4diff.005.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/f828655e-3d9b-c1e7-1d90-3e8ea1af5845.jpeg)
・詳しくは[<B>YOLO</B>](https://qiita.com/kindamu24005/items/efd53c7511a40ddac636)又は[<B>YOLO v3</B>](https://qiita.com/kindamu24005/private/b7c7ddb5c3e13c698a45)の記事を参照してください。

## 4.4.オプション
・<B>YOLO v4</B>では**大きな部分**で<B>バックボーン</B>、<B>ネック</B>、<B>ヘッド</B>の変更が行われました。
・その他に速さと精度の向上のために、**細かい部分**で<font color="red"><B>様々なオプション</B></font>が付け加えられています。
・論文中ではその**細かい部分でのオプション**を<B>「フリービー」</B>と<B>「スペシャル」</B>といったYOLO v4オリジナルの言葉で表現されています。

### 4.4.1.フリービー(Freebies)って何？
#### <font color="red">検出の速さを遅くすることなく、検出の精度を上げる手法</font>

:::note
**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)って何？
#### <font color="red">検出の速さは少し遅くなるが、検出の精度を上げる手法</font>

:::note
**v4に加えられたスペシャルの種類**
・Mish活性化関数
・Cross-stage partial connections (CSP)
・Multi-input weighted residual connections (MiWRC)
・SPPブロック
・SAMブロック
・PAN（path-aggregation block）
・DIoU-NMS
等
:::
・上記に書いた<B>色んな種類の「フリービー」と「スペシャル」</B>がv4に加えられました。

・つまり、

#### <font color="red">YOLO v3をベースに当時あった色々な手法を組み合わせて作った最強の分類器がYOLO v4だよ</font>

ということです。

# YOLOシリーズ各バージョンの簡単な違いについてのまとめ

https://qiita.com/kindamu24005/items/6374b17cb6a3effa80c6

# 参考

https://arxiv.org/pdf/2004.10934.pdf

https://arxiv.org/pdf/2011.08036.pdf

https://blog.csdn.net/YOULANSHENGMENG/article/details/121909125


https://kikaben.com/yolov4/