博客專欄

EEPW首頁 > 博客 > 中科院最新開源!無需訓練也能讓DETR輕松漲點!真正的"即插即用"來了!

中科院最新開源!無需訓練也能讓DETR輕松漲點!真正的"即插即用"來了!

發(fā)布人:計算機視覺工坊 時間:2023-08-03 來源:工程師 發(fā)布文章
0. 筆者個人體會

DETR作為Transformer-based目標檢測模型,已經(jīng)逐漸和YOLO系統(tǒng)的各大模型分庭抗禮,尤其是前段時間RT-DETR的發(fā)布,更是證明了Transformer模型大一統(tǒng)的趨勢。所以一直使用YOLO的小伙伴也可以嘗試使用下DETR模型。

就在這兩天,中科院、百度、香港大學又聯(lián)合開源了RefineBox。本來以為又是像之前一樣設(shè)計一個Attention變體模塊,然后插入到網(wǎng)絡(luò)里重新訓練的套路。結(jié)果RefineBox竟然不需要重新訓練!直接插入到DETR模型里就可以提高定位能力!而且對Conditinal、DAB、DN-DETR這些DETR-like模型都適用!那么,具體是什么原理呢?我們一起來看看吧~

1. 效果展示

先來看一下具體效果!

圖片

可以發(fā)現(xiàn),幾乎對于所有DETR-like模型,RefineBox都能提兩個點左右。而且對于Swin-Tiny模型僅增加了0.4M的參數(shù)量,對于ResNet模型僅增加了0.5M的參數(shù)量。重點是,無需重新訓練!模型直接插入到DETR模型中就可以漲點!這可太棒了!要知道以前所謂的"即插即用"模塊,都是以重新訓練為代價的,沒有模塊說自己可以直接嵌入到網(wǎng)絡(luò)中。

圖片

總之,效果非常好。代碼即將開源,感興趣的小伙伴可以關(guān)注一下。下面我們來看看具體的文章信息。

2. 摘要

針對DETR-like模型中的定位問題,我們提出了一個簡單、高效且通用的框架。我們將插件添加到訓練好的模型中,而不是低效地設(shè)計新模型并從頭開始訓練。該方法稱為RefineBox,通過輕量級的優(yōu)化網(wǎng)絡(luò)對DETR-like檢測器的輸出進行優(yōu)化。RefineBox只利用訓練好的檢測模型中的特征和預(yù)測框,易于實現(xiàn)和訓練。我們的方法也是有效的,因為我們在訓練過程中凍結(jié)了訓練好的檢測器。此外,我們可以很容易地將RefineBox推廣到各種訓練好的檢測模型中,而不需要做任何修改。我們在COCO和LVIS 1.0上進行了實驗。實驗結(jié)果表明了我們的RefineBox對于DETR及其代表性變體的有效性。例如,DETR、Conditinal-DETR、DAB-DETR和DN-DETR的性能增益分別為2.4 AP、2.5 AP、1.9 AP和1.6 AP。我們希望我們的工作能引起檢測界對當前DETR-like模型定位瓶頸的關(guān)注,以及RefineBox框架的潛力。

3. 算法解析

DETR模型是將目標檢測轉(zhuǎn)為集合預(yù)測的方式,從而省去NMS后處理,也無需人為設(shè)置anchor。另一方面,目標檢測可以分為兩個子任務(wù):分類和定位。

那么,限制DETR模型性能提升的瓶頸是什么呢?

RefineBox詳細分析了這一過程,在DETR模型輸出結(jié)果(定位+分類)以后,首先使用匈牙利匹配得到與Ground Truth匹配的檢測結(jié)果,然后分別去探索分類和定位對性能提升的影響。具體來說,就是一方面將DETR輸出的分類調(diào)整為Ground Truth,一方面將定位結(jié)果再單獨調(diào)整為Ground Truth,分別去查看性能提升了多少(好巧妙的思路)。

圖片

結(jié)果發(fā)現(xiàn),將分類調(diào)整為真值,對性能并沒有太大提升,但將定位調(diào)整為真值,性能提升很明顯!仔細想想,這實際上也是增加正樣本權(quán)重的過程。

