UNet之後,物件圈選還有新的進展嗎?(一)DETR (DEtection TRansformer)
從物件偵測開始談起
自從 UNet [1]被提出來之後,物件圈選長時間都是被這個家族的模型壟斷了。它需要的訓練資源不多、資料集也不必非常大,還能克服畫素級別預測 (pixel-wised prediction) 中,很容易遇到的類別分布不均 (class imbalanced) 問題。對於小物件,UNet 也能表現得相當不錯。一切看起來是發展到一個極致了,沒有必要另起爐灶來做這件事情。
不過,在實例圈選 (instance segmentation) 上,仍然有許多挑戰。物件圈選和實例圈選的差別在於,實例圈選還會進一步分別圖中同一類別的不同個體。

在2020年之前,實例圈選主要依賴 Mask R-CNN [2]。這個模型來源於 R-CNN 系列,而後者是物件偵測系列的模型。Mask R-CNN 主要使用「先偵測再圈選」的兩階段模式:
- 用 CNN 找出特徵,並依此篩選出可能含有目標物件的候選框 (anchor),
- 用 RolAlign 內插出 anchor 的位置,並把特徵圖依據這個位置裁切,然後使用三個平行的神經網路分別去計算物件分類、框的座標位置、以及圈選遮罩。
這樣的多階段作業,使得模型的表現,因為內部很多地方受到約束,例如:
- 候選框的位置有偏差,且細部仍然模糊:即使 Mask R-CNN 使用 RolAlign 代替 Fast R-CNN[3] 的RolPool,避免座標小數點位被強制抹平,造成明顯的位置偏差問題,但候選框本身的形狀和尺寸限制,讓它很難精確的捕捉細長、彎曲、或被其他物件擋住,分成兩個的同一物件。
- RolAlign 的遮罩,使用 FCN 萃取特徵,輸出固定為 2828,然後再放大貼回原尺寸。如果目標物件原本尺寸很大,這個過程會讓圈選的邊界變得很模糊。
- Anchor、RolAlign、甚至是篩選掉重複候選框的 NMS 方法,全部都是人為設定,屬於超參數。NMS 不可微分,進一步降低整個模型的串流性,沒辦法做到像 FCN、UNet 這樣的全模型可微,正向和反向傳播都一路無阻。
這些阻礙,讓實例圈選還有進步的空間。這時,人們把目光移到了在自然語言模型大獲成功的Transformer 系列,想著能不能用注意力機制 (attention) 來做這項任務,因而誕生了前沿的 Mask2Former[4] 模型,以及集大成的 Segment Anything 3 Model。這系列模型,也是從對應改良本來用來物件偵測的 Faster R-CNN[5],產生的 DETR[6] (DEtection TRansformer) 模型而來,所以有必要先介紹 DETR 模型。
DETR 模型:端到端,使用 Transformer 的物件偵測模型
DETR的模型架構如下:

模型架構主要由一個 CNN 骨架、和一個 Transformer 構成。值得一提的是圖片右方的 bipartite matching,這是一個「一對一」的預測方式,即強制模型輸出的預測,每一個候選框只對到一個物件類別。如此一來,模型是一口氣預測全部的類別,論文中稱為 set of prediction。
Set of Prediction
具體作法是:將模型該預測的分類數,提升到遠多餘標註有的種類數(論文中是100),然後將這些預測,和標註的分類,以「一對一」的方式關連。因此每一項標註都會只分配到一項預測,而多出來的預測全部都納入(無物件)。配對使用匈牙利演算法 (Hungarian algorithm,1955),將預測框的中心座標、尺寸,和類別都納入評估。
-1/1是條件函數,表示預測類別有對應到標註的情況下才計算損失,對應到無物件是不計算的。機率並不是使用而是使用,因為要把機率數值限制在 [-1, 0] 之間,以和後面的框損失配對。框損失是L1距離和GIoU的加權和。
值得注意的是,這個演算法只用來配對預測結果,也就是訓練時,模型輸出的各式候選框,和標註的分類配對。配對完之後,打開標註,計算損失,反向傳播的時候就不再經過它。模型實際使用時也不再需要,而是直接取各項最有信心的候選框作為對應類別的輸出。
CNN backbone
輸入是彩色影像,維度為。可以使用任意 CNN 為基礎的神經網路,將圖片萃取為的特徵圖,在論文中通常將設為 2048,並由於使用的卷積核 (kernal),使和多為和。論文中使用的 CNN 是 ResNet-50。
Transformer
進transformer模組之前,需要把特徵圖展平。這邊先使用的卷積核,將特徵降維為,然後再攤平成的序列。這邊可以把它看成一個長度的序列,每個元素的向量是維。由於如果直接這樣輸入,原本圖片內的位置資訊會消失,所以還需要特別編碼,把位置保留下來。和一般 Transformer 不一樣的是,為了強調位置的重要性,在進入每一層的 attention前,都會再做位置編碼一次(論文中的模型,encodrer 的部分有 6 層 attention)。
另一個和一般 Transformer 不一樣的地方是,訓練和實際使用時,這個序列都是「同時」、「一次」過完整個 Transformer 模組,而一般 Transformer 模型訓練時是一次,實際使用時,由於沒有標準答案,Transformer 必須每次拿自己前面預測的結果,配上這次要預測的輸入,過整個模組,是迴圈的概念。
第三個差異,在於位置編碼。一般的 Transformer 模型,encoder 和 decoder 都依賴詞語的順序給予位置編碼;但 DETR 只在 encoder 有位置編碼,decoder 沒有。原因是輸出是物件和分類,這些東西不像語句具備次序性。我們來看一下 DETR 的 Transformer 架構:

