閱讀筆記-DETR End-to-end object detection with transformers

來源:arXiv:2005.12872v3, Facebook AI
代碼:https://github.com/facebookresearch/detr

image.png

Transformer入侵CV。目標(biāo)檢測(cè)目前的框架包括mmdetection等對(duì)于檢測(cè)領(lǐng)域挺好用的,但對(duì)于其他領(lǐng)域而言可能就挺難上手的,集成度有點(diǎn)太大:( Facebook傲嬌的不適用已有的檢測(cè)框架,支持。另一方面,將大熱的transformer納入cv領(lǐng)域的基礎(chǔ)目標(biāo)檢測(cè),必然引起cv領(lǐng)域transformer化的熱潮。個(gè)人更欣賞這種暴力美學(xué),目標(biāo)檢測(cè)目前發(fā)展有些過多設(shè)計(jì)的痕跡,讓人對(duì)其泛化能力還是有所懷疑的。當(dāng)然DETR把暴力推的太遠(yuǎn),肯定會(huì)有些工作把他往回拉,但這個(gè)工作還是開創(chuàng)了一個(gè)新的思路的,讓人興奮。值得仔細(xì)讀一下。

摘要

我們提出了一種新的檢測(cè)方法將目標(biāo)檢測(cè)任務(wù)直接視作為集合預(yù)測(cè)問題。該方法有效的移除了傳統(tǒng)深度檢測(cè)方法中的許多手工設(shè)計(jì)的部件以簡化檢測(cè)流程,如非極大值抑制和anchor生成,其中anchor顯式的編碼了檢測(cè)任務(wù)的先驗(yàn)知識(shí)。我們提出框架,DEtection TRansformer(DETR)的主要成分是一種基于集合的全局損失和一個(gè)transformer編解碼框架,其中基于集合的全局損失通過二部匹配保證單一預(yù)測(cè)。給定已學(xué)習(xí)的的固定的小規(guī)模目標(biāo)查詢集合, DETR推理目標(biāo)之間的關(guān)系以及圖像全局信息進(jìn)而以并行的方式直接輸出最終的預(yù)測(cè)集合。該新模型概念簡單,且不像其他的一些現(xiàn)代檢測(cè)器那樣需要一些特定的庫。DETR在COCO目標(biāo)檢測(cè)數(shù)據(jù)集上展現(xiàn)了和Faster RCNN可比的精度和速度表現(xiàn)。更讓人期待的是,DETR能夠很方便的擴(kuò)展到全景分割任務(wù)中,實(shí)驗(yàn)展示了相對(duì)于一些基線方法的較大優(yōu)勢(shì)。

介紹

目標(biāo)檢測(cè)的目標(biāo)是預(yù)測(cè)感興趣目標(biāo)的bbox和類別標(biāo)簽集合。modern檢測(cè)器以一種間接的方式處理集合預(yù)測(cè)問題,即轉(zhuǎn)換為基于大規(guī)模候選框、anchors或者windows中心點(diǎn)上的回歸和分類問題。這類方法的性能受制于一些手工設(shè)計(jì)策略,比如用于處理近重復(fù)預(yù)測(cè)的后處理步驟、anchor集合的設(shè)計(jì)以及anchor與gt的分配策略等。為了簡化檢測(cè)流程,我們跳過代理方式直接預(yù)測(cè)輸出集合。這種端到端哲學(xué)在一些復(fù)雜的結(jié)構(gòu)化預(yù)測(cè)問題,比如機(jī)器翻譯和語音識(shí)別,上都取得較好反饋,但在目標(biāo)檢測(cè)上尚未推廣。之前的一些假設(shè)要不添加其他形式的先驗(yàn)知識(shí),要不沒有證明在挑戰(zhàn)性數(shù)據(jù)集上能獲得與強(qiáng)baseline可比的性能。本文目標(biāo)是填補(bǔ)之一缺陷。

我們將目標(biāo)檢測(cè)問題直接視作集合預(yù)測(cè)問題以簡化訓(xùn)練流程。我們采用了基于transformers的編解碼框架,該框架被廣泛應(yīng)用于序列預(yù)測(cè)。transformers中的自注意力機(jī)制使該框架非常適合于集合預(yù)測(cè)的特定約束比如移除重復(fù)預(yù)測(cè)等,自注意力機(jī)制顯示的建模了序列中元素對(duì)之間的交互關(guān)系。

image.png

如圖1所示,DETR能夠一次性預(yù)測(cè)所有的目標(biāo),其訓(xùn)練采用一種集合損失函數(shù)以端到端方式進(jìn)行。集合損失定義在預(yù)測(cè)結(jié)果與真實(shí)目標(biāo)的二部匹配結(jié)果上。DETR扔掉了當(dāng)前主流檢測(cè)器中手工設(shè)計(jì)的一些用于編碼先驗(yàn)知識(shí)的模塊,比如空間anchor和非極大值抑制等,簡化了檢測(cè)流程。不想已經(jīng)存在的其他檢測(cè)方法,DETR不需要任何定制的層,因此能夠便捷的在任何包含transformer和CNN的深度框架中進(jìn)行復(fù)現(xiàn)。

與當(dāng)前的大多數(shù)直接set預(yù)測(cè)方法相比,DETR的主要特點(diǎn)在于二部圖損失和并行編碼的transformers的結(jié)合。與之相反的是,之前的方法往往聚焦于使用RNN進(jìn)行autoregressive的編碼。我們的匹配損失能夠?qū)⒁粋€(gè)預(yù)測(cè)唯一的分配給一個(gè)gt,且對(duì)于預(yù)測(cè)目標(biāo)具有排列不變性,因此能夠并行處理。

