久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

博客專欄

EEPW首頁(yè) > 博客 > 丟棄Transformer,F(xiàn)CN也可以實(shí)現(xiàn)E2E檢測(cè)

丟棄Transformer,F(xiàn)CN也可以實(shí)現(xiàn)E2E檢測(cè)

發(fā)布人:AI科技大本營(yíng) 時(shí)間:2020-12-20 來源:工程師 發(fā)布文章

來源 | 知乎CVer計(jì)算機(jī)視覺專欄

我們基于FCOS,首次在dense prediction上利用全卷積結(jié)構(gòu)做到E2E,即無(wú)NMS后處理。我們首先分析了常見的dense prediction方法(如RetinaNet、FCOS、ATSS等),并且認(rèn)為one-to-many的label assignment是依賴NMS的關(guān)鍵。受到DETR的啟發(fā),我們?cè)O(shè)計(jì)了一種prediction-aware one-to-one assignment方法。此外,我們還提出了3D Max Filtering以增強(qiáng)feature在local區(qū)域的表征能力,并提出用one-to-many auxiliary loss加速收斂。我們的方法基本不修改模型結(jié)構(gòu),不需要更長(zhǎng)的訓(xùn)練時(shí)間,可以基于現(xiàn)有dense prediction方法平滑過渡。我們的方法在無(wú)NMS的情況下,在COCO數(shù)據(jù)集上達(dá)到了與有NMS的FCOS相當(dāng)?shù)男阅埽辉诖砹嗣芗瘓?chǎng)景的CrowdHuman數(shù)據(jù)集上,我們的方法的recall超越了依賴NMS方法的理論上限。

整體方法流程如下圖所示:

9.jpg

One-to-many vs. one-to-one

自anchor-free方法出現(xiàn)以來,NMS作為網(wǎng)絡(luò)中最后一個(gè)heuristic環(huán)節(jié),一直是實(shí)現(xiàn)E2E dense prediction的最大阻礙。但其實(shí)我們可以發(fā)現(xiàn),從RPN、SSD、RetinaNet等開始,大家一直遵循著這樣一個(gè)流程:先對(duì)每個(gè)目標(biāo)生成多個(gè)預(yù)測(cè)(one-to-many),再將多個(gè)預(yù)測(cè)去重(many-to-one)。所以,如果不對(duì)前一步label assignment動(dòng)刀,就必須要保留去重的環(huán)節(jié),即便去重的方法不是NMS,也會(huì)是NMS的替代物(如RelationNet,如CenterNet的max pooling)。

8.jpg

那直接做one-to-one assignment的方法是否存在呢?其實(shí)是有的。上古時(shí)代有一個(gè)方法叫MultiBox,對(duì)每個(gè)目標(biāo)和每個(gè)預(yù)測(cè)做了bipartite matching,DETR其實(shí)就是將該方法的網(wǎng)絡(luò)換成了Transformer。此外還有一個(gè)大家熟知的方法:YOLO,YOLO也是對(duì)每個(gè)目標(biāo)只匹配一個(gè)grid[1],只不過它是采用中心點(diǎn)做的匹配,而且有ignore區(qū)域。

Prediction-aware one-to-one

于是接下來的問題就是,在dense prediction上我們能不能只依賴one-to-one label assignment,比較完美地去掉NMS?我們首先基于去掉centerness分支的FCOS,統(tǒng)一網(wǎng)絡(luò)結(jié)構(gòu)和訓(xùn)練方法,用Focal Loss + GIoU Loss,做了如下分析實(shí)驗(yàn):

7.jpg

我們?cè)O(shè)計(jì)了兩種hand-crafted one-to-one assignment方法,分別模仿RetinaNet(基于anchor box)和FCOS(基于center點(diǎn)),盡可能做最小改動(dòng),發(fā)現(xiàn)已經(jīng)可以將有無(wú)NMS的mAP差距縮小到4個(gè)點(diǎn)以內(nèi)。

