丟棄Transformer,全卷積網絡也可以實現E2E檢測

2021-01-10 機器之心Pro

機器之心轉載

作者:王劍鋒

在近來研究人員熱衷於探索 Transformer 用於目標檢測的嘗試時,這篇論文提出了一種全新的觀點,即利用全卷積網絡也可以實現良好的端到端目標檢測效果。

目標檢測是計算機視覺領域的一個基礎研究主題,它利用每張圖像的預定義類標籤來預測邊界框。大多數主流檢測器使用的是基於錨的標籤分配和非極大值抑制(NMS)等手動設計。近來,很多研究者提出方法通過距離感知和基於分布的標籤分類來消除預定義的錨框集。儘管這些方法取得了顯著的進展和優越的性能,但拋棄手動設計的 NMS 後處理可能阻礙完全的端到端訓練。

基於這些問題,研究人員相繼提出了 Learnable NMS、Soft NMS 和 CenterNet 等,它們能夠提升重複刪除效果,但依然無法提供有效的端到端訓練策略。之後,Facebook AI 研究者提出的 DETR 將 Transformer 用到了目標檢測任務中,還取得了可以媲美 Faster R-CNN 的效果。但是,DETR 的訓練時間卻大大延長,在小目標上的性能也相對較低。

所以,在本文中,來自曠視科技和西安交通大學的研究者提出了一個新穎問題:全卷積網絡是否可以實現良好的端到端目標檢測效果?並從標籤分配和網絡架構兩個方面回答並驗證了這一問題。

論文連結:https://arxiv.org/pdf/2012.03544.pdf

項目代碼:https://github.com/Megvii-BaseDetection/DeFCN (內部代碼遷移 + 審查中,後續放出)

具體而言,研究者基於 FCOS,首次在 dense prediction 上利用全卷積結構做到 E2E,即無 NMS 後處理。研究者首先分析了常見的 dense prediction 方法(如 RetinaNet、FCOS、ATSS 等),並且認為 one-to-many 的 label assignment 是依賴 NMS 的關鍵。受到 DETR 的啟發,研究者設計了一種 prediction-aware one-to-one assignment 方法。

此外,研究者還提出了 3D Max Filtering 以增強 feature 在 local 區域的表徵能力,並提出用 one-to-many auxiliary loss 加速收斂。本文方法基本不修改模型結構,不需要更長的訓練時間,可以基於現有 dense prediction 方法平滑過渡。本文方法在無 NMS 的情況下,在 COCO 數據集上達到了與有 NMS 的 FCOS 相當的性能;在代表了密集場景的 CrowdHuman 數據集上,本文方法的 recall 超越了依賴 NMS 方法的理論上限。

整體方法流程如下圖所示:

One-to-many vs. one-to-one

自 anchor-free 方法出現以來,NMS 作為網絡中最後一個 heuristic 環節,一直是實現 E2E dense prediction 的最大阻礙。但其實可以發現,從 RPN、SSD、RetinaNet 等開始,大家一直遵循著這樣一個流程:先對每個目標生成多個預測(one-to-many),再將多個預測去重(many-to-one)。所以,如果不對前一步 label assignment 動刀,就必須要保留去重的環節,即便去重的方法不是 NMS,也會是 NMS 的替代物(如 RelationNet,如 CenterNet 的 max pooling)。

那直接做 one-to-one assignment 的方法是否存在呢?其實是有的。上古時代有一個方法叫 MultiBox,對每個目標和每個預測做了 bipartite matching,DETR 其實就是將該方法的網絡換成了 Transformer。此外還有一個大家熟知的方法:YOLO,YOLO 也是對每個目標只匹配一個 grid[1] ,只不過它是採用中心點做的匹配,而且有 ignore 區域。

Prediction-aware one-to-one

於是接下來的問題就是,在 dense prediction 上能不能只依賴 one-to-one label assignment,比較完美地去掉 NMS?研究者首先基於去掉 centerness 分支的 FCOS,統一網絡結構和訓練方法,用 Focal Loss + GIoU Loss,做了如下分析實驗:

