動機
文章提出了一個針對物體具有大尺度變化資料集的檢測演算法。工作的研究動機在於:
當前所有基於 RetinaNet 的單階段檢測器,都採用了共享權重的分類 HEAD 以及迴歸 HEAD 在特徵金字塔上滑動從而檢測不同大小的物體,相應的最為適應這種結構的特徵金子塔對於尺度變化應當具有等變性。 經典的底層特徵提取演算法如 SIFT,其高斯金字塔具有很好的尺度等變性,我們思考了深度神經網路中特徵金字塔與高斯金字塔的區別,從而提出了提高其等變性的演算法。
圖 2 圖 3 中,一張圖中有兩隻尺度比例大概為 2 的羊,有一個可以檢測羊嘴的特徵提取器,但是其僅能對尺度較小的羊的羊嘴具有較高的響應,那麼對於尺度較大的羊我們應該如何處理呢?
如圖 2,可以用一個高斯卷積核去除高頻後降取樣一次,使得大羊的羊嘴特徵跟小羊在同一尺度,從而在降取樣的圖上進行大羊羊嘴的檢測。 如圖 3,可以用一個高斯卷積核去除高頻後,將特徵提取運算元變為變為空洞卷積,亦可以進行大羊的羊嘴檢測。
回想單階段檢測器(如RetinaNet),
其共享權重的 HEAD(Subnet)設計其實已經將特徵金字塔中的特徵當作了高斯金字塔,即假設特徵金子塔也有上述尺度等變性質。但是實際使用中,我們經常觀察到不同尺度的物體相互競爭,使得檢測器在不同尺度的效能此高彼低的現象,這些情況不太符合尺度等變特性,這是為什麼呢?
分析
相比於影像處理中 low level 的特徵,深度神經網路提取的特徵往往經過足夠多基礎特徵的組合,其特徵往往有更為複雜的高階語義,並且由於我們用相同的 backbone 進行特徵的提取不同尺度的物體的特徵會有相互競爭的現象。 深度神經網路中,因為足夠多的卷積與非線性啟用單元,其不同 stage 感受野的變化在特徵圖的不同位置具有不一致的現象,使得金子塔的兩層間很難有高斯金字塔一樣,不同大小物體的特徵在 downsample 一次,或者增大特徵提取運算元的 dilation 這樣的處理後具有一致性。
物體檢測中,我們需要特徵圖同時具有較高的語義資訊完成分類,又需要較好的保留原圖資訊用於定位,單一尺度的物體,在 backbone 中的不同 stage 可以提取出不同級別的語義,但是在處理另一尺度的物體時,則會出現不匹配的現象,如小物體用到的特徵提取運算元可能只是大物體提取低階特徵運算元,從而很難提取高階語義進行分類,這也啟發了後來的 FPN 的 Top-down 結構,以及後續的一系列 feature fusing 的結構。
網路設計
如何改進特徵金子塔使其具有更好的等變性質呢?
我們發現,在特徵金子塔的某一層為基準,其與上下兩層間具有更好的相關性,直覺上可以推測其底部一層往往保留有更多的定位相關的資訊,更高層往往具有更好的分類相關的資訊,而以往的 feature fusing 的方法都遺漏了這種空間尺度(特徵金子塔層間)的相關性。
無論是形式上的分析還是實驗發現的這種相關性暗示我們尺度空間上確實有值得提取的特徵,我們希望透過在尺度空間上進行卷積來提取這種特徵。
考慮到 FPN 的不同層的解析度不同,我們由此提出金字塔卷積(Pconv)的結構。
特徵金字塔相鄰三層(P3,P4,P5)舉例,在 P3 上利用 stride 為 2 的 conv 進行卷積,在 P4 上利用普通 conv 卷積,P5 上普通 conv 卷積然後 upsample,得到相同大小的特徵圖然後相加,不難推導,其等效於在特徵圖上每一點在 HW 維度卷積後再在尺度空間(P3,P4,P5)進行一次卷積,因此其相當於一個 3-D 的卷積核。
既然有了尺度空間的卷積,我們自然的想到了空間尺度共享所有引數的批歸一化(iBN),我們每一次 Pconv 後,我們將所有層連線在一起,共同更新統計量,這一設計較 NAS-FPN【2】中使用的各尺度用各自的 BN 引數具有更優的效能且更易工程化(如推理時去除 BN)。
另一方面,高斯金子塔中特徵相鄰層降取樣時有其相匹配的高斯模糊核,太大的模糊核會去除過多有用資訊,太小的模糊核引入高頻噪聲。但是特徵金字塔中相鄰層之間間隔不同的卷積核與大量的非線性單元,這使得特徵圖上不同位置相鄰層之間沒有一個固定的理論高斯模糊核。因此我們由此基於以上提出的 Pconv 又將其改進為尺度等化的尺度空間卷積(SEPC)模組:當尺度空間卷積核在尺度空間上滑動時,最底層上用普通的 3X3 卷積,當相同的卷積核滑向高層特徵圖時用可變形卷積(Dconv)【3】實現像在高斯金字塔中一樣的高層特徵點與最底層的對齊。同時這個設計中可變形卷積只在高層特徵圖上採用,其引入的額外的 Dconv 的計算量開銷以及推理速度損失其實是很小的。
實驗結果
可以看到,我們提出的模組在三個 model 上均有穩定的提升,並且效能提升相比 flops 與 forward 速度的增加極具價效比,值得注意的是,雖然我們使用了 Dconv,但是效能的提升不僅僅是 Dconv 帶來的,相比 head 結構全部更換為 Dconv,我們的 SEPC 在速度與效能上都體現出了絕對的優勢。
同時我們選取了 FreeAnchor 為基礎與當前 SOTA 檢測器進行了比較。
我們 SEPC 在 mAP45 左右的 baseline 上依然有接近 3mAP 的提升,我們在甚至在單尺度測試的條件下得到了一個 mAP 為 50.1 的單階段檢測器。
傳送門
程式碼目前也已經開源,歡迎各位同學使用和交流。
論文地址: https://arxiv.org/pdf/2005.03101.pdf
程式碼地址: https://github.com/jshilong/SEPC
參考文獻:
[1] Tsung-Yi Lin, Piotr Dollar, Ross Girshick, Kaiming He, Bharath Hariharan, and Serge Belongie. Feature pyramid networks for object detection. In CVPR, 2017.
[2]Golnaz Ghiasi, Tsung-Yi Lin, and Quoc V Le. Nas-fpn: Learning scalable feature pyramid architecture for object detection. In CVPR, 2019.
[3] Jifeng Dai, Haozhi Qi, Yuwen Xiong, Yi Li, Guodong Zhang, Han Hu, and Yichen Wei. Deformable convolutional networks. In ICCV, 2017.
[4] Chenchen Zhu, Yihui He, and Marios Savvides. Feature selective anchor-free module for single-shot object detection. In CVPR, 2019.
[5] Xiaosong Zhang, Fang Wan, Chang Liu, Rongrong Ji, and Qixiang Ye. FreeAnchor: Learning to match anchors for visual object detection. In NIPS, 2019.