我們?cè)谝粋€(gè)廣泛使用的目標(biāo)檢測(cè)數(shù)據(jù)集COCO上虞當(dāng)前較強(qiáng)的檢測(cè)方法Faster R-CNN進(jìn)行了對(duì)比。Faster R-CNN已經(jīng)經(jīng)過了好多次迭代設(shè)計(jì),相較于其原始版本性能有較明顯的提升。我們實(shí)驗(yàn)表明提出的模型具有可比的性能。更具體而言,DETR在大目標(biāo)上性能提升明顯,該提升可能源于transformer中的non-local計(jì)算。然對(duì)于小目標(biāo)而言,性能較差。我們希望后續(xù)工作能通過FPN對(duì)于Faster R-CNN一樣的路徑改善這個(gè)問題。

DETR的訓(xùn)練策略和標(biāo)準(zhǔn)的目標(biāo)檢測(cè)器有許多不同。新模型需要更長的訓(xùn)練周期,并且transformer中輔助的編碼損失有利于性能的提升。我們?cè)敿?xì)探索了哪些部件對(duì)于性能提升至關(guān)重要。

DETR能夠被便宜的拓展到更復(fù)雜的任務(wù)中。在我們的實(shí)驗(yàn)中,我們驗(yàn)證了在預(yù)訓(xùn)練的DETR中引入簡單的分割頭就能獲得比baseline方法優(yōu)越的全景分割結(jié)果(全景分割是指最近流行的逐像素識(shí)別任務(wù))。

相關(guān)工作

我們的工作建立在一些領(lǐng)域的已有工作基礎(chǔ)上:集合預(yù)測(cè)中的二部圖匹配損失, 基于transformers的編解碼結(jié)構(gòu),并行編碼以及目標(biāo)檢測(cè)方法。

集合預(yù)測(cè)

