單階多層檢測器: SSD(三)改進算法


  本節將對SSD算法進行總結, 並介紹多個基於SSD的改進算法。

1. 審視SSD

  SSD實現了一個較為優雅、 簡潔的物體檢測框架, 使用了一階網絡即完成了物體檢測任務, 達到了同時期物體檢測的較高水平。 總體上,SSD主要有以下3個優點:
    ·由於利用了多層的特征圖進行預測, 因此雖然是一階的網絡, 但在某些場景與數據集下, 檢測精度依然可以與Faster RCNN媲美。
    ·一階網絡的實現, 使得其檢測速度可以超過同時期的Faster RCNNYOLO算法, 對於速度要求較高的工程應用場景, SSD是一個很不錯的選擇。
    ·網絡優雅, 實現簡單, 沒有太多的工程技巧, 這也為后續的改善工作提拱了很大的空間。
  與此同時, 追求更高檢測性能的腳步永不會停止, SSD算法也有以下3點限制:
    ·對於小物體的檢測效果一般, 這是由於其雖然使用了分辨率大的淺層特征圖來檢測小物體, 但淺層的語義信息不足, 無法很好地完成分類與回歸的預測。
    ·每一層PriorBox的大小與寬高依賴於人工設置, 無法自動學習, 當檢測任務更換時, 調試過程較為煩瑣。
    ·由於是一階的檢測算法, 分類與邊框回歸都只有一次, 在一些追求高精度的場景下, SSD系列相較於Faster RNCN系列來講, 仍然處在下風。
  針對SSD的這些問題, 后續的學者從多個角度探討了提升SSD性能的策略, 在此介紹4個較為經典的改進算法, 分別是DSSDRSSDRefineDetRFBNet算法, 如圖5.9所示。

 

 2. 特征融合: DSSD
  SSD采用多尺度的特征圖預測物體, 具有較大感受野的特征圖檢測大尺度物體, 較小感受野特征圖檢測小尺度物體。 這樣會存在一個問題, 即當小感受野特征圖檢測小物體時, 由於語義信息不足, 導致小物體檢測效果差。
  解決該語義信息不足的方法通常是深淺的特征圖融合, DSSD正是從這一角度出發, 提出了一套針對SSD多尺度預測的特征融合方法, 改進了傳統的上采樣方法, 並且可以適用於多種基礎Backbone結構。
  對於深淺層的特征融合, 通常有3種計算方法:
    ·按通道拼接(Concatenation) : 將深層與淺層的特征按通道維度進行拼接。
    ·逐元素相加(Eltw Sum) : 將深層與淺層的每一個元素在對應位置進行相加, 如FPN中的特征融合。
    ·逐元素相乘(Eltw Product) : 將深層與淺層的每一個元素在對應位置進行相乘, 這也是DSSD采用的特征融合方式。
  SSD利用了感受野與分辨率不同的6個特征圖進行后續分類與回歸網絡的計算, DSSD保留了這6個特征圖, 但對這6個特征圖進一步進行了融合處理, 然后將融合后的結果送入后續分類與回歸網絡, 如圖5.10所示。
  具體做法是, 將最深層的特征圖直接用作分類與回歸, 接着, 該特征經過一個反卷積模塊, 並與更淺一層的特征進行逐元素相乘, 將輸出
的特征用於分類與回歸計算。 類似地, 繼續將該特征與淺層特征進行反 卷積與融合, 共計輸出6個融合后的特征圖, 形成一個沙漏式的結構,
最后給分類與回歸網絡做預測。

 

  具體的反卷積模塊如圖5.11所示。 這里深特征圖的大小是H×W×512, 淺特征圖的大小為2H×2W×D。 深特征圖經過反卷積后尺寸與淺特征圖相同, 再經過一些卷積、 ReLUBN操作后, 兩者進行逐元素的相乘, 最后經過一個ReLU模塊, 得到最終需要的特征圖。

 這里有以下3點需要說明:
  ·BN層在卷積與激活函數之間, 由於不同層之間的特征尺度與感受野不同, 直接融合在一起訓練難度較大, 利用BN層可以進行均一化處