研究者設計了兩種 hand-crafted one-to-one assignment 方法,分別模仿 RetinaNet(基於 anchor box)和 FCOS(基於 center 點),儘可能做最小改動,發現已經可以將有無 NMS 的 mAP 差距縮小到 4 個點以內。

但研究者認為手工設計的 label assignment 規則會較大地影響 one-to-one 的性能,比方說 center 規則對於一個偏心的物體就不夠友好,而且在這種情況下 one-to-one 規則會比 one-to-many 規則的魯棒性更差。所以認為規則應該是 prediction-aware 的。研究者首先嘗試了 DETR 的思路,直接採用 loss 做 bipartite matching 的 cost[2] ,發現無論是絕對性能還是有無 NMS 的差距,都得到了進一步的改善。

但他們知道,loss 和 metrics 往往並不一致,它常常要為優化問題做一些妥協(比如做一些加權等等)。也就是說,loss 並不一定是 bipartite matching 的最佳 cost。因而研究者提出了一個非常簡單的 cost:

看起來稍微有點複雜,但其實就是用網絡輸出的 prob 代表分類,網絡輸出和 gt 的 IoU 代表回歸,做了加權幾何平均,再加一個類似於 inside gt box 的空間先驗。加權幾何平均和空間先驗在後面都分別做了 ablation。

這就是研究者提出的 POTO 策略,它進一步地提升了無 NMS 下的性能,也側面驗證了 loss 並不一定是最好的 cost[3]。但從 Table 1 中也發現了,POTO 的性能依舊不能匹敵 one-to-many+NMS 組合。研究者認為問題出在兩個方面:

one-to-one 需要網絡輸出的 feature 非常 sharp,這對 CNN 提出了較嚴苛的要求(這也是 Transformer 的優勢);

one-to-many 帶來了更強的監督和更快的收斂速度。

於是分別用 3D Max Filtering 和 one-to-many auxiliary loss 緩解如上問題。

3D Max Filtering

如 Figure 3 所示,這個模塊只採用了卷積、插值、max pooling 3d,速度非常快,也不需要寫 cuda kernel。

One-to-many auxiliary loss

針對第二點監督不夠強、收斂速度慢,研究者依舊採用 one-to-many assignment 設計了 auxiliary loss 做監督,該 loss 只包含分類 loss,沒有回歸 loss。assignment 本身沒什麼可說的,appendix 的實驗也表明多種做法都可以 work。這裡想提醒大家的是注意看 Figure 2 的乘法,它是 auxiliary loss 可以 work 的關鍵。在乘法前的一路加上 one-to-many auxiliary loss,乘法後是 one-to-one 的常規 loss。由於 1*0=0,1*1=1,所以只需要大致保證 one-to-one assignment 的正樣本在 one-to-many 中依然是正樣本即可。

實驗

最主要的實驗結果已經在 Table 1 中呈現了,此外還有一些 ablation 實驗。

這裡 highlight 幾點:

α越低,分類權重越大,有無 NMS 的差距越小,但絕對性能也會降低 [4];α太高也不好,後續所有實驗用α=0.8;

在α合理的情況下,空間先驗不是必須的,但空間先驗能夠在匹配過程中幫助排除不好的區域,提升絕對性能;研究者在 COCO 實驗中採用 center sampling radius=1.5,在 CrowdHuman 實驗中採用 inside gt box[5];

加權幾何平均數(Mul)[6]比加權算術平均數(Add)[7]更好。

去掉 NMS 的最大收益其實是 crowd 場景,這在 COCO 上並不能很好地體現出來。所以又在 CrowdHuman 上做了實驗如下:

請注意 CrowdHuman 的 ground-truth 做 NMS threshold=0.6,只有 95.1% 的 Recall,這也是 NMS 方法的理論上限。而本文方法沒有採用 NMS,於是輕易超越了這一上限。

研究者還做了其它一些實驗和分析,歡迎看原文。

可視化

