縮排在ssd中引入了prior box,實際上與anchor非常類似,就是一些目標的預選框,後續通過softmax分類+bounding box regression獲得真實目標的位置。ssd按照如下規則生成prior box:
圖4 prior box
第一層feature map對應的min_size=s1,max_size=s2;第二層min_size=s2,max_size=s3;其他類推。在原文中,smin=0.2,smax=0.9,但是在ssd 300中prior box設定並不能和*****中上述公式對應:
min_size
max_size
conv4_3
30
60
fc760
111
conv6_2
111
162
conv7_2
162
213
conv8_2
213
264
conv9_2
264
315
不過依然可以看出,ssd使用低層feature map檢測小目標,使用高層feature map檢測大目標,這也應該是ssd的突出貢獻了。其中ssd 300在conv4_3生成prior box的conv4_3_norm_priorbox層prototxt定義如下:
[cpp]view plain
copy
layer
}
知道了priorbox如何產生,接下來分析prior box如何使用。這裡以conv4_3為例進行分析。
從圖5可以看到,在conv4_3 feature map網路pipeline分為了3條線路:
縮排後續通過softmax分類+bounding box regression即可從priox box中**到目標,熟悉faster rcnn的讀者應該對上述過程應該並不陌生。其實pribox box的與faster rcnn中的anchor非常類似,都是目標的預設框,沒有本質的差異。區別是每個位置的prior box一般是4~6個,少於faster rcnn預設的9個anchor;同時prior box是設定在不同尺度的feature maps上的,而且大小不同。
縮排還有乙個細節就是上面prototxt中的4個variance,這實際上是一種bounding regression中的權重。在圖4線路(2)中,網路輸出[dxmin,dymin,dxmax,dymax],即對應下面**中bbox;然後利用如下方法進行針對prior box的位置回歸:
[cpp]view plain
copy
decode_bbox->set_xmin(
prior_bbox.xmin() + prior_variance[0] * bbox.xmin() * prior_width);
decode_bbox->set_ymin(
prior_bbox.ymin() + prior_variance[1] * bbox.ymin() * prior_height);
decode_bbox->set_xmax(
prior_bbox.xmax() + prior_variance[2] * bbox.xmax() * prior_width);
decode_bbox->set_ymax(
prior_bbox.ymax() + prior_variance[3] * bbox.ymax() * prior_height);
上述**可以在ssd box_utils.cpp的void decodebbox()函式見到。
pytorch目標檢測ssd二 ssd的整體框架
這是ssd的第二篇部落格,主要是介紹ssd的整體框架,不會涉及 這篇部落格,我會分析一下整體框架。1 輸入 輸入的大小要被設定成300x300的,所以不是300x300的,輸入之前需要resize一下 2 特徵提取網路 深度神經網路可以進行特徵提取,我們的ssd採用的就是vgg深度神經網路。但是ss...
SSD效能介紹
主要內容概括如下 1.ssd與傳統磁碟相比,第一是沒有機械裝置,第二是由磁介質改為了電介質 2.sd可以提供非常高的隨機讀取能力 3.erase before write ssd的最小寫入單元為4kb,稱為頁 page 擦除的單位一般是128個page 512kb 寫入放大的問題 4.wear le...
SSD安裝系統
個人經驗 1 首先是用genius軟體進行分割槽以及格式化 4k對齊 2 修改為bios裡面的achi模式 本人的電腦拆掉機械硬碟裝上ssd後這裡會自動修改 3 設定bios裡面的boot option 1 為ssd 也就是優先讀取ssd硬碟,類似的修改u盤優先也是 4 安裝系統到ssd或將原系統的...