目前并沒有標(biāo)準(zhǔn)的用于直接預(yù)測(cè)集合的深度模型。最基礎(chǔ)的集合預(yù)測(cè)任務(wù)是多標(biāo)簽分類,而其基線方法one-vs-rest并沒有應(yīng)用于檢測(cè)任務(wù),因?yàn)闄z測(cè)任務(wù)中元素之間有潛在的結(jié)構(gòu)性(例如ID相近的目標(biāo)框)。這些任務(wù)中的首要問題是避免近似重復(fù)。絕大多數(shù)當(dāng)前的檢測(cè)器都利用后處理方法,比如NMS,處理這個(gè)問題,但是直接的集合預(yù)測(cè)是不需要后處理過程的。他們需要全局的推理框架,用以建模所有預(yù)測(cè)結(jié)果之間的關(guān)系進(jìn)而避免冗余。對(duì)于固定大小的集合預(yù)測(cè)問題,密集全連接網(wǎng)絡(luò)可以解決但是代價(jià)太大。更一般的方法是采用auto-regressive序列將該問題建模為RNN網(wǎng)絡(luò)。在所有的情況下,損失函數(shù)相對(duì)于預(yù)測(cè)都應(yīng)該具有排列不變性。最常見的解決辦法是設(shè)計(jì)一種基于匈牙利算法的損失函數(shù),找到gt與predict之間的二值匹配。這樣能夠保證排列不變性且保證了每個(gè)目標(biāo)只有唯一的匹配結(jié)果。我們采用了二部圖匹配損失的思路。然而,與當(dāng)前大多數(shù)方法不同的是,我們拋開了auto-regressive模型,使用的是可以并行編碼的transformers框架。

Transofmers和并行編碼

Transformers是由Vaswani提出的一種新的用于機(jī)器翻譯的注意力模塊。注意力機(jī)制是用于從整個(gè)輸入序列中聚合信息的網(wǎng)絡(luò)層。Transformers和Non-local網(wǎng)絡(luò)一樣引入了自注意力機(jī)機(jī)制,遍歷序列中的每個(gè)元素并通過整個(gè)序列的聚合信息更新該元素?;赼ttention的模型的一個(gè)主要優(yōu)勢(shì)在于他全局計(jì)算與記憶,使其相對(duì)于RNN更適合于長時(shí)序列。Transformers現(xiàn)在已經(jīng)在NLP,CV和語音處理等多個(gè)領(lǐng)域上取代了RNN。

仿照早期序列到序列的模型,Transformers首先在auto-regressive模型中使用,逐個(gè)產(chǎn)生輸出向量。但是其令人望而生畏的推理代價(jià)(正比于輸出長度,且難以用于batch方式處理)促使并行序列生成方法的發(fā)展,比如audio領(lǐng)域,機(jī)器翻譯,詞嵌入學(xué)習(xí)以及最近的語音識(shí)別。我們同樣的將transformers和并行編碼融合用于權(quán)衡集合預(yù)測(cè)中的計(jì)算代價(jià)和性能表現(xiàn)。

目標(biāo)檢測(cè)

多數(shù)目標(biāo)檢測(cè)器都是預(yù)測(cè)相對(duì)于初始猜測(cè)的偏差。兩階段檢測(cè)器預(yù)測(cè)box相遇于proposal的差異,而單階段模型則是相對(duì)于anchors或者目標(biāo)中心點(diǎn)可能存在的網(wǎng)格的差異。最近的工作[52]證明,這些模型的最終性能嚴(yán)重依賴于他們初始猜測(cè)的集合的精度。在我們的模型中,我們移除了這些手工處理的過程,通過直接預(yù)測(cè)具有絕對(duì)box的檢測(cè)集合(即相對(duì)于整張圖象,而非anchor)簡化了檢測(cè)過程。

基于集合的損失。 一些目標(biāo)檢測(cè)器利用了二部圖匹配損失。但是在這些早期的深度模型中,不同的預(yù)測(cè)之間的關(guān)系一幫使用卷積或者全連接層建模,且手工設(shè)計(jì)的NMS操作能夠提升其性能。更新的檢測(cè)器[23,37,53]則使用了gt與預(yù)測(cè)間非唯一分配策略以及NMS。

可學(xué)習(xí)的NMS策略以及關(guān)系網(wǎng)絡(luò)顯式的用注意力建模了預(yù)測(cè)之間的關(guān)系。直接使用set損失,不需要任何后處理過程。然而這些方法仍然利用了想候選框坐標(biāo)這些手工設(shè)計(jì)的上下文特征去有效建模檢測(cè)之間的關(guān)系,而本文尋求不適用任何先驗(yàn)知識(shí)的解決方案。