經過以上改進,研究者成功把 one-to-one 的性能提升到了與 one-to-many+NMS 方法 comparable 的水平。此外還可視化了 score map,可以發現 FCN 是有能力學出非常 sharp 的表示的,這也是很讓研究者驚奇的一點。

結果圖中比較明顯的改善出現在多峰 case 上。比如兩個物體有一定的 overlap(但又沒有特別重合),這個時候 one-to-many+NMS 方法經常出現的情況是,除了兩個物體分別出了一個框之外,在兩個物體中間也出了一個框,這個框與前兩個框的 IoU 不足以達到 NMS threshold,但置信度又比較高。這類典型的多峰問題在 POTO 中得到了較大的緩解。

Others

有些人可能比較關心訓練時間,因為潛意識裡在 dense prediction 上做 bipartite matching 應該是很慢的。然而實際上依賴於 scipy 對 linear_sum_assignment 的優化,實際訓練時間僅僅下降了 10% 左右。

如果對這一時間依然敏感,可以用 topk(k=1)代替 bipartite matching;在 dense prediction 裡 top1 實際上是 bipartite matching 的近似解 [8] 。相似地,k>1 的情況對應了 one-to-many 的一種新做法,研究者也對此做了一些工作,後續可能會放出來。

參考

如果有人感興趣的話,可以在 YOLO 上去掉 NMS 嘗試一下,可以接近 30mAP。

注意這裡沒有使用 DETR 的 CE+GIoU+L1 組合,而是直接採用 loss 本身(Focal+GIoU)。研究者認為這樣更符合 DETR 用 loss 做 cost 的原意。

其實這裡可以有一個腦洞留給大家,因為 cost 是不需要求導的,所以甚至是可以直接算 AP 當 cost 的。

側面印證了分類和回歸的衝突在檢測任務上是顯著的。

理由很簡單,CrowdHuman 的遮擋問題太嚴重,center 區域經常完全被遮擋。

事實上加權幾何平均數的負對數就是 CE+IoU Loss,加權算術平均數則沒有明顯的物理含義。

NoisyAnchor 在 assign 中採用了類似的公式,只不過採用的是 anchor IoU。

更具體來講,top1(即 argmin)是 Hugarian Algorithm 只做第一次迭代的結果;由於在 dense prediction 下衝突會很少,一次迭代就已經逼近了最優匹配,這也是為什麼 Hungarian Algorithm 這裡實際運行很快。

知乎連結:https://zhuanlan.zhihu.com/p/332281368