RefineBox實際上就是盯上了"定位"這一過程。

讓我們來看看具體的網(wǎng)絡(luò)架構(gòu):

RefineBox主要分為兩部分,一方面通過FPN提取原始DETR模型中的多尺度特征,另一方面提取DETR輸出的分類框,借助多尺度特征來優(yōu)化box坐標。具體來說,Refiner的輸入為box和特征金字塔,每個Refiner包括ROI Align層、殘差模塊以及MLP,借助box的真值來優(yōu)化box坐標。注意,所有Refiner模塊的權(quán)重是共享的。

圖片

訓練損失函數(shù)上就沒啥可說的了,因為重點在定位,所以沒有計算分類損失,只使用GIoU和L1來計算分類損失。還需要注意的是,未包含預(yù)測真值的物體邊界框沒有參與優(yōu)化。

這里再次推薦「3D視覺工坊」新課程《目標檢測中的視覺Transformer》

說到這里,其實RefineBox和兩階段目標檢測網(wǎng)絡(luò)很像,也就是先生成提議,再優(yōu)化。不同的是RefineBox第一階段生成了具體的檢測結(jié)果,而不是像傳統(tǒng)的兩階段網(wǎng)絡(luò)那樣去拒絕提議。與遷移學習也不太一樣,RefineBox沒有對預(yù)訓練模型進行微調(diào)或者重新訓練。從這一點來看,RefineBox是思想還是很新的,這種想法應(yīng)用到別的領(lǐng)域來水一篇文章應(yīng)該很容易。

4. 實驗結(jié)果

RefineBox在COCO數(shù)據(jù)集上相較于DETR-R50、Conditional-DETR-R50、DAB-DETR-R50、DN-DETR-R50分別提升了2.4、2.5、1.9、1.6的AP,性能提升可以說非常好了。對于更強的backbone(ResNet101和Swin-Tiny),性能提升同樣很高。當然筆者覺得性能提升本身不是關(guān)鍵,這種探索性能提升具體原因的思想更為重要。

圖片

在LVIS也有和COCO相同的結(jié)果。

圖片

這篇文章很有意思的一點是,它深入分析了性能提升的真正原因。我們在看很多所謂的"即插即用"的論文時,真的想忍不住吐槽"參數(shù)量增加這么多,性能不提升才有問題好吧""多訓練了幾十個epoch,性能肯定會更好啊"。但是RefineBox這篇文章里,作者對這個問題進行了詳細分析。具體來說,作者重新訓練了具有相似GFLOPs的DAB-DETR-R50+(b),同時也觀察不使用RefineBox但訓練更多的epoch(c),證明了性能提升的原因不是參數(shù)量、不是FLOPs,也不是多余的訓練時長。其他同類的實驗還有很多,比如添加額外的分類優(yōu)化,證明性能會不會進一步提升,結(jié)果是性能提升非常微小(d)。很有意思的一個點是,作者嘗試了同時訓練DETR和RefineBox,結(jié)果性能反而下降了,進一步證明了RefineBox是直接應(yīng)用于預(yù)訓練權(quán)重上。

圖片

5. 總結(jié)

RefineBox感覺是一項很有意思的工作,其他所謂的"即插即用"模塊,大多都是指嵌入到模型中重新訓練然后性能提升,但這些理論就很矛盾"參數(shù)量增加了,F(xiàn)LOPs增加了,訓練時間增加了,性能提升不是必然的?",所以很多文章的結(jié)論就顯得沒那么有說服力。而RefineBox這項工作,提出了一個不需要重新訓練就可以使用的模塊,做到了真正意義上的"即插即用"。

但是,筆者覺得,這項工作最大的意義,不在于提出了一個新方法新模塊。而在于它分析問題的思路非常的合理,探索問題的邏輯讓人聽起來很信服,而且也使用各種實驗證明了性能提升的真正原因就是他們所提的,整篇文章讀起來很舒服。筆者覺得這一點更應(yīng)該深入學習。


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



關(guān)鍵詞: AI

相關(guān)推薦

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

關(guān)閉