DetNet解读
簡(jiǎn)介
在目標(biāo)檢測(cè)最常見(jiàn)的二階段和單階段范式下,一般將目標(biāo)檢測(cè)模型分為backbone、neck和head三個(gè)部分,其中backbone指的是骨干網(wǎng)絡(luò),它用于提取圖像的特征。目前最流行的backbone選擇是ResNet系列及其變種,這主要?dú)w功于ResNet的流行,有著大量的結(jié)構(gòu)優(yōu)化和預(yù)訓(xùn)練模型。
不過(guò),其實(shí)在2018年,曠世就提出了一種名為DetNet的backbone,旨在更好地適應(yīng)目標(biāo)檢測(cè)這個(gè)任務(wù)。DetNet的設(shè)計(jì)初衷是什么呢,其實(shí)是因?yàn)槟繕?biāo)檢測(cè)通常都按照遷移學(xué)習(xí)的思路直接采用ImageNet上預(yù)訓(xùn)練的圖像分類模型來(lái)作為backbone(如ResNet50),然而,圖像分類和目標(biāo)檢測(cè)其實(shí)還是有不少不同之處的。不少目標(biāo)檢測(cè)新方法都采用不同于圖像分類任務(wù)的額外stage來(lái)處理不同尺度的目標(biāo),這是因?yàn)?#xff0c;目標(biāo)檢測(cè)不僅僅需要識(shí)別出目標(biāo)實(shí)例的類別,還要在空間上進(jìn)行定位,較大的下采樣倍率獲得更大的感受野有利于全圖級(jí)別的圖像分類,但不利于網(wǎng)絡(luò)對(duì)于目標(biāo)的定位能力。
針對(duì)這些目標(biāo)檢測(cè)和圖像分類的gap,論文設(shè)計(jì)了一種全新的backbone—DetNet,通過(guò)對(duì)ResNet進(jìn)行修改,它能夠在較深層保持較高的空間分辨率,實(shí)驗(yàn)表明,DetNet無(wú)論在目標(biāo)檢測(cè)還是實(shí)例分割任務(wù)上都能獲得SOTA結(jié)果。
-
論文標(biāo)題
DetNet: A Backbone network for Object Detection
-
論文地址
http://arxiv.org/abs/1804.06215
-
論文源碼
https://github.com/guoruoqian/DetNet_pytorch
介紹
如上一節(jié)所述,目標(biāo)檢測(cè)任務(wù)和圖像分類任務(wù)是有區(qū)別的,這是由它們?nèi)蝿?wù)本身決定的,目標(biāo)檢測(cè)不僅僅需要識(shí)別對(duì)象的類別,還需要空間上定位出對(duì)象的邊界框。
具體而言,用分類模型作為檢測(cè)的backbone存在兩個(gè)問(wèn)題:第一,FPN等結(jié)構(gòu)會(huì)在原來(lái)的backbone結(jié)構(gòu)基礎(chǔ)上添加額外的stage來(lái)完成不同尺度目標(biāo)的檢測(cè),這個(gè)額外添加的stage是無(wú)法在ImageNet上預(yù)訓(xùn)練的。第二,由于這些backbone是來(lái)自于分類任務(wù),因此它們一般會(huì)采取較大的下采樣倍率來(lái)獲取較大的感受野,更大的感受野保證了更多的語(yǔ)義信息,這是有利于分類任務(wù)的,然而這種較小的特征圖空間分辨率太小是不利于大目標(biāo)和小目標(biāo)的定位的。
一個(gè)好的backbone應(yīng)該能解決上述的問(wèn)題,因此作者提出了DetNet。由于目標(biāo)的尺度變化,因此DetNet也類似FPN那樣使用了額外的stage,不過(guò)即使在額外的stage中,空間分辨率不會(huì)進(jìn)行下采樣從而保持不變。但是,高分辨率特征圖的代價(jià)就是會(huì)帶來(lái)比較多的計(jì)算量,因此作者設(shè)計(jì)了一個(gè)膨脹bottleneck來(lái)保證DetNet的高效。
DetNet
動(dòng)機(jī)
分類網(wǎng)絡(luò)不適用于目標(biāo)檢測(cè),因此誕生了一些新的方法如Feature Pyramid Network(FPN),如下圖的A所示。使用FPN以及膨脹卷積是后來(lái)目標(biāo)檢測(cè)器的常用配置,不過(guò)這些檢測(cè)方法仍然存在一些問(wèn)題。
為了解決這些問(wèn)題,DetNet其實(shí)有幾個(gè)初衷。一方面,DetNet所有層都是可以在ImageNet上預(yù)訓(xùn)練的,另一方面希望得到兼具高分辨率和高語(yǔ)義的特征。
結(jié)構(gòu)設(shè)計(jì)
DetNet以最常用的ResNet50為baseline,并保證1-4的stage和ResNet50一致。要設(shè)計(jì)一個(gè)適用于目標(biāo)檢測(cè)的backbone其實(shí)主要有兩個(gè)難點(diǎn),一方面,保證網(wǎng)絡(luò)輸出的高分辨率是非常消耗算力的;另一方面,減少下采樣倍率會(huì)導(dǎo)致語(yǔ)義信息不充分,從而有害于分類等任務(wù)。DetNet就是精心設(shè)計(jì)來(lái)處理這兩個(gè)難點(diǎn)的,它的前4個(gè)stage和ResNet50一樣,區(qū)別從第5個(gè)stage開(kāi)始。需要說(shuō)明的是,這個(gè)網(wǎng)絡(luò)當(dāng)然也要適用于分類任務(wù),因?yàn)樾枰贗mageNet上預(yù)訓(xùn)練。
首先,DetNet從stage4開(kāi)始,下采樣倍率維持16不變,并且引入了新的stage即P6來(lái)用于后續(xù)的目標(biāo)檢測(cè)任務(wù),這和FPN是類似的。
接著,為了保證stage4之后的特征圖尺寸不變,每個(gè)stage會(huì)首先經(jīng)過(guò)一個(gè)以1x1卷積(這個(gè)1x1卷積其實(shí)擔(dān)負(fù)了跨通道的信息融合的作用,非常有效)為核心的膨脹bottleneck中,它的結(jié)構(gòu)如下圖B所示,它使用了膨脹卷積來(lái)擴(kuò)大感受野。膨脹卷積也是很消耗算力的,所以stage5和stage6的通道數(shù)不會(huì)像ResNet那樣加倍,而是保持不變,以此減少計(jì)算開(kāi)銷。整個(gè)網(wǎng)絡(luò)和FPN類似,最后的幾個(gè)stage如下圖的D和E,在整個(gè)數(shù)據(jù)流動(dòng)過(guò)程中和ResNet是類似的,只是重復(fù)B模塊和A模塊,但是,在自底向上進(jìn)行特征圖融合的時(shí)候,經(jīng)過(guò)一個(gè)1x1卷積來(lái)進(jìn)行跨stage的信息融合。
實(shí)驗(yàn)
按照一般的設(shè)置預(yù)訓(xùn)練backbone并用于檢測(cè),和其他方法的對(duì)比如下,實(shí)驗(yàn)表明,DetNet59其實(shí)是在精度上對(duì)標(biāo)ResNet101的,但是算力消耗上其實(shí)只比ResNet50多一些。
同時(shí),作為一個(gè)設(shè)計(jì)用于目標(biāo)檢測(cè)的backbone,它不在ImageNet上預(yù)訓(xùn)練的表現(xiàn)如何呢,如下表所示,效果也是比ResNet50好不少的。
作者也在準(zhǔn)確率和召回率方面做了實(shí)驗(yàn),可以看到,DetNet在大物體的準(zhǔn)確率上提升其實(shí)挺大的,且IOU閾值越大越顯著,這也說(shuō)明其最終特征圖還保留不少分辨率信息,對(duì)定位很有效。此外,IOU閾值要求不高的時(shí)候,小目標(biāo)召回率很高,這說(shuō)明它也能很好處理小目標(biāo)漏檢問(wèn)題。
當(dāng)然,作者也做了實(shí)驗(yàn)證明了我之前所說(shuō)的那個(gè)1x1卷積的巨大效果,還有膨脹卷積的實(shí)驗(yàn)我這里就不貼了。
最后附上一張?jiān)跈z測(cè)賽道上和SOTA的對(duì)比,提升還是蠻顯著的,這篇文章的實(shí)驗(yàn)也非常豐富。
總結(jié)
總的來(lái)說(shuō),DetNet針對(duì)圖像分類模型不適用于目標(biāo)檢測(cè)任務(wù)進(jìn)行了改進(jìn),在backbone上做文章還取得了很不錯(cuò)的效果,實(shí)現(xiàn)簡(jiǎn)單,計(jì)算量小,也不需要太多的trick,還是很值得了解的。
超強(qiáng)干貨來(lái)襲 云風(fēng)專訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生總結(jié)
- 上一篇: MMDetection-配置文件
- 下一篇: DEFT解读