## Yolo v1
1. 沒有使用anchor.
2. 每個cell負責預測2個bbox.
3. 輸出:==(7 x 7 x (B x 5 + C))==

5. 損失函數:

4. 網路架構:

## Yolo v2
1. 有使用anchor. (mAP降低,但是recall提高).
2. 網路都為捲積網路.
3. 輸出:==(13, 13, K, 5 + C)==.
4. 改進:
* ==**Batch Normalization**==: 可增加2%mAP.
* ==**High Resolution Classifie**==: 多尺度訓練網路,每10個epoch後隨機將圖片.resize到320x320、352x352、...608x608,最後下採樣32倍,強制網路去學習多種尺度的圖片. 可增加4%mAP.
* ==**Anchor**==: 使用k-means預先找出適當的bbox. 下降了0.3mAP,但是recall提高7%.
5. 損失函數:

6. 網路架構:

## Yolo v3
1. 改進:
* ==從3個不同大小的feature map去預測物體,在較前面的feature map用較小的anchor box,在最後面的feature map用較大的anchor box==.
* ==骨幹網路加入殘差==.
2. 網路架構:

## Yolo v4
1. 改進:
* ==CSP網路:== 融合高低尺度特徵

* ==Weighted-Residual-Connections (WRC):==
一般殘差網路:
加權殘差網路:
* ==Mish-activation:== 函數較平滑,梯度不會劇烈變化

* ==Cross mini-Batch Normalization (CmBN):== 一般的Batch Normalization適合用在batch size較大時,一旦batch size太小反而會造成訓練不穩定,通過跌代紀錄前幾個batch的均值和方差,來推估更正確的的均值和方差.
* ==使用CIou來計算位置損失:== 原本計算損失方式是直接利用預測的x、y、w、h來去計算l2 loss,這樣變成將每個變數都是獨立的,並沒有考量到物體的完整性. 而純粹利用Iou的話,在沒有與真實框重疊的情況下沒辦法提供損失.
+ GIou:


+ 傾向於先增大預測框的大小,造成訓練緩慢

+ 若預測框剛好在目標框內部,此時 GIOU loss 與 IOU loss 的值一樣,無法區分相對位置。

+ DIou:加入距離懲罰,可以加速收斂


* ==DropBlock:== 以區塊的方式進行dropout,強制網路學習特定部分的特徵

* ==Mosaic:== 一次讀取4張照片各自進行裁切和resize後拼接在一起

* ==Self-adversarial-training (SAT):== 分為兩次反向傳播,第一次反向傳播時不更改任和網路權重,**只更改圖像**,之後再將改變後的圖像輸入給網路進行訓練,這樣的效果類似於把原本網路注重的地方進行更改,強制網路關注其他的細節

* ==網路架構:==

## Yolo v5
1. ==Focus layer:==

2. ==改成GIou loss==
3. ==Backbone的激活函數又改回relu==
4. ==使用PyTorch:== 支持半精度運算,加快推論速度
5. ==自適應圖片縮放:==
在訓練時一樣按照長寬比縮放圖片後,再對圖片進行padding.

在推論時padding scale最小的邊.


6. ==網路架構:==

## Yolo v6
1. ==引入RepVGG結構==(https://arxiv.org/abs/2101.03697)


3. ==使用Anchor-free==
5. ==Decoupled head==

7. ==使用TAL代替SimOTA==
9. ==SIoU 损失==
10. ==分類Loss使用VFL==
11. ==概率Loss使用DFL==
12. ==self-distillation==