循環(huán)檢測(cè)器。 與我們思路最接近的是用于目標(biāo)檢測(cè)的集合預(yù)測(cè)[43]和實(shí)例分割[30,36,41,42].和我們相似,他們使用了二部圖損失以及基于CNN激活的編解碼結(jié)構(gòu)直接預(yù)測(cè)bbox的集合。然而這些方法只在小的數(shù)據(jù)集上進(jìn)行了對(duì)比,并沒有對(duì)比大的數(shù)據(jù)集。值得注意的是,他們急于autoregressive模型,更具體是RNN,因此無法使用最近提出的具有并行編碼的transformers。

DETR模型

檢測(cè)中直接使用集合預(yù)測(cè)有兩個(gè)重要的點(diǎn):1.能夠強(qiáng)制保證gt與預(yù)測(cè)一一對(duì)應(yīng)的集合預(yù)測(cè)損失;2.能夠一次性預(yù)測(cè)出目標(biāo)集合以及建模其中關(guān)系的網(wǎng)絡(luò)結(jié)構(gòu)。

目標(biāo)檢測(cè)集合預(yù)測(cè)損失

DETR通過編碼器一次前向推理預(yù)測(cè)出長度為N的固定大小的集合,N顯著大于圖像中能具有的目標(biāo)數(shù)。訓(xùn)練該模型的一個(gè)主要難點(diǎn)在于評(píng)估預(yù)測(cè)相對(duì)于gt的質(zhì)量。我們的損失函數(shù)先預(yù)測(cè)和gt之間計(jì)算一個(gè)最優(yōu)的二部圖匹配,然后監(jiān)督特定目標(biāo)的損失函數(shù)。

假設(shè)用y表示目標(biāo)的gt結(jié)合,\hat{y}={\hat{y}_i}_{i=1}^N表示N個(gè)預(yù)測(cè),N大于圖像中存在的目標(biāo)數(shù),我們使用空集配平gt數(shù)和預(yù)測(cè)數(shù)。為了找到兩個(gè)集合中最有二部圖匹配,我們找到如下的N個(gè)u元素排列\sigma\in\mathcal{G}_N:

1

其中,L_{match}(y_i, \hat{y}_{\sigma_i})是gt與預(yù)測(cè)的匹配損失。該優(yōu)化問題能夠通過匈牙利算法進(jìn)行有效求解。