Transformer 在這邊同時具有 self-attention 和 cross-attention:encoder 裡的 self-attention 負責處理輸入的 token 之間的關連,而 decoder 的 self-attention 則負責處理要預測的類別物件 (object query) 之間的關連。Cross-attention將輸入的影像 token 序列和輸出的預測類別物件關連。FFN 是本質類似 MLP 的東西,主要做升維之後進 ReLu,再降維的過程。
DETR還有再迭代,之後開始強調可解釋性,因此 decoder 輸入不再是初始化的任意 object query 向量,而是有座標、尺寸,類似候選框的東西。這是後話,這邊不多延伸敘述。
DETR的貢獻
損失函數
除了前面提到的匈牙利演算法,在實作上,DETR 還使用了 auxillary loss 這個技巧,把每一層 Transformer 中 decoder 的輸出都拉出來算一次損失 (所以共有 6 個)。另外,的權重被設得極低,以克服大部分的 object query 都是輸出的狀況。
(注意,前面提到的條件函數只針對框,類別預測是不包含在內的)
實驗分析
論文把DETR和當時的主力模型Faster R-CNN拿來比較。表格如下:

解釋一下AP。首先,針對模型提出的所有預測框,做以下整理,定義答對 (True Positive):
- 預測類別正確
- 與標註 (ground truth) 框疊合 (IoU) 至少達到一定值 (由人決定)
- 該標註框沒有其他更高 IoU 的預測框
例如以下:

此時結果如下:

接著依序計算,到達每個框時,整個預測累積的 precision 和 recall:

並做成 Precision-Recall 關係圖:

其最外上的點相連起來的線,所產生之面積即為 AP。這指標設計目的是為了看模型是否預測分類正確,同時又能把比較有把握的預測結果排在前面。
這樣回來看圖 4.就比較清楚了。下標的 50/75 指的是 IoU 閾值 50/75。S、M、L 則是依據目標物件所占畫素大小區分,對應小/中/大物件。從論文的表格可以知道,整體AP兩種模型的表現不相上下;DETR 較擅長大物件,而小物件偵測仍然是 Faster R-CNN 較優。這是因為 Transformer 的特性,本來就擅長全域注意力感知,而不是小範圍局部。
同時,DETR 需要較多的訓練輪數 (epoch)。論文中一開始是使用 300,並在 200 時開始調降學習速率。為了能更好的和 Faster R-CNN 比較,他們後來另外訓練一組 500 epoch 的模型,並在 400 的時候調降學習速率。這讓 DETR 的 AP 再提升 1.5 左右。
NMS不再需要
在 Faster R-CNN 中,作為篩選預測框的 NMS 方法,不再需要了。除了模型上已經有 self-attention可以互相協調 object query,以及損失函數使用匈牙利演算法,DETR 也用實驗證明,額外加上 NMS 並不會顯著提升 AP。

除了在第一層的 attention 加上 NMS 會有幫助外,越往後面層數,幫助越小。這是因為在第一層的時候, object query 基本上都是預設為 0,所以第一次的 self-attention 還沒辦法很明確地完成分工,NMS 可以幫助過濾候選框。到了後面,協調已經經由計算完成,NMS 幫助不大。
嘗試全景分割 (Panoptic segmentation)
DETR 的研究目標還不僅止於物件偵測,在論文中,他們就已經嘗試挑戰全景分割了。全景分割,顧名思義要將圖片中的所有物件都分離出來,而且必須沿著偏界切割,而不是放個偵測框就好了。圖片裡面通常包括物件 (things),屬於前景,以及偏背景,或大件的物件 (stuff)。由於預測目標改變,模型結構要做一些調整。

