中科院最新開(kāi)源!無(wú)需訓(xùn)練也能讓DETR輕松漲點(diǎn)!即插即用來(lái)了!
作者:泡椒味的口香糖 | 來(lái)源:3D視覺(jué)工坊
在公眾號(hào)「3D視覺(jué)工坊」后臺(tái),回復(fù)「原論文」即可獲取論文pdf。
添加微信:dddvisiona,備注:目標(biāo)檢測(cè),拉你入群。文末附行業(yè)細(xì)分群。
DETR作為T(mén)ransformer-based目標(biāo)檢測(cè)模型,已經(jīng)逐漸和YOLO系統(tǒng)的各大模型分庭抗禮,尤其是前段時(shí)間RT-DETR的發(fā)布,更是證明了Transformer模型大一統(tǒng)的趨勢(shì)。所以一直使用YOLO的小伙伴也可以嘗試使用下DETR模型。
這里也推薦「3D視覺(jué)工坊」新課程《目標(biāo)檢測(cè)中的視覺(jué)Transformer》
就在這兩天,中科院、百度、香港大學(xué)又聯(lián)合開(kāi)源了RefineBox。本來(lái)以為又是像之前一樣設(shè)計(jì)一個(gè)Attention變體模塊,然后插入到網(wǎng)絡(luò)里重新訓(xùn)練的套路。結(jié)果RefineBox竟然不需要重新訓(xùn)練!直接插入到DETR模型里就可以提高定位能力!而且對(duì)Conditinal、DAB、DN-DETR這些DETR-like模型都適用!那么,具體是什么原理呢?我們一起來(lái)看看吧~
先來(lái)看一下具體效果!
可以發(fā)現(xiàn),幾乎對(duì)于所有DETR-like模型,RefineBox都能提兩個(gè)點(diǎn)左右。而且對(duì)于Swin-Tiny模型僅增加了0.4M的參數(shù)量,對(duì)于ResNet模型僅增加了0.5M的參數(shù)量。重點(diǎn)是,無(wú)需重新訓(xùn)練!模型直接插入到DETR模型中就可以漲點(diǎn)!這可太棒了!要知道以前所謂的"即插即用"模塊,都是以重新訓(xùn)練為代價(jià)的,沒(méi)有模塊說(shuō)自己可以直接嵌入到網(wǎng)絡(luò)中。
總之,效果非常好。代碼即將開(kāi)源,感興趣的小伙伴可以關(guān)注一下。下面我們來(lái)看看具體的文章信息。
針對(duì)DETR-like模型中的定位問(wèn)題,我們提出了一個(gè)簡(jiǎn)單、高效且通用的框架。我們將插件添加到訓(xùn)練好的模型中,而不是低效地設(shè)計(jì)新模型并從頭開(kāi)始訓(xùn)練。該方法稱(chēng)為RefineBox,通過(guò)輕量級(jí)的優(yōu)化網(wǎng)絡(luò)對(duì)DETR-like檢測(cè)器的輸出進(jìn)行優(yōu)化。RefineBox只利用訓(xùn)練好的檢測(cè)模型中的特征和預(yù)測(cè)框,易于實(shí)現(xiàn)和訓(xùn)練。我們的方法也是有效的,因?yàn)槲覀冊(cè)谟?xùn)練過(guò)程中凍結(jié)了訓(xùn)練好的檢測(cè)器。此外,我們可以很容易地將RefineBox推廣到各種訓(xùn)練好的檢測(cè)模型中,而不需要做任何修改。我們?cè)贑OCO和LVIS 1.0上進(jìn)行了實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明了我們的RefineBox對(duì)于DETR及其代表性變體的有效性。例如,DETR、Conditinal-DETR、DAB-DETR和DN-DETR的性能增益分別為2.4 AP、2.5 AP、1.9 AP和1.6 AP。我們希望我們的工作能引起檢測(cè)界對(duì)當(dāng)前DETR-like模型定位瓶頸的關(guān)注,以及RefineBox框架的潛力。
DETR模型是將目標(biāo)檢測(cè)轉(zhuǎn)為集合預(yù)測(cè)的方式,從而省去NMS后處理,也無(wú)需人為設(shè)置anchor。另一方面,目標(biāo)檢測(cè)可以分為兩個(gè)子任務(wù):分類(lèi)和定位。
那么,限制DETR模型性能提升的瓶頸是什么呢?
RefineBox詳細(xì)分析了這一過(guò)程,在DETR模型輸出結(jié)果(定位+分類(lèi))以后,首先使用匈牙利匹配得到與Ground Truth匹配的檢測(cè)結(jié)果,然后分別去探索分類(lèi)和定位對(duì)性能提升的影響。具體來(lái)說(shuō),就是一方面將DETR輸出的分類(lèi)調(diào)整為Ground Truth,一方面將定位結(jié)果再單獨(dú)調(diào)整為Ground Truth,分別去查看性能提升了多少(好巧妙的思路)。
結(jié)果發(fā)現(xiàn),將分類(lèi)調(diào)整為真值,對(duì)性能并沒(méi)有太大提升,但將定位調(diào)整為真值,性能提升很明顯!仔細(xì)想想,這實(shí)際上也是增加正樣本權(quán)重的過(guò)程。
RefineBox實(shí)際上就是盯上了"定位"這一過(guò)程。
讓我們來(lái)看看具體的網(wǎng)絡(luò)架構(gòu):
RefineBox主要分為兩部分,一方面通過(guò)FPN提取原始DETR模型中的多尺度特征,另一方面提取DETR輸出的分類(lèi)框,借助多尺度特征來(lái)優(yōu)化box坐標(biāo)。具體來(lái)說(shuō),Refiner的輸入為box和特征金字塔,每個(gè)Refiner包括ROI Align層、殘差模塊以及MLP,借助box的真值來(lái)優(yōu)化box坐標(biāo)。注意,所有Refiner模塊的權(quán)重是共享的。
訓(xùn)練損失函數(shù)上就沒(méi)啥可說(shuō)的了,因?yàn)橹攸c(diǎn)在定位,所以沒(méi)有計(jì)算分類(lèi)損失,只使用GIoU和L1來(lái)計(jì)算分類(lèi)損失。還需要注意的是,未包含預(yù)測(cè)真值的物體邊界框沒(méi)有參與優(yōu)化。
這里再次推薦「3D視覺(jué)工坊」新課程《目標(biāo)檢測(cè)中的視覺(jué)Transformer》
說(shuō)到這里,其實(shí)RefineBox和兩階段目標(biāo)檢測(cè)網(wǎng)絡(luò)很像,也就是先生成提議,再優(yōu)化。不同的是RefineBox第一階段生成了具體的檢測(cè)結(jié)果,而不是像傳統(tǒng)的兩階段網(wǎng)絡(luò)那樣去拒絕提議。與遷移學(xué)習(xí)也不太一樣,RefineBox沒(méi)有對(duì)預(yù)訓(xùn)練模型進(jìn)行微調(diào)或者重新訓(xùn)練。從這一點(diǎn)來(lái)看,RefineBox是思想還是很新的,這種想法應(yīng)用到別的領(lǐng)域來(lái)水一篇文章應(yīng)該很容易。
RefineBox在COCO數(shù)據(jù)集上相較于DETR-R50、Conditional-DETR-R50、DAB-DETR-R50、DN-DETR-R50分別提升了2.4、2.5、1.9、1.6的AP,性能提升可以說(shuō)非常好了。對(duì)于更強(qiáng)的backbone(ResNet101和Swin-Tiny),性能提升同樣很高。當(dāng)然筆者覺(jué)得性能提升本身不是關(guān)鍵,這種探索性能提升具體原因的思想更為重要。
在LVIS也有和COCO相同的結(jié)果。
這篇文章很有意思的一點(diǎn)是,它深入分析了性能提升的真正原因。我們?cè)诳春芏嗨^的"即插即用"的論文時(shí),真的想忍不住吐槽"參數(shù)量增加這么多,性能不提升才有問(wèn)題好吧""多訓(xùn)練了幾十個(gè)epoch,性能肯定會(huì)更好啊"。但是RefineBox這篇文章里,作者對(duì)這個(gè)問(wèn)題進(jìn)行了詳細(xì)分析。具體來(lái)說(shuō),作者重新訓(xùn)練了具有相似GFLOPs的DAB-DETR-R50+(b),同時(shí)也觀察不使用RefineBox但訓(xùn)練更多的epoch(c),證明了性能提升的原因不是參數(shù)量、不是FLOPs,也不是多余的訓(xùn)練時(shí)長(zhǎng)。其他同類(lèi)的實(shí)驗(yàn)還有很多,比如添加額外的分類(lèi)優(yōu)化,證明性能會(huì)不會(huì)進(jìn)一步提升,結(jié)果是性能提升非常微小(d)。很有意思的一個(gè)點(diǎn)是,作者嘗試了同時(shí)訓(xùn)練DETR和RefineBox,結(jié)果性能反而下降了,進(jìn)一步證明了RefineBox是直接應(yīng)用于預(yù)訓(xùn)練權(quán)重上。
RefineBox感覺(jué)是一項(xiàng)很有意思的工作,其他所謂的"即插即用"模塊,大多都是指嵌入到模型中重新訓(xùn)練然后性能提升,但這些理論就很矛盾"參數(shù)量增加了,F(xiàn)LOPs增加了,訓(xùn)練時(shí)間增加了,性能提升不是必然的?",所以很多文章的結(jié)論就顯得沒(méi)那么有說(shuō)服力。而RefineBox這項(xiàng)工作,提出了一個(gè)不需要重新訓(xùn)練就可以使用的模塊,做到了真正意義上的"即插即用"。
但是,筆者覺(jué)得,這項(xiàng)工作最大的意義,不在于提出了一個(gè)新方法新模塊。而在于它分析問(wèn)題的思路非常的合理,探索問(wèn)題的邏輯讓人聽(tīng)起來(lái)很信服,而且也使用各種實(shí)驗(yàn)證明了性能提升的真正原因就是他們所提的,整篇文章讀起來(lái)很舒服。筆者覺(jué)得這一點(diǎn)更應(yīng)該深入學(xué)習(xí)。