DETR目標檢測新范式帶來(lái)的思考
作者丨encounter1997@知乎(已授權)
來(lái)源丨h(huán)ttps://zhuanlan.zhihu.com/p/366938351
編輯丨極市平臺
導讀
為了填補transformer在CV領(lǐng)域的空白,由此Facebook AI推出了DETR,然而DETR在目標檢測領(lǐng)域帶來(lái)的革新遠遠不止這些。本文首先對DETR原文進(jìn)行介紹,隨后總結DETR這一新范式在目標檢測等領(lǐng)域帶來(lái)的變革與思考。
2020年,Transformer在計算機視覺(jué)領(lǐng)域大放異彩。Detection Transformer (DETR) [1]就是Transformer在目標檢測領(lǐng)域的成功應用。利用Transformer中attention機制能夠有效建模圖像中的長(cháng)程關(guān)系(long range dependency),簡(jiǎn)化目標檢測的pipeline,構建端到端的目標檢測器。然而DETR在目標檢測領(lǐng)域帶來(lái)的革新遠遠不止這些。本文首先對DETR原文進(jìn)行介紹,隨后總結DETR這一新范式在目標檢測等領(lǐng)域帶來(lái)的變革與思考。熟悉DETR的小伙伴可以直接跳到第二部分。
目錄
一、DETR簡(jiǎn)介
二、DETR在目標檢測領(lǐng)域帶來(lái)的新思考
如何有效利用transformer解決圖像中的目標檢測問(wèn)題
Sparse的目標檢測方法
新的label assignment機制
如何構建end-to-end的目標檢測器
如何更好地將DETR拓展到實(shí)例分割任務(wù)
一、DETR簡(jiǎn)介
將目標檢測看作set prediction問(wèn)題
DETR將目標檢測看作一種set prediction問(wèn)題,并提出了一個(gè)十分簡(jiǎn)潔的目標檢測pipeline,即CNN提取基礎特征,送入Transformer做關(guān)系建模,得到的輸出通過(guò)二分圖匹配算法與圖片上的ground truth做匹配。
DETR算法流程
DETR的方法詳情如上圖所示,其關(guān)鍵的設計包含:
(1)Transformer
CNN提取的特征拉直(flatten)后加入位置編碼(positional encoding)得到序列特征,作為T(mén)ransformer encoder的輸入。Transformer中的attention機制具有全局感受野,能夠實(shí)現全局上下文的關(guān)系建模,其中encoder和decoder均由多個(gè)encoder、decoder層堆疊而成。每個(gè)encoder層中包含self-attention機制,每個(gè)decoder中包含self-attention和cross-attention。
(2)object queries
如上圖所示,transformer****中的序列是object queries。每個(gè)query對應圖像中的一個(gè)物體實(shí)例( 包含背景實(shí)例 ),它通過(guò)cross-attention從編碼器輸出的序列中對特定物體實(shí)例的特征做聚合,又通過(guò)self-attention建模該物體實(shí)例域其他物體實(shí)例之間的關(guān)系。最終,FFN基于特征聚合后的object queries做分類(lèi)的檢測框的回歸。
Visualization of all box predictions on all images from COCO 2017 val set
值得一提的是,object queries是可學(xué)習的embedding,與當前輸入圖像的內容無(wú)關(guān)(不由當前圖像內容計算得到)。論文中對不同object query在COCO數據集上輸出檢測框的位置做了統計(如上圖所示),可以看不同object query是具有一定位置傾向性的。對object queries的理解可以有多個(gè)角度。首先,它隨機初始化,并隨著(zhù)網(wǎng)絡(luò )的訓練而更新,因此隱式建模了整個(gè)訓練集上的統計信息。其次,在目標檢測中每個(gè)object query可以看作是一種可學(xué)習的動(dòng)態(tài)anchor,可以發(fā)現,不同于Faster RCNN, RetinaNet等方法在特征的每個(gè)像素上構建稠密的anchor不同,detr只用少量稀疏的anchor(object queries)做預測,這也啟發(fā)了后續的一系列工作[4]。
(3)將目標檢測問(wèn)題看做Set Prediction問(wèn)題,用二分圖匹配實(shí)現label assignment
DETR中將目標檢測問(wèn)題看做Set Prediction問(wèn)題,即將圖像中所有感興趣的物體看作是一個(gè)集和,要實(shí)現的目標是預測出這一集和。也就是說(shuō)在DETR的視角下,目標檢測不再是單獨預測多個(gè)感興趣的物體,而是從全局上將檢測出所有目標所構成的整體作為目標。對應的,DETR站在全局的視角,用二分圖匹配算法(匈牙利算法)計算prediction與ground truth之間的最佳匹配,從而實(shí)現label assignment。以上過(guò)程中需要定義什么是最佳匹配,也就是對所有可能的匹配做排序,DETR將一種匹配下模型的總定位和分類(lèi)損失作為評判標準,損失越低,匹配越佳。注意,該匹配過(guò)程是不回傳梯度的。DETR這種從全局的視角來(lái)實(shí)現label assignment的范式也啟發(fā)了后續的一系列工作[5]。
在訓練過(guò)程中,DETR采用了deep supervision做為輔助損失,即在每個(gè)decoder layer的輸出上都做預測和監督。DETR一般需要更長(cháng)的訓練時(shí)間達到收斂,例如在coco上需要300-500個(gè)周期收斂到比較好的結果。在性能上DETR相比于faster rcnn這類(lèi)檢測器能夠在大物體上實(shí)現更好的檢測,而對于小物體而言性能較差,具體性能如下表所示。
DETR與Faster RCNN性能比較
將目標檢測看作set prediction問(wèn)題,使用稀疏的object queries做預測,并采用二分圖匹配做label assignment,DETR避免了預測時(shí)產(chǎn)生大量的重復檢測(duplicates),因此不需要非極大值抑制(NMS)等后處理操作。下圖對比了DETR中是否采用NMS的對性能的影響,可以看到到Decoder層數增加,NMS對模型性能的積極影響逐漸消失。
NMS與decoder層數對檢測性能的影響
(4)拓展到全景分割
DETR做全景分割
事實(shí)上DETR可以很容易的拓展到全景分割任務(wù)上,類(lèi)比于Mask RCNN在Faster RCNN基礎上加入mask預測分支實(shí)現實(shí)例分割。作者在DETR的Prediction Head分支上添加mask分支來(lái)實(shí)現全景分割。作者基于object query的attention map做mask分支預測,并結合CNN backbone的層級特征構建類(lèi)似FPN結構的mask預測分支,如上圖所示。
盡管本文introduction的寫(xiě)作是從構建端到端目標檢測器,去除現有目標檢測框架中復雜的手工設計這一角度出發(fā)的,但本文的意義遠不止如此,下面將介紹DETR為目標檢測社區帶來(lái)的新思考。
二、DETR在目標檢測領(lǐng)域帶來(lái)的新思考
1、如何有效利用transformer解決圖像中的目標檢測問(wèn)題
(1)Deformable DETR [2]
Deformable DETR對DETR的兩處缺陷(收斂速度慢和對小物體的檢測性能不佳)進(jìn)行分析和改進(jìn),作者指出這兩點(diǎn)缺陷事實(shí)上源自相同的原因:Transformer在處理圖像特征時(shí)存在缺陷。具體來(lái)說(shuō),在初始化時(shí)transformer中每個(gè)query對所有位置給予幾乎相同的權重,這使得網(wǎng)絡(luò )需要經(jīng)過(guò)長(cháng)時(shí)間的訓練將attention收斂到特定的區域。同時(shí),由于transformer中attention機制隨著(zhù)圖像中像素數目的增加呈平方增長(cháng),使用大的特征圖輸入encoder的代價(jià)極其高昂。因此,DETR只采用32倍下采樣的特征圖作為輸入,導致其對小物體的檢測性能不佳。
既然模型最終是要關(guān)注到稀疏的注意力區域,為什么不在一開(kāi)始就讓模型只關(guān)注稀疏的區域呢?作者提出Deformable Attention,在attention操作中對密集的key做稀疏采樣,隨后在query和稀疏的key之間做attention運算。由于模型只需要關(guān)注稀疏的采樣點(diǎn),其收斂速度顯著(zhù)提升。同時(shí),由于每個(gè)query只需要對稀疏的key做聚合,模型的運算量和顯存消耗顯著(zhù)下降,這使得Deformable Attention能夠在可控的計算消耗下利用圖像的多尺度特征。由此,得到的模型DeformableDETR如下圖所示。
Deformable DETR
Deformable Attn示意圖如下。值得一提的是,Deformable Attention中attention權重并非由query和稀疏的key之間做相似性計算得到的,而是直接由query經(jīng)過(guò)projection得到。作者解釋這是因為采用前者的方式計算的attention權重存在退化問(wèn)題,即最后得到的attention權重與并沒(méi)有隨key的變化而變化。因此,這兩種計算attention權重的方式最終得到的結果相當,而后者耗時(shí)更短、計算代價(jià)更小,所以作者選擇直接對query做projection得到attention權重。具體的討論請參見(jiàn) Deformable DETR OpenReview(https://openreview.net/forum?id=gZ9hCDWe6ke¬eId=x1VT5henOtF)
Deformable Attention
最終,DefomableDETR能夠在以十分之一的迭代次數得到比DETR更好的性能。
Deformable DETR Convergence Curve
(2)UP-DETR [3]
DETR存在的一個(gè)顯著(zhù)問(wèn)題是模型收斂慢,訓練周期長(cháng),這主要是因為隨機初始化的Transformer需要很長(cháng)的訓練時(shí)間才能收斂。那么我們能否利用無(wú)監督的預訓練來(lái)提升DETR中Transformer的收斂速度呢?為了實(shí)現這一目標,UP-DETR提出一個(gè)新的pretext task——multi-query localization(如圖所示)來(lái)預訓練DETR中的object query,以此來(lái)預訓練Transformer的定位能力。同時(shí),作者固定CNN backbone,并利用特征重建損失來(lái)保留特征的語(yǔ)義性,從而避免對定位的預訓練傷害檢測模型的分類(lèi)能力。
UP-DETR中的pretext task
在完成預訓練后,UP-DETR可以在檢測任務(wù)上fine-tune,該fine-tuning過(guò)程與DETR原文的訓練過(guò)程一致。如圖,可以看出經(jīng)過(guò)預訓練后,UP-DETR能夠取得比DETR更快的收斂速度以及更由的檢測性能。
UP-DETR Convergence Curve
更詳細的介紹請參見(jiàn)原作者的知乎回答:
如何評價(jià)華南理工和微信AI提出的無(wú)監督預訓練檢測器UP-DETR?
https://www.zhihu.com/question/432321109/answer/1606004872
2、Sparse的目標檢測方法
不同檢測算法流程比較
在DETR之前,主流的目標檢測算法都依賴(lài)于稠密的anchor box或者anchor point。如上圖所示,(a) 一階段檢測器如RetinaNet往往基于稠密的候選框做預測,(b) 二階段目標檢測器如faster rcnn則通過(guò)RPN從dense的候選框中篩選出稀疏的候選框,對比之下,DETR只將少量的(稀疏的)object queries作為目標檢測的候選。受到這種sparse檢測候選范式的啟發(fā),Sparse RCNN [4]提出僅用少量的(稀疏的)可學(xué)習的proposal作為候選框,并基于此提出一種基于RCNN的端到端目標檢測方法。
少量可學(xué)習的proposal反映了圖像中物體位置的統計信息,然而僅使用4位的位置向量作為proposal無(wú)法反映物體的形狀、姿態(tài)等細粒度的特征。相比之下,DETR中的object queries采用256維的嵌入向量來(lái)反映物體的特征,受此啟發(fā),作者在可學(xué)習的proposal基礎上引入proposal feature來(lái)編碼物體的精細特征,其與proposal數量相等,并存在一一對應關(guān)系。為了有效利用proposal feature,并為每個(gè)物體實(shí)例學(xué)習特異性的預測頭,作者提出dynamic head,如下圖所示。
Sparse R-CNN pipeline
該算法流程的偽代碼如下圖所示,proposal feature經(jīng)過(guò)映射后得到1x1卷積核的參數(動(dòng)態(tài)網(wǎng)絡(luò )),與輸入的物體實(shí)例特征做交互并輸出。
Dynamic實(shí)例交互偽代碼
值得一提的是,Sparse RCNN將Sparse這一特性應當同時(shí)包含(1)稀疏的檢測候選,而不是遍歷特征上的每個(gè)像素位置;(2)檢測候選與圖像特征之間只需要稀疏的交互,而非與圖像特征的每個(gè)像素位置做交互。顯然DETR滿(mǎn)足第一條,而不滿(mǎn)足第二條(Decoder中cross attention從整個(gè)圖像特征序列中聚合信息),從這個(gè)意義上來(lái)說(shuō),DETR不完全是sparse的,而Deformable DETR和Sparse RCNN則滿(mǎn)足sparse的特性。
最終,如圖所示,Sparse RCNN能夠在較短的訓練周期下到達比500個(gè)周期訓練的DETR更好的實(shí)驗結果,并且性能優(yōu)于Faster RCNN和RetinaNet等經(jīng)典算法。
Sparse RCNN Convergence Curve
3、新的label assignment機制
對于圖像分類(lèi)、語(yǔ)義分割等問(wèn)題,我們很容易建立輸入圖像和標簽之之間的關(guān)聯(lián)。例如,對于分類(lèi)而言,模型只需要將輸入與Ground Truth類(lèi)別向量對應起來(lái)即可;而對于語(yǔ)義分割而言,由于模型輸入和Ground Truth分割圖之間存在空間對應關(guān)系,可以很容易的將原圖上的像素與Ground Truth上相同像素位置的標簽對應起來(lái)。對比之下,目標檢測中輸入圖像和輸出標簽之間沒(méi)有直接的對應關(guān)系:一張圖片可能包含一個(gè)物體,也可能包含多個(gè)物體;一個(gè)像素可能在零個(gè)/一個(gè)檢測框內,也可能在多個(gè)檢測框內。
在DETR之前,大部分基于目標檢測器根據像素(或anchor)與Ground Truth之間的局部空間位置關(guān)系(如IoU)來(lái)實(shí)現標簽的分配(也因此造成了很多重復檢測的存在)。而DETR采用二分圖匹配方式,從全局的視角,在模型輸出與標簽之間建立一一對應的關(guān)系。
OTA(Optimal Transport Assignment)
受到這一做法的啟發(fā),OTA(Optimal Transport Assignment)[5] 提出從全局的視角來(lái)實(shí)現label assignment。具體來(lái)說(shuō),它將每個(gè)GT instance看作一個(gè)supplier,將每個(gè)anchor看作一個(gè)demander,利用分類(lèi)和定位損失計算一個(gè)supplier到一個(gè)demander的傳輸距離(即將一個(gè)GT分配給一個(gè)特定anchor的損失),隨后利用Sinkhorn-Knopp計算GT到anchor之間的最優(yōu)傳輸(即最佳的label assignment)。整個(gè)OTA算法流程如下圖所示:
OTA算法流程
個(gè)人認為OTA與DETR中利用二分圖匹配實(shí)現label assignment沒(méi)有顯著(zhù)區別,不過(guò)將GT和anchor分別理解為supplier和demander,并用最優(yōu)傳輸理論來(lái)解釋整個(gè)標簽分配過(guò)程還是讓人覺(jué)得耳目一新。
4、如何構建end-to-end的目標檢測器
DETR基于Transformer提出首個(gè)端到端的目標檢測方法,那么很自然的問(wèn)題就是:(1)基于CNN的目標檢測方法能否做到端到端?(2)哪些因素是實(shí)現端到端目標檢測的關(guān)鍵?以下三篇文章對這兩個(gè)問(wèn)題展開(kāi)了探討:
OneNet: Towards End-to-End One-Stage Object Detection
https://arxiv.org/abs/2012.05780
End-to-End Object Detection with Fully Convolutional Network
https://arxiv.org/abs/2012.03544
What Makes for End-to-End Object Detection?
https://icml.cc/Conferences/2021/Schedule?showEvent=8868
事實(shí)上,構建端到端的目標檢測器與label assignment息息相關(guān),這里不做展開(kāi)介紹,感興趣的小伙伴可以參考論文原文和作者的知乎介紹。
https://zhuanlan.zhihu.com/p/336016003
https://zhuanlan.zhihu.com/p/332281368
5、如何更好地將DETR拓展到實(shí)例分割任務(wù)
DETR論文中效仿Mask RCNN,添加mask分支來(lái)實(shí)現全景分割,同樣的方法也可以被運用在實(shí)例分割任務(wù)上。然而DETR的mask分支十分復雜,需要使用復雜的網(wǎng)絡(luò ),并利用類(lèi)似FPN的結構來(lái)融合CNN特征。這主要是由于mask的輸出空間較為復雜,不同于分類(lèi)和定位只需要輸出向量來(lái)表示類(lèi)別和回歸值,mask的預測需要輸出2D的map。
SOLQ [6]在DETR基礎上提出利用統一的類(lèi)別、位置和mask特征表示UQR(Unified query representation)來(lái)實(shí)現端到端的實(shí)例分割。
DETR實(shí)例分割與SOLQ對比
具體來(lái)說(shuō),SOLQ提出對mask進(jìn)行可逆的壓縮編碼,這樣在訓練時(shí)模型的mask分支只需要將query的映射與低維的mask編碼作比較、計算損失;而在預測時(shí),通過(guò)解碼將預測出的低維mask編碼解碼為2D的分割map,如下圖所示。
Unified query representation
這樣利用統一的query特征表示來(lái)實(shí)現分類(lèi)、定位和分割三個(gè)任務(wù)使得模型,不僅大大簡(jiǎn)化了DETR做實(shí)例分割的整體流程,還能夠充分利用多任務(wù)訓練的好處。實(shí)驗表明,采用UQR不僅能夠同時(shí)也能夠提升目標檢測的精度。
總結
本文主要介紹了DETR在目標檢測領(lǐng)域帶來(lái)的變革與思考。由于涉及的文章數量較多,沒(méi)有全部展開(kāi)介紹,感興趣的小伙伴還請參見(jiàn)論文原文。一個(gè)全新的目標檢測框架能夠為整個(gè)社區帶來(lái)這么多新的思考,不經(jīng)讓人感慨。個(gè)人認為一個(gè)很鍛煉科研思維的方法就是嘗試站在某篇代表性文章剛剛發(fā)表的時(shí)間節點(diǎn)(先不看其后續工作),思考自己能夠從這篇文章中得到哪些啟發(fā),會(huì )考慮從哪些角度做進(jìn)一步的研究。再拿自己的思考與后續研究者的工作做比較,在這個(gè)過(guò)程中提升自己的科研直覺(jué)和判斷力。
由于筆者能力有限,如有敘述不當之處,歡迎不吝賜教。
[1] End-to-End Object Detection with Transformers
[2] Deformable DETR: Deformable Transformers for End-to-End Object Detection
[3] UP-DETR: Unsupervised Pre-training for Object Detection with Transformers
[4] Sparse R-CNN: End-to-End Object Detection with Learnable Proposals
[5] OTA: Optimal Transport Assignment for Object Detection
[6] [SOLQ: Segmenting Objects by Learning Queries]
本文亮點(diǎn)總結
1.在訓練過(guò)程中,DETR采用了deep supervision做為輔助損失,即在每個(gè)decoder layer的輸出上都做預測和監督。在性能上DETR相比于faster rcnn這類(lèi)檢測器能夠在大物體上實(shí)現更好的檢測,而對于小物體而言性能較差。
2.在DETR之前,大部分基于目標檢測器根據像素(或anchor)與Ground Truth之間的局部空間位置關(guān)系(如IoU)來(lái)實(shí)現標簽的分配(也因此造成了很多重復檢測的存在)。而DETR采用二分圖匹配方式,從全局的視角,在模型輸出與標簽之間建立一一對應的關(guān)系。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。
電機保護器相關(guān)文章:電機保護器原理 接地電阻測試儀相關(guān)文章:接地電阻測試儀原理 漏電開(kāi)關(guān)相關(guān)文章:漏電開(kāi)關(guān)原理 漏電保護開(kāi)關(guān)相關(guān)文章:漏電保護開(kāi)關(guān)原理 零序電流保護相關(guān)文章:零序電流保護原理