該匹配代價(jià)同時(shí)考慮了類別預(yù)測(cè)以及預(yù)測(cè)和gt之間的相似度。gt的每個(gè)元素表示為y_i=(c_i, b_i),其中c_i是目標(biāo)類別(可能為\emptyset),b_i\in [0, 1]^4是相對(duì)于圖像size的gt目標(biāo)的中心點(diǎn)坐標(biāo)以及寬高。對(duì)于索引為\sigma(i)的預(yù)測(cè),我們將其屬于類別c_i的概率表示為\hat{p}_{\sigma(i)}(c_i),其預(yù)測(cè)的框表示為\hat_{\sigma(i)}. 于是使用這些符號(hào)可以定義匹配損失:
L_{match}(y_i, \hat{y}_{\sigma(i)} = -1_{c_i\neq \emptyset}\hat{p}_{\sigma(i)}(c_i)+1_{c_i\neq\emptyset}L_{box}(b_i,\hat_{sigma(i)})

這個(gè)尋找最優(yōu)匹配的過程類似于當(dāng)代檢測(cè)器中將proposals或者anchors分配給gt的過程。關(guān)鍵不同點(diǎn)在于直接集合預(yù)測(cè)尋找的是一一匹配,因此避免了重復(fù)預(yù)測(cè)。

第二步是計(jì)算上一步中所有匹配對(duì)的匈牙利損失。我們使用的損失函數(shù)和一般的檢測(cè)器相似,即用于類別預(yù)測(cè)的負(fù)對(duì)數(shù)似然函數(shù)和后續(xù)定義的box回歸損失的線性組合:

Eq.2

其中\hat{\sigma}是上一步中獲得的最優(yōu)匹配。在實(shí)際應(yīng)用中,我們對(duì)于為空的類別預(yù)測(cè)項(xiàng)系數(shù)除以10以平衡類別。這個(gè)操作和Faster RCNN訓(xùn)練過程中通過下采樣平衡正負(fù)候選類似。注意目標(biāo)和空集在匹配損失(Eq1)中是個(gè)常數(shù),并不依賴于檢測(cè)。在匹配損失中我們直接使用概率而非對(duì)數(shù)值是為了讓類別預(yù)測(cè)項(xiàng)與box損失一個(gè)量級(jí),我們發(fā)現(xiàn)這種效果更好。

bbox 損失。 匹配損失和匈牙利損失的第二部分是用于評(píng)價(jià)bbox的L_{box}(\cdot, cdot)。 不像其他一些檢測(cè)器預(yù)測(cè)box相對(duì)于一些初始猜測(cè)的偏量,我們直接預(yù)測(cè)box。盡管該方法簡化了操作,但是帶來了一些損失的相對(duì)尺度問題。最常用的L1損失對(duì)于大小不同的目標(biāo)即使相對(duì)error類似但是尺度差異挺大。為了緩解該問題,我們使用L1損失逾GIOU損失的聯(lián)合,GIoU是尺度不變的。最終我們的box損失定義為L_{box}(b_i, \hat_{\sigma(i)})=\lambda_{iou}L_{iou}(b_i, \hat_{\sigma(i)}) + \lambda_{L1}\Vert b_i - \hat_{\sigma(i)}\Vert,這兩項(xiàng)損失在batch中使用目標(biāo)個(gè)數(shù)進(jìn)行歸一化。

DETR的結(jié)構(gòu)

DETR的結(jié)構(gòu)如圖2所示非常簡單。主要包括三個(gè)模塊:CNN的backbone用于壓縮和抽取特征表示,編解碼transformer,以及一個(gè)簡單的前向網(wǎng)絡(luò)(FFN)用于輸出最終預(yù)測(cè)結(jié)果。


Fig.2

和其他一些現(xiàn)代的檢測(cè)器不同,DETR能在任何提供了普通CNN和transformer結(jié)構(gòu)的深度學(xué)習(xí)框架中使用幾百行代碼簡單實(shí)現(xiàn)。PyTorch中DETR的推理代碼不足50行。我們希望我們方法的簡潔性能吸引更多的研究人員進(jìn)入目標(biāo)檢測(cè)領(lǐng)域。

Backbone 輸入初始的圖像x_{img}\in R^{3\times H_0\times W_0}, 傳統(tǒng)的卷積網(wǎng)絡(luò)生成了一個(gè)更低分辨率的特征圖f\in R^{c\times H\times W}。 典型值為C=2048, H,W=\frac{H_0}{32},\frac{W_0}{32}.

Transformer 編碼器. 首先,使用一個(gè)1x1的卷積核將f的通道由C降為d,生成新的特征圖z_0\in R^{d\times H\times W. encoder的輸入是一段序列,因此我們將Z0的空間維度拉成列向量,產(chǎn)生d\times HW的特征map。每個(gè)encoder層具有相同的結(jié)構(gòu),包含了一個(gè)多頭自注意力機(jī)制以及一個(gè)前向網(wǎng)絡(luò)。由于transformer結(jié)構(gòu)式排列不變的,我們使用固定的位置編碼作為補(bǔ)充輸入每個(gè)注意力層。該結(jié)構(gòu)的具體定義參考補(bǔ)充材料。

Transformer 解碼器。 decoder沿用了transformer的標(biāo)準(zhǔn)結(jié)構(gòu), 將N個(gè)d維的特征嵌入使用多頭自注意力機(jī)制和編解碼機(jī)制進(jìn)行轉(zhuǎn)換。和原始的transformer相比,我們模型在每個(gè)decoder層并行的解碼N個(gè)目標(biāo),而不是像aswani那樣使用autoregression模型以序列方式輸出一個(gè)序列。由于decoder也是排列不變的,因此為了產(chǎn)生N個(gè)不同的結(jié)果,那么輸入也必須不同。這些輸入采用學(xué)習(xí)到的位置編碼,稱之為目標(biāo)queries,與encoder類似,我們將其輸入到decoder的每個(gè)注意力層。N個(gè)目標(biāo)quries被decoder轉(zhuǎn)換為N個(gè)輸出。然后這些輸出被獨(dú)立的FFN解碼為類別標(biāo)簽和box預(yù)測(cè)作為最終結(jié)果。使用這些embedding的自注意力機(jī)制以及編解碼注意力特性,模型能夠利用目標(biāo)對(duì)之間的關(guān)系以及整張圖象內(nèi)容全局的推理所有目標(biāo)。

前向預(yù)測(cè)網(wǎng)絡(luò)FFNs。 最終的預(yù)測(cè)網(wǎng)絡(luò)由使用激活函數(shù)ReLU的3層感知機(jī)實(shí)現(xiàn),中間隱層維度為d,以及一個(gè)線性預(yù)測(cè)層。 FFN預(yù)測(cè)相對(duì)于圖像尺寸的歸一化后的box中心點(diǎn)坐標(biāo)以及寬高。線性層+softmax喲關(guān)于預(yù)測(cè)類別標(biāo)簽。因?yàn)槲覀冾A(yù)測(cè)一個(gè)相對(duì)較大的固定尺寸N的集合,我們使用空集表示該預(yù)測(cè)為no object,即背景區(qū)域。

輔助解碼損失。 我們發(fā)現(xiàn)在訓(xùn)練過程中對(duì)decode添加輔助損失是有益的,尤其是對(duì)于輸出每類正確的目標(biāo)個(gè)數(shù)。每個(gè)解碼層之后我們都添加了FFNs和匈牙利損失,所有的FFNs共享參數(shù)。另外我們?cè)诿恳粋€(gè)decoder層的FFNs之前使用了共享的layer-norm進(jìn)行歸一化。

