如何用Transformer来做目标检测?一文简述DERT及其变体
?PaperWeekly 原創 ·?作者|張一帆
學校|華南理工大學本科生
研究方向|CV,Causality
DETR 在短短一年時間收獲了 200+ 引用量,可謂是風靡一時,各種變體層出不窮,這篇文章主要總結了幾篇論文來研究各種關于 DETR 的改進以及它存在的問題。
DETR
論文標題:
End-to-End Object Detection with Transformers
收錄會議:
ECCV 2020
論文鏈接:
https://arxiv.org/abs/2005.12872
代碼鏈接:
https://github.com/facebookresearch/detr
facebook 力作,網上類似的解讀已經很多了,將 object detection 視為一個 set prediction 的問題。個人覺得他吸引人的地方在于簡潔優雅的訓練方式,無需任何后處理,實現非常簡單。當然 DETR 的缺點也很明顯,需要較長的訓練時間,而且在小物體上的檢測結果并不盡如人意。之后這幾篇 paper 也是從不同的角度相對這個問題作出回應。
ViT-FRCNN
論文標題:
Toward Transformer-Based Object Detection
論文鏈接:
https://arxiv.org/abs/2012.09958
文章提出了 ViT-FRCNN 模型,聽名字就知道是 ViT 與 FRCNN 的結合。我們先來看看 ViT。
我們知道 ViT 其實只有 encoder,但是他很好地完成了分類這一任務,他只使用 cls token 做分類,其余的 image patch 生成的 token 拋棄掉了。但是這些 token 其實包含大量的局部信息,非常適合用來做目標定位。所以只要能利用好這些 token,我們是不是可以不需要 decoder 呢?答案是肯定的。
ViT-FRCNN,具體與 DETR 的不同之處主要體現在以下幾個方面:
無需 CNN 提取特征,采用了 ViT 的輸入方式直接將 image 切割成 patch 然后做 Linear projection 即可變為輸入。
對于 encoder 產生的各個 embedding,ViT-FRCNN 將他們重新組織成為 feature map。這樣我們就可以用 Faster-RCNN 的方法,先在 feature map 上做 region proposal,然后對這些 RoI 做分類和定位。
總的來看,就是將 Faster-RCNN 的 backbone 替換為了 transformer,文章也沒有與 DETR 進行深入比較。
TSP-FCOS & TSP-RCNN
論文標題:
Rethinking Transformer-based Set Prediction for Object Detection
論文鏈接:
https://arxiv.org/abs/2011.10881
文章研究了 DETR 訓練中優化困難的原因:Hungarian loss 和 Transformer cross-attention 機制等問題。為了克服這些問題,還提出了兩種解決方案,即 TSP-FCOS 和 TSP-RCNN。實驗結果表明所提出的方法不僅比原始 DETR 訓練更快,準確性方面也明顯優于 DETR。
3.1 是什么使得DETR收斂如此之慢?
作者首先猜測可能是因為使用了二分圖匹配來計算兩個集合的相似度,但是試驗結果表明問題這里的問題其實不算嚴重。相反,decoder 中的 cross attention 才是罪魁禍首。我們知道 attention map 在初始化的時候是非常均勻的,但是隨著他不斷收斂會變得越來越稀疏。
相關研究表明,如果我們將 attention 替換為更加系數的算子比如卷積將會大大加快收斂的速度。所以這里的 cross-attention 到底影響有多大,文中給出了以下實驗:
我們可以看到,cross-attention 的稀疏性持續增加,即使在 100 次訓練后也沒有收斂。這意味著 DETR 的交叉注意部分是一個導致收斂速度慢的主導因素。
3.2 我們一定需要交叉注意力嗎?
通過設計只有 encoder 的網絡,即 encode 出來的 embedding 直接用來做分類和定位(結構圖如下),因為 encoder 其實就是一個自注意力的網絡,所以DETR訓練的方式可以照搬過來。
我們可以得到下圖的結果,可以看到其實 AP 下降的并不多,相反對小物體而言我們有非常大的提升,但是對大物體而言效果有所下降。
文中認為一種可能的解釋是,一個大對象可能包含太多潛在的匹配特征點,這對于只使用編碼器的 DETR 來說是很難處理的。另一個可能的原因是編碼器處理的單一特征映射對于預測不同尺度的對象是不魯棒的(融入 FPN 可能能解決這個問題)。
3.3 如何解決上述問題?
作者提出了兩種不同的架構,這兩種架構都融入了 FPN 對 CNN 提取出來的特征圖進行處理來緩解 Encoder-Only DETR 對大尺度物體不敏感的缺陷。
TSP-FCOS:在 backbone 和 encoder 之間加上了 head;
TSP-RCNN:在 backbone 和 encoder 之間加上了 RoIAlign;
主要與 DETR 的區別在于
在輸入 encoder 之前都會從圖像金字塔中抽取 RoI,FoI 作為 encoder 的輸入,這一步顯然會增加定位精度,但是同時模型也變得更加復雜了。
針對 RoI 采取了特殊的 position encoding (根據 box 的中心點,長寬高設計 encoding)
將傳統 FCOS 和 RCNN 匹配 ground truth 和預測 box 的方法融入 DETR 中,進一步提高匹配的效果與效率。
3.4 實驗
下表比較充分地說明了訓練精度和速度都有所提升。
作者還貼心的畫了一張圖,上面兩張圖比較了文中提出的損失函數收斂速度的影響(DETR-Like)就是直接二分匹配。下面的圖展示了文中兩個model與DETR收斂速度的比較。
3.5 總結與討論
上兩篇文章的區別在哪呢?ViT-FRCNN 使用 transformer encoder 提取特征,將重組后的 feature map 扔進 RCNN 的檢測網絡中得到最終結果。而 TSP-RCNN 先用傳統方法將特征處理好,找到 RoI 或者 FoI,然后將他們扔到 transformer encoder 中,二者可能都有提升,但還是大量依賴與傳統檢測的各種處理方法。Transformer 在他們之中扮演的角色仿佛也不是那么重要。
Deformable DETR
論文標題:
Deformable DETR: Deformable Transformers for End-to-End Object Detection
收錄會議:
ICLR 2021
論文鏈接:
https://arxiv.org/abs/2010.04159
代碼鏈接:
https://github.com/DeppMeng/Deformable-DETR
文章先 argue 了兩個 DETR 面臨的主要問題
訓練周期長,收斂速度慢,比 Faster-RCNN 慢 20 倍。這主要是因為 attention map 要從均勻到稀疏這個訓練過程確實非常耗時。
小物體檢測效果差,FPN 可以減緩這個缺陷,但是由于 Transformer 的復雜度是 ,高分辨率對 DETR 來說會帶來不可估量的內存和計算速度增加。
而可變形卷積 deformable convolution 就是一種有效關注稀疏空間定位的方式,可以克服以上兩個缺點。
4.1 Deformer Attention
作者首先提出了 Deformer Attention 模塊,attention 難就難在他是一個密集連接,但是需要學到非常稀疏的知識,Deformer 直接將需要學習的知識定義為稀疏的。與傳統 attention 的最大區別在于:Attention weight 不再基于 query 和 key 的 pairwise 對比,而是只依賴于 query。
在實現上,每個 query 會被映射到 的特征空間(M 是 attention head 的數目,K 是我們預設的 key 的數目 e),前 個通道編碼采樣的 offset(對 個 key 值分別有一對 offset),決定每一個 query 應該找哪些 key,最后 個通道,輸出 keys 的貢獻(不再用 key-query 交互來計算權重,直接輸入 query 回歸),且只對找到的 keys 的貢獻進行歸一化。
對比一下傳統 attention 和這個方法,在公式中體現出來的區別在于 ,這里 是每個 query 都有的一個二維 reference point(二維的索引),但是我們生成的第 k 個 key 的索引 可能并不會精確的 match 到一個點的索引,這時就會用到雙線性插值通過周圍的 embedding 得到我們需要位置的 embedding。
4.2 Multi-scale Deformable Attention Module
將 resnet 中間多層不同分辨率的特征圖拿出來構成 ,在每一層挑選 個點,所以一共 個點做歸一化得到權重 。其中歸一化的 reference 坐標在 [0,0] 到 [1,1],這二者分別表示左上和右下 (因為有多個尺度,所以不能像單尺度那樣直接使用 ),然后 就會將這個 reference 重新映射回 層的真實坐標用于索引。
4.3 Deformable Transformer Encoder
這里雖然還稱之為 transformer,實際上輸入輸出已經不是序列數據了,而是保持相同分辨率的多尺度特征圖。這里的 query,key 都是多尺度特征圖上的像素點,對每個 query 像素點,他的 reference point 就是它本身。之后我們就使用上文提出的 deformable attention 對 query,key 進行處理。
4.4 Deformable Transformer Decoder
將 cross-attention 的部分替換為 deformable attention,保持 self-attention 模塊不變(query,key 都是 object query),這樣做是為了使得各個 object query 之間也能夠有充分的交互,同時減少交叉注意力時 key 值的數目。
有一點也很有意思,我們這些 reference point 并不只是用來索引的,他們還可以作為預測 box 的初始中心點,這樣我們就能將回歸目標設為 offset 而不是直接預測長和寬,降低了優化的難度。
decoder 部分 iterative bbox refinement 和 two stage 的思路看起來就是傳統檢測模型的一種引入。
4.5 Experiments
效果感人,和 DETR 同等參數量下只訓練 50 個 epoch 就已經得到非常不錯的結果了。
有個圖感覺有點爭議,這張圖雖然效果很好。但是沒有 MS attention 而且 K=1 的時候其實已經退化成了 deformable conv,此時的的效果也并不差。
可變性注意力的設計值得關注,是不是也能擴展到序列數據處理上是一個有待研究的問題。但總體來看與傳統 transformer 已經不太像了,也有人說“如果把 attention 那部分再改改,就又回到傳統檢測的老路上了”。
ACT
論文標題:
End-to-End Object Detection with Adaptive Clustering Transformers
論文鏈接:
https://arxiv.org/abs/2011.09315
文章的 motivation 給的比較清晰,主要有兩點:
1. Attention Map 存在很多冗余,可以看到 DETR 的編碼器輸出的結果中,相近的點他的 attention map 是非常類似的。
2. 隨著 encoder 的加深,特征之間的相似度會逐漸增高。這其實是很直觀的,因為 encoder 一直在做自注意力,交互的越多就包含了更多的全局信息。作者也做了實驗進行驗證。
為了解決上述第一個問題,作者想到了對相似的特征圖聚類,計算它們的聚類中心(prototype),原型的特征是一整個 cluster 的均值,我們做 key-value attention 的時候也只是針對這些原型來做,這樣就大大的減小了參數量。但是對于聚類而言,我們要聚多少類這是一個比較重要的問題。
而第二個觀察告訴我們,不同層特征的相似度是不同的,因此我們可以對不同層規定不同數目的 prototype,如果這一層大多數都很類似,那我們大可以選比較少的 prototype。文中采用了 E2LSH 這種哈希技術來自動進行聚類。
5.1 Adaptive Clustering Transformer
1. 確定原型:文中使用了 Locality Sensitivity Hashing(LSH)這一近鄰搜索方法來進行聚類。通過控制參數,我們可以做到使得距離小于 的特征向量以大于 的概率進入同一組。以下是我們的哈希函數?,其中 是超參, 都是隨機變量。
我們做 次哈希然后來增加可信度:
直觀理解一下這個過程,其實每個哈希函數都可以看作是一組由超參數控制的平行線,將空間分為不同的區域, 控制著他們的間距。 個不同的哈希函數將空間分成了不同的 cell,落在一個 cell 中的特征具有同樣的哈希值。只管上來看歐幾里得距離越小,更容易有相同的哈希值。將擁有相同哈希值的 query 求平均,我們就得到了第 個 cluster 的 prototype 。
2. 估計注意力輸出:使用這些 prototype 來代替 query,我們就可以將時間復雜度從 降到 。更加正式一點的定義如下 ,那么我們通過以下公式得到 attention 的輸出 :
這里的 指的是 query 所屬的 cluster。
主題內容到這里就結束了,文章還提到了誤差的分析和使用知識蒸餾的方式進一步提升效果。
5.2 Experiments
首先是超參數的選擇,作者隨機在訓練集采樣 1000 張 image 計算它們真實 attention map 和使用本文 ACT 產生的 attention map 之間的均方誤差,從而來選擇合適的 。超參數對這篇文章影響非常大,因此需要仔細地選擇一個比較合適的超參。
在速度-準確性的 tradeoff上,ACT 表現出了比傳統 DETR 或者使用 Kmeans 來聚類更好的效果。
AP 的比較有點意思,ATP 可以比較好的近似 DETR 產生的 attention map,不過利用 prototype 代替 query 直覺上來看更加丟失了局部信息,反映在實驗上 確實變差了,但是小物體檢測一直是 DETR 至關重要的一個缺陷,而 ACT 使得這點更為突出。
更多閱讀
#投 稿?通 道#
?讓你的論文被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得或技術干貨。我們的目的只有一個,讓知識真正流動起來。
?????來稿標準:
? 稿件確系個人原創作品,來稿需注明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向)?
? 如果文章并非首發,請在投稿時提醒并附上所有已發布鏈接?
? PaperWeekly 默認每篇文章都是首發,均會添加“原創”標志
?????投稿郵箱:
? 投稿郵箱:hr@paperweekly.site?
? 所有文章配圖,請單獨在附件中發送?
? 請留下即時聯系方式(微信或手機),以便我們在編輯發布時和作者溝通
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
關于PaperWeekly
PaperWeekly 是一個推薦、解讀、討論、報道人工智能前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號后臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
總結
以上是生活随笔為你收集整理的如何用Transformer来做目标检测?一文简述DERT及其变体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 商业贷款转组合贷款的条件
- 下一篇: 教育类股票有哪些 新措施发布大家一