概述
STDN是收錄於CVPR 2018的一篇目標檢測論文,提出STDN網絡用於提升多尺度目標的檢測效果。要點包括:(1)使用DenseNet-169作為基礎網絡提取特征;(2)提出Scale-transfer Layer,在幾乎不增加參數量和計算量的情況下生成大尺度的feature map。
STDN介紹
Figure 1回顧了目標檢測算法對feature map的利用情況:
(a)是只使用單一尺度的feature map進行檢測,這種方法利用的特征層較少,檢測效果一般,代表性的算法如Faster RCNN;
(b)是FPN的做法,將不同尺度的feature map自頂向下進行融合,並基於融合后的不同尺度的feature map分別進行檢測,對小目標的檢測效果提升明顯,構建特征金字塔的方式可以充分利用多個層次的feature map信息,但是需要添加一些額外的網絡層,增加了計算量和時間;
(c)是SSD算法的做法,對不同尺度的feature map分別檢測,雖然淺層專用於小目標的目標檢測,但是由於沒有使用到高層的語義信息,所以對小目標的檢測效果一般;
(d)是本文的做法,檢測方式類似於SSD,但是通過基礎網絡DenseNet將高低層特征融合,因此可以達到類似FPN的效果。
網絡結構如下圖所示,可以看做是SSD的一個改進版,將原SSD中基礎網絡VGG替換為DenseNet-169,通過DenseNet提取特征在最后一個Dense Block獲得一系列9*9大小的feature map,然后通過Scale-transfer Module對feature map進行放大或縮小。最后分別對不同尺度的feature map做目標檢測。
各層的結構如表3所示,論文所用的DenseNet對原DenseNet的輸入層進行了調整,具體為:將7*7卷積層(stride=2)和其后的3*3 max pooling層(stride=2,stride=1,stride=1)替換為3個3*3卷積層(stride=2)和1個2*2 mean pooling層(stride=2)。調整稱為stem block。這樣做提升了檢測精度。
文中提出Scale-Transferrable Module(STM)用於進行feature map的尺度變換,具體為:
(1)獲取小feature map :mean pooling
(2)獲取大feature map:Scale-Transfer Layer(STL)
STL是利用多個通道的feature map來增大feature map尺寸,也就是壓縮通道數增大map尺寸。
以網絡的最后一個預測層為例,DenseNet-169的輸出維度為9*9*1664,經過一個4X的scale-transfer后變為36*36*104。整個過程是像素值周期排列的過程,在此次變換中r=4,變換后的第一個通道上一個r*r像素塊的像素值相當於是原來前r*r個通道上1*1的像素值的重新排列。
訓練和損失函數
Anchor Box設置尺度同SSD,aspect ratio同DSSD,負樣本挖掘、數據擴增、損失函數等等都跟SSD沒差。
實驗結果
(1)PASCAL VOC 2007
STDN相比SSD提升較為明顯,與DSSD也有的一拼,作者認為STDN比DSSD稍差的原因是DSSD的基礎網絡Residual-101網絡參數具有壓制力(Residual-101有42M,而DenseNet-169只有14M)。
(2)COCO test-dev 2015
見表4。可以看出對中小型目標的檢測效果優於其他主流算法,IoU 在0.5~0.95之間的目標檢測效果也很不錯,比Faster RCNN和R-FCN差(他們輸入圖像大,1000*600),比DSSD差(參數碾壓),但是STDN不僅mAP高而且運行速度快(是DSSD的5倍多)。
主流算法的精度、速度對比如
可見,STDN的表現很好,速度非常快,而且精度高,輸入圖像小,在取得較高准確率的同時又兼顧了速度。例如STDN321和513兩個模型相比於Faster-RCNN、YOLOv2、SSD、DSSD等,首先在正確率上已具有相同或者更高的水平,但是在速度上優勢很大,特別是對於准確率較高的R-FCN和DSSD513簡直是碾壓。