目標檢測-SSD(Single Shot MultiBox Detector)

SSD : Single Shot MultiBox Detector

論文地址:https://arxiv.org/abs/1512.02325

網絡結構

在這裏插入圖片描述
與faster rcnn相比,該算法沒有生成 proposal 的過程,這就極大提高了檢測速度。針對不同大小的目標檢測,傳統的做法是先將圖像轉換成不同大小(圖像金字塔),然後分別檢測,最後將結果綜合起來(NMS)。

而SSD算法則利用不同卷積層的 feature map 進行綜合也能達到同樣的效果。算法的主網絡結構是VGG16,將最後兩個全連接層改成卷積層,並隨後增加了4個卷積層來構造網絡結構。

採用VGG16做基礎模型,首先VGG16是在ILSVRC CLS-LOC數據集預訓練。然後借鑑了DeepLab-LargeFOV,分別將VGG16的全連接層fc6和fc7轉換成3×33×3卷積層conv6和1×11×1卷積層conv7,同時將池化層pool5由原來的2×2−s22×2−s2變成3×3−s13×3−s1,爲了配合這種變化,採用了一種Atrous Algorithm,其實就是conv6採用擴展卷積或帶孔卷積(Dilation Conv),其在不增加參數與模型複雜度的條件下指數級擴大卷積的視野,其使用擴張率(dilation rate)參數,來表示擴張的大小

對其中5種不同的卷積層的輸出(feature map)分別用兩個不同的 3×3的卷積核進行卷積,一個輸出分類用的confidence,每個default box 生成c個類別confidence;一個輸出迴歸用的 localization,每個 default box生成4個座標值(x, y, w, h)。

最後每個feature layer的卷積核數量爲 (c+4)* k個,k是這個層每個點default box數量。預測值爲m* n* (c+4)* k 個。上述5個feature map中每一層的default box的數量是給定的(8732個)。最後將前面三個計算結果分別合併然後傳給loss層。
參考 https://blog.csdn.net/xiaohu2022/article/details/79833786

損失函數

損失函數也分爲分類損失和迴歸損失,分類損失是softmax迴歸損失,分類損失用smooth L1。
α=1。 Let xpij = {1, 0} be an
indicator for matching the i-th default box to the j-th ground truth box of category p.
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

default box

每個feature map生成的prior box數量是不一樣的。prior box是指實際中選擇的default box(每一個feature map cell 不是k個default box都取)。也就是說default box是一種概念,prior box則是實際的選取。
在這裏插入圖片描述
上圖可以看出有的每個點生成6個,有的是4個。總計爲:(38384 + 19196 + 10106 + 556 + 334 + 114)= 8732個prior box。
這些box的w和h由不同的scale(尺寸),aspect ratio生成。
where smin is 0.2 and smax is 0.9, meaning the lowest layer has a scale of 0.2 and the highest layer has a scale of 0.9, and all layers in between are regularly spaced
在這裏插入圖片描述
αr ∈{1, 2, 3,1/2,1/3},結合α和s
在這裏插入圖片描述

ssd與faster rcnn和yolo的比較

proposal選擇:

SSD:在卷積後的feature map上生成m* n* k個 default box

Faster RCNN:RPN網絡對卷積後的feature map選擇anchor,每個點9個anchor個

YOLO:將圖片劃分成SxS個區域。 如果一個對象的中心落在某個單元格上,那麼這個單元格負責預測這個物體。每個單元格需要預測B個邊界框(bbox)值(bbox值包括座標和寬高),同時爲每個bbox值預測一個置信度(confidence scores)。例如,在 PASCAL VOC 中,圖像輸入爲 448x448,取 S=7,B=2,一共有20 個類別(C=20),則輸出就是 7x7x30 的一個向量。

YOLOv3:選用的b-box priors 的k=9,對於tiny-yolo的話,k=6。priors都是在數據集上聚類得來的,有確定的數值,如下:

10,13,  16,30,  33,23,  30,61,  62,45,  59,119,  116,90,  156,198, 373,326

Loss

Faster RCNN:分類是softmax損失, 迴歸是smoothL1。
https://blog.csdn.net/wfei101/article/details/79809332
在這裏插入圖片描述
YOLO:全是線性損失函數
在這裏插入圖片描述
YOLOv3:好像是均方誤差+二元交叉熵
SSD:上面有,softmax+smoothL1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章