理, 加速訓練。   ·在實驗時, DSSD采用逐元素相乘比逐元素相加提升了0.2%mAP, 速度上相乘操作比相加稍慢一點。
  ·對於上采樣的實現, 之前的一些方法一般利用雙線性插值操作,而DSSD這里使用了反卷積, 即包含了可學習的參數。
  在得到特征圖后, DSSD也改進了分類與回歸的預測模塊。 SSD的預測模塊是直接使用3×3卷積, 而DSSD則對比了多種方法, 最終選擇了如圖5.12所示的計算方式, 包含了一個殘差單元, 主路和旁路進行逐元素相加, 然后再接到分類與回歸的預測模塊中。
  DSSD的算法將深層的特征融合到了淺層特征圖中, 提升了淺層特征的語義性, 也因此提升了模型的性能, 尤其是對於小物體的檢測。

3. 彩虹網絡: RSSD

  原始的SSD算法使用了多層大小與感受野不同的特征圖進行檢測,因此對於物體的尺度變化有了一定的魯棒性, 但仍存在以下兩個問題:
    ·各個特征圖只考慮當前層的檢測尺度, 沒有考慮特征圖之間的關聯性, 容易出現多個特征圖上的預選框與一個真實框(GroundTruth)相匹配, 即使有NMS后續操作, 但也不能完全避免這種誤檢的情況。
    ·小物體檢測效果差: SSD主要利用淺層特征圖檢測小物體, 但由於淺層的特征圖語義信息太少, 影響了對小物體的檢測。

  針對上述問題, RSSDRainbow SSDR-SSD) 算法一方面利用分類網絡增加了不同特征圖之間的聯系, 減少了重復框的出現, 另一方面提出了一種全新的深淺特征融合的方法, 增加了特征圖的通道數, 大幅度提升了檢測的效果。
  當前, 深、 淺層特征融合已經成為了一種流行的提升檢測效果的方法。 RSSD嘗試了3種不同的融合方案。 這里的融合只針對需要進行后續分類與回歸的特征圖, 卷積網絡中的其他特征圖不參與融合。

3.1 池化融合
  對淺層的特征圖進行池化, 然后與下一個特征圖進行通道拼接(Concatenation) , 作為下一層特征圖的最終特征。 類似地, 依次向下進行通道拼接, 這樣特征圖的通道數逐漸增加, 並且融合了越來越多層的特征, 如圖5.13所示。

   這樣的連接方式可以使得深層特征圖既具有高語義信息, 又擁有淺層特征圖傳來的細節信息, 因此可以提升檢測的效果。

3.2 反卷積融合
  與池化融合方法相反, 反卷積融合是對深層的特征圖進行反卷積,擴充尺寸, 然后與淺層的特征圖進行通道拼接, 並逐漸傳遞到最淺層,如圖5.14所示。

 

 

   這種方法類似於FPN結構, 彌補了淺層的語義信息。

3.3 彩虹(Rainbow) 式融合
  最后一種是彩虹式融合方法, 結合了前兩種策略, 也是Rainbow SSD最終采用的方式。 網絡結構如圖5.15所示, 淺層特征通過池化層融合到深層中, 深層特征通過反卷積融合到淺層中, 這樣就使每一個特征 圖的通道數是相同的。 由於每一層都融合了多個特征圖的特征, 並且可以用圖5.15的顏色進行區分, 因此被稱為Rainbow SSD

 

   值得注意的是, 由於每一層的特征圖尺度不同, 並且感受野也不同, 因此在不同層融合之前, 需要做一次BN操作, 以統一融合時的每個層的尺度, 從而達到均一化的效果。
  RSSD除了提出彩虹式的特征提取網絡之外, 還共享了分類網絡分支的卷積權重。 從圖5.15中可以看出, 每一個特征圖的特征通道相同,因此可以采用同一個分類網絡來提取預選框的類別預測信息, 共用一套分類網絡權重參數, 這樣做的好處是將不同尺度的問題歸一化處理, 模型更加穩定, 也更容易收斂。
  總體來看, RSSD在不明顯增加計算量的基礎上, 融合了雙向的特征信息, 並且考慮了各個分類分支的關聯性, 使得模型的表達能力更強, 在一定程度上提升了小物體的檢測與物體的定位精度。

