基本思想V1:
- 將輸入圖像分成S*S個格子,每隔格子負責預測中心在此格子中的物體。
- 每個格子預測B個bounding box及其置信度(confidence score),以及C個類別概率。
- bbox信息(x,y,w,h)為物體的中心位置相對格子位置的偏移及寬度和高度,均被歸一化.
- 置信度反映是否包含物體,以及包含物體情況下位置的准確性。定義為Pr(Object)×IoU,其中Pr(Object)∈{0,1}
改進的V2:
YOLO v2主要改進是提高召回率和定位能力。
- Batch Normalization: v1中也大量用了Batch Normalization,同時在定位層后邊用了dropout,v2中取消了dropout,在卷積層全部使用Batch Normalization。
- 高分辨率分類器:v1中使用224 × 224訓練分類器網絡,擴大到448用於檢測網絡。v2將ImageNet以448×448 的分辨率微調最初的分類網絡,迭代10 epochs。
- Anchor Boxes:v1中直接在卷積層之后使用全連接層預測bbox的坐標。v2借鑒Faster R-CNN的思想預測bbox的偏移,移除了全連接層,並且刪掉了一個pooling層使特征的分辨率更大。調整了網絡的輸入(448->416),以使得位置坐標為奇數,這樣就只有一個中心點。加上Anchor Boxes能預測超過1000個。檢測結果從69.5mAP,81% recall變為69.2 mAP,88% recall.
- YOLO v2對Faster R-CNN的首選先驗框方法做了改進,采樣k-means在訓練集bbox上進行聚類產生合適的先驗框。由於使用歐氏距離會使較大的bbox比小的bbox產生更大的誤差,而IoU與bbox尺寸無關,因此使用IOU參與距離計算,使得通過這些anchor boxes獲得好的IOU分值。
- 細粒度特征(fine grain features):借鑒了Faster R-CNN 和 SSD使用的不同尺寸的feature map,以適應不同尺度大小的目標。YOLOv2使用了一種不同的方法,簡單添加一個pass through layer,把淺層特征圖連接到深層特征圖。通過疊加淺層特征圖相鄰特征到不同通道(而非空間位置),類似於Resnet中的identity mapping。這個方法把26x26x512的特征圖疊加成13x13x2048的特征圖,與原生的深層特征圖相連接,使模型有了細粒度特征。此方法使得模型的性能獲得了1%的提升。
- Multi-Scale Training: 和YOLOv1訓練時網絡輸入的圖像尺寸固定不變不同,YOLOv2(在cfg文件中random=1時)每隔幾次迭代后就會微調網絡的輸入尺寸。訓練時每迭代10次,就會隨機選擇新的輸入圖像尺寸。因為YOLOv2的網絡使用的downsamples倍率為32,所以使用32的倍數調整輸入圖像尺寸{320,352,…,608}。訓練使用的最小的圖像尺寸為320 x 320,最大的圖像尺寸為608 x 608。 這使得網絡可以適應多種不同尺度的輸入。
- V2對V1的基礎網絡也做了修改。
改進的YOLO V3:
- 多尺度預測 ,類似FPN(feature pyramid networks)
- 更好的基礎分類網絡(類ResNet)和分類器
分類器:
- YOLOv3不使用Softmax對每個框進行分類,而使用多個logistic分類器,因為Softmax不適用於多標簽分類,用獨立的多個logistic分類器准確率也不會下降。
- 分類損失采用binary cross-entropy loss.
多尺度預測
- 每種尺度預測3個box, anchor的設計方式仍然使用聚類,得到9個聚類中心,將其按照大小均分給3中尺度。
- 尺度1: 在基礎網絡之后添加一些卷積層再輸出box信息。
- 尺度2: 從尺度1中的倒數第二層的卷積層上采樣(x2)再與最后一個16x16大小的特征圖相加,再次通過多個卷積后輸出box信息.相比尺度1變大兩倍。
- 尺度3: 與尺度2類似,使用了32x32大小的特征圖.
基礎網絡 Darknet-53:
仿ResNet, 與ResNet-101或ResNet-152准確率接近。
基礎網絡如下。


參考了:
http://www.cnblogs.com/makefile/p/YOLOv3.html
https://blog.csdn.net/qq_37541097/article/details/81214953
https://pjreddie.com/darknet/