實(shí)驗(yàn)

我們?cè)贑OCO數(shù)據(jù)集上采用DETR獲得了與Faster RCNN可比的檢測(cè)性能。然后我們對(duì)模型結(jié)構(gòu)和損失函數(shù)進(jìn)行了分類實(shí)驗(yàn)。最終,實(shí)驗(yàn)表明DETR是一種易擴(kuò)展的的模型,我們驗(yàn)證了DETR經(jīng)過簡單的擴(kuò)展就可用于全景分割。代碼和預(yù)訓(xùn)練權(quán)重見:https://github.com/facebookresearch/detr

數(shù)據(jù)集 COCO2017,以及全景分割數(shù)據(jù)集[24, 18]
實(shí)驗(yàn)細(xì)節(jié) 采用AdamW訓(xùn)練DETR, transformer的初始學(xué)習(xí)率設(shè)為1e-4, backbone的初始學(xué)習(xí)率設(shè)為1e-5, 權(quán)重衰減系數(shù)為1e-4。 所有的transformer的權(quán)重使用Xaiver初始化,backnone采用ImageNet預(yù)訓(xùn)練的ResNet模型(torchvision提供,并鎖定bn層)。我們測(cè)試了兩種不同的backbone:ResNet50和ResNet101. 對(duì)應(yīng)的模型分別稱之為DETR和DETR-R101. 沿用[21],我們同樣在ResNet的最后一個(gè)stage上增加了dilation系數(shù)以及在該階段的第一個(gè)卷積層中移除了stride=2的限制,其模型分別稱之為DETR-DC5和DETR-DC5-R101(分別對(duì)應(yīng)ResNet50和ResNet101).這種修改使最后輸出特征的分辨率增加了兩倍,提升了小目標(biāo)的檢測(cè),但encoder中的自注意力機(jī)制的計(jì)算代價(jià)增加了16倍,最終導(dǎo)致計(jì)算資源消耗增加2倍以上。 表1給出了不同模型FLOPs的對(duì)比。
使用的數(shù)據(jù)增強(qiáng)包括尺度增廣,將最小邊限制在480~800,最長邊小于1333.為了利用自注意力機(jī)制和編碼器學(xué)習(xí)更好的全局關(guān)系,訓(xùn)練過程中我們還是用了隨機(jī)裁剪增廣,大約能提一個(gè)點(diǎn)的AP。具體而言,訓(xùn)練圖像依0.5的概率隨機(jī)裁剪為一個(gè)矩形塊,然后再resize到800-1333. transformer訓(xùn)練時(shí)采用0.1的dropout參數(shù)。在推理時(shí)一些預(yù)測(cè)為空集。為了優(yōu)化AP,我們使用置信度第二高的類別作為其類別,相對(duì)于直接剔除空集預(yù)測(cè),這能提升AP約2個(gè)點(diǎn)。 其他的訓(xùn)練超參見補(bǔ)充材料A4. 在分離實(shí)驗(yàn)中,我們訓(xùn)練了300個(gè)epoch,其中學(xué)習(xí)率在200個(gè)epoch時(shí)下降10倍。 使用16塊V100 卡,每張卡4張圖像需要跑3天。和Faster RCNN對(duì)比的模型我們訓(xùn)練了500個(gè)epoch,在第400個(gè)epoch進(jìn)行學(xué)習(xí)率衰減,最終相對(duì)于epoch300模型,AP提升了1.5個(gè)點(diǎn)。