但我們認(rèn)為手工設(shè)計(jì)的label assignment規(guī)則會(huì)較大地影響one-to-one的性能,比方說center規(guī)則對(duì)于一個(gè)偏心的物體就不夠友好,而且在這種情況下one-to-one規(guī)則會(huì)比one-to-many規(guī)則的魯棒性更差。所以我們認(rèn)為規(guī)則應(yīng)該是prediction-aware的。我們首先嘗試了DETR的思路,直接采用loss做bipartite matching的cost[2],發(fā)現(xiàn)無(wú)論是絕對(duì)性能還是有無(wú)NMS的差距,都得到了進(jìn)一步的改善。

但我們知道,loss和metrics往往并不一致,它常常要為優(yōu)化問題做一些妥協(xié)(比如做一些加權(quán)等等)。也就是說,loss并不一定是bipartite matching的最佳cost。因而我們提出了一個(gè)非常簡(jiǎn)單的cost:

6.jpg

看起來稍微有點(diǎn)復(fù)雜,但其實(shí)就是用網(wǎng)絡(luò)輸出的prob代表分類,網(wǎng)絡(luò)輸出和gt的IoU代表回歸,做了加權(quán)幾何平均,再加一個(gè)類似于inside gt box的空間先驗(yàn)。加權(quán)幾何平均和空間先驗(yàn)我們后面都分別做了ablation。

這就是我們提出的POTO策略,它進(jìn)一步地提升了無(wú)NMS下的性能,也側(cè)面驗(yàn)證了loss并不一定是最好的cost[3]。但從Table 1中我們也發(fā)現(xiàn)了,POTO的性能依舊不能匹敵one-to-many+NMS組合。我們認(rèn)為問題出在兩個(gè)方面:

1、one-to-one需要網(wǎng)絡(luò)輸出的feature非常sharp,這對(duì)CNN提出了較嚴(yán)苛的要求(這也是Transformer的優(yōu)勢(shì));

2、one-to-many帶來了更強(qiáng)的監(jiān)督和更快的收斂速度。

我們分別用3D Max Filtering和one-to-many auxiliary loss緩解如上問題。

3D Max Filtering

針對(duì)第一點(diǎn),我們提出了3D Max Filtering,這基于一個(gè)intuition(paper中沒有提到):卷積是線性濾波器,學(xué)習(xí)max操作是比較困難的。此外,我們?cè)贔COS上做了實(shí)驗(yàn),發(fā)現(xiàn)duplicated predictions基本來自于5×5的鄰域內(nèi),所以最簡(jiǎn)單的做法就是在網(wǎng)絡(luò)中嵌入最常見的非線性濾波器max pooling。另外,NMS是所有feature map一起做的,但網(wǎng)絡(luò)在結(jié)構(gòu)上缺少層間的抑制,所以我們希望max pooling是跨層的。

5.jpg

如Figure 3所示,這個(gè)模塊只采用了卷積、插值、max pooling 3d,速度非???,也不需要寫cuda kernel。

One-to-many auxiliary loss

針對(duì)第二點(diǎn)監(jiān)督不夠強(qiáng)、收斂速度慢,我們依舊采用one-to-many assignment設(shè)計(jì)了auxiliary loss做監(jiān)督,該loss只包含分類loss,沒有回歸loss。assignment本身沒什么可說的,appendix的實(shí)驗(yàn)也表明多種做法都可以work。這里想提醒大家的是注意看Figure 2的乘法,它是auxiliary loss可以work的關(guān)鍵。在乘法前的一路加上one-to-many auxiliary loss,乘法后是one-to-one的常規(guī)loss。由于1*0=0,1*1=1,我們只需要大致保證one-to-one assignment的正樣本在one-to-many中依然是正樣本即可。

實(shí)驗(yàn)

最主要的實(shí)驗(yàn)結(jié)果已經(jīng)在Table 1中呈現(xiàn)了,此外還有一些ablation實(shí)驗(yàn)。

4.jpg

這里highlight幾點(diǎn):

1、α越低,分類權(quán)重越大,有無(wú)NMS的差距越小,但絕對(duì)性能也會(huì)降低[4];α太高也不好,我們后續(xù)所有實(shí)驗(yàn)用α=0.8;

2、在α合理的情況下,空間先驗(yàn)不是必須的,但空間先驗(yàn)?zāi)軌蛟谄ヅ溥^程中幫助排除不好的區(qū)域,提升絕對(duì)性能;我們?cè)贑OCO實(shí)驗(yàn)中采用center sampling radius=1.5,在CrowdHuman實(shí)驗(yàn)中采用inside gt box[5];

