目標檢測 - TridentNet

轉載: https://zhuanlan.zhihu.com/p/54334986git

           http://haha-strong.com/2019/07/25/20190725-TridentNet/github

開源代碼:https://github.com/TuSimple/simpledet/tree/master/models/tridentnet算法

Facebook detectron2 官方收錄:https://github.com/facebookresearch/detectron2/tree/master/projects/TridentNet網絡

算法思路

將網路backbone最後一個改爲三個不一樣卷積率的卷積層並聯,實現對不一樣尺度特徵的提取。
以下圖所示:框架

motivation

對於一個backbone net而言有幾個因素會影響他們的性能,下采樣率、網絡深度以及感覺野。前面兩個因素已經有人研究過了,對於目標檢測中的感覺野的影響尚未人專門對此進行研究。本文經過對網的最後一個backbone中的卷積層改變卷積的空洞率以實現輸出特徵的感覺野的調整。實驗證實,不一樣的感覺野對不一樣尺度目標的檢測有着不一樣的影響,大的感覺野對尺度較大的目標檢測性能較好,小的感覺野對小目標的檢測性能較好ide

作法

做者提出的網絡框架以下圖所示:性能

如上圖所示,做者在特徵提取的最後一層增長了一個多分支的卷積層,用來提取不一樣尺度的特徵信息。爲了減小網絡參數量這幾個網絡共享參數,便於網絡的優化,在這裏做者經過實驗驗證當採用三個不一樣卷積空洞率時網絡的性能最佳。實驗結果以下圖所示:學習

                                                          

                                                           Figure 3: A trident block constructed from a bottleneck residual block.測試

 同時,做者也經過實驗證實將TridentNet添加在最後一層對網絡的性能提高是最佳的:優化

facebook/detectron2中TridentNet快速版本就是將ResNet50中的res4中某個卷積替換爲TridentConv便可,而且這裏TridentConv中不一樣空洞率的卷積最後是經過concat後輸出,也就是能夠無縫替換到ResNet結構中

Scale-aware training Scheme

最後一個設計則是借鑑SNIP,爲了不receptive field和scale不匹配的狀況,TridentNet對於每個branch只訓練必定範圍內尺度樣本,避免極端scale的物體對於性能的影響,根據ground truth box的寬w和高h,對每一個分支branch i 選擇proposal 的ROI的最大最小尺度爲:li和ui。

                      

性能

 

上圖所示,是該算法與現有算法的性能比較。這些算法都採用相同的網絡backbone,ResNet-101.
與採用多層特徵融合的SSD算法相比,本算法性能提高10個點左右。
與Fastr-RCNN相比,本算法較之有8個點的性能提高。
同時,多分支不一樣空洞率和可行變卷積的聯合使用能夠將網絡的性能比提高6個點左右。代表不一樣感覺野的應用有助於算法對不一樣目標的檢測。

總結一下

TridentNet在原始的backbone上作了三點變化:第一點是構造了不一樣receptive field的parallel multi-branch,第二點是對於trident block中每個branch的weight是share的。第三點是對於每一個branch,訓練和測試都只負責必定尺度範圍內的樣本,也就是所謂的scale-aware。這三點在任何一個深度學習框架中都是很是容易實現的。

相關文章
相關標籤/搜索