1. 程式人生 > >目標檢測模型(不用在ImageNet上預訓練)

目標檢測模型(不用在ImageNet上預訓練)

論文:DSOD: Learning Deeply Supervised Object Detectors from Scratch 

目標檢測的難點

目前,所有基於深度學習的目標檢測方法都需要預先在 ImageNet 分類任務上預訓練的模型作為初始權重。

這種預訓練 + 微調 的方式主要存在以下幾個問題:

1、缺乏靈活性。在ImageNet上預訓練模型非常麻煩,如果只使用預訓練好的模型,不能根據需要去調整模型結構;

2、Loss差異。由於ImageNet模型的類別和目標檢測問題的類別分佈差別較大,分類的目標函式和檢測的目標函式也不一致,從預訓練模型上微調可能和檢測問題的有一定的優化學習偏差;

3、問題域不匹配。並不是所有檢測任務都是在自然RGB影象上進行的,如醫學影象、多譜影象的檢測。

DSOD(Deeply Supervised Object Detector)方法

DSOD方法藉助於DenseNet 隱式的deeply supervised的特性,結合其他一些設計原則,成功地實現了目標檢測模型的從零開始訓練。並且模型引數相比其他方法也要小很多。

DSOD是在SSD演算法的基礎上進行改進的,可以簡單理解為SSD+DenseNet=DSOD(作者文中也曾嘗試從0開始訓練region proposal based的檢測演算法比如Faster RCNN,R-FCN等,發現模型很難收斂;而proposal-free的檢測演算法比如SSD卻可以收斂,雖然效果一般,因此最後採用proposal-free的檢測模型SSD。

DSOD的網路結構如下:

這裡寫圖片描述

解釋:

左邊的plain connection表示SSD演算法中的特徵融合操作,這裡對於300*300的輸入影象而言,一共融合了6種不同scale的特徵。在每個虛線矩形框內都有一個1*1的卷積和一個3*3的卷積操作,這其實就是一個bottleneck,也就是1*1的卷積主要起到降低channel個數從而降低3*3卷積計算量的作用。 
右邊的dense connection表示本文引入densenet思想的特徵融合操作。dense connection部分左邊的虛線矩形框部分和plain connection的右邊虛線矩形框部分很像,差別在於channel個數(dense connection中3*3的channel個數是對應plain connection中3*3的channel個數的一半),主要是因為在plain connection中,每個bottleneck的輸入直接是前一個bottleneck的輸出,但是在dense connection中,每個bottleneck的輸入是前面所有bottleneck的輸出的concate。dense connection部分右邊的矩形框是down sampling block,包含2*2的max pooling和一個1*1的卷積,作者也提到先進行降取樣再進行1*1卷積主要可以減少計算量。因此可以看出DSOD是SSD+DenseNet的結果。

DSOD模型不僅引數更少(適合於手機、無人機等資源受限的裝置)、效能更強,更重要的是不需要在大資料集(如ImageNet)上預訓練,使得DSOD的網路結構設計非常靈活根據自己的應用場景可以設計自己所需要的網路結構。