圖 10 主要呈現修改的架構,而沒有把原本的DETR也畫出來。這邊大略解釋建構和訓練過程:
- 訓練DETR,過程和前面都一樣,用物件偵測的方式訓練即可
- 凍結神經網路,外接一組 multi-head attention,這組 head 負責輸出各特徵圖的注意力。他們的輸入是原本 DETR 中,encoder 的輸出 (即特徵圖的注意力分布,在這裡當作 Q) 和 decoder 的輸出 (即各自該注意的目標物件,在這裡當作 K),沒有 V。兩者相乘,得到各特徵圖依據物件,注意力該集中的區域,輸出,當作遮罩 (Attention maps)。使用凍結神經網路設計的目的有幾個:
- 驗證注意力本身就可以產生作為分割依據的遮罩。這層 head,依據的是早就訓練好,以物件偵測為目標的模型的輸出,所以可以拿來實驗。
- 這組 head 只需要再訓練 25 epoch,相比原本訓練的 DETR 網路成本低很多,可以使用現成的模型來改造。
- 新訓練的梯度不干擾原本用於物件偵測目的的模型。
- 拿出 DETR 裡,CNN backbone (論文使用 ResNet) 萃取的各特徵圖,作為細節補充的依據。這邊借鏡 UNet 裡 decoder (或上升區) 的作法,使用上採樣 (upsampling) 的方式,在第一層 (這邊指最底層,即剛剛從 2. multi-head attention 的產物) 和對應尺寸的 CNN 特徵圖做串接 (concatenation),然後內插放大,再用 一層 的 CNN 修飾,並同時調整通道數目。之後每往上一層,都拿對應尺寸的 CNN 特徵圖相加,直到最上一層的特徵圖都被使用之後,理論上會差一層才回到原圖大小。所以最後一層只做上採樣。
- 輸出前,做畫素層級的argmax把各畫素分類到對應的物件,完成分割。
看一下他和當時全景分割的主流模型 UPSNet 以及 Panoptic FPN 的比較結果:

這邊要解釋 PQ/SQ/RQ。這是由 Kirillov 等人於 2019 的 CVPR 提出的[7]。考量預測遮罩和標註遮罩的重疊性,超過 0.5 就算成功 (TP)。所以如果是沒有配到標註的遮罩,視為 FP,而沒配到遮罩的標註則為 FN。PQ (Panoptic quality)計算定義如下:
PQ可以拆成兩個項目相乘:
其中 SQ (Segment quality) 指的是預測正確的框中,平均多準。RQ (Recognition quality) 指的是找到物件的能力有多好 (其實就是 f1 score/Dice score)。
回到表格,DETR 在全景分割的整體任務表現中,至少是不輸於當時的主流模型。如果把物件拆分成 things 和 stuffs,可以看到 DETR 在 things 的表現較遜,但在 stuff 的表現則較好,這也反映出 DETR 的本質:注意力集中,在偏小的物件較容易失準。若從 AP 直接比較,則 DETR 在 things 的表現落後更明顯 (33.0 vs. 39.7),是最後那層畫素層級的 argmax 把他拉回來一些 (所以有一點靠後處理補救的味道)。
結論
DETR 算是開啟一個範式轉移:將 attention 模組引入到電腦視覺相關的任務中。它證明自己在物件偵測的任務中,可以做到不遜於 Faster R-CNN 的表現,甚至還嘗試了全景分割。由於注意力機制的特色,它對於小物件的偵測較弱勢,這對於要做物件分割而言將是一大挑戰。然而,它也提供了一些方向,並證實了注意力機制的運用確實可行。後續的模型和研究便基於 DETR,往物件分割的方向前進。究竟接下來會往做出什麼調整呢?請看下回分解。
資料來源
[1] U-Net: Convolutional Networks for Biomedical Image Segmentation. Olaf Ronneberger, Philipp Fischer, and Thomas Brox. arXiv:1505.04597v1
[2] Mask R-CNN. He et al., arXiv:1703.06870
[3] Fast R-CNN. Ross Girshick. arXiv:1504.08083
[4] Masked-attention Mask Transformer for Universal Image Segmentation. Bowen Cheng et al., CVPR 2022. arXiv:2112.01527
[5] Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks. Ren et al., NeurIPS 2015. arXiv:1506.01497
[6] End-to-End Object Detection with Transformers. Nicolas Carion, Francisco Massa et al., Facebook AI. https://arxiv.org/pdf/2005.12872
[7] Panoptic Segmentation. Alexander Kirillov et al., 2019 CVPR. https://arxiv.org/pdf/1801.00868