以前作object detection用到的都是two stage,one stage如YOLO、SSD不多接觸,這裏開一篇blog簡單回顧該系列的發展。很抱歉,我本人只能是走馬觀花,不少細節也沒有弄清楚。有需求的朋友請深刻論文和代碼,我在末尾也列出了不少優秀的參考文章。html
You Only Look Once: Unified, Real-Time Object Detectiongit
將輸入圖片分割爲\(S\times S\)網格,若是物體的中心落入網格中央,這個網格將負責檢測這個物體。所以網絡學會了去預測中心落在該網格中的物體。網絡
每一個網格預測\(B\)個bounding boxes和confidence scores。confidence scores包含兩方面:架構
所以,confidence scores可定義爲$Pr(Object)*IoU^{truth}_{pred} $ide
每一個bbox包含5個predictions:\(x,y,w,h和confidence\):\((x,y)\)表示bbox中心座標,\(h,w\)表示bbox長寬,\(confidence\)表示pred和gt box的IoU。測試
每一個網格預測\(C\)個類別機率\(Pr(Class_i|Object)\),表示該網格負責預測的邊界框目標屬於各種的機率。咱們不考慮box的數量即\(B\)。ui
測試階段咱們將類別機率和confidence score相乘,得每一個box的類特定confidence score:spa
\[Pr(Class_i|Object)*Pr(Object)*IoU^{truth}_{pred}=Pr(Class_i)*IoU^{truth}_{pred}\]3d
表示box中類別出現的機率和預測box與目標的擬合程度。orm
將圖片分解爲$S\times S \(個gird,每一個grid預測\)B\(個bbox,confidence和\)C\(個類機率,預測值爲\)S\times S \times (B*5+C)$
網絡結構參考GooLeNet,包含24個卷積層和2個激活層,卷積層使用1x1卷積降維而後跟3x3卷積。對於卷積層和全鏈接層,採用Leaky ReLU:\(max(x,0.1x)\),最後一層採用線性激活層。
網絡輸出維度爲30(\(B=2\)),前20個元素是類別機率值,而後2個是邊界框置信度,最後8個是bbox的\((x,y,w,h)\)。
第一項是bbox中心座標偏差項;第二項是bbox高與寬偏差項;
第三項是包含目標bbox置信度偏差項;第四項是不包含目標bbox置信度偏差項;
最後一項是包含目標的grid分類偏差項。
將Loss對應到predtion張量上:
SSD:Single Shot MultiBox Detector
速度比YOLO快,精度能夠跟Faster RCNN媲美。
採用多尺度特徵圖用於檢測:大特徵圖檢測小目標,小特徵圖檢測大目標。
採用卷積進行檢測:與YOLO最後採用全鏈接層不一樣,SSD直接採用卷積提取檢測結果。
設置先驗框:借鑑Faster RCNN中anchor理念,爲每一個網格設置不一樣長寬比的anchor,bbox以anchor爲基準。
在VGG16基礎上增長了卷積層得到更多特徵圖用於檢測。
上是SSD,下是YOLO
YOLO9000: Better, Faster, Stronger
YOLOv1雖然檢測速度快,但檢測精度不如RCNN,YOLOv1定位不夠準確,召回率也低。因而YOLOv2提出了幾種改進策略來提高YOLO模型的定位準確度和召回率,並保持檢測速度。
Better
Batch Normalization:加快收斂並起到正則化效果,防止過擬合。
High Resolution Classifier:在ImageNet數據上使用\(448\times448\)輸入來finetune。
Convolutional With Anchor Boxes:借鑑Faster R-CNN中RPN的anchor boxes策略,預測offset而不是coordinate。
Dimension Clusters:採用k-means來替代人工選取anchor。並使用下式來度量距離。
\[d(box,centroid)=1-IOU(box, centroid)\]
Direct location prediction:改變了預測bbox的計算公式
Multi-Scale Training:每隔10batch,網絡隨機選擇新的圖像尺寸。
Faster
Stronger
YOLOv3: An Incremental Improvement
[1]Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 779-788.
[2]Liu W, Anguelov D, Erhan D, et al. Ssd: Single shot multibox detector[C]//European conference on computer vision. Springer, Cham, 2016: 21-37.
[3]Redmon J, Farhadi A. YOLO9000: better, faster, stronger[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 7263-7271.
[4]Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
What do we learn from single shot object detectors (SSD, YOLOv3), FPN & Focal loss (RetinaNet)?