相關焦點

  • Transformer在CV領域有可能替代CNN嗎?|卷積|神經網絡|算子|上下文...
    此外,CNN還具有一個非常重要的特性,它是通過共享卷積核來提取特徵,這樣一方面可以極大的降低參數量來避免更多冗餘的計算從而提高網絡模型計算的效率,另一方面又結合結合卷積和池化使網絡具備一定的平移不變性(shift-invariant)和平移等變性(equivariance)。
  • Transformer在CV領域有可能替代CNN嗎?
    此外,CNN還具有一個非常重要的特性,它是通過共享卷積核來提取特徵,這樣一方面可以極大的降低參數量來避免更多冗餘的計算從而提高網絡模型計算的效率,另一方面又結合結合卷積和池化使網絡具備一定的平移不變性(shift-invariant)和平移等變性(equivariance)。
  • 重新發現語義分割,一文簡述全卷積網絡
    全卷積網絡自 2012 年出現以來,在圖像分類和圖像檢測領域取得了巨大成功。本文利用筆記本電腦構建了一個小型全卷積網絡,詳細介紹了全卷積網絡的思路、過程等等,值得一看語義分割是一種學習如何識別圖像中對象範圍的機器學習技術。語義分割賦予機器學習系統與人類相似的理解圖像內容的能力。
  • 從全卷積網絡到大型卷積核:深度學習的語義分割全指南
    2014年,加州大學伯克利分校的Long等人提出全卷積網絡(FCN),這使得卷積神經網絡無需全連接層即可進行密集的像素預測,CNN從而得到普及。使用這種方法可生成任意大小的圖像分割圖,且該方法比圖像塊分類法要快上許多。之後,語義分割領域幾乎所有先進方法都採用了該模型。  除了全連接層,使用卷積神經網絡進行語義分割存在的另一個大問題是池化層。
  • 環信人工智慧專家李理:詳解卷積神經網絡
    前者會用theano來實現,而後者會使用我們前一部分介紹的自動梯度來實現。下面首先介紹Michael Nielsen的部分(其實主要是翻譯,然後加一些我自己的理解)。 前面的話 如果讀者自己嘗試了上一部分的代碼,調過3層和5層全連接的神經網絡的參數,我們會發現神經網絡的層數越多,參數(超參數)就越難調。
  • AI入門:卷積神經網絡
    第三步:全連接,把第一、二步的結果,輸入到全連接的神經網絡中,最後輸出結果。1. 卷積(Convolution)首先,把圖片轉化成機器可以識別的樣子,把每一個像素點的色值用矩陣來表示。這裡為了方便說明,我們就簡化,用6*6像素來表示,且取只RGB圖片一層。
  • 深入理解卷積網絡的卷積
    卷積神經網絡是一種特殊的神經網絡結構,是自動駕駛汽車、人臉識別系統等計算機視覺應用的基礎,其中基本的矩陣乘法運算被卷積運算取代。它們專門處理具有網格狀拓撲結構的數據。例如,時間序列數據和圖像數據可以看作是一個二維像素網格。
  • 熱門的模型跨界,Transformer、GPT做CV任務一文大盤點
    然後,transformer 解碼器將少量固定數量的學得位置嵌入作為輸入,稱為對象查詢,並另外參與編碼器的輸出。將解碼器的每個輸出嵌入傳遞到預測檢測(類和邊界框)或無對象類的共享前饋網絡(FFN)。更為具體的 DETR 架構如下:上圖給出了 DETR 中使用 transformer 的詳細說明,並在每個注意力層傳遞了位置編碼。
  • 人工智慧之卷積神經網絡(CNN)
    1980年,K.Fukushima提出的新識別機是卷積神經網絡的第一個實現網絡。隨後,更多的科研工作者對該網絡進行了改進。其中,具有代表性的研究成果是Alexander和Taylor提出的「改進認知機」,該方法綜合了各種改進方法的優點並避免了耗時的誤差反向傳播。
  • PyTorch可視化理解卷積神經網絡
    如果你是一個深度學習愛好者,你可能早已聽說過這種神經網絡,並且可能已經使用一些深度學習框架比如caffe、TensorFlow、pytorch實現了一些圖像分類器。然而,這仍然存在一個問題:數據是如何在人工神經網絡傳送以及計算機是如何從中學習的。為了從頭開始獲得清晰的視角,本文將通過對每一層進行可視化以深入理解卷積神經網絡。
  • 看了這篇文章,了解深度卷積神經網絡在目標檢測中的進展
    特別是在測試一幅新圖像時,如果不考慮生成候選區域的時間,可以達到實時檢測。生成候選區域的 selective search 算法處理一張圖像大概需要 2s 的時間,因此成為該方法的一個瓶頸。1.3 Faster R-CNN[3]上面兩種方法都依賴於 selective search 生成候選區域,十分耗時,那麼可不可以直接利用卷積神經網絡得到候選區域呢?這樣的話就幾乎可以不花額外的時間代價就能得到候選區域。
  • 要想了解卷積神經網絡,首先需要了解三種基本架構
    卷積網絡是研究關於圖像(紋理,圖像尺度等)的抽象層面的一種網絡,跟傳統網絡不同的是,它不僅可以根據一個固定尺寸圖像生成物體識別數據,還可以對圖像其他部分進行其他操作。卷積可以有多個,它的作用是「放大」和「增強」圖像的抽象空間。那麼卷積可以用於哪些場景呢?
  • NLP三大特徵提取器全梳理:RNN vs CNN vs Transformer
    要讓卷積網絡能夠正常地「讀」出文本,我們就需要使用一維卷積。Kim 在 2014 年首次將 CNN 用於 NLP 任務中,其網絡結構如下圖所示:從圖中可以看到,卷積核大小會對輸出值的長度有所影響。這樣做的優點是:無論輸入值的大小是否相同(由於文本的長度不同,輸入值不同),要用相同數量的卷積核進行卷積,經過池化後就會獲得相同長度的向量(向量的長度和卷積核的數量相等),這樣接下來就可以使用全連接層了(全連接層輸入值的向量大小必須一致)。特徵提取過程卷積的過程就是特徵提取的過程。
  • 知識普及:卷積神經網絡模型是怎樣工作的?可以做些什麼?
    知識普及:卷積神經網絡模型是怎樣工作的?可以做些什麼?最新的科研結果表示,這類模型已經可以在實時視頻中對多個對象進行檢測。而這就要歸功於計算機視覺領域最新的技術革新。 眾所周知,在過去的幾年裡,卷積神經網絡(CNN或ConvNet)在深度學習領域取得了許多重大突破,但對於大多數人而言,這個描述是相當不直觀的。因此,要了解模型取得了怎樣大的突破,我們應該先了解卷積神經網絡是怎樣工作的。 卷積神經網絡可以做些什麼?
  • 基於卷積神經網絡的目標檢測算法簡介
    什麼是卷積神經網絡?卷積神經網絡是一個層次模型,主要包括輸入層,卷積層,池化層、全連接層以及輸出層。卷積神經網絡是專門針對圖像而設計,主要特點在於卷積層的特徵是由前一層的局部特徵通過卷積共享的權重得到。
  • 整合全部頂尖目標檢測算法:FAIR開源Detectron
    、高性能的代碼庫,它靈活的特性可以支持快速實現和驗證新研究。Fast R-CNN (https://arxiv.org/abs/1504.08083)R-FCN (https://arxiv.org/abs/1605.06409)這些目標檢測算法主要使用以下卷積網絡架構
  • 卷積神經網絡的卷積到底是什麼
    例如,時間序列數據和圖像數據可以看作是一個二維像素網格。神經網絡的研究經歷了一個寒冷的冬天,直到2012年,多倫多大學的一組研究人員在著名的ImageNet挑戰賽中進入了一個基於CNN的模型(AlexNet),最終以16.4%的錯誤率贏得了比賽。此後,卷積神經網絡不斷向前發展,基於CNN的體系結構不斷贏得ImageNet, 2015年,基於卷積神經網絡的體系結構ResNet的誤差率超過人類水平的5.1%,誤差率為3.57%。
  • 基於層級圖網絡的圖卷積:用點雲完成3D目標檢測
    本文提出了一種基於層級圖網絡(HGNet)的圖卷積(GConv),可以直接將點雲作為輸入來預測 3D 的邊界框。形狀注意圖卷積(SA-GConv)可以通過劍魔點的位置星系來描述物體形狀,基於 SA-GConv 的 U 形網絡可以通過改進的 voting 模塊獲取多層級的特徵進而生成候選,然後一個基於圖卷積的候選推理模塊考慮全局的場景語義來對邊界框進行預測。
  • Facebook AI的DETR,一種基於Transformer的目標檢測方法
    今天,Facebook開源了一個這樣的框架,DETR(DEtection TRansformer)在本文中,我們將快速了解目標檢測的概念,然後直接研究DETR及其帶來的好處。目標檢測在計算機視覺中,目標檢測是一項任務,我們希望我們的模型將對象與背景區分開,並預測圖像中存在的對象的位置和類別。
  • 理解卷積神經網絡中的輸入與輸出形狀(Keras實現)
    即使我們從理論上理解了卷積神經網絡,在實際進行將數據擬合到網絡時,很多人仍然對其網絡的輸入和輸出形狀(shape)感到困惑。本文章將幫助你理解卷積神經網絡的輸入和輸出形狀。讓我們看看一個例子。CNN的輸入數據如下圖所示。