Table1

與Faster RCNN的對(duì)比

Transformer一般使用Adam或者Adagrad訓(xùn)練較長的周期以及dropout, DETR同樣。Faster RCNN則通過少量的數(shù)據(jù)增廣使用SGD進(jìn)行訓(xùn)練,且使用Adam和dropout并沒有顯著增益。盡管這些差異,我們?nèi)韵M麖?qiáng)化Faster RCNN。 為了和DETR更好的對(duì)比,我們對(duì)Faster RCNN使用了GIoU和box損失,以及同樣的crop增廣以及更長的訓(xùn)練過程以提升結(jié)果。實(shí)驗(yàn)結(jié)果在表1中給出(+),以9x的訓(xùn)練調(diào)度,提升了大約1-2個(gè)點(diǎn)AP。為了讓參數(shù)量可比,我們DETR中采用了6個(gè)encoder和decoder,以及8個(gè)寬度為256的注意力頭。 和使用FPN的FasterRCNN類似,模型具有41.3M的參數(shù)量,其中ResNet-50和transformer分別占23.5M和17.8M。 盡管訓(xùn)練周期更長Faster RCNN和DETR都可能進(jìn)一步提升性能,但我們能得出DETR在相同參數(shù)量下雨Faster RCNN在COCO驗(yàn)證集上取得了可比的42AP性能。
DETR在大目標(biāo)APL上提升了7.8個(gè)點(diǎn),但在小目標(biāo)APs上減少了5.5個(gè)點(diǎn)。 DETR-DC5在相同的參數(shù)量上取得了更高的AP值,但是APs值依然低了很多。使用ResNet101作為backbone的FasterRCNN和DETR實(shí)驗(yàn)結(jié)果結(jié)論差不多。

分離實(shí)驗(yàn)

注意力機(jī)制是decoder中刻畫不同目標(biāo)特征關(guān)系的核心要素。在分離實(shí)驗(yàn)中,我們希望探索結(jié)構(gòu)中的其他部件以及損失函數(shù)對(duì)性能的影響。我們選擇ResNet50的DETR作為研究對(duì)象,該模型有41.3M的參數(shù)量,在長時(shí)和短時(shí)的訓(xùn)練周期中分別有40.6和42.0的AP值。和Faster RCNN -FPN雷速能獲得28FPS的推理速度。

encoder層數(shù)影響 table2給出了不同encoder對(duì)于全局自注意力機(jī)制的重要性影響。不使用encoder,AP下降了3.9, 大目標(biāo)甚至下降了6.0個(gè)AP。我們認(rèn)為,利用全局信息推理,encoder能夠更好的理清目標(biāo)。Figure3中,我們可視化了最后一個(gè)encoder的注意力map,可以發(fā)現(xiàn)集中在image的若干點(diǎn)。encoder似乎已經(jīng)分離了不同的實(shí)例,從而使decoder中目標(biāo)抽取和定位更加簡單。

