1. 程式人生 > >目標檢測 — one-stage檢測(二)

目標檢測 — one-stage檢測(二)

vol 最大 由於 直接 nta -c loss 機制 階段

  one-stage檢測算法,其不需要region proposal階段,直接產生物體的類別概率和位置坐標值,經過單次檢測即可直接得到最終的檢測結果,因此有著更快的檢測速度,比較典型的算法如YOLO,SSD,Retina-Net。

4、SSD(2016)

  SSD結合了YOLO中的回歸思想和Faster-RCNN中的Anchor機制,使用全圖各個位置的多尺度區域特征進行回歸,既保持了YOLO速度快的特性,也保證了窗口預測的跟Faster-RCNN一樣比較精準。

  SSD的核心是在特征圖上采用卷積核來預測一系列Default Bounding Boxes的類別、坐標偏移。為了提高檢測準確率,SSD在不同尺度的特征圖(5個)上進行預測。

  技術分享圖片

模型設計:

(1)采用多尺度特征圖用於檢測

  所謂多尺度采用大小不同的特征圖,CNN網絡一般前面的特征圖比較大,後面會逐漸采用stride=2的卷積或者pool來降低特征圖大小,利用多個尺度圖來做檢測,比較大的特征圖來用來檢測相對較小的目標,而小的特征圖負責檢測大目標。

(2)采用卷積進行檢測

  SSD直接采用卷積對不同的特征圖來進行提取檢測結果。對於形狀為m*m*p的特征圖,只需要采用 3*3* p這樣比較小的卷積核得到檢測值。減少參數量。

(3)設置先驗框

  SSD借鑒了Faster R-CNN中anchor的理念,每個單元設置尺度或者長寬比不同的先驗框,預測的邊界框(bounding boxes)是以這些先驗框為基準的,在一定程度上減少訓練難度。

訓練技巧:

(1)先驗框匹配

  在訓練過程中,首先要確定訓練圖片中的ground truth(真實目標)與哪個先驗框來進行匹配,與之匹配的先驗框所對應的邊界框將負責預測它。

  SSD的先驗框與ground truth的匹配原則主要有兩點。首先,對於圖片中每個ground truth,找到與其IOU最大的先驗框,該先驗框與其匹配。第二個原則是:對於剩余的未匹配先驗框,若某個ground truth的 技術分享圖片 大於某個閾值(一般是0.5),那麽該先驗框也與這個ground truth進行匹配。

  為了保證正負樣本盡量平衡,SSD采用了hard negative mining,就是對負樣本進行抽樣,抽樣時按照置信度誤差(預測背景的置信度越小,誤差越大)進行降序排列,選取誤差的較大的top-k作為訓練的負樣本,以保證正負樣本比例接近1:3。

(2)損失函數

  損失函數定義為位置誤差(locatization loss, loc)與置信度誤差(confidence loss, conf)的加權和。對於位置誤差,其采用Smooth L1 loss,對於置信度誤差,其采用softmax loss。

  技術分享圖片

(3)對每一張特征圖,按照不同的大小(Scale) 和長寬比(Ratio)生成生成k個默認框(Default Boxes)

(4)數據擴增

  主要采用的技術有水平翻轉(horizontal flip),隨機裁剪加顏色扭曲(random crop & color distortion),隨機采集塊域(Randomly sample a patch)(獲取小目標訓練樣本)

  • 數據擴增技術很重要,對於mAP的提升很大;
  • 使用不同長寬比的先驗框可以得到更好的結果;
  • 采用多尺度的特征圖用於檢測也是至關重要的。

5、DSSD(2017)

  最大的貢獻,在常用的目標檢測算法中加入上下文信息。

  SSD算法對小目標不夠魯棒的最主要的原因是淺層feature map的表征能力不夠強。DSSD就使用了更好的基礎網絡(ResNet-101)和Deconvolution層,skip連接來給淺層feature map更好的表征能力。

  技術分享圖片

6、RetinaNet(2017)

  提出Single stage detector不好的原因完全在於:

  1. 極度不平衡的正負樣本比例: anchor近似於sliding window的方式會使正負樣本接近1000:1,而且絕大部分負樣本都是easy example,這就導致下面一個問題:
  2. gradient被easy example dominant的問題:往往這些easy example雖然loss很低,但由於數 量眾多,對於loss依舊有很大貢獻,從而導致收斂到不夠好的一個結果。

  作者提出了一個新的one-stage的檢測器RetinaNet,達到了速度和精度很好地trade-off。使用改進的損失函數Focal Loss。

  Focal Loss從交叉熵損失而來。二分類的交叉熵損失如下:

技術分享圖片

技術分享圖片

參考博客:http://lanbing510.info/2017/08/28/YOLO-SSD.html

目標檢測 — one-stage檢測(二)