1. 程式人生 > >Detection:SSD(single shot multibox detecter)

Detection:SSD(single shot multibox detecter)

ssd這篇感覺很工程,主要的工作我覺得有兩個:

1.從多層fm上提取bbox,相當於一個multi scale的操作。值得注意的是,首先越靠近bottom越底層的fm在細節表達上做得越好,高層的fm會學習出分類這種概括性的表達,原文中加上最高層的bbox甚至會比去掉這一層效果更差(當然可能是噪聲);其次在fm上的bbox並不是嚴格去對應原圖上的reception filed(再加上後面data augmentation工作,我的理解是目標框並不需要一個嚴格的標註標準比如嚴格相切之類),對應的關係有公式給出:


sk是第k層(原文總共有6層)提取bbox的fm與原圖的尺度比例,這裡smin=0.2,smax=0.9,這個定義涉及到default bbox的對應區域,是一個開放性的問題,可以根據自己的實際需求去重新定義。然後對於

(aspect ratio),width計算,height計算(都要乘原圖size),中心點位置,fk是第k張fm的size。這樣,假設最高一層fm的size是4*4,取(i,j)=(0,0),smin=0.2,對1:1的bbox來說,512*512的原圖上中心點在(64,64),長寬為102畫素。

2.取消了proposal,這也是ssd速度極大提升的原因。為什麼效果還這麼好有待進一步探究。

還有一些值得一提的工程工作:

1.predictor for detection:在6層fm上提取bbox,對於每一層來說,要分別過一個出loc的卷積層和出conf的卷積層(conv4_3要先過norm層),然後資料排序拼接之後進入multiboxloss層

2.loss的計算


總loss,其中阿爾法交叉驗證後取1



3.data augmentation:

在原圖上隨機取patch,大小是0.1到1原圖大小,ratio是1/2到2,保留patch和gt box的overlap且gtbox中心點在這一部分中的。(這一部分解釋有待再去參考程式碼)

4.檢測小目標效果不好的情況:可以通過輸入更低層fm和調整default bbox對應關係來改善。