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

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

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

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

# 2.YOLO v3の変化
・YOLO v2の論文発表から約一年半後、**2018年**に**YOLO v3**の論文が発表されました。
・v1、v2の制作者である**Joseph Redmon氏の最後のバージョン**です。

https://arxiv.org/pdf/1804.02767.pdf

:::note
**YOLO v3**は、、、
### ・v2と比べて物体検出の「精度」は<font color="red">上がりました。</font>(より小さく写っている物体の検出が可能)
### ・v2と比べて物体検出の「速さ」は<font color="blue">ほんの少しだけ下がったモデルもあります。</font>
### ・学習モデルの構造をさらに複雑にした結果が上二つです。
:::

## 2.1.v2とv3の「精度と速度」比較の図
<B>縦軸：上に行くほど物体検出の精度が高い
横軸：左に行くほど物体検出の速度が速い</B>
![yolov2のdiff2.008.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/9ed3e295-80d6-7dc0-2c3c-51f72dc48241.jpeg)
・YOLOv3-320←この<B>「320」</B>の部分は入力画像の<B>サイズ</B>であり、サイズが<B>大きくなる</B>ほど<B>検出速度</B>が<font color="blue"><B>下がる</B></font>ことを意味します。

# 3.具体的な改良点
・YOLO　v3では大きく分けて2つの改良点があります。
#### ◎モデル構造の変更
#### ◎3つのスケールでの物体予測

## ３.1.モデル構造の変更
::: note warn
<B>YOLO v2では、、、</B>
<B>Darknet-19</B>というオリジナルの構造を作って使いました。
:::

:::note
<B>YOLO v3では、、、</B>
<B>Darknet-53</B>というさらに複雑なの構造のモデルを作って使いました。
:::
![v3diff.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/e764d5aa-69c7-e1ce-4873-9076618d837b.jpeg)
・<B>「１９」</B>や<B>「５３」</B>という数字は層の深さ<B>(どれだけの層が重なっているか)</B>を表しています。

要は、
#### <font color="red">分析する層をたくさん増やして、「より精度の高い」学習ができる「モデルの構造」を作ったよ</font>
ということです。
![v3diff.002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/3eaca191-56db-3ea8-a152-d919a0f1bc28.jpeg)
・FPS(モデルの速さを確認する値)YOLO v2と比べて<font color="blue"><B>下がっています。</B></font>


### 3.1.1.Top-1、Top-5って何?

#### <font color="red">モデルの物体検出精度を評価する値</font>
・**値が高い**ほど、モデルの物体検出精度が<B>「良い」</B>を意味します。
![v3diff.003.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/362d8b8a-fe46-ed55-a49c-0aef69c01f08.jpeg)
![v3diff.004.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/079871d0-87ff-2460-a302-387336c2b3d0.jpeg)
・Top-1もTop-5も<B>正解が多い</B>ほど、値が<font color="red"><B>高く</B></font>なります。


## 3.2.3つのスケールでの物体予測

:::note warn
**YOLO v1では、、、**
一つの画像に対して、**7×7**の小さな正方形に分けて各小さな正方形を分析していました。
**YOLO v2では、、、**
一つの画像に対して、**13×13**の小さな正方形に分けて各小さな正方形を分析していました。
:::
:::note
・**YOLO v3では、、、**
一つの画像に対して、<font color="red"><B>13×13、26×26、52×52の３つのスケール</B></font>で、それぞれ各小さな正方形を分析しています。
:::
![v3diff.005.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/ac62e555-c3b5-e145-c4c2-ca9c8f845d5e.jpeg)
・**13×13では大きな物体**を検出し、**26×26では中くらいの物体**を検出し、**52×52では小さな物体**を検出します。
・それぞれの小さな正方形に<B>3個のバウンディングボックス</B>をk-means法で形と大きさを決めて配置しています。<B>((13×13)+(26×26)+(52×52))×3個=10647個</B>のバウンディングボックスを予測している。<font color="blue"><B>→つまり、計算がいっぱいで速度が遅くなってる。</B></font>)
・配置されるバウンディングボックスの3個のサイズはk-means法によりそれぞれ<B>以下のように決まっています。</B>
|スケールのサイズ  |k-means法で決められた3個のアンカーボックスのサイズ  |
|:---:|:---:|
|13×13  |(10×13),(16×30),(33×23)  |
|26×26  |(30×61),(62×45),(59×119)  |
|52×52  |(116×90),(156×198),(373×326)  |

・このような**色々なスケールの物体を検出できるネットワーク**を
### <font color="red">FPN(Feature Pyramid Networks)</font>
と言います。
![v3diff.006.jpeg.001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2658998/03ea8f6a-3b37-0857-0418-84cdf917983c.jpeg)
・<B>小さなスケールの部分で小さな物体</B>を検出し、<B>中くらいのスケールの部分で中くらいの物体</B>を検出し、<B>大きなスケールの部分で大きな物体</B>を検出し、それぞれを**結合**しています。

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

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



# 参考サイト

・YOLO v3論文

https://arxiv.org/pdf/1804.02767.pdf


・FPN論文

https://arxiv.org/pdf/1612.03144.pdf


https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b