目標檢測是計算機視覺領域的一個基礎研究主題,它利用每張圖像的預定義類標簽來預測邊界框。大多數主流檢測器使用的是基于錨的標簽分配和非極大值抑制(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 的一種新做法,研究者也對此做了一些工作,后續可能會放出來。
責任編輯:PSY
-
檢測
+關注
關注
5文章
4511瀏覽量
91686 -
計算機視覺
+關注
關注
8文章
1700瀏覽量
46085 -
全卷積網絡
+關注
關注
0文章
7瀏覽量
2036
發布評論請先 登錄
相關推薦
評論