DETR:Facebook提出基於Transformer的目標檢測新范式,性能媲美Faster RCNN | ECCV 2020 Oral


DETR基於標准的Transorfmer結構,性能能夠媲美Faster RCNN,而論文整體思想十分簡潔,希望能像Faster RCNN為后續的很多研究提供了大致的思路

來源:曉飛的算法工程筆記 公眾號

論文: End-to-End Object Detection with Transformers

Introduction


  之前也看過一些工作研究將self-attention應用到視覺任務中,比如Stand-Alone Self-Attention in Vision ModelsOn the Relationship between Self-Attention and Convolutional Layers,但這些方法大都只是得到與卷積類似的效果,還沒有很出彩的表現,而DETR基於transformer顛覆了主流目標檢測的做法,主要有三個亮點:

  • Standard Transformer,DETR采用標准的Transformer和前向網絡FFN進行特征的處理以及結果的輸出,配合精心設計的postion encoding以及object queries,不需要anchor,直接預測bbox坐標以及類別。
  • Set prediction,DETR在訓練過程中使用匈牙利排序算法將GT和模型預測結果一一對應,使得在推理時的模型預測結果即為最終結果,不需要后續的NMS操作。
  • 目標檢測性能超越了經典的Faster RCNN,打開了目標檢測研究的新路線,並且DETR也能改裝應用於全景分割任務,性能也不錯。

The DETR model


DETR architecture

  DETR的整體架構很簡單,如圖2所示,包含3個主要部分:CNN主干、encoder-decoder transformer和簡單的前向網絡(FFN)。

  • Backbone

  定義初始圖片$x_{img} \in \mathbb{R}^{3\times H_o\times W_o}$,使用常規的CNN主干生成低分辨率特征圖$f\in \mathbb{R}^{C\times H\times W}$,論文采用$C=2048$以及$H,W=\frac{H_o}{32}, \frac{W_o}{32}$。

  • Transformer encoder

  先用$1\times 1$卷積將輸入降至較小的維度$d$,得到新特征圖$z_o \in \mathbb{R}^{d\times H\times W}$,再將特征圖$z_o$空間維度折疊成1維,轉換為$d\times HW$的序列化輸入。DETR包含多個encoder,每個encoder都為標准結構,包含mullti-head self-attention模塊和前向網絡FFN。由於transformer是排序不變的,為每個attention層補充一個固定的位置encoding輸入。

  • Transformer decoder

  decoder也是transformer的標准結構,使用multi-head self-attention模塊和encoder-decoder注意力機制輸出$N$個大小為$d$的embedding,唯一不同的是DETR並行地decode $N$個目標,不需要自回歸的機制。由於decoder也是排序不變的,采用學習到的位置encdoing(等同於anchor)作為輸入,稱為object queries。類似於encoder,將位置encoding輸入到每個attention層,另外還有空間位置encoding,見圖10。decoder將$N$個object queries轉換為$N$個輸出embedding,然后獨立地解碼成box坐標和class標簽,得到$N$個最終的預測結構。由於了使用self-attention以及encoder-decoder注意力機制,模型能夠全局地考慮所有的目標。

  • Prediction feed-forward networks (FFNs)

  使用帶ReLU激活的3層感知機以及線性映射層來解碼得到最終的預測結果,感知機的隱藏層維度為$d$。FFN預測$N個$歸一化的中心坐標、高度、寬度以及softmax后的類別得分,由於$N$一般大於目標個數,所以使用特殊的類別$\emptyset$來標記無預測目標,類似於背景類。需要注意,最后用於輸出的FFN與encoder和decoder里的FFN是不一樣的。

  • Auxiliary decoding losses

  論文發現對decoder使用輔助損失進行訓練十分有效,特別是幫助模型輸出正確的目標個數,所以在每個decoder層添加FFN和Hugarian loss,所有的FFN共享參數,另外也使用了共享的layer-norm來歸一化FFN的輸入。

Object detection set prediction loss

  DETR輸出固定的$N$個預測結果,最大的困難在於根據GT對預測結果進行評分,需要先找到預測結果和GT的對應關系。定義$y$為GT集合,大小為N,缺少的用$\emptyset$填充,$\hat{y}={ \hat{y}i}^N{i=1}$為預測結果,為了最好地匹配GT和預測結果,使用匈牙利算法(二部圖匹配方法)找到能夠最小化匹配損失的最優排列方法$\sigma$:

  $\mathcal{L}{match} (y_i, \hat{y}{\sigma(i)})=-\Bbb{1}{{c_i \ne \emptyset}}\hat{p}{\sigma(i)}(c_i)+1_{{c_i \ne \emptyset } } \mathcal{L_{box}}(b_i, \hat{b}{\sigma(i)})$為排序后GT-預測結果對的匹配損失,匹配損失考慮類別預測以及bbox的相似度。$y_i=(c_i, b_i)$為GT,其中$c_i$為類別,$b_i\in [0, 1]^4$為相對於圖片大小的坐標向量(x, y, hetight, weight),$\hat{p}{\sigma(i)}(c_i)$和$\hat{b}_{\sigma(i)}$分別為預測的類別置信度和bbox。這里的匹配過程類似於目前檢測算法中anchor和GT的匹配邏輯,而區別在於這里的預測結果和GT是一一對應的。
  在找到最優排列方法$\hat{\sigma}$后,計算Hungarian loss:

  在實現時,考慮分類不均衡,對$c_i=\emptyset$的分類項降權10倍。
  與普通的目標檢測方法預測bbox的差值不同,DETR直接預測bbox的坐標。雖然這個方法實現很簡單,但計算損失時會受目標尺寸的影響,論文采用線性$\mathcal{l}1$損失和IoU損失來保證尺度不變,bbox損失$\mathcal{L}{box}(b_i, \hat{b}{\sigma (i)})$為$\lambda{iou}\mathcal{L}{iou}(b_i, \hat{b}{\sigma(i)})+\lambda_{L1} || b_i - \hat{b}_{\sigma(i)} ||_1$,bbox損失需要用正樣本數進行歸一化。

Experiments


  DETR性能超越了經典的Faster RCNN。

  探究encoder層數對性能的影響

  每層decoder輸出進行預測的准確率,可以看到逐層遞增。

  位置embedding方式對性能的影響,這里的spatial pos對應圖10的spatial positional encoding,而output pos則對應圖10的Object queries。

  損失函數對性能的影響。

DETR for panoptic segmentation


  DETR也可以在decoder的輸出接一個mask head來進行全景分割任務,主要利用了DETR模型的特征提取能力。

  與當前主流模型的全景分割性能對比。

Conclustion


  DETR基於標准的Transorfmer結構,性能能夠媲美Faster RCNN,而論文整體思想十分簡潔,希望能像Faster RCNN為后續的很多研究提供了大致的思路。



如果本文對你有幫助,麻煩點個贊或在看唄~
更多內容請關注 微信公眾號【曉飛的算法工程筆記】

work-life balance.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM