基於深度學習的目標檢測演算法 SSD

2021-08-26 05:14:07 字數 3645 閱讀 8874

ssd: single shot multibox detector

問題引入:

目前,常見的目標檢測演算法,如faster r-cnn,存在著速度慢的缺點。該**提出的ssd方法,不僅提高了速度,而且提高了準確度。

ssd:

該**的核心思想:

該**的主要貢獻:

1. 提出了ssd目標檢測方法,在速度上,比之前最快的yolo還要快,在檢測精度上,可以和faster rcnn相媲美

2. ssd的核心是在特徵圖上採用卷積核來**一系列default bounding boxes的類別分數、偏移量

3. 為了提高檢測準確率,在不同尺度的特徵圖上進行**,此外,還得到具有不同aspect ratio的結果

4. 這些改進設計,實現了end-to-end訓練,並且,即使影象的解析度比較低,也能保證檢測的精度

5. 在不同的資料集,如:pascal voc、ms coco、ilsvrc,對該方法的檢測速度、檢測精度進行了測試,並且與其他的方法進行了對比。

ssd模型結構:

剛開始的層使用影象分類模型中的層,稱為base network,在此基礎上,新增一些輔助結構:

1. mult-scale feature map for detection

在base network後,新增一些卷積層,這些層的大小逐漸減小,可以進行多尺度**

2. convolutional predictors for detection

每乙個新新增的層,可以使用一系列的卷積核進行**。對於乙個大小為m*n、p通道的特徵層,使用3*3的卷積核進行**,在某個位置上**出乙個值,該值可以是某一類別的得分,也可以是相對於default bounding boxes的偏移量,並且在影象的每個位置都將產生乙個值,如圖2所示。

3. default boxes and aspect ratio

在特徵圖的每個位置**k個box。對於每個box,**c個類別得分,以及相對於default bounding box的4個偏移值,這樣需要(c+4)*k個**器,在m*n的特徵圖上將產生(c+4)*k*m*n個**值。這裡,default bounding box類似於fasterrcnn中anchors,如圖1所示。

個人感覺ssd模型與faster rcnn中的rpn很類似。ssd中的****ult bounding box類似於rpn中的anchor,但是,ssd在不同的特徵層中考慮不同的尺度,rpn在乙個特徵層考慮不同的尺度。

ssd模型訓練:

1. matching strategy

將每個groundtruth box與具有最大jaccard overlap的de****lt box進行匹配, 這樣保證每個groundtruth都有對應的default box;並且,將每個de****t box與任意ground truth配對,只要兩者的jaccard overlap大於某一閾值,本文取0.5,這樣的話,乙個groundtruth box可能對應多個default box。

jaccard overlap的計算:

p 。損失函式的計算類似於fast rcnn中的損失函式,總的損失函式是localization loss (loc) 和 confidence loss (conf) 的加權和,如下:

其中,(gcx, gcy, gw, gh)表示groundtruth box,(dcx, dcy, dw, dh)表示default box,(lcx, lcy, lw, lh)表示**的box相對於default box的偏移量。

3. choosing scales and aspect ratios for default boxes

為了處理不同尺度的物體,一些文章,如:overfeat,處理不同大小的影象,然後將結果綜合。實際上,採用同乙個網路,不同層上的feature map,也能達到同樣的效果。影象分割演算法fcn表明,採用低層的特徵圖可以提高分割效果,因為低層保留的影象細節資訊比較多。因此,該**採用lower feature map、upper feature map進行**。

一般來說,cnn的不同層有著不同的感受野。然而,在ssd結構中,default box不需要和每一層的感受野相對應,特定的特徵圖負責處理影象中特定尺度的物體。在每個特徵圖上,default box的尺度計算如下:

其中,smin = 0.2,smax = 0.9

default box的aspect ratios 有:,對於 aspect ratio = 1,額外增加乙個default box,該box的尺度為

每乙個default box,寬度、高度、中心點計算如下:

4. hard negative mining

經過matching後,很多default box是負樣本,這將導致正樣本、負樣本不均衡,訓練難以收斂。因此,該**將負樣本根據置信度進行排序,選取最高的那幾個,並且保證負樣本、正樣本的比例為3:1。

5. data augmentation

為了使得模型對目標的尺度、大小更加魯棒,該**對訓練影象做了data augmentation。每一張訓練影象,由以下方法隨機產生:

1)使用原始影象

2)取樣乙個path,與目標的最小jaccard overlap為0.1、0.3、0.5、0.7、0.9   (這個具體怎麼做呢???)

3)隨機取樣乙個path

取樣得到的path,其大小為原始影象的[0.1, 1],aspect ratio在1/2與2之間。當groundtruth box的中心在取樣的path中時,保留重疊部分。經過上述取樣之後,將每個取樣的pathresize到固定大小,並以0.5的概率對其水平翻轉。

基於深度學習的目標檢測演算法 SSD

ssd single shot multibox detector 問題引入 目前,常見的目標檢測演算法,如faster r cnn,存在著速度慢的缺點。該 提出的ssd方法,不僅提高了速度,而且提高了準確度。ssd 該 的核心思想 該 的主要貢獻 1.提出了ssd目標檢測方法,在速度上,比之前最快...

基於深度學習的 目標檢測 演算法綜述

三部曲,這樣就有兩個難以解決的問題 其一是區域選擇的策略效果差 時間複雜度高 其二是手工提取的特徵魯棒性較差。傳統的區域選擇使用滑窗,每滑乙個視窗檢測一次,相鄰視窗資訊重疊高,檢測速度慢。r cnn 使用乙個啟發式方法 selective search 先生成候選區域再檢測,降低資訊冗餘程度,從而提...

目標檢測演算法

基於深度學習的回歸方法 yolo ssd densebox 傳統目標檢測流程 rcnn解決的就是預先找出圖中目標可能出現的位置,即候選區域,再對這些區域進行識別分類。r cnn 具體步驟如下 步驟二 對該模型做fine tuning 微調 步驟三 特徵提取 步驟四 訓練乙個svm分類器來判斷這個候選...