­

不需要預訓練模型的目標檢測演算法DSOD

論文:Learning Deeply Supervised Object Detectors from Scratch

1. 前言

DSOD(Deeply Supervised Object Detectors)是ICCV 2017的一篇文章,它表達了一個非常有意思的東西。這篇論文不是從目標檢測的高mAP值或者速度更快出發,而是從另外一個角度切入來說明fine-tune後的檢測模型和直接訓練的檢測模型的差距其實是可以減少的,也即是說一些檢測模型可以擺脫fine-tune這一過程,並且相比於fine-tune訓練出來的模型效果並不會變差。

2. 介紹

DSOD這一演算法是在SSD的基礎上進行的改進,可以簡單的看成:

DSOD=SSD+DenseNet

作者在論文中提到他也實驗了從開始訓練Region Proposal Based的檢測演算法比如Faster RCNN,R-FCN等,但這些模型很難收斂。而One-Stage的目標檢測演算法比如SSD卻可以收斂,雖然效果很一般,因此最後作者使用SSD作為了這篇論文接下來討論的BaseLine。

然後本文基於SSD改進的DSOD在VOC2007 trainval和2012 trainval數據集上訓練模型,然後在VOC2007 testset上測試的表現(77.7%mAP)超過了使用fine-tune策略的SSD300S(69.6%mAP)和SSD300(75.8mAP),原文是這樣描述的。

Our DSOD300 achieves 77.7% mAP, which is much better than the SSD300S that is trained from scratch using VGG16 (69.6%) without deep supervision. It is also much better than the fine-tuned results by SSD300 (75.8%)

3. 出發點

這篇文章的出發點是什麼呢?作者認為幾乎的所有檢測網路都在使用fine-tune這一技巧,那麼一定要用fine-tune嗎?作者列出來了3個原因來嘗試說明fine-tune不是必須的。原因如下:

  • 預訓練的模型一般是在分類影像數據集比如Imagenet上訓練的,不一定可以遷移到檢測模型的數據上(比如醫學影像)。
  • 預訓練的模型,其結構都是固定的,因此如果想要再修改的話比較麻煩。
  • 預訓練的分類網路的訓練目標一般和檢測目標不一致,因此預訓練的模型對於檢測演算法而言不一定是最優的選擇。

基於上面這幾點原因,論文提出了一個從開始的檢測模型DSOD,我們接下來看看是怎麼設計的吧。

4. DSOD網路結構

下面的Figure1分別展示了SSD的整體結構和DSOD的整體結構。

SSD和DSOD網路結構

Figure1左圖的plain connection表示SSD網路中的特徵融合操作,這裡對於的輸入影像來說,一共融合了種不同scale的特徵。在每個虛線矩形框內都有一個的卷積和一個的卷積操作,這也可以被叫作BottleNeck,也就是卷積主要起到降維從而降低卷積計算量的作用。

Figure1右圖的dense connection表示本文的DSOD引入了DenseNet的思想。dense connection左邊的虛線框部分和plain connection右邊的虛線框部分結構一致,區別在於裡面的channel個數,dense connection中卷積的channel個數是plain connection中卷積的一半。主要是因為在plain connection中每個BottleNeck的輸入是前面一個BottleNeck的輸出,而在dense connection中,每個bottleneck的輸入是前面所有bottleneck的輸出的concate,所以為了降低計算量減少了通道數。

同時,dense connection部分右邊的矩形框是下取樣模組,包含一個的最大池化層(降取樣作用)和一個的卷積層(降低channel個數的作用),作者也提到先進行降取樣再進行卷積可以進一步減少計算量。

因此可以看出DSOD即是SSD+DenseNet的結果。

下面的Table1詳細展示了DSOS網路的結構。其中Dense Block就是DenseNet網路的子模組,然後stem block由卷積和池化組成,後面實驗證明了這個stem block可以提高mAP值。

DSOD詳細結構

5. 實驗結果

在看實驗結果之前如果你對DenseNet有點忘記了,建議點下面的鏈接複習一下。卷積神經網路學習路線(十二)| 繼往開來的DenseNet 。下面的Table3展示了在VOC2007 testset上不同參數的實驗結果。

第3,4行的對比可以看出BottleNeck的channel個數越多,mAP相對越高。第5、6行的對比可以看出growth rate從16變成48,可以提高4.8%的mAP。第6,9行的對比可以看出stem block的存在可以提高2.8%的mAP。

下面的Table4則展示了更豐富的結果。

可以看出SSD在沒有預訓練模型的情況下也是可以收斂的,不過效果一般。但如果使用本文的DSOD則可以達到使用預訓練模型效果,並且結果還偏好一點

更多實驗結果請參考原文。

6. 總結

DSOD是在SSD的基礎上結合了DenseNet的思想,使得網路可以在不使用預訓練模型的條件下收斂得和使用預訓練模型的BaseLine模型一樣好,另外DenseNet的引入也使得相比SSD來說DSOD的參數數量大大減少,注意參數量不等於推理速度會變快。如果專註於特殊影像檢測或者難以搞定預訓練模型的場景這篇文章的思想是值得借鑒的。

7. 參考

  • https://blog.csdn.net/u014380165/article/details/77110702
  • 論文鏈接:https://arxiv.org/abs/1708.01241
  • 程式碼:https://github.com/szq0214/DSOD