NAS在目標(biāo)檢測中的應(yīng)用:6篇相關(guān)論文對比解讀
加入極市專業(yè)CV交流群,與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度?等名校名企視覺開發(fā)者互動交流!
同時提供每月大咖直播分享、真實項目需求對接、干貨資訊匯總,行業(yè)技術(shù)交流。關(guān)注?極市平臺?公眾號?,回復(fù)?加群,立刻申請入群~
NAS除了應(yīng)用在classification問題上,還有很多在detection上的研究。
對于detector,不管是anchor和anchor free的檢測方法,主要有以下4個components:
Backbone:常見的backbone網(wǎng)絡(luò)有ResNet,ResNeXt等,輕量級的有mobilenet、shufflenet、efficientnet等等,通常需要在ImageNet上進(jìn)行預(yù)訓(xùn)練,但近來一些paper指出,如果訓(xùn)練時間足夠長,那么可以不需要使用ImageNet上的預(yù)訓(xùn)練模型。 Neck:也就是FPN等等結(jié)構(gòu),是為了利用不同 level 的feature,然后進(jìn)行一些fusion,以取得更好的結(jié)果。 RPN:RPN僅僅存在two-stage的檢測器中。因為結(jié)構(gòu)簡單,很少進(jìn)行search。 Head:進(jìn)行最終的anchor的分類和修正。
大部分NAS for detection的Motivation很直接,就是對一個或多個component進(jìn)行search。例如:
DeNAS和SpineNet是為檢測任務(wù)搜索一個Backbone; NAS-FPN搜索的是Neck; Auto-FPN分別搜索了Neck和Head; Hit-Detector則同時搜索檢測網(wǎng)絡(luò)的backbone、neck和head。
這樣,Detection+NAS就轉(zhuǎn)化為component的優(yōu)化。
1、DetNAS: Backbone Search for Object Detection
paper:https://arxiv.org/abs/1903.10979
code:https://github.com/megvii-model/DetNAS
大多數(shù)目標(biāo)檢測器方法直接Backbone是圖像分類設(shè)計的網(wǎng)絡(luò),但因為圖像分類僅關(guān)注的是圖中主要物體是什么,而目標(biāo)檢測不僅關(guān)注每個目標(biāo)的類別,還有位置。受到One shot NAS的啟發(fā),DetNAS通過將權(quán)重訓(xùn)練和結(jié)構(gòu)搜索解耦來進(jìn)行檢測器Backbone的搜索。
具體訓(xùn)練分為三步:
1)在ImageNet上預(yù)訓(xùn)練Supernet,
2)在檢測數(shù)據(jù)集上微調(diào)Supernet,
3)在訓(xùn)練好的Supernet上使用進(jìn)化算法進(jìn)行搜索。

2、NAS-FPN: learning scalable feature pyramid architecture for object detection
paper:https://arxiv.org/abs/1904.07392
NAS-FPN討論了檢測網(wǎng)絡(luò)的neck如何自動地進(jìn)行特征分層連接,從而取得精度和速度的權(quán)衡。
首先,F(xiàn)PN在NAS-FPN中看做是由許多的“Merging Cells”組成的,如下圖:

merging cell的機(jī)制是:從現(xiàn)有的feature layers中任意選取兩個feature map,并選擇輸出的分辨率,然后選擇此次的Binary Op,將選擇的兩個feature map融合并按照上一步選擇的分辨率生成新的feature map。
然后,NAS-FPN也采用了以RNN作為控制器的強(qiáng)化學(xué)習(xí)搜索方法,與一般NAS搜索方法相似,為了加快搜索速度,采用了代理的方式。
3、Auto-FPN: Automatic Network Architecture Adaptation for Object Detection Beyond Classification
paper:https://openaccess.thecvf.com/content_ICCV_2019/papers/Xu_Auto-FPN_Automatic_Network_Architecture_Adaptation_for_Object_Detection_Beyond_Classification_ICCV_2019_paper.pdf
如下圖示,AutoFPN的創(chuàng)新點在Neck和Head網(wǎng)絡(luò)中,Neck是針對backbone的特征先做Auto-fusion操作,而Auto-head使用NAS技術(shù)搜索得到一個網(wǎng)絡(luò)用于分類和回歸。

搜索方法:Auto-fusion和Auto-head都采用了Differentiable NAS的搜索方式,沒有什么特殊的地方。DNAS的介紹可以參考:
Differentiable NAS Research Clues,https://zhuanlan.zhihu.com/p/145560220
Resource Constraint : AutoFPN加入了【模型大小、FLOPs、memory access cost (MAC)】三個方面的資源約束,這樣既可以避免生成的模型過大。
4、NAS-FCOS
paper:https://arxiv.org/abs/1906.04423
NAS-FCOS和Auto-FPN相似,搜索的是neck和head部分,不同的是采用RL的方法進(jìn)行搜索,搜索空間也略有點不同。

5、SpineNet: A Novel Architecture for Object Detection Discovered with Neural Architecture Search
paper:https://arxiv.org/abs/1912.05027
SpineNet提出了一種叫做尺度重排(scale-permuted )的元結(jié)構(gòu)模型,也就是說:
中間feature maps的空間分辨率應(yīng)該能夠隨時增加或減少,以便模型能夠隨著深度的增加而保留空間信息。 其次,特征圖之間的聯(lián)系應(yīng)該能夠跨特征尺度,以促進(jìn)多尺度特征融合。

顯然SpineNet是對backbone的搜索,搜出來的SpineNet也可以應(yīng)用于分類網(wǎng)絡(luò),從實驗數(shù)據(jù)來看效果沒這么驚艷。
6、Hit-Detector: Hierarchical Trinity Architecture Search for Object Detection.
paper:https://arxiv.org/pdf/2003.11818.pdf
code:ggjy/HitDet.pytorch
Hit-Detector是第一個同時搜索檢測網(wǎng)絡(luò)的backbone、neck和head的方法。采用的是**Differentiable NAS的搜索方式。**結(jié)構(gòu)如下所示:

Search space是一些可選擇expasion rate、kernel size、group的Inverted Residual block等candidate,如下:

Screening Sub Search Space : 為了減少計算負(fù)擔(dān),采用對每個操作的候選操作進(jìn)行分層篩選。每個candidate都是與分?jǐn)?shù)有關(guān),高分candidate保留,其他分?jǐn)?shù)較低的被刪除。 End-to-end Search in Hit-Detector: 就是對backbone、Neck和head的sub搜索空間使用Differentiable NAS方法進(jìn)行搜索。 優(yōu)化目標(biāo):

其中,α,β,γ分別代表了backbone, neck, and head的網(wǎng)絡(luò)結(jié)構(gòu)。C(α) 表示 backbone的FLOPs。λ 是平衡準(zhǔn)確性和算力的系統(tǒng)。
最后,一張圖比較這幾種方法,可以看到EfficientNet-D0在非常小資源的情況下,取得了32.4的mAP,效果真的很好。Detection+NAS擬合的能力確實強(qiáng)悍。

if you like this article:please upvote# Thanks :)
推薦閱讀
4篇論文詳解One Shot NAS:方法綜述
神經(jīng)網(wǎng)絡(luò)架構(gòu)搜索(NAS)中的milestones
從800個GPU訓(xùn)練幾十天到單個GPU幾小時,看神經(jīng)架構(gòu)搜索如何進(jìn)化