4. 基於SSD的兩階: RefineDet
  SSD作為一階網絡, 通過直接對固定預選框進行預測分類的方法,實現了簡單有效的檢測, 但相比兩階網絡, 其檢測精度較低。 另外, 兩階網絡如Faster RCNN, 檢測精度高, 同時也限制了其檢測速度。
  在上述前提下, 2018年, CVPRRefineDet結合了一階網絡與兩階網絡的優點, 在保持高效的前提下實現了精度更高的檢測。
  RefineDetSSD的基礎上, 一方面引入了Faster RCNN兩階網絡中邊框由粗到細兩步調整的思想, 即先通過一個網絡粗調固定框(在Faster RCNN中是Anchor, 在SSD中是PriorBox) , 然后再通過一個網細調; 另一方面采用了類似於FPN的特征融合方法, 可以有效提高對小物體的檢測效果。
  RefineDet的網絡結構主要由ARMAnchor Refinement Module) 、TCBTransfer Connection Block) 與ODMObject Detection Module)這3個模塊組成, 如圖5.16所示。 下面詳細介紹這3部分的結構與作用。

 

 

4.1 ARM部分

  ARM部分首先經過一個VGG 16或者ResNet-101的基礎網絡, 然后在多個特征圖上對應不同大小寬高的Anchors, 並用卷積網絡來提取這些Anchors的特征, 進一步可以求得每一個Anchor的分類與回歸損失。這一步起到了類似於RPN的作用, 網絡結構有點類似於SSD
  具體網絡以ResNet-101為例, 假設輸入圖像大小為320×320, 則圖5.16ARM部分的4個特征圖大小分別為40×4020×2010×105×5,前3個是ResNet中的網絡層, 最后一個是額外添加的一個模塊。
  總體來看, ARM有如下兩點作用:
    ·過濾掉一些簡單的負樣本, 減少后續模型的搜索空間, 也緩解了正、 負樣本不均衡的問題。

    ·通過類似於RPN一樣的網絡, 可以得到Anchor的預測值, 因此可以粗略地修正Anchor的位置, 為下一個模塊提供比固定框更精准的感興趣區域。 相比一階網絡, 這樣做往往可以得到更高的精度。
  下面以VGGNet為例, 使用PyTorch實現ARM模塊的搭建。

 

 

 

 

 

 

 

 4.2 TCB部分
  TCB模塊主要用於完成特征的轉換操作。 從圖5.16中可以看出,TCB模塊首先對ARM中的每一個特征圖進行轉換, 然后將深層的特征圖融合到淺層的特征圖中, 這一步非常像FPN中自上而下與橫向連接操作的操作。
  TCB模塊的具體結構如圖5.17所示, 使用了兩個3×3大小的卷積進一步處理ARM部分的特征圖, 與此同時, 利用反卷積處理深層的特征圖, 得到與淺層尺寸相同的特征, 然后逐元素相加, 最后再經過一個3×3卷積, 將結果輸出到ODM模塊中。

  從網絡結構來看, TCB模塊有些類似於FPN, 這種深淺融合的網絡可以使特征圖擁有更加豐富的信息, 對於小物體等物體預測會更加准確。
  下面使用PyTorch來搭建一個TCB模塊。

 

 

 

 

 

 

 