3、加權(quán)幾何平均數(shù)(Mul)[6]比加權(quán)算術(shù)平均數(shù)(Add)[7]更好。

去掉NMS的最大收益其實(shí)是crowd場(chǎng)景,這在COCO上并不能很好地體現(xiàn)出來。所以我們又在CrowdHuman上做了實(shí)驗(yàn)如下:

3.jpg

請(qǐng)注意CrowdHuman的ground-truth做NMS threshold=0.6,只有95.1%的Recall,這也是NMS方法的理論上限。而我們的方法沒有采用NMS,于是輕易超越了這一上限。

我們還做了其它一些實(shí)驗(yàn)和分析,歡迎看原文。

可視化

經(jīng)過以上改進(jìn),我們成功把one-to-one的性能提升到了與one-to-many+NMS方法comparable的水平。我們可視化了score map,可以發(fā)現(xiàn)FCN是有能力學(xué)出非常sharp的表示的,這也是很讓我們驚奇的一點(diǎn)。

2.jpg

結(jié)果圖中比較明顯的改善出現(xiàn)在多峰case上。比如兩個(gè)物體有一定的overlap(但又沒有特別重合),這個(gè)時(shí)候one-to-many+NMS方法經(jīng)常出現(xiàn)的情況是,除了兩個(gè)物體分別出了一個(gè)框之外,在兩個(gè)物體中間也出了一個(gè)框,這個(gè)框與前兩個(gè)框的IoU不足以達(dá)到NMS threshold,但置信度又比較高。這類典型的多峰問題在POTO中得到了較大的緩解。

1.jpg

Others

有些人可能比較關(guān)心訓(xùn)練時(shí)間,因?yàn)闈撘庾R(shí)里在dense prediction上做bipartite matching應(yīng)該是很慢的。然而實(shí)際上依賴于scipy對(duì)linear_sum_assignment的優(yōu)化,實(shí)際訓(xùn)練時(shí)間僅僅下降了10%左右。

如果對(duì)這一時(shí)間依然敏感,可以用topk(k=1)代替bipartite matching;在dense prediction里top1實(shí)際上是bipartite matching的近似解[8]。相似地,k>1的情況對(duì)應(yīng)了one-to-many的一種新做法,我們組也對(duì)此做了一些工作,后續(xù)可能會(huì)放出來。

順便打一波廣告:對(duì)曠視研究院BaseDetection組感興趣的同學(xué)可以發(fā)簡(jiǎn)歷到wangjianfeng@megvii.com,組里目前主要在做目標(biāo)檢測(cè)、自監(jiān)督等方向。

參考

1.如果有人感興趣的話,可以在YOLO上去掉NMS嘗試一下,可以接近30mAP。

2.注意我們這里沒有使用DETR的CE+GIoU+L1組合,而是直接采用loss本身(Focal+GIoU)。我們認(rèn)為這樣更符合DETR用loss做cost的原意。

3.其實(shí)這里可以有一個(gè)腦洞留給大家,因?yàn)閏ost是不需要求導(dǎo)的,所以甚至是可以直接算AP當(dāng)cost的。

4.側(cè)面印證了分類和回歸的沖突在檢測(cè)任務(wù)上是顯著的。

5.理由很簡(jiǎn)單,CrowdHuman的遮擋問題太嚴(yán)重,center區(qū)域經(jīng)常完全被遮擋。

6.事實(shí)上加權(quán)幾何平均數(shù)的負(fù)對(duì)數(shù)就是CE+IoU Loss,加權(quán)算術(shù)平均數(shù)則沒有明顯的物理含義。

7.NoisyAnchor在assign中采用了類似的公式,只不過采用的是anchor IoU。

8.更具體來講,top1(即argmin)是Hugarian Algorithm只做第一次迭代的結(jié)果;由于在dense prediction下沖突會(huì)很少,一次迭代就已經(jīng)逼近了最優(yōu)匹配,這也是為什么Hungarian Algorithm這里實(shí)際運(yùn)行很快。

鏈接:

https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2012.03544

代碼:

github.com/Megvii-BaseD(內(nèi)部代碼遷移+審查中,后續(xù)放出)

*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