重磅开源!目标检测新网络 DetectoRS:54.7 AP,特征金字塔与空洞卷积的完美结合
原文鏈接:重磅開源!目標(biāo)檢測(cè)新網(wǎng)絡(luò) DetectoRS:54.7 AP,特征金字塔與空洞卷積的完美結(jié)合
論文地址:https://arxiv.org/abs/2006.02334
代碼地址(基于mmdetection實(shí)現(xiàn)):
https://github.com/joe-siyuan-qiao/DetectoRS
本文是谷歌團(tuán)隊(duì)提出的最新的目標(biāo)檢測(cè)方案,并且已經(jīng)完全開源。整個(gè)算法將遞歸特征金字塔(RFP,Recursive Feature Pyramid)和可切換的空洞卷積(SAC,Switchable Atrous Convolution)結(jié)合在一起,在COCO test-dev目標(biāo)檢測(cè)任務(wù)中,達(dá)到了54.7% box AP,相比之前提升1.4 AP,性能強(qiáng)悍。
簡(jiǎn)介
目標(biāo)檢測(cè)一直都是計(jì)算機(jī)視覺中最值得關(guān)注的領(lǐng)域,從經(jīng)典的兩階段(論文中將其概括為兩次looking和thinking機(jī)制)方法Faster RCNN、單階段的YOLO系列、SSD系列,到近段時(shí)間性能卓越的EfficientDet、CBNet、ResNeSt等,可以看出,通過backbone結(jié)構(gòu)的改進(jìn)來提升目標(biāo)檢測(cè)的性能是目前漲點(diǎn)和研究的新熱點(diǎn),值得大家關(guān)注與創(chuàng)新。
而在本文中,DetectoRS同樣從backbone的角度出發(fā),對(duì)目標(biāo)檢測(cè)性能進(jìn)行強(qiáng)化,具體來說有兩大部分的創(chuàng)新:
1、首先,DetectoRS在宏觀層面上,提出了遞歸特征金字塔(RFP,Recursive Feature Pyramid),它將特征金字塔網(wǎng)絡(luò)(Feature Pyramid Networks)的額外反饋連接加入到在自下而上的骨backbone層中。
2、其次,DetectoRS在微觀層面上,提出了可切換的空洞卷積(SAC,Switchable Atrous Convolution),它以不同的空洞率(rate)對(duì)特征進(jìn)行卷積,并使用switch函數(shù)合并卷積后的結(jié)果,SAC可以實(shí)現(xiàn)從標(biāo)準(zhǔn)卷積到Contional卷積的有效轉(zhuǎn)換,而無(wú)需更改任何預(yù)訓(xùn)練模型。
將遞歸特征金字塔(RFP,Recursive Feature Pyramid)和可切換的空洞卷積(SAC,Switchable Atrous Convolution)合并形成了DetectoRS,大大增強(qiáng)了目標(biāo)檢測(cè)的性能。具體來說,在COCO test-dev數(shù)據(jù)集上達(dá)到了54.7% box AP的SOTA性能,同時(shí)在COCO實(shí)例分割任務(wù)上達(dá)到47.1% mask AP的的性能,在COCO全景分割任務(wù)上達(dá)到49.6% AQ的性能。
DetectoRS的baseline:HTC(Hybrid Task Cascade)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-9BdgVbaG-1591350773431)(https://bbs.cvmart.net/uploads/images/202006/04/3/NQXjvtgfzC.gif?imageView2/2/w/1240/h/0)]
首先,來介紹一下Cascade RCNN。2018年CVPR上的Cascade RCNN算法通過級(jí)聯(lián)多個(gè)檢測(cè)器來不斷優(yōu)化結(jié)果,每個(gè)檢測(cè)器都基于不同的IoU閾值來界定正負(fù)樣本,前一個(gè)檢測(cè)器的輸出作為后一個(gè)檢測(cè)器的輸入,并且檢測(cè)器越靠后,IoU的閾值越高。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ZyEIrqpZ-1591350773433)(https://bbs.cvmart.net/uploads/images/202006/04/3/6pwV0TRlDU.gif?imageView2/2/w/1240/h/0)]
Cascade RCNN具體結(jié)構(gòu)
上圖是Cascade RCNN采用的級(jí)聯(lián)方法,可以看到每一個(gè)檢測(cè)器的邊框輸出作為下一個(gè)檢測(cè)器的輸入,并且檢測(cè)器的IoU閾值是逐漸提升的,因此這種方法可以逐步過濾掉一些誤檢框,并且提升邊框的定位精度。Cascade RCNN算法深入探討了IoU閾值對(duì)檢測(cè)器性能的影響,并且在不增加任何tricks的前提下,在多個(gè)數(shù)據(jù)集上都有了明顯的精度提升。
接下來,來看HTC(Hybrid Task Cascade),HTC可以看作是在cascade R-CNN和mask R-CNN的基礎(chǔ)上,作者想通過級(jí)聯(lián)和來實(shí)現(xiàn)實(shí)例分割,進(jìn)而找出一種最好的級(jí)聯(lián)結(jié)構(gòu),來實(shí)現(xiàn)檢測(cè),提高mAP。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Nx5z82B2-1591350773435)(https://bbs.cvmart.net/uploads/images/202006/04/3/EQllaMKQKW.gif?imageView2/2/w/1240/h/0)]
HTC是一種多任務(wù)多階段的混合級(jí)聯(lián)結(jié)構(gòu),融合了一個(gè)語(yǔ)義分割的分支來增強(qiáng) spatial context。整個(gè)框架的演進(jìn)可以用上面的四張圖來表示,其中 M 表示 mask 分支,B 表示 box 分支,數(shù)字表示 stage,M1 即為第一個(gè) stage 的 mask 分支。HTC這種框架取得了明顯優(yōu)于 Mask R-CNN 和 Cascade Mask R-CNN 的結(jié)果。
HTC的關(guān)鍵思想是:通過在每個(gè)階段結(jié)合級(jí)聯(lián)和多任務(wù)來改善信息流,并利用空間背景來進(jìn)一步提高準(zhǔn)確性。整個(gè)網(wǎng)絡(luò)是多任務(wù)多階段的混合級(jí)聯(lián)結(jié)構(gòu),訓(xùn)練時(shí)每個(gè) stage 內(nèi) box 和 mask 分支采用交替執(zhí)行,并在不同 stage 的 mask 分支之間引入直接的信息流。
HTC在相鄰的 stage 的 mask 分支之間增加一條連接,提供 mask 分支的信息流,讓Mi+1M_{i+1}Mi+1?能知道 MiM_iMi?的特征。
同時(shí),HTC將語(yǔ)義分割引入到實(shí)例分割框架中,以獲得更好的 spatial context。
宏觀角度:RFP(遞歸特征金字塔)
RFP(遞歸特征金字塔)= Recursive Structure + Bottom-up Backbone Layers + Top-down FPN Layers + ASPP as the Connecting Module
RFP提出的遞歸方法與最近提出的CBNet 中的遞歸方法相似,CBNet方法中將多個(gè)主干級(jí)聯(lián)以輸出特征作為FPN的輸入。相比之下,RFP通過包含ASPP結(jié)構(gòu)的FPN和有效的融合模塊一起來執(zhí)行遞歸計(jì)算。
1、Recursive Feature Pyramid
遞歸特征金字塔(RFP)主要將反饋連接添加到FPN自下而上的過程中(FPN結(jié)構(gòu)最左側(cè)為普通的卷積網(wǎng)絡(luò),默認(rèn)使用ResNet結(jié)構(gòu),用作提取語(yǔ)義信息)
在RFP環(huán)節(jié)對(duì)ResNet進(jìn)行了改進(jìn),以使其同時(shí)接受原來的特征圖輸入和反饋信息作為RFP結(jié)構(gòu)的輸入。一般來說,ResNet具有四個(gè)階段,每個(gè)階段都由幾個(gè)相似的基本殘差block組成。這里僅對(duì)每個(gè)階段的第一個(gè)塊進(jìn)行更改,如圖3所示。整體的改進(jìn)結(jié)構(gòu)比較簡(jiǎn)單,很好地融合了輸入Input和RFP的特征。
那么,如何實(shí)現(xiàn)級(jí)聯(lián)呢? 主要來看下面這兩個(gè)模塊。
2、ASPP as the Connecting Module
使用帶有空洞卷積的空間金字塔池化(ASPP)模塊來實(shí)現(xiàn)兩個(gè)遞歸特征金字塔的級(jí)聯(lián)連接,該連接模塊以其特征為輸入并將其轉(zhuǎn)換為圖3中使用的RFP的特征(RFP Feature)。
ASPP結(jié)構(gòu)示意圖,本文中有所修改去除了1x1卷積分支
本文中的ASPP有四個(gè)并行分支對(duì)其輸入進(jìn)行擴(kuò)展,然后將它們的輸出沿通道維連接在一起,以形成的最終輸出。它們的三個(gè)分支使用卷積層,然后是ReLU層,輸出通道數(shù)是輸入通道數(shù)的1/4。最后一個(gè)分支使用全局平均池化層來壓縮特征,然后使用1x1卷積層和ReLU層將壓縮后的特征轉(zhuǎn)換為1/4尺寸(逐通道)的特征。最后,將其調(diào)整大小并與其他三個(gè)分支的特征進(jìn)行連接。**三個(gè)空洞模塊的配置:kernel size = [1, 3, 3], atrous rate =[1, 3, 6], padding = [0, 3, 6]。**四個(gè)分支中的每個(gè)分支都產(chǎn)生一個(gè)具有輸入特征通道數(shù)量1/4的通道的特征,將它們連接起來將生成與RFP的輸入特征尺寸相同的特征。
3、Output Update by the Fusion Module
融合模塊與循環(huán)神經(jīng)網(wǎng)絡(luò)中的更新過程非常相似。融合模塊通過卷積層和Sigmoid運(yùn)算來計(jì)算注意力圖,然后將結(jié)果注意力圖用于計(jì)算更新后的加權(quán)和。
微觀角度:SAC(Switchable Atrous Convolution)
SAC(可切換的空洞卷積)= Different atrous rates + Switch functions
1、SAC(可切換的空洞卷積)結(jié)構(gòu)
作者將主干網(wǎng)絡(luò)ResNet中的每個(gè)3x3卷積層都轉(zhuǎn)換為SAC,從而在不同的空洞率之間實(shí)現(xiàn)對(duì)卷積計(jì)算的軟切換。上圖中的鎖表示權(quán)重相同,只是訓(xùn)練的細(xì)節(jié)差異有所不同。兩個(gè)全局上下文模塊將圖像級(jí)信息添加到特征中。
SAC的計(jì)算過程可以用上面的式子來表示,其中x為輸入,w為權(quán)重,r為空洞卷積的空洞率rate,這也是SAC的超參數(shù)。Δw表示具有可訓(xùn)練的權(quán)重,并且switch切換函數(shù)S(·)由5x5的平均池化層和1x1卷積層組成,其與輸入和位置相關(guān)。
SAC中鎖定機(jī)制,通過將一個(gè)權(quán)重設(shè)置為w而另一個(gè)權(quán)重設(shè)置為w +Δw,其原因如下:目標(biāo)檢測(cè)器通常使用預(yù)訓(xùn)練的checkpoint來初始化權(quán)重。但是,**對(duì)于從標(biāo)準(zhǔn)卷積層轉(zhuǎn)換而來的SAC層,較大的空洞率rate的權(quán)重通常是缺失的。由于可以通過相同的權(quán)重以不同的粗略度粗略地檢測(cè)出不同比例的物體,因此用預(yù)訓(xùn)練模型中的權(quán)重來初始化丟失的權(quán)重是可以的。本文使用w + ?w表示從預(yù)訓(xùn)練checkpoint開始的缺失的權(quán)重,并使用0初始化?wi。**當(dāng)固定Δw= 0時(shí),通過實(shí)驗(yàn)觀察到AP下降了0.1%,但是沒有鎖定機(jī)制的?w會(huì)使AP降低很多。
2、SAC中的全局上下文模塊(Global Context)
如圖4所示,作者在SAC的主要組件之前和之后插入兩個(gè)全局上下文模塊。當(dāng)輸入特征首先被全局平均池化層壓縮時(shí),這兩個(gè)模塊的權(quán)重就降低了。全局上下文模塊與SENet相似,但有兩個(gè)主要區(qū)別:(1)全局上下文模塊只有一個(gè)卷積層,沒有任何非線性層;(2)輸出被加回到主干中,而不是將輸入乘以通過Sigmoid重標(biāo)定操作后的值。
從實(shí)驗(yàn)上發(fā)現(xiàn)在SAC組件之前添加全局上下文信息(即在switch函數(shù)功能中添加全局信息)對(duì)檢測(cè)性能有積極影響。作者推測(cè)這是因?yàn)?strong>在可以獲得全局信息時(shí),switch函數(shù)可以做出更穩(wěn)定的切換預(yù)測(cè)。然后,將全局信息移至切換功能之外,并將其放置在主體之前和之后,以便卷積層和switch函數(shù)都能獲取全局上下文信息。
3、SAC的實(shí)現(xiàn)細(xì)節(jié)
使用可變形卷積替換圖4中的卷積運(yùn)算,通過SAC替換骨干網(wǎng)絡(luò)ResNet中的所有3x3卷積層,全局上下文模塊中的權(quán)重和偏差用0初始化。switch函數(shù)中的權(quán)重用0初始化,偏置設(shè)置為1。Δw用0初始化。
實(shí)驗(yàn)與結(jié)果
訓(xùn)練數(shù)據(jù)集作者采用的COCO數(shù)據(jù)集。作者使用mmdetection 實(shí)現(xiàn)了Detec-toRS。baseline模型是HTC ,在單個(gè)NVIDIA TITAN RTX顯卡上測(cè)試。為了方便對(duì)比,整體的實(shí)驗(yàn)配置和HTC網(wǎng)絡(luò)保持一致。
消融實(shí)驗(yàn):
baseline:HTC + ResNet-50 + FPN
將提出的RFP和SAC添加到baseline,這兩者都能夠?qū)P提高4%以上,而速度不會(huì)降低太多。將它們組合在一起的DetectoRS可以以3.9 fps的速度獲得49%的box AP和42.1%的Mask AP。
下表是RFP和SAC各個(gè)模塊的作用,驗(yàn)證了結(jié)構(gòu)設(shè)計(jì)的優(yōu)勢(shì)。
[
從上面的可視化對(duì)比圖可以看出,RFP與選擇性增強(qiáng)或抑制神經(jīng)元激活的人類視覺類似,能夠更輕松地找到被遮擋的對(duì)象,而附近的上下文信息則更為關(guān)鍵。由于SAC可以根據(jù)需要增加感受野,因此它更有能力檢測(cè)圖像中的大物體。
對(duì)比實(shí)驗(yàn)
在COCO test-dev 目標(biāo)檢測(cè)中,DetectoRS在使用ResNet-50和ResNeXt-101-32x4d作為主干網(wǎng)絡(luò)時(shí)達(dá)到54.7% AP,超越了其他的算法。
擴(kuò)展實(shí)驗(yàn)
在COCO test-dev 實(shí)例分割中,DetectoRS在使用ResNet-50和ResNeXt-101-32x4d作為主干網(wǎng)絡(luò)時(shí)達(dá)到47.1% AP,目前與ResNeSt并列排名第一。
在COCO test-dev 全景分割中,DetectoRS達(dá)到49.6% PQ,相比于其他算法有將近兩個(gè)點(diǎn)的提升。
更多實(shí)驗(yàn)細(xì)節(jié)可以參考原文的代碼。
◎作者檔案
Rocky X,一個(gè)樂于分享技術(shù)干貨的AI愛好者
個(gè)人公眾號(hào):AI算法修煉營(yíng)
歡迎大家聯(lián)系極市小編(微信ID:fengcall19)加入極市原創(chuàng)作者行列
關(guān)注極市平臺(tái)公眾號(hào)(ID:extrememart),獲取計(jì)算機(jī)視覺前沿資訊/技術(shù)干貨/招聘面經(jīng)等
總結(jié)
以上是生活随笔為你收集整理的重磅开源!目标检测新网络 DetectoRS:54.7 AP,特征金字塔与空洞卷积的完美结合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 不仅搞定“梯度消失”,还让CNN更具泛化
- 下一篇: Facebook 最新力作 FBNetV