【论文笔记】:DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution
&Title
- DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution
- 代碼
&Summary
許多現代的物體檢測器通過使用兩次觀察和思考的機制展示了出色的性能。 在本文中,我們探索了用于目標檢測的主干設計中的這種機制。 ’
- 在宏級別,我們提出了遞歸特征金字塔,它結合了從特征金字塔網絡到自下而上的骨干層的額外反饋連接。
- 在微觀層面上,我們提出了可切換的Atrous卷積,它以不同的atrous速率對特征進行卷積,并使用switch函數收集結果。
將它們組合在一起可產生DetectoRS,從而大大提高了對象檢測的性能。
在COCO測試開發中,DetectoRS達到了用于對象檢測的54.7%的box AP,用于實例分割的47.1%的mask AP和用于全景分割的49.6%的PQ。
&Research Objective
looking and thinking twice in backbone
&Problem Statement
受人類視覺系統的啟發,計算機視覺中已實例化了兩次查看和思考的機制,并顯示了出色的性能。
- 許多流行的兩階段目標檢測器,例如Faster R-CNN [58],首先輸出目標提議,然后根據該提議提取區域特征以檢測目標。
- Cascade R-CNN [5]開發了一個多級檢測器,在此之后的檢測器頭部將通過更多選擇性示例進行訓練。
這種設計理念的成功促使我們在用于對象檢測的神經網絡主干設計中進行探索。
&Method(s)
RFP
在宏觀層面上,我們提出的遞歸特征金字塔(RFP)建立在特征金字塔網絡(FPN)之上,通過將額外的反饋連接從FPN層合并到自下而上的骨干層,如上圖所示。將遞歸結構展開為順序實現(展開如下圖所示),我們獲得了用于對象檢測器的主干,該主干可以將圖像查看兩次或更多次。類似于在Cascade R-CNN中級聯檢測器頭經過更多選擇性示例訓練后,我們的RFP遞歸增強了FPN以生成越來越強大的表示形式。類似于深度監控網,反饋連接將直接從檢測器頭接收梯度的特征帶回到自下而上的骨干網的低層,以加快訓練速度并提高性能。我們提出的RFP實現了兩次思考的順序設計,其中自下而上的骨干網和FPN運行了多次,其輸出功能取決于前面步驟中的功能。
如何遞歸傳遞呢??先看FPN的公式表達:Bi表示自下而上的骨干網的第i個階段,Fi表示第i個自上而下的FPN操作,i為第i層
所以對于RFP來說,公式則如下:不同之處在于右邊的式子多了個Ri,Ri表示特征轉換,然后再將其連接到自底向上的主干。
ok,對于多次遞歸來說的話,就需要T來表示迭代的次數:
我們使用上標t表示展開步驟t的操作和特征。 f0i設置為0。在我們的實現中,Fti和Rti在不同的步驟之間共享。
ASPP(Connecting Module Input)
- 語義分割(semantic segmentation)–DeepLabV3之ASPP(Atrous Spatial Pyramid Pooling)代碼詳解
ASPP將特征fti 作為其輸入并將其轉換為圖3中使用的RFP特征。
ASPP中有四個并行分支以fti作為輸入,然后將它們的輸出沿通道維數連接在一起,以形成R的最終輸出。它們的三個分支使用卷積層,后跟ReLU層,輸出通道數為1/4輸入通道數。最后一個分支使用全局平均池化層壓縮特征,然后使用1x1卷積層和ReLU層將壓縮后的特征轉換為1/4尺寸(逐通道)的特征。最后,它被調整大小并與其他三個分支的特征連接在一起。這三個分支中的卷積層具有以下配置:內核大小= [1、3、3],粗率= [1、3、6],填充= [0、3、6]。與原始的ASPP 不同,我們在連接的特征之后沒有卷積層,因為此處R不會生成用于密集預測任務的最終輸出。 請注意,四個分支中的每一個都產生一個特征,其特征通道的輸入特征為輸入特征的1/4,并將它們連接起來將生成一個特征,該特征的大小與R的輸入特征相同。
Fusion module
RFP還使用融合模塊來組合fti和ft+1i來更新等式中使用的展開階段t +1的fi值。
融合模塊使用特征ft+1i通過卷積層和Sigmoid操作計算注意力圖。 所得注意力圖用于計算fti和ft+1i的加權和以形成更新的fi。 此fi將在接下去的步驟中用作fti進行計算。
SAC
在微觀層面上,我們提出了可切換原子卷積(SAC),它可將相同的輸入特征與不同的atrous 率進行卷積,并使用切換功能來收集結果。上圖顯示了SAC概念的圖示。
上圖顯示了一個3x3卷積層的示例,其原子率設置為1(紅色)和2(綠色):可以使用不同的原子率通過同一組卷積權重粗略地檢測出相同比例的同類物體 。
開關功能在空間上是相關的,即,特征圖的每個位置可能具有不同的開關來控制SAC的輸出。為了在檢測器中使用SAC,我們將自下而上的主干網中的所有標準3x3卷積層都轉換為SAC,從而大大提高了檢測器性能。
某些先前的方法采用條件卷積,例如[39,74],它也將不同卷積的結果組合為單個輸出。
與那些需要從頭開始訓練其架構的方法不同,SAC提供了一種機制,可以輕松轉換預先訓練的標準卷積網絡(例如ImageNet預先訓練的[59]檢查點)。此外,在SAC中使用了一種新的權重鎖定機制,其中除了可訓練的差異之外,不同 atrous 卷積的權重相同。
上圖是SAC的總體架構,它具有三個主要組件:在SAC組件之前和之后附加了兩個全局上下文模塊。
SAC
使用y = Conv(x,w,r)來表示權重為w和原子率r的卷積運算,其中x為輸入和輸出y。 然后,可以將卷積層轉換為SAC,如下所示
其中,r是SAC的超參數,Δw是可訓練的權重,并且開關函數S(·)被實現為具有5x5內核和1x1卷積層的平均池化層(請參見圖4)。 開關功能取決于輸入和位置。 因此,骨干模型能夠根據需要適應不同的規模。 除非另有說明,否則我們在實驗中將r設置為3。
我們提出一種鎖定機制,將一個權重設置為w,將另一個重量設置為w + ?w
原因如下。 對象檢測器通常使用預訓練的檢查點來初始化權重。 但是,對于從標準卷積層轉換而來的SAC層,缺少較大atrous率的權重。 由于可以用相同的權重以不同的atrous率粗略地檢測出不同比例的物體,因此自然地用預訓練模型中的權重來初始化丟失的權重是很自然的。 我們的實現對缺失的權重使用w + ?w,其中w來自預訓練的檢查點,而?w初始化為0。固定?w = 0時,我們觀察到AP下降了0.1%。 但是沒有鎖定機制的單獨Δw會使AP大大降低。
Global Context
在SAC主要組件之前和之后插入兩個全局上下文模塊。由于首先通過全局平均池化層對輸入要素進行壓縮,因此這兩個模塊的重量輕。全局上下文模塊類似于SENet [31],但有兩個主要區別:
- 我們只有一個卷積層,沒有任何非線性層
- 輸出被加回到主流上,而不是乘以輸入由Sigmoid計算的重新校準值
通過實驗,我們發現在SAC組件之前添加全局上下文信息(即,將全局信息添加到switch函數)對檢測性能有積極影響。我們推測這是因為當全局信息可用時,S可以做出更穩定的切換預測。然后,我們將全局信息移到切換功能之外,并將其放在主體之前和之后,以便Conv和S都可以從中受益。我們沒有采用原始的SENet公式,因為我們發現最終模型AP沒有任何改進。
&Evaluation
&Thinks
- looking and thinking twice這個insight算是比較創新的吧,其實認真看的話,沒啥可以參考借鑒的,但是漲點確實很牛逼,畢竟目前精度最高。
- RFG中,說是多次的迭代,但本文也僅僅迭代了兩次。是否更多次可以有更好的效果???
- RFG其實就是對特征的重復利用,而SAC像是做自適應的選擇卷積操作(個人感覺)
總結
以上是生活随笔為你收集整理的【论文笔记】:DetectoRS: Detecting Objects with Recursive Feature Pyramid and Switchable Atrous Convolution的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: p2p shareaza 老牌多功能跨协
- 下一篇: 异步调用的接口设计