[論文] End-to-End Object Detection with Transformers
摘要 Abstract
Facebook AI 提出了一個新的物件偵測方法,這個方法簡化了整個偵測流程,且整個流程內不需要人工設置的部分,例如 : 非極大抑制演算法 (NMS, Non Maximun Suppression) 與 Anchor Box,這些必須事前人工設置的部分明確的將我們對於整個任務的先驗知識進行編碼。
本篇論文提出的物件偵測新框架的最主要架構稱之為 DEtection TRANSformer / DETR,是一種基於集合概念的全域損失,藉由二分匹配 ( Bipartite Matching ) 與 Transformer 的 Encoder-Decoder 架構來強制進行唯一預測。給定一組固定的學習物件集合 Queries,DETR 會考慮到物件以及全域圖像上下文之間的關係,直接平行輸出最終預測集。
這個新型態的模型會跟現在 SOTA 的物件偵測器不同的地方是概念上來說較為簡單,不需要額外特別的 Library。DETR 與發展成熟且高度最佳化的 Faster R-CNN 相比,在準確度與整個效能來說都有很好的表現。而且,DETR 可以用一個統一的方式更泛化的進行全景分割。此論文指出此架構的表現高過現今具競爭力的基準。
訓練程式碼及預訓練模型均可於下列網址中取得 : https://github.com/facebookresearch/detr
簡介 Introduce
基本上,物件偵測就是對每一個我們感興趣的物件預測一組邊界框 (Bounding Box) 以及類別標註。現代的主流物件偵測,利用大量的候選框、Anchor Box 或是邊界框中心來定義替代回歸和分類問題,以此間接地解決這樣的任務。然而,這些偵測方式的效能、表現會因為 -- 後製 / 後處理來整合幾近重複的預測、Anchor Box 的設計以及目標邊界框分配給 Anchor Box 的方式而受到顯著的影響。
為了簡化這些流程,作者們提出了一個直接的集合預測方法來繞過替代任務。這種 End2End 的架構在複雜結構化預測任務中取得重大的進展,但在物件偵測領域上尚未取得任何進展 : 過去的偵測架構中,要不是用其他的型態添加了先驗知識,不然就是沒有被證明在具有挑戰性的強基準下具有足夠的競爭力。而本篇論文旨在彌補這一個差距。
作者將整個物件偵測視為是一個直接的集合預測問題,進而簡化了訓練流程。作者採用了基於 Transformer 的 Encoder-Decoder 架構,一種用於序列預測的流行架構。Transformer 中的自我注意力機制可以明確地將序列中個個元素之間的交互作用建模,使得這樣的結構特別適合用於具有特殊條件的集合預測,例如刪除重複的預測。
DETR (上圖) 可以一次性的預測所有物件,並且透過特別的損失函數來進行 End2End 訓練,這種損失函數會進行預測對象與真實對象之間的二分匹配 (Bipartite Matching)。DETR 也刪除了多個人工設計的部分 (非極大抑制與 Anchor Box) 來簡化偵測流程,這些部分會對先驗知識進行編碼。與現有的物件偵測系統不同,DETR 不需要任何自定義層,因此可以在任何包含標準 CNN 及 Transformer class 的框架中輕易被重製。
與過去的直接集合預測研究比較,DETR 的主要特色是具有二分匹配損失以及帶有 (非自迴歸) 平行解碼的 Transformer 結構。相反的,先前的研究都專注在 RNN 自迴歸解碼。DETR 的匹配損失函數會分配給真實物件一個唯一的預測,並且不會改變預測物件的排列,這樣表示我們可以平行的進行預測。
這篇論文在最受歡迎的物件偵測資料集 COCO 與最具競爭力的物件偵測器 Faster R-CNN 進行比較藉此評估 DETR。從最初的發表開始,Faster R-CNN 經過了一次又一次的設計更動,其性能也越來越好。從本論文的實驗中顯示,DETR 具有能與之競爭的性能。準確地說,DETR 在大型的物件上顯著的優於 Faster R-CNN。這個實驗結果可能是由於 Transformer 的非局部計算所造成。然而,DETR 在小型物件上的檢測性能較低,作者認為未來的工作將會利用 Faster R-CNN 中的 FPN (Feature Pyramid Network) 來改善這個問題。
DETR 的訓練設定與現今標準物件偵測系統有許多不同之處。這個新的模型架構需要超長的訓練時間,並且得利於 Transformer 中的輔助解碼損失 (auxiliary decoding losses)。接下來,作者們將會探索哪些部份對於模型的性能至關重要。
DETR 模型的設計精神使其更容易應用到更多複雜的任務中。在論文的實驗中,左者們會展示使用預訓練的 DETR 在一個簡單的分割 head 部位進行訓練,得到的效能勝過全景分割上的基準。
相關工作 Related work
這篇論文建立在許多領域先前的努力之上,其中包含 : 集合預測的二元匹配、Transformer 的 Encoder-Decoder 結構、平行解碼以及物件偵測。
集合預測 Set Prediction
沒有任何的典型深度學習模型 (Canonical Deep Learning Model)1 可以用來直接預測集合。最基本的集合預測任務就是多標籤分類 (Multilabel Classification),這種任務的基準方法,one-vs-rest,也不適合用於偵測某個結構在許多元素之間的存在位置這類型的問題 ( 例如,幾乎相同的邊界框 )。
這類型的任務最困難的部分就是要避免重複的問題。現今大多數的物件偵測器都是使用非極大抑制法來後處理解決這樣的問題,但是如果要直接做集合預測就無法進行後處理。最好就是有一個全域推論框架,模型可以對所有待預測物件進行交互作用且避免冗餘,對於固定大小的集合預測,密集連接層固然可以做到,但是計算成本太高,一種比較通用的方式就是使用類似 RNN 這樣的自回歸模型。
不管在什麼狀況下,損失函數應該要對於預測物件的排列具不變性。一個通用的解決方法是使用基於匈牙利演算法2的損失函數,在預測與真實標註上進行二分匹配。這會強制排列不變,而且可以保證每一個目標都進有唯一的匹配。作者們遵循著二分匹配損失,但不使用自回歸模型,採用的是帶有平行解碼的 Transformer。
Transformer 與平行解碼 Transformers and Parallel Decoding
Transformer 由 Vaswani 等人所提出,是一個新型基於注意力的機器翻譯模組。注意力機制是一個可以整合整個輸入序列資訊的神經網路結構。在 Transformer 中引入了類似非局部神經網路的自我注意力層,它可以掃過整個序列的每一個元素,並且藉由彙整後的資訊來進行更新。
這樣的方式其中一個優點在於基於注意力機制的模型會進行全域計算而且具有完善的記憶體儲存,與 RNN 相比,更適合用於長序列上。也因為如此,Transformer 在許多自然語言處理、語音處理或是電腦視覺問題上都取代了 RNN 的地位。
Transformer 一開始被用在自回歸模型中,遵循著早期的 Seq2Seq 模型,一個一個輸出生成 token。然而,過高的推論成本 ( 與輸出序列長度成正比,且難批次處理 ) 導致在音訊、機器翻譯、單字表徵學習 (Word Representation Learning) 與語音識別等領域中序列生成這件事情難以平行化處理。
作者們結合 Transformer 與平行解碼,以便在集合預測的計算成本與全域計算能力中進行權衡。
物件偵測 Object detection
大多數現代化的物件偵測方法都會使用初始化的猜測來做預測。二階段式的偵測器,會針對候選框進行邊界框的預測,而一階段式的偵測器則是會針對 Anchor Box 或是可能存在物件中心的網格進行預測。在近期的研究都指出,這些偵測系統的性能有很大程度會取決於猜測初始化的方式。
在本篇論文提出的模型中,作者們針對輸入影像的絕對邊界框預測 (非 Anchor Box) 來直接進行集合預測,藉此來移除了這些人工設置的步驟且簡化整個偵測過程。
基於集合的損失 Set-based loss
幾種物件偵測系統 (SSD / YOLO) 均使用了二分匹配損失。然而,這些早期的深度學習模型只使用了卷積層、全連接層來針對不同預測之間的關係進行建模,並且使用人工設置的 NMS 後處理方式來提高其性能。近期的偵測系統,配合著 NMS 針對真實標註與預測之間使用非唯一的分配規則。
可學習的 NMS 以及關係網路藉由注意力機制明確地將不同的預測之間的關係進行建模。使用直接的集合損失,不再需要任何後處理步驟。但是,這些方法必須使用額外人工設定的上下文特徵 (譬如,候選框座標)才能有效率地為偵測之間的關係建模,同時,作者們也在尋找減低模型中先驗知識編碼的解決方案。
遞迴偵測器 Recurrent detectors
最接近這篇論文所提出的方法的是用於物件偵測 End2End 的集合預測以及實例分割 (Instance Segmentation),與作者們提出的方法類似,他們使用二分匹配損失配合基於 CNN 激化的 Encoder-Decoder 架構直接預測一組邊界框。但是這些方法目前僅有在小型資料集中進行評估,而沒有與現代基準進行比較。特別的地方是,他們是基於自回歸模型 ( 準確來說就是 RNN ),所以並沒有使用到近期平行解碼的 Transformer。
DETR 模型 The DETR Model
要在偵測中直接做集合預測有兩個非常重要的關鍵 :
- 集合預測損失必須強制將預測框與真實框進行唯一匹配
- 整個架構必須要預測 (一次預測) 物件集合並且對其關係進行建模
接下來便會針對整個架構進行細節上討論。
物件偵測集合損失 Object detection prediction loss
DETR 單一次通過 Decoder 後會進行固定尺寸的預測集,大小為 \(N\) ,這個 \(N\) 值會遠大於圖像中物件的數量。而訓練的困難點在於怎麼去針對預測的物件 ( 無論是物件分類、位置還是尺寸 ) 與真實物件給予評分。DETR 設計的損失會在預測物件與真實物件之間產生一個最佳的二分匹配,然後我們來藉此優化這個特定物件 (邊界框) 的損失。
假設 \(y\) 為真實物件集合,而 \(\hat{y}=\{\hat{y}_i\}_{i=1}^N\) 則是預測集合,其中 \(N\) 值明顯大於圖像中的物件個數。我們將 \(y\) 利用 padding \(\phi\) (無物件數量) 擴增為尺寸為 \(N\) 的集合。
為了找出這兩個集合 \(y, \hat{y}\) 間的二分匹配,我們遍尋 \(N\) 個元素排列 \(\sigma\in\mathfrak{S}_N\) 中成本最低的,即 :
\[ \hat{\sigma}=\underset{\sigma\in\mathfrak{S}_N}{\arg\min}\sum_i^N\mathcal{L}_{\text{match}}\big(y_i,\hat{y}_{\sigma(i)}\big) \]
其中 \(\mathcal{L}_{\text{match}}\big(y_i,\hat{y}_{\sigma(i)}\big)\) 指的是真實 \(y_i\) 與排列 \(\sigma\) 中第 \(i\) 個物件 \(\sigma(i)\) 成對的匹配損失。上述的最佳化過程我們可以使用匈牙利演算法來有效率的求解。
匹配損失本身包含了類別預測以及真實邊界框與預測邊架框的相似度。每一個真實物件集合的元素 \(y_i\) 都可以被視為 \((c_i, b_i)\),\(c_i\) 是該物件的類別標籤 ( 也可能是 \(\phi\) ),而 \(b_i\in[0,1]^4\) 是一個四維向量,代表著邊界框中心點座標以及相對於圖像尺寸的長度與寬度。匹配損失在這篇論文中的定義如下 :
\[ \mathcal{L}_{\text{match}}\big(y_i,\hat{y}_{\sigma(i)}\big)=-\mathbb{I}_{\{c_i\neq\phi\}}\hat{p}_{\sigma(i)}(c_i)+\mathbb{I}_{\{c_i\neq\phi\}}\mathcal{L}_{\text{box}}(b_i,\hat{b}_{\sigma(i)}) \]
其中,\(\hat{p}_{\sigma(i)}(c_i)\) 指的是在排列 \(\sigma\) 中第 \(i\) 個物件 \(\sigma(i)\) 為 \(c_i\) 的機率,而 \(\hat{b}_{\sigma(i)}\) 則是指預測框。( 這個損失函數在第一眼見到的時候會覺得有些難懂,但事實上其實蠻簡單理解的,當這個 \(\sigma\) 排列的第 \(i\) 個類別為 \(c_i\) 的機率越高時,損失會越低,而當邊界框的差異越大時,損失越高,將這兩者的損失值不賦予權重直接相加即為總損失 )
這個尋找出最佳匹配的過程,其實就跟現代的物件偵測器中要去匹配候選框 (Proposals)、錨框 (Anchors) 到真實物件的角色一樣。最主要的區別在於 DETR 中的匹配過程必須一對一以直接進行沒有重複的集合預測。
第二步驟,利用匈牙利演算法來計算前一個步驟中每一個配對的總損失,作者將損失函數定義的類似於一般的物件偵測器,亦即,類別機率的負對數似然值與邊界框損失的線性組合 :
\[ \mathcal{L}_{\text{Hungarian}}(y,\hat{y})=\sum_{i=1}^{N}\Big[-\log \hat{p}_{\hat{\sigma}(i)}(c_i)+\mathbb{I}_{\{c_i\neq\phi\}}\mathcal{L}_{\text{box}}(b_i,b_{\hat{\sigma}(i)})\Big] \]
\(\hat{\sigma}\) 指的是第一步驟所找出來的最佳分配。實務上,當 \(c=\phi\) 時,會將機率對數值的權重降低十倍,以解決分類上的不平衡。3這樣的方法類似於 Faster R-CNN 中利用次採樣 (Subsampling) 來平衡正負候選框 (Proposals)。
值得注意的地方是,物件與 \(\phi\) 的匹配成本並不取決於預測,也就是說,在這種情況下匹配成本是一個常數。再這樣的匹配成本中,利用機率值 \(\hat{p}_{\hat{\sigma}(i)}(c_i)\) 取代機率對數值。這樣的方式會使分類預測項可與 \(\mathcal{L}_{\text{box}}(\cdot,\cdot)\) 相稱 (後面會進行解釋),並且作者也觀察到這樣會有更好的實證表現。
邊界框損失 Bounding box loss
匹配損失與匈牙利損失中的第二項 \(\mathcal{L}_{\text{box}}(\cdot)\) 指的就是邊界框的分數。與其他的偵測器將邊界框預測視為針對初始猜測的偏移不同,DETR 是直接進行邊界框的預測。儘管這樣的方法可以簡化整個預測,但卻同時會造成損失相對放大的問題。
最常見的 \(\ell_1\) 損失在不同大小的邊界框中,即使相對誤差接近也會有比例上的差異。為了解決這樣的問題,作者利用 \(\ell_1\) 損失與廣義的 \(IOU\) 損失 \(\mathcal{L}_{\text{iou}}(\cdot,\cdot)\) 的線性組合,這樣的設計不會因為尺度變化而有所改變 (Scale-invariant)。
總而言之,我們將邊界框損失 \(\mathcal{L}_{\text{box}}(b_i,\hat{b}_{\sigma(i)})\) 定義為 :
\[ \mathcal{L}_{\text{box}}(b_i,\hat{b}_{\sigma(i)})=\lambda_{\text{iou}}\mathcal{L}_{\text{iou}}(b_i,\hat{b}_{\sigma(i)})+\lambda_{\text{L}_1}\|b_i-\hat{b}_{\sigma(i)}\|_1 \]
其中,\(\lambda_{\text{iou}},\lambda_{\text{L}_1}\in\mathbb{R}\) 為超參數 (hyperparameters),而這兩個損失則是利用每個批量中的物件數量進行標準化 (Normalized)。
DETR 架構 DETR architecture
整個 DETR 架構十分簡單,如下圖 (Fig. 2) 所示。它包含了三個部分 : 以 CNN 為主體的骨幹、Transformer 以及一個簡單的前饋網路 (FFN, Feed forward Network),最後作出偵測結果。
與現今許多物件偵測器不同,DETR 可以在任何提供通用 CNN 與數百行程式碼的 Transformer 架構的深度學習框架中實現,甚至可以在少於 50 行程式碼的 Pytorch 實現推論。作者希望這個方法可以吸引到新的研究人員進入到物件偵測的領域。
骨幹 Backbone
從初始圖像 \(X_{\text{img}}\in \mathbb{R}^{3\times H_0\times W_0}\) 開始,一個卷積 CNN 骨幹會生成一個低解析度的 activation map \(f\in \mathbb{R}^{C\times H\times W}\)。論文內的設置為 \(C=2048, H=\dfrac{H_0}{32}, W=\dfrac{W_0}{32}\)。
Transformer 編碼器 Transformer encoder
首先,利用 \(1\times 1\) 卷積來降低 channel 維度,由 \(C\) 降至 \(d\),生成一個新的特徵圖 \(z_0\in \mathbb{R}^{d\times H\times W}\)。這個編碼器需要用一個序列作為輸入,因此必須將 \(z_0\) 的維度變成一個維度,得到一個 \(d\times HW\) 特徵圖。每一個編碼層都有一個標準架構且包含一個多頭自注意力機制與一個前饋網路 ( FFN, Feed Forward Network )。
由於 Transformer 是一個無關序列元素位置的機制 ( Permutation-invariant, 具有置換不變性 ),因此在每一個注意力層的輸入中加入一組固定的位置編碼。此篇論文也將整個注意力機制的詳細定義補充於論文末,作為補充材料。
Transformer 解碼器 Transformer decoder
解碼層部分遵循著 Transformer 的標準架構,使用多頭自注意力機制轉換成 大小為 \(d\) 的 \(N\) 個嵌入 ( Embeddings )。與原始的 Transformer 不同的地方在於,DETR 會在解碼層中平行解碼出 \(N\) 個物件,而原始的 Transformer 則是使用自迴歸模型一次僅預測出一個元素的輸出序列。同樣的,這個部分的詳細內容也記錄於論文末的補充材料中。
由於解碼層也具有置換不變性,因此在解碼層的 \(N\) 個輸入嵌入 ( input embeddings ) 中也必須加入位置編碼的資訊,而這個位置編碼是經由學習而來的,稱之為 Object Query。如同編碼層般,Object Query 便會加入到每一個注意力層中。
這 \(N\) 個 Object Queries 經由解碼層輸出成一組輸出嵌入 ( Output embedding )。這些輸出會獨立地經由前饋網路 ( FFN ) 來解碼成 \(N\) 組邊界框座標及類別標籤預測。
使用自注意力與編-解碼注意力機制,這樣的模型可以對所有的物件進行全局推理,同時能使用整張圖像的脈絡。
預測前饋網路 Prediction feed-forward networks (FFNs)
最終的預測是經由 3 層帶有 ReLU activation function 以及隱藏維度 \(d\) 的 perceptron 加上一個線性層計算而得。這樣的 FFN 會預測出針對輸入圖像的邊界框中心座標及長寬,而線性層則是利用 softmax 來直接預測類別。
因為我們預測了一組固定尺寸為 \(N\) 的邊界框,而這 \(N\) 的數量通常比圖像中的真實物件數量大的多,因此 DETR 中使用額外的標籤 \(\phi\) 來表示沒有物件被偵測到。這種類別標註就跟一般物件偵測器中的「背景」類別意義一樣。
輔助解碼損失 Auxiliary decoding loss
作者發現,訓練過程中在解碼層中使用輔助損失 ( Auxiliary loss ) 會非常有用,尤其是對於模型輸出每個物件的正確數量更有幫助。作者在每一個解碼層後加入了 FFNs 以及匈牙利損失。所有的 FFNs 均共享權重。作者也使用了額外的共享 Layer-Normalize 層來對於不同解碼層的 FFNs 輸入進行標準化。
實驗 Experiments
(略)
與 Faster R-CNN 比較 Comparison with Faster R-CNN
(略)
消融實驗 Ablations
Transformer 解碼層中的注意力機制對於不同偵測內的特徵表徵之間的關係建模是非常關鍵的部分。在論文中的消融實驗分析中,作者探索模型架構中不同部分及損失是如何影響最終的模型表現。
為了進行消融實驗,作者利用基於 ResNet-50 的 DETR 模型,這個模型中具有 6 個編碼層、6 個解碼層且寬度為 256。這個模型具有 41.3 M 個參數,分別在短期、長期行程中分別達到 40.6 及 42.0 AP,並達到 28 FPS,接近具有相同骨幹的 Faster R-CNN-FPN。
編碼層數量
這部分,作者藉由改變編碼層數量來評估全局圖像層級的自注意力機制的重要性。( 見 Table 2. )
當完全沒有編碼層時,整體 AP 下降 3.9,在大物件偵測的 AP 上更是下降達6.0。在這樣的狀況下,作者假設,透過全局圖像的推理,編碼層對於分離物件具有很大的重要性。
在下圖 ( Fig. 3 ) 中,作者將預訓練模型中最後一層編碼層的注意力圖層視覺化,關注在圖像中幾個特定點上。我們可以發現,編碼層似乎已經分離了物件實體,而這樣的過程可能也簡化了解碼層中對物件的萃取及定位。
解碼層數量
前面有提到,作者在每一個解碼層後面應用了輔助解碼損失 ( Auxiliary decoding loss ) ,因此,訓練預測用的 FFNs 被設計從每一個解碼層的輸出來預測物件。藉由評估解碼層中每一個階段會被預測的物件來分析每一個解碼層的重要性 ( 見下圖 Fig. 4 )。
\(AP\) 與 \(AP_{50}\) 每經過一層解碼器都會有所增進,第一層跟最後一層解碼層之間的 \(AP\) 顯著增進了 \(8.2 / 9.5\)。因為 DETR 具有基於集合的損失,因此不需使用設計好的 NMS。為了驗證這樣的觀點,作者在每個解碼層後使用預設參數的標準 NMS。NMS 在第一層解碼層中改善了預測性能。這項結果可以透過以下的事實來解釋 : 因為 Transformer 中的解碼層無法計算出輸出元素的交叉相關 ( Cross-Correlation ),因此傾向於對同一個物件進行多次預測,但在第二層及後續的解碼層中,經過 activation 的自注意力機制會使模型抑制重複的預測。從上圖 ( Fig. 4 ) 也可以觀察到, NMS 所帶來的性能增進會隨著解碼層數量而逐漸變少。在最後一層中,經過 NMS 後甚至會有少量的 \(AP\) 下降情況,這是因為 NMS 反而錯誤的刪去了真實的陽性預測 ( Positive Predictions )。
類似於編碼層的注意力機制視覺化,作者將解碼層的注意力機制可視化 ( Fig. 6 ) ,並將每一個預測物件在注意力圖層上給予不同的顏色表示。作者發現到,解碼層的注意力機制非常的局部,意指它大多將注意力集中於物件的邊緣部分,例如頭或腳。作者對此假設,編碼層透過注意力機制將物件進行分離之後,解碼層則利用注意力機制再利用肢體、邊緣等來進行類別的確認及物件的邊界。
FFN 的重要性
在 Transformer 中的 FFN 可以視為是一個 \(1\times 1\) 卷積層,讓整個編碼過程類似於一個帶有注意力增強的 CNN。作者嘗試將其刪除,只保留注意力層,參數量從 41.3 M 減少至 28.7 M ,但性能卻下降了 2.3 AP,從這裡可以知道, FFN 對於達到良好的結果具有其重要性。
位置編碼的重要性
DETR 中有兩種位置編碼 : 空間位置編碼以及輸出位置編碼 ( Object Queries )。作者在實驗中嘗試了多種固定的、學習而來的位置編碼組合,如下表 ( table 3 )。
輸出位置編碼是必須的,無法刪除,因此作者實驗在解碼層輸入的部分或在每個解碼注意力層的 Query 中加入空間位置編碼。在第一個實驗中,完全刪除空間位置編碼,僅保留輸出位置編碼在輸入處。有趣的是,這個模型仍然達到了 32 AP,與基準相比下降了 7.8 AP。其次,與原始的 Transformer 相同,使用 sine 空間位置編碼一次傳遞到輸入端,可以發現,相較於基準將 sine 空間位置編碼一次傳遞到注意力層中,這樣會導致 1.4 AP 的下降。將學習到的空間位置編碼傳遞到注意力層會得到類似的結果。不過令人驚訝的是,當作者刪除編碼層的空間位置編碼,竟然只導致 1.3 AP 的下降。最後,傳遞空間位置編碼到注意力層,在所有層裡面共享,而輸出位置編碼 ( Object Queries ) 則是學習而來的。
上述的這些消融實驗,可以證明 Transformer 的各個部分 ( 編碼層中的全局自注意力機制、FFN、多編碼層以及位置編碼 ) 都對於物件偵測的性能有著重要的貢獻。
損失消融
為了評估匹配損失及損失函數不同部分的重要性,作者訓練了多種模型,分別開啟或關閉這些部分來看看有什麼影響。
從損失函數來看,一共包含了三個部分 : 分類損失、\(\ell_1\) 邊界框距離損失以及 \(GIoU\) 損失。分類損失是必要的,無法刪除,因此作者拿掉邊界框距離損失訓練一個模型、拿掉 \(GIoU\) 損失再訓練一個模型,並與基準保留三個部份訓練出一個模型進行比較,結果呈現在下表 ( tabel 4 )。
\(GIoU\) 損失對於模型性能中是最主要的部份,如果結合分類損失,整個模型僅下降了 0.7 AP,但若使用邊界框損失而不使用 \(GIoU\) 損失則會得到很差的結果。作者僅僅研究不同損失之間的消融狀況 ( 每次都使用相同的權重 ),但是如果將這些損失結合再一起可能會達到不同的結果。
分析
(略)
DETR 使用在全景分割
全景分割任務於近年來在電腦視覺領域中獲得廣泛的關注。類似於 Faster R-CNN 擴展成為 Mask R-CNN ,DETR 也可以於解碼層的輸出頂層加入遮罩層 ( Mask head ) 來擴展 DETR。在這一部分,作者展示了這樣的方式可以統一用來製造出全景分割。作者在 COCO 資料集的全景標註中進行實驗,該資料集中除了 80 種可數物件種類外還有 53 種不可數物件種類。
作者先使用 COCO 資料集中可數物件與不可數物件類別訓練原先的 DETR 模型來預測邊界框。預測邊界框這個步驟是必要的,因為匈牙利演算法要計算出邊界框的距離。除此之外,作者在解碼層中添加了一個遮罩層,針對每一個邊界框進行二元遮罩,如下圖 ( Fig. 8 )。
這個遮罩層以每一個解碼層的輸出作為輸入,並且根據編碼層的輸出嵌入所計算出來的多 (\(M\)) 頭注意力分數來生成 \(M\) 張低解析度的熱圖。為了產出最終結果並且提高解析度,作者還使用了類似 FPN (Feature Pyramid Network) 的結構。( 這在論文末的補充材料中會有更細節的介紹 ) 最終遮罩的解析度提高四倍,且每一個遮罩都使用 \(DICE/F-1\) 損失函數進行監督式學習。
遮罩層的訓練可以一次完成,也可以分兩階段進行,先訓練原始的 DETR 模型預測邊界框,再使用這些權重來訓練遮罩層 25 epochs。實驗證實,這兩種方法得到的最終結果相差不遠。
(略)
結論 Conclusion
這篇論文中提出了 DETR,一種基於 Transformers 與二分匹配損失的全新物件偵測系統,可以直接進行及和預測。在 COCO 資料集上,DETR 可以獲得與最佳化過後的 Faster R-CNN 接近的結果。DETR 容易實現,而且具有彈性的架構可以輕易擴展到全景分割任務中,並且獲得不錯的結果。除此之外,DETR 在大型物件上的表現比 Faster R-CNN 更好,或許這可以歸功於自我注意力機制的全局訊息處理上。
但是這全新的物件偵測系統也迎來新的挑戰,尤其是在小物件上的訓練、最佳化及性能上。現今的偵測系統都需要幾年的時間改進來應付類似的問題,作者也期待在未來的努力上 DETR 可以成功解決這些問題。
註釋
典型模型 Canonical Model : 典型模型指的是一種更高層級的設計模式,可以藉由模組與不同模型之間進行資料交互,換個角度來說,我們也可以稱典型模型是一般模型的 superset。↩︎
匈牙利演算法 Hungarian Algorithm : 一種建立在匈牙利數學家 Dénes Kőnig和Jenő Egerváry 的研究之上的演算法,專門處理在多項式時間內求解任務分配問題的組合演算法。↩︎
細節可以參考 "[論文] You Only Look Once : Unified, Real-Time Object Detection " 一文。↩︎