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