目標檢測SSD演算法筆記

2021-10-08 22:01:35 字數 1626 閱讀 3187

明確幾個概念:通過feature map cell(anchor)生成的矩形框稱之為default box(ssd中為8732個);將這些default box與真實的目標框(ground truth)進行iou匹配後得到的大於iou閾值的矩形框稱之為prior box;

通過prior box結合難例挖掘生成網路的正樣本和負樣本(1:3),正樣本中有多個prior box對應同乙個gt,而挖掘出的負樣本通常為:不包含某一類(正樣本)和背景類的其他類所組成的樣本,這樣設計的目的是為了使負樣本能在分類的時候對正樣本產生足夠的干擾,提公升演算法**的準確率。

在網路**的時候,每乙個prior box 都會輸出(classnumber+1+4)個變數,其中classnumber為資料總的類別數,1是背景類(ssd演算法將背景作為單獨的一類),4是框的位置引數(x, y, w, h)。

prior box(正樣本)會參與回歸與分類的所有訓練,而正樣本、負樣本(正樣本+負樣本都是default box的子集)會參與分類的訓練

總結一下:default box的作用有:1. **的時候生成prior box,進而生成正負樣本,提速訓練;2. 在測試的時候所有的default box都將進行計算,對每乙個box中計算出的類別引數(20類有20個值)若某乙個值大於類別閾值則判定為該類進而進行框的位置糾正,若所有類的值均沒有大於閾值,則拋棄該box;

prior box的作用有:1.用於回歸訓練(由於prior box一般遠小於default box的數量,複雜度大大降低);2.用於產生正負樣本,正負樣本用於分類訓練。當然這兩個訓練是同時進行的,這樣講只是為了便於理解。

關於編碼和解碼:

編碼的作用:網路在計算loss的時候並不是直接拿**的box的座標同gt的座標進行比對,而是擬合**框與prior box的差值盡量和prior box與gt的差值一樣小,通過這樣的改變避免了位置的抽象不好計算的缺點,所以網路輸出的是位置框的相對偏移量,編碼就是將位置引數(x, y, w, h)修改為**框相對於cell的偏移量(x』+offset, y』+offset, w』+offset, h』+offset)。

解碼的作用剛好相反,將偏移量轉換為可以視覺化的框。

關於卷積核(記錄一下)

對於6個特徵層,採用3x3的卷積核進行卷積取樣,其中,卷積核的通道數必須等於輸入特徵層的通道數,例如conv4_3特徵是38x38x512,對這一層進行卷積採用的卷積核大小為3x3x512,對於分類來說,需要21(類別數)個這樣的卷積核也就是3x3x512x21,這裡的引數數量是(3x3x512+1)x21,+1為bias,對於回歸來說,需要4個這樣的卷積核,即:3x3x512x4.

通常來說卷積核的通道數kxkxc,在灰度圖下,這裡的c確實是通道數,但是對於rgb圖,我們表示卷積核的大小kxkxc,這裡的c其實是卷積核的個數,其預設的通道數為3,也就是:kxkx3xc才是卷積核真正的大小

卷積核只在相同的通道內權值共享,所以對於3通道,有3c個卷積核;如果上一層是38x38x192,那麼卷積核的個數是192c;

也許是通過卷積後輸出的特徵層有c個,也就是下一層影象的通道數是c,所以這裡用c表示卷積的通道吧。

目標檢測演算法(五) SSD

ssd,全稱single shot multibox detector,是wei liu在eccv 2016上提出的一種目標檢測演算法,截至目前是主要的檢測框架之一,相比faster r cnn有明顯的速度優勢,相比yolo又有明顯的map優勢 不過已經被cvpr 2017的yolo9000超越 在...

目標檢測演算法之SSD

昨天介紹了特徵金字塔網路用於目標檢測,提公升了多尺度目標檢測的魯棒性,今天開始講講one stage目標檢測演算法中ssd演算法。這個演算法是我平時做工程中最常用到的,嚴格來說平時最常用的mobilenet做backbone的ssd演算法,因為要考慮到實際部署的時候的速度要求。本文提出了僅需要單個卷...

目標檢測之SSD

ssd single shot multibox detector 翻譯 詳解 圖1 圖2 演算法步驟 1 輸入一幅 300x300 將其輸入到預訓練好的分類網路中來獲得不同大小的特徵對映,修改了傳統的vgg16網路 2 抽取conv4 3 conv7 conv8 2 conv9 2 conv10 ...