4.3 ODM部分

  ODMRefineDet的最后一個模塊, 基本采取了SSD多層特征圖的網絡結構, 但是相比SSD算法, ODM模塊的輸入有下面兩個優勢。

    ·更好的特征圖: 相比SSD從淺到深的特征, ODM接收的是TCB模塊深淺融合的特征, 其信息更加豐富, 質量更高。
    ·更好的預選框: SSD使用了固定的預選框PriorBox, 而ODM接收的則是經過ARM模塊優化后的Anchor, 位置更加精准, 並且正、 負樣本更加均衡。
  ODM后續的匹配與損失計算也基本沿用了SSD的算法, 采用0.5作為正、 負樣本的閾值, 正、 負樣本的比例為13

  RefineDet的損失包含了ARMODM兩部分。 ARM模塊包含了交叉熵分類與smoothL1損失函數; ODM部分則是Softmax損失與smoothL1損失兩部分。 此外, ARMODM損失在訓練時可以一起反向傳播, 因此可以實現端到端訓練。
  在具體的代碼實現時, 為了計算方便, 在ARM處並沒有直接抑制掉得分很低的Anchor, 而是在隨后的ODM中將兩部分的得分綜合考慮, 完成Anchor的分類。 這種操作也保證了全網絡只有一次預選框篩選, 從這個角度來看, RefineDet是一階的。
  RefineDet借鑒了兩階網絡的優點, 對預選框優化(Refine) 了兩次, 這也是其名稱RefineDet的由來。 由於結合了Faster RCNNSSDFPN等算法的優勢, 在RefineDet算法誕生時, 其在VOC 2007數據集上實現了單模型的最佳效果。

5. 多感受野融合: RFBNet
  在物體檢測領域中, 精度與速度始終是難以兼得的兩個指標。 對於兩階網絡, 如Faster RCNN, 第一階RPN網絡用於提取沒有類別信息的感興趣區域, 然后利用第二階對該區域進行分類與細回歸, 這樣雖然獲得了較高的精度, 但犧牲了速度。 對於性能強悍的主干網絡, 如ResNet-101的殘差結構、 FPN自上到下的特征融合, 也都是在犧牲了前向速度的前提下, 實現了較高的精度。
  一階網絡如SSDYOLO等利用一次預測就完成了物體的分類與回歸任務, 基本可以達到實時的速度, 但精度始終不如同時期的兩階絡。 基於一階網絡的改進算法, 如DSSDRefineDet等雖然提升了一階網絡的精度, 但仍犧牲了網絡的計算速度。
  針對以上問題, RFBNetReceptive Field Block Net) 受人類視覺感知的啟發, 在原有的檢測框架中增加了一些精心設計的模塊, 使得網絡擁有更為強悍的表征能力, 而不是簡單地增加網絡層數、 融合等, 因此獲得了較好的檢測速度與精度。
  神經學發現, 群體感受野的尺度會隨着視網膜圖的偏心而變化, 偏心度越大的地方, 感受野的尺度也越大。 而在卷積網絡中, 卷積核的不同大小可以實現感受野的不同尺度, 空洞卷積的空洞數也可以實現不同的偏心度。
  傳統的卷積模塊, 如Inception結構, 雖然利用了多個分支來實現多個尺度的感受野, 但由於空洞數都為1, 離心率相同, 因此在融合時僅僅是不同尺度的堆疊。
相比之下, RFBNet同時將感受野的尺度與偏心度納入到卷積模塊中, 設計了RFB模塊, 如圖5.18所示。 與Inception結構類似, RFB模塊擁有3個不同的分支, 並且使用了1×13×35×5不同大小的卷積核來模擬不同的感受野尺度, 使用了空洞數為135的空洞卷積來實現不同的偏心度。

 

   完成3個分支后, 再利用通道拼接的方法進行融合, 利用1×1的卷積降低特征的通道數。 可以看出, RFB模塊的特征融合與人類的感知特點十分類似。
  RFBNet將此RFB模塊集成到了SSD中, 在沒有使用ResNet-101的前提下, 可以達到兩階網絡的檢測精度。 同時, RFBNet還嘗試使用了更輕量化的網絡, 如MobileNet, 檢測效果仍然很好, 證明了該算法具有較強的泛化能力。
  總體來講, RFBNet同時實現了較好的檢測性能與較快的速度, 並且實現簡單, 是一個非常優雅的物體檢測算法。

6.總結
  SSD利用多個特征圖, 只用了一次的預測, 就實現了整個物體檢測。 與Faster RCNN相比, 雖然其精度稍遜色一些, 但在追求速度的場景, 尤其是實時檢測的要求中, SSD則更為適用。 此外, SSD的單階檢測之所以如此有效, 很大程度上得益於其充分的數據增強手段。 當我們在實際應用時, 如果缺乏數據或者容易發生過擬合現象, 可以借鑒SSD的數據增強過程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM