ssd網路一大特點是,為了提高檢測準確率,在不同尺度的特徵圖上進行**,這種**就需要prior box layer。
prior box 是幹嘛的呢?其實非常類似於faster r-cnn中的anchors,就是候選框,這種候選框的選取不需要像r-cnn那樣通過複雜處理產生。在ssd中,priorbox層只需要bottom層feature map的大小,就可以給出候選框。假設輸入的feature map大小是w×h,生成的prior box中心就有w×h個,均勻分布在整張圖上。在每個中心上,可以生成多個不同長寬比的prior box,如[1/3, 1/2, 1, 2, 3],每個點就可以生成length_of_aspect_ratio個框,所以在乙個feature map上可以生成的prior box總數是w×h×length_of_aspect_ratio。
如上圖b)所示,在8x8的feature map上,每個中心點生成了4個預選框。(c)是4x4的feature map,假設(c)是(b)後面的層,prior box引數相同,那麼顯然,從(b)中提取的預選框更有利於小尺度物件的檢出,而從(c)中提取的預選框更有利於大尺度物件的檢出(4x4的feature map 只有8x8 feature map長寬的1/2,相同引數的prior box圈出的面積相同,但是兩個feature map對應於相同的原圖,因此4x4 feature map上相同面積對映回原圖相當於圈出了更大的面積,是8x8面積的4倍)。
如上所述,ssd提取了不同尺度的feature map來做檢測,大尺度特徵圖(較靠前的特徵圖)可以用來檢測小物體,而小尺度特徵圖(較靠後的特徵圖)用來檢測大物體。從下圖可以看出,ssd網路會從6層feature map中提取特徵,priorbox相應也會跟在這6層後面。
計算思路:以feature map上每個點的中點為中心(offset=0.5),生成一些列同心的prior box(然後中心點的座標會乘以step,相當於從feature map位置對映回原圖位置),最後會歸一化處理
正方形prior box最小邊長為min_size,最大邊長為
每在prototxt設定乙個aspect ratio,會生成2個長方形,長寬為:
和
SSD模型結構解析
ssd,全稱single shot multibox detector,single shot指的是ssd演算法屬於one stage方法,multibox說明ssd是多框 ssd演算法的效能與速度優於yolo。ssd模型的輸入大小是300x300,或512x512。ssd的主幹特徵提取網路依據vg...
ssd網路forward理解
主幹網路 vgg extras 分支網路 conf與loc網路 ssd中6層關鍵feature map層,其feature map的shape如下 分別經過了loc和conf層後,shape成為了 分別拉平concate起來,其shape分別為 loc data n x 34928 n x 8732...
redis 之網路模型
define ae setsize 1024 10 max number of fd supported redis的網路模型處理的fd必須小於2048 在events結構體中放不下 state of an event based program typedef struct aeeventloop...