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

2020-12-16 機器之心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,全卷積網絡也可以實現端到端的目標檢測
    來源 | 知乎專欄作者 | 王劍鋒編輯 | 青暮目前主流的基於全卷積網絡的目標檢測器儘管性能優越在本文中,來自曠視研究院和西安交通大學的研究者嘗試了丟棄NMS從而實現端到端(E2E)目標檢測的研究,結果表明適當的標籤分配起著至關重要的作用。為此,對於全卷積檢測器,研究者引入了預測感知的一對一(POTO)標籤分配進行分類,以實現端到端檢測,並獲得了與NMS相當的性能。
  • NeurIPS 2020最佳論文;全卷積網絡實現E2E目標檢測
    機器之心 & ArXiv Weekly Radiostation參與:杜偉、楚航、羅若天本周的重要研究包括 NeurIPS 2020最佳論文以及拋棄 Transformer 使用全卷積網絡來實現端到端目標檢測的探索。
  • NLP攜手Transformer跨界計算機視覺,DETR:目標檢測新範式
    在計算機視覺領域,目標檢測發展迅速,出現了以 R-CNN、Faster R-CNN、Mask RCNN 為代表的 two-stage 網絡架構,以及以 YOLO、SSD 為代表的 one-stage 網絡架構。如果將在 NLP 領域表現超越的 Transformer 用於目標檢測,其效果又如何?
  • 熱門的模型跨界,Transformer、GPT做CV任務一文大盤點
    然後,transformer 解碼器將少量固定數量的學得位置嵌入作為輸入,稱為對象查詢,並另外參與編碼器的輸出。將解碼器的每個輸出嵌入傳遞到預測檢測(類和邊界框)或無對象類的共享前饋網絡(FFN)。更為具體的 DETR 架構如下:上圖給出了 DETR 中使用 transformer 的詳細說明,並在每個注意力層傳遞了位置編碼。
  • 模型壓縮95%,MIT韓松等人提出新型Lite Transformer
    然而這樣流行的算法卻需要極高的算力才能實現足夠的性能,這對於受到算力和電池嚴格限制的移動端來說有些力不從心。從 Lite Transformer 與 Evolved Transformer、原版 transformer 的比較結果中可以看出,Lite Transformer 的性能更佳,搜索成本相比 Evolved Transformer 大大減少。那麼,Lite Transformer 為何能夠實現高性能和低成本呢?接下來我們來了解其核心思想。
  • NLP三大特徵提取器全梳理:RNN vs CNN vs Transformer
    要讓卷積網絡能夠正常地「讀」出文本,我們就需要使用一維卷積。Kim 在 2014 年首次將 CNN 用於 NLP 任務中,其網絡結構如下圖所示:從圖中可以看到,卷積核大小會對輸出值的長度有所影響。這樣做的優點是:無論輸入值的大小是否相同(由於文本的長度不同,輸入值不同),要用相同數量的卷積核進行卷積,經過池化後就會獲得相同長度的向量(向量的長度和卷積核的數量相等),這樣接下來就可以使用全連接層了(全連接層輸入值的向量大小必須一致)。
  • 混合時空圖卷積網絡:更精準的時空預測模型
    以往的研究中主要利用通行時間作為模型輸入,很難預測整體的交通狀況,本文提出的混合時空圖卷積網絡,利用導航數據大大提升了時空預測的效果(本文作者高德機器學習團隊,論文已被收錄到KDD2020)。 日常通勤中的規律往往相對容易挖掘,但交通狀況還會受很多其他因素影響,之前的研究主要利用通行時間作為特徵,少量引入事件,不能很好地預測實際交通流量。
  • 嵌入式快訊:M1808 AI 核心板和基於Transformer的車道線檢測網絡
    嵌入式快訊:M1808 AI 核心板和基於Transformer的車道線檢測網絡 RTThread物聯網操作 發表於 2020-12-21 11:06:11 導讀:
  • 深2.5至4倍,參數和計算量卻更少,DeLighT Transformer是怎麼做到的?
    由於這些變換本質上是局部的,因此 DExTra 利用特徵 shuffling(類似於卷積網絡中的通道 shuffling)在不同組之間共享信息。這種寬且深的表示有助於用單頭注意力和輕量級前饋層替換 transformer 中的多頭注意力和前饋層,從而減少網絡參數量。重要的是,與 transformer 不同,DExTra 模塊可以獨立於輸入大小進行縮放。
  • 今天的卷積網絡,Yann LeCun在93年就已經玩得很溜了
    LeCun 表示,1993 年的文字識別系統已經用上了卷積神經網絡(CNN),自己在這套系統中編寫了一種網絡數據結構的編譯器,並生成了可編譯的 C 語言代碼,在原始碼中以權重和網表(netlist)代表文字。
  • 從圖(Graph)到圖卷積(Graph Convolution):漫談圖神經網絡 (二)
    在從圖(Graph)到圖卷積(Graph Convolution): 漫談圖神經網絡 (一)中,我們簡單介紹了基於循環圖神經網絡的兩種重要模型,在本篇中,我們將著大量筆墨介紹圖卷積神經網絡中的卷積操作。接下來,我們將首先介紹一下圖卷積神經網絡的大概框架,藉此說明它與基於循環的圖神經網絡的區別。
  • 變形卷積核、可分離卷積?卷積神經網絡中十大拍案叫絕的操作。
    1×1卷積核也被認為是影響深遠的操作,往後大型的網絡為了降低參數量都會應用上1×1卷積核。五、越深的網絡就越難訓練嗎?-- Resnet殘差網絡為了解決這個問題,何凱明大神想出了一個「殘差網絡」,使得梯度更容易地流動到淺層的網絡當中去,而且這種「skip connection」能帶來更多的好處,這裡可以參考一個PPT:極深網絡(ResNet/DenseNet): Skip Connection為何有效及其它 ,以及我的一篇文章:為什麼ResNet和DenseNet可以這麼深?一文詳解殘差塊為何能解決梯度彌散問題。
  • 德克薩斯A&M大學在讀博士遊宇寧:自監督學習在圖卷積網絡中的研究...
    自監督學習是一種介於無監督和有監督學習之間的新範式,可以有效減少對大量帶注釋數據的需求。在數據訓練的過程中,生成帶有無噪聲標籤的數據集的成本很高,而無標籤的數據又一直在不斷產生。當前自監督學習已經被廣泛用於訓練卷積神經網絡(CNNs),有效地提高了圖像表示學習可傳遞性、泛化能力和魯棒性,並且已在語義分割、目標檢測、圖像分類、人體動作識別等實戰場景中展現出卓越效果。現在更多無需人工標註的前置任務訓練也被提出,如前景對象分割、圖像修補、圖像著色等。然而,自監督如何應用於處理圖數據結構的圖卷積網絡(GCNs)的問題卻很少被探索。
  • 今日Paper | CausalML;隱式函數;慢動作視頻重建;交叉圖卷積網絡等
    >交叉圖卷積網絡(Cross-GCN):使用k順序特徵交互來增強圖卷積網絡選擇核網絡  CausalML:用於因果機器學習的Python包論文名稱:CausalML:作者通過神經網絡從輸入數據提取基於三維張量表達的多尺度特徵,並將該張量與嵌入原始形狀的歐式空間進行對齊,然後從張量提取的深層特徵進行分類。實驗表明文章提出的模型根據全局和局部形狀結構做出決策,能夠得到更準確的重建結果。文章的方法能夠提供連續的輸出,可以處理多種拓撲,可以從缺失或者稀疏的輸入數據生成完整的形狀,並且可以重建3D人體並保留表面細節。
  • Transformer靠什麼"基因",得以闖入CV界秒殺CNN?
    這裡我們只是簡單的對計算過程進行介紹,如果有小夥伴對其中的具體過程感興趣的話,可以看看 Jay Alamar 下面的這篇文章: https://jalammar.github.io/illustrated-transformer/ 。
  • 深蘭科技動作識別-人體骨架時空圖卷積網絡的可學習邊與權
    動作識別是基於計算機視覺識別的技術,可以實時對檢測區域內人員動作進行識別。作為深蘭科技計算機視覺技術的核心產品之一,搭載自動駕駛功能的「熊貓智能公交車」已獲得廣州、上海、武漢、長沙、深圳等多地的自動駕駛測試牌照,並且在武漢取得了全球首個自動駕駛客車的商用牌照。而其行人行為預測和車內異常行為識別(摔倒、偷竊等)兩大功能,便是動作識別最直接的體現。
  • NLP/CV模型跨界,視覺Transformer趕超CNN?
    在計算機視覺領域中,卷積神經網絡(CNN)一直佔據主流地位。不過,不斷有研究者嘗試將 NLP 領域的 Transformer 進行跨界研究,有的還實現了相當不錯的結果。
  • 基於人類獨特性,實現自由人像實例分割檢測
    一般來說,圖像分割首先需要進行物體檢測,然後將物體從邊框檢測中分割開來。不久前,類似於Mask R-CNN的深度學習方法做到了同時檢測和分割物體。但是因為類似身份識別、跟蹤等與人類相關的研究變得越來越普遍,人們可能會好奇為什麼「人類」的獨特性卻被忽視了。「人類」的獨特性可以很好的通過人的骨架來定義。並且,在多重遮擋的實例當中,人更好地將人體骨骼與邊框區分開來。
  • 卷積神經網絡理解(一):濾波器的意義
    同時,他們注意到了兩種不同類型的細胞,簡單細胞和複雜細胞,簡單細胞只對非常特定的空間位置,對它們非常偏好的方向有強烈的反應,複雜細胞有更大的空間不變性,複雜細胞通過幾個簡單細胞(每個簡單細胞存在不同方向的偏好)的輸入上進行池化而實現這種不變性。這兩個特徵即對特定特徵的選擇和通過前饋連接增大空間不變性構成了卷積神經網絡的人工視覺基礎。
  • 複雜場景下的 OCR 如何實現——深度學習算法綜述
    CTPN由檢測小尺度文本框、循環連接文本框、文本行邊細化三個部分組成,具體實現流程為:使用VGG16網絡提取特徵,得到conv5_3的特徵圖;在所得特徵圖上使用3*3滑動窗口進行滑動,得到相應的特徵向量;將所得特徵向量輸入BLSTM,學習序列特徵,然後連接一個全連接FC層;最後輸出層輸出結果。