Table.2

Figure3

decoder層數(shù)影響, 由于輔助損失函數(shù),每個(gè)decoder層都會(huì)進(jìn)行預(yù)測(cè),我們直接評(píng)價(jià)每一層預(yù)測(cè)的精度,如圖4所示,隨著層數(shù)增加性能越來越好。憑借基于集合的損失,DETR不再需要NMS操作。為了驗(yàn)證這一典故,我們?cè)诿恳粚觗ecoder上使用NMS,發(fā)現(xiàn)只有第一層性能提升較明顯,其后隨著層數(shù)增加NMS作用越來越小。我們認(rèn)為其原因在于第一層尚未能全面計(jì)算輸出元素之際愛你的相互關(guān)系,因此傾向于同一個(gè)目標(biāo)預(yù)測(cè)多個(gè)結(jié)果,而隨著層數(shù)增加相互關(guān)系更全面,也就不會(huì)產(chǎn)生重復(fù)預(yù)測(cè),此時(shí)NMS用處可以忽略不計(jì)。

Fig6中我們可視化了decoder的attention,不同目標(biāo)使用了不同顏色表示,可以發(fā)現(xiàn)decoder attention更加局部,表示其更傾向于目標(biāo)極值點(diǎn)比如頭部和腿部。我們認(rèn)為經(jīng)過encoder的全局注意力獲得instance后,decoder只需要聚焦在邊界部分以提取目標(biāo)類別和邊框。

image.png

Figure 6

FFN的重要性 我們嘗試移除encoder中的所有FFN,法相參數(shù)量由28.7M降為10.8M,但其性能AP也將下了2.3個(gè)點(diǎn),因此說明FFN對(duì)于獲得較好性能很重要。FFN在transformers中可以認(rèn)為是1x1的卷積層,使encoder更像attention增廣的卷積網(wǎng)絡(luò)。

pisitional編碼的重要性。兩種位置編碼方式:空間位置編碼和輸出位置編碼即目標(biāo)queries。我們?cè)赥able3中給出了不同組合固定和學(xué)習(xí)的encodiing下的結(jié)果。輸出位置編碼是必須的,不可或缺的,因?yàn)槲覀儑L試在decoder輸入一次或者在每個(gè)decoder層上使用。在第一個(gè)實(shí)驗(yàn)中,我們?nèi)恳瞥臻g位置編碼,將輸出編碼只利用一次,有意思的的是模型依然獲得了32AP,相對(duì)于baseline降低了7.8. 然后我們使用固定的sine空間位置編碼,繞線相對(duì)于直接使用空間位置編碼下降了1.4AP。

Table.3

以上分離實(shí)驗(yàn)的結(jié)論:transformer部件中,全局的self-attention編碼器,F(xiàn)FN, 多層解碼器, 位置編碼都對(duì)最終的目標(biāo)檢測(cè)性能至關(guān)重要。

loss分析

Table.4

分析

圖7給出了100個(gè)queries中的前20個(gè)預(yù)測(cè)目標(biāo)的位置分布,不同的顏色標(biāo)識(shí)不同尺度目標(biāo),可以發(fā)現(xiàn)不同的queries其實(shí)具有一定的位置鑒別性,也就是說訓(xùn)練得到的queries本質(zhì)上可以負(fù)責(zé)不同位置不同尺寸的目標(biāo)的預(yù)測(cè)。


Figure.7

COCO中的一些類在同一張圖像中可能同類實(shí)例并不多,比如在訓(xùn)練集中不存在多于13個(gè)長頸鹿的圖像,我們合成了一張圖像包含了24個(gè)長頸鹿,圖5可以發(fā)現(xiàn)也能夠很好的檢測(cè),這說明我們的query并沒有多少特定類別的信息。

全景分割

略。

附錄

Fig.10 DETR核心部件
DETR推理腳本
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容