天天看點

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

前言

CSPNet發表于CVPR 2020

CSPNet用到了DenseNet作為主幹,并且提出了新的網絡連接配接方式提升網絡反向傳播效率,DenseNet檢視DenseNet網絡複現

論文:CSPNet:A New Backbone that can Enhance Learning Capability of CNN

開源代碼:GITHUB

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

Abstract

神經網絡使最先進的方法能夠在計算機視覺任務(例如對象檢測)上取得令人難以置信的結果。然而,這樣的成功很大程度上依賴于昂貴的計算資源,這阻礙了擁有廉價裝置的人們欣賞先進技術。在本文中,我們提出了跨階段局部網絡(CSPNet)來緩解以前的工作需要從網絡架構角度進行大量推理計算的問題。我們将問題歸因于網絡優化中的重複梯度資訊。所提出的網絡通過整合網絡階段開始和結束的特征圖來保持梯度的可變性,在我們的實驗中,這将計算量減少了 20%,并且在 ImageNet 資料集上具有同等甚至更高的精度,并且顯着優于狀态MS COCO 對象檢測資料集上的 A P 50 AP_{50} AP50​名額的最先進方法。CSPNet 易于實作且通用性足以應對基于 ResNet、ResNeXt 和 DenseNet 的架構。

1.Introduction

當神經網絡變得更深 [8, 37, 11] 和更寬 [38] 時,它已被證明特别強大。然而,擴充神經網絡的架構通常會帶來更多的計算,這使得大多數人無法承受諸如對象檢測之類的計算繁重的任務。輕量級計算逐漸受到越來越多的關注,因為現實世界的應用通常需要在小型裝置上進行較短的推理時間,這對計算機視覺算法提出了嚴峻的挑戰。雖然有些方法是專門為移動 CPU [10, 30, 9, 32, 41, 23]設計的,他們采用的深度卷積通常與工業 IC 設計不相容,例如用于邊緣計算系統的專用內建電路 (ASIC)。在這項工作中,我們研究了最先進的方法的計算負擔,例如ResNet,ResNeXt和DenseNet。我們進一步開發了計算效率高的元件,使上述網絡能夠部署在 CPU 和移動 GPU 上,而不會犧牲性能。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion
《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion
《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion
《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion
《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

在這項研究中,我們介紹了跨階段局部網絡(CSPNet)。設計CSPNet的主要目的是讓這個架構在減少計算量的同時,實作更豐富的梯度組合。該目标是通過将基礎層的特征圖劃分為兩部分,然後通過提出的跨階段層次結構将它們合并來實作的。我們的主要概念是通過對梯度流進行分裂,使梯度流通過不同的網絡路徑傳播。通過這種方式,我們已經确認傳播的梯度資訊可以通過轉換concatenation和trainsition步驟具有很大的相關性差異。此外,CSPNet 可以大大減少計算量,提高推理速度和準确性,如圖 1 所示。

提出的基于 CSPNet 的目标檢測器處理以下三個問題:

  1. 加強CNN的學習能力: 現有的CNN在輕量化後準确率大幅下降,是以我們希望加強CNN的學習能力,使其在被輕量化的同時能夠保持足夠的準确率。提出的 CSPNet 可以輕松應用于 ResNet、ResNeXt 和 DenseNet。在上述網絡上應用 CSPNet 後,計算量可以從 10% 減少到 20%,但它優于 ResNet [8]、ResNeXt [37]、DenseNet [11]、HarDNet [2]、Elastic [34],和 Res2Net [5],在準确性方面,在 ImageNet [3] 上進行圖像分類任務。
  2. 消除計算瓶頸: 太高的計算瓶頸會導緻更多的周期來完成推理過程,或者一些算術單元經常會空閑。是以,我們希望能夠在 CNN 中均勻配置設定每一層的計算量,進而有效提升每個計算單元的使用率,進而減少不必要的能耗。值得注意的是,所提出的 CSPNet 使 PeleeNet [35] 的計算瓶頸減少了一半。此外,在基于 MS COCO [17] 資料集的對象檢測實驗中,我們提出的模型在基于 YOLOv3 的模型上進行測試時可以有效減少 80% 的計算瓶頸。
  3. 降低記憶體成本: 動态随機存取存儲器 (DRAM) 的晶圓制造成本非常昂貴,而且還占用大量空間。如果能夠有效地降低記憶體成本,那麼他/她将大大降低ASIC的成本。此外,小面積晶圓可用于各種邊緣計算裝置。我們采用跨通道池化 [6] 在特征金字塔生成過程中壓縮特征圖。這樣,在生成特征金字塔時,提出的帶有建議檢測器的 CSPNet 可以減少 PeleeNet 上 75% 的記憶體使用量。

由于 CSPNet 能夠提升 CNN 的學習能力,是以我們使用較小的模型在 GTX 1080ti 上以 109 fps 的速度實作 50% COCO A P 50 AP_{50} AP50​。由于 CSPNet 可以有效地減少大量記憶體流量,我們提出的方法可以在 Intel Core i9-9900K 上以 52 fps 的速度實作 40% COCO A P 50 AP_{50} AP50​。此外,由于 CSPNet 可以顯着降低計算瓶頸,并且精确融合模型 (EFM) 可以有效地減少所需的記憶體帶寬,是以我們提出的方法可以在 Nvidia Jetson TX2 上以 49 fps 的速度實作 42% COCO A P 50 AP_{50} AP50​。

2.Related work

CNN 架構設計。

在 ResNeXt [37] 中,Xie 等人。首先證明基數比寬度和深度的次元更有效。由于采用了大量重用特征的政策,DenseNet [11] 可以顯着減少參數和計算的數量。并将前面所有層的輸出特征連接配接起來作為下一個輸入,這可以被認為是最大化基數的方法。SparseNet [44] 将dense連接配接調整為指數間隔連接配接可以有效提高參數使用率,進而産生更好的結果。Wang等人進一步解釋了為什麼高基數和稀疏連接配接可以通過梯度組合的概念提高網絡的學習能力,并開發了部分 ResNet (PRN) [33]。為了提高 CNN 的推理速度,Ma 等人。 [23] 介紹了四個要遵循的準則并設計了 ShuffleNet-v2。Chao等人。 [2] 提出了一個稱為 Harmonic DenseNet (HarDNet) 的低記憶體流量 CNN 和一個度量卷積輸入/輸出 (CIO),它是與真實 DRAM 流量測量成比例的 DRAM 流量的近似值。

實時目标檢測器。

最著名的兩個實時目标檢測器是 YOLOv3 [28] 和 SSD [20]。基于 SSD,LRF [36] 和 RFBNet [18] 可以在 GPU 上實作最先進的實時目标檢測性能。最近,基于anchor-free的目标檢測器 [4, 43, 13, 14, 40] 已成為主流的目标檢測系統。這種類型的兩個目标檢測器是 CenterNet [43] 和 CornerNet-Lite [14],它們在效率和功效方面都表現得非常好。對于 CPU 或移動 GPU 上的實時對象檢測,基于 SSD 的 Pelee [35]、基于 YOLOv3 的 PRN [33] 和基于 Light-Head RCNN [16]的 ThunderNet [25] 在對象檢測方面都獲得了出色的性能 。

3.Method

3.1. Cross Stage Partial Network

跨階段局部網絡。

主流的CNN架構,如ResNet[8]、ResNeXt[37]、DenseNet[11],它們的輸出通常是中間層輸出的線性或非線性組合。是以,一個 k 層 CNN 的輸出可以表示如下:

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

其中 F F F是輸入 x 0 x_0 x0​到目标 y y y的映射函數,也是整個CNN的模型。至于 H k H_k Hk​,就是CNN的第 k k k個 l a y e r layer layer的操作函數。通常, H k H_k Hk​是由一組卷積層和一個非線性激活函數組成。如果我們以 ResNet 和 DenseNet 為例,它們可以分别用等式 2 和等式 3 表示如下:

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

上述兩個方程中,R和D分别代表ResNet層和Dense層的計算算子,這些算子通常由2∼3個卷積層組成。

從上面兩個等式來看,無論是ResNet層還是Dense層,組成它們的每個卷積層的輸入都接收到前面所有層的輸出。但是,我們也知道,這種架構設計會使第 k k k個 l a y e r layer layer 将梯度傳遞給所有 k − 1 , k − 2 , . . . , 1 k−1, k−2, ...,1 k−1,k−2,...,1 層并使用它來更新權重,這會導緻重複學習備援資訊。

最近,一些研究嘗試使用篩選後的 H k H_k Hk​(.) 的輸入來提高學習能力和參數使用率。例如,SparseNet [44] 使用指數間隔連接配接使 H k H_k Hk​ 僅與 H k − 1 、 H k − 2 、 H k − 4 、 . . . 、 H k − 2 i 、 . . . H_{k-1}、H_{k-2}、H_{k-4}、...、H_{k-2i}、... Hk−1​、Hk−2​、Hk−4​、...、Hk−2i​、...直接相關。ShuffleNetV2 [23] 使用拆分通道使 H k H_k Hk​ 僅與 H k − 1 H_{k−1} Hk−1​ 通道的一半直接相關,其方程可以表示為 S ( [ H k ( x k − 1 [ 1 : c / 2 ] ) , x k − 1 [ ( c / 2 + 1 ) : c ] ] ) S([H_k(x_{k−1}[1 : c/2]), x_{k−1}[(c/2+1) : c]]) S([Hk​(xk−1​[1:c/2]),xk−1​[(c/2+1):c]]),其中 S S S表示shuffle操作, x k − 1 [ 1 : c / 2 ] x_{k−1}[1: c/2] xk−1​[1:c/2]表示 x k − 1 x_{k−1} xk−1​的第一個到 c / 2 c/2 c/2個通道。至于 PyramidNet [7] 和 PRN [33],它們都是使用通道數不等的特征圖來建構 ResNet 來實作梯度分流的效果。

最先進的方法強調在每一層優化 H i H_i Hi​ 函數,我們建議 CSPNet 直接優化 F F F 函數如下:

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

其中 x 0 x_0 x0​ 沿通道分為兩部分,可以表示為 x 0 = [ x 0 ′ , x 0 ′ ′ ] x_0= [x_0', x_0''] x0​=[x0′​,x0′′​]。 T T T 是用于截斷 H 1 、 H 2 、 . . . 、 H k H_1、H_2、...、H_k H1​、H2​、...、Hk​ 的梯度流的轉換函數, M M M 是用于混合兩個分段部分的轉換函數。接下來,我們将展示如何将 CSPNet 內建到 DenseNet 中的示例,并解釋如何解決 CNN 中學習重複資訊的問題。

DenseNet

圖 2(a) 顯示了 Huang 等人提出的 DenseNet 的一個階段的詳細結構 [11]。DenseNet 的每個階段都包含一個dense block和一個transition層,每個dense block由 k k k個dense層組成。第 i i i個dense層的輸出将與第 i i i個dense層的輸入連接配接,連接配接後的結果将成為第 ( i + 1 ) (i+1) (i+1) 層的輸入。表示上述機制的方程可以表示為:

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

其中 ∗ ∗ ∗ 表示卷積算子, [ x 0 , x 1 , . . . ] [x_0, x_1, ...] [x0​,x1​,...] 表示将 x 0 , x 1 , . . . x_0, x_1, ... x0​,x1​,...concatenate并且 w i w_i wi​ 和 x i x_i xi​分别是連接配接到第 i i i個dense層的權重和輸出。

如果使用反向傳播來更新權重,則權重更新的方程可以寫為:

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

其中 f i f_i fi​是第 i i i個dense層權重更新的函數, g i g_i gi​表示傳播到第 i i i個dense層的梯度。我們可以發現大量梯度資訊被重用于更新不同dense層的權重。這将導緻不同的dense層重複學習複制的梯度資訊。

跨階段局部DenseNet

所提出的 CSPDenseNet 的 onestage 架構如圖 2(b)所示。CSPDenseNet 的一個階段由局部dense block和局部transition層組成。在局部dense block中,通過通道 x 0 = [ x 0 ′ , x 0 ′ ′ ] x_0= [x_0', x_0''] x0​=[x0′​,x0′′​] 将階段中base layer的特征圖分為兩部分。在 x 0 ′ x_0' x0′​和 x 0 ′ ′ x_0'' x0′′​之間,前者直接連接配接到stage的末端,後者會經過一個dense block。局部transition層涉及的所有步驟如下:首先,dense層的輸出 [ x 0 ′ ′ , x 1 , . . . , x k ] [x_0'', x_1, ..., x_k] [x0′′​,x1​,...,xk​] 将經曆一個transition層。其次,這個transition層的輸出 x T x_T xT​ 将與 x 0 ′ x_0' x0′​ 連接配接并經過另一個transition層,然後生成輸出 x U x_U xU​。CSPDenseNet 的前饋傳遞和權重更新方程分别如方程 7 和方程 8 所示。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

我們可以看到來自dense層的梯度是單獨整合的。另一方面,沒有經過dense層的特征圖 x 0 ′ x'_0 x0′​ 也被單獨整合。對于更新權重的梯度資訊,雙方都不包含屬于另一方的重複梯度資訊。

總體而言,所提出的 CSPDenseNet 保留了 DenseNet 特征重用特性的優勢,但同時通過截斷梯度流來防止過多的重複梯度資訊。這個想法是通過設計分層特征融合政策并在局部transition層中使用來實作的。

局部dense block

設計局部dense block的優點是:

  1. 增加梯度路徑:通過拆分合并政策,梯度路徑的數量可以增加一倍。由于采用了跨階段政策,可以緩解使用顯式特征圖副本進行concatenation帶來的缺點;
  2. 平衡每層的計算:通常,DenseNet 的base layer中的通道數遠大于growth rate(注:DenseNet的超參數,值為dense block中dense卷積層的卷積核個數)。由于在一個局部dense block中參與dense層操作的base layer通道隻占原始數量的一半,是以可以有效解決近一半的計算瓶頸(注:解決近一半的計算瓶頸是通過拆分輸入通道實作,拆分各一半,一半傳入dense block,一半直接傳到dense block後);
  3. 減少記憶體流量:假設 DenseNet 中一個dense block的基本特征圖大小為 w × h × c w × h × c w×h×c,growth rate為 d d d,總共有 m m m個dense層。那麼,那個dense block的CIO(Convolutional Input/Output)是 ( c × m ) + ( ( m 2 + m ) × d ) / 2 (c×m)+((m^2+m)×d)/2 (c×m)+((m2+m)×d)/2,局部dense block的 CIO 是 ( ( c × m ) + ( m 2 + m ) × d ) / 2 ((c × m)+(m^2+m) × d)/2 ((c×m)+(m2+m)×d)/2。雖然 m m m 和 d d d 通常遠小于 c c c,但局部dense block最多可以節省網絡一半的記憶體流量。
    《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion
    《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

    局部Transition Layer

    設計局部transition層的目的是最大化梯度組合的差異。局部transition層是一種分層特征融合機制,它使用截斷梯度流的政策來防止不同層學習重複的梯度資訊。

    在這裡,我們設計了 CSPDenseNet 的兩種變體,以展示這種梯度流截斷如何影響網絡的學習能力。圖 3 © 和圖 3 (d) 顯示了兩種不同的融合政策。CSP(fusion first)是指将兩部分生成的特征圖拼接起來,然後進行transition操作。如果采用這種政策,将會重用大量的梯度資訊。對于 CSP(最後融合)政策,dense block的輸出将通過transition層,然後與來自第 1 部分的特征圖進行concat。如果采用 CSP(最後融合)政策,由于梯度流被截斷,梯度資訊将不會被重用。如果我們使用圖3所示的四種架構進行圖像分類,對應的結果如圖4所示。可以看出,如果采用CSP(fusion last)政策進行圖像分類,計算成本顯着下降,但top-1準确率僅下降0.1%。另一方面,CSP(fusion first)政策确實有助于顯着降低計算成本,但 top-1 精度顯著下降 1.5%。通過跨階段使用拆分合并政策,我們能夠有效降低資訊內建過程中重複的可能性。從圖 4 所示的結果可以看出,如果能夠有效減少重複的梯度資訊,網絡的學習能力将得到極大的提升。

    《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

    将 CSPNet 應用于其他架構。

    CSPNet 也可以應用于 ResNet 和 ResNeXt,架構如圖 5 所示。由于隻有一半的特征通道通過 Res(X)Blocks(注:這裡指的一半特征通道前面已經講過,拆分輸入通道各一半,一半傳入dense block,一半傳入dense block最後),是以不再需要引入瓶頸層(注:這裡的瓶頸層指的是dense層中的瓶頸層結構)。當浮點操作 (FLOP) 固定時,這使得記憶體通路成本 (MAC) 的理論下限。

3.2. Exact Fusion Model

看起來完全可以完美預測

我們建議 EFM(Exact Fusion Model) 為每個anchor捕獲适當的感受野,這提高了one-stage目标檢測器的準确性。對于分割任務,由于像素級标簽通常不包含全局資訊,是以通常更可取的是考慮更大的更新檔以獲得更好的資訊檢索 [21]。然而,對于圖像分類和目标檢測等任務,從圖像級和邊界框級标簽觀察時,一些關鍵資訊可能會模糊不清。李等人。 [15]發現CNN在從圖像級标簽中學習時經常會分心,并得出結論認為這是兩級目标檢測器優于一級目标檢測器的主要原因之一。

聚合特征金字塔

proposed的 EFM 能夠更好地聚合初始特征金字塔。 EFM 基于 YOLOv3 [28],它在每個ground truth 目标之前準确配置設定一個邊界框。每個真實邊界框對應一個超過門檻值 IoU 的anchor框。如果anchor box的大小等于grid cell的感受野,那麼對于第s個grid cell的scale,對應的bounding box的下界為第(s − 1)個scale,上界為第(s+1) scale。是以,EFM 組合了三個尺度的特征。

平衡計算

由于來自特征金字塔的concatenated特征圖是巨大的,它引入了大量的記憶體和計算成本。為了緩解這個問題,我們結合了 Maxout 技術來壓縮特征圖。

4.Experiments

我們使用 ImageNet 圖像分類資料集 [3] 來驗證提出的 CSPNet。并使用 MS COCO 對象檢測資料集 [17] 來驗證提出的 CSPNet 和 EFM。

4.1. Implementation Details

ImageNet.

在 ImageNet 圖像分類實驗中,所有超參數,如訓練步驟、學習率計劃、優化器、資料增強等,我們都遵循 Redmon 等人定義的設定。 [28]。對于基于 ResNet 的模型和基于 ResNeXt 的模型,我們設定了 8,000,000 個訓練步驟。對于基于 DenseNet 的模型,我們設定了 1,600,000 個訓練步驟。我們将初始學習率設定為 0.1,并采用多項式衰減學習率排程政策。動量衰減和權重衰減分别設定為 0.9 和 0.005。所有架構都使用單個 GPU 以 128 的批量大小進行通用訓練。最後,我們使用 ILSVRC 2012 的驗證集來驗證我們的方法。

MS COCO.

在 MS COCO 目标檢測實驗中,所有超參數也遵循 Redmon 等人定義的設定。 [28]。我們總共進行了 500,000 個訓練步驟。我們采用步進衰減學習率排程政策,并分别在 400,000 步和 450,000 步乘以因子 0.1。動量和權重衰減分别設定為 0.9 和 0.0005。所有架構都使用單個 GPU 以 64 的批量大小執行多尺度訓練。最後,采用 COCO 測試開發集來驗證我們的方法

4.2. Ablation Experiments

CSPNet 在 ImageNet 上的消融研究

在 CSPNet 上進行的消融實驗中,我們采用 PeleeNet [35] 作為baseline,并使用 ImageNet 來驗證 CSPNet 的性能。我們使用不同的局部比率 γ 和特征融合政策進行消融研究。表 1 顯示了在 CSPNet 上的消融研究結果。至于 CSP(先融合)和 CSP(最後融合),它們被提議用于驗證部分過渡的好處。

從CSP(fusion last)的實驗結果來看,為了減少備援資訊的學習而設計的局部transition層可以取得非常好的性能。例如,當計算量減少 21% 時,精度僅下降 0.1%。需要注意的一點是,當 γ = 0.25 時,計算量減少了 11%,但準确度提高了 0.1%。與baseline PeleeNet 相比,所提出的 CSPPeleeNet 實作了最佳性能,它可以減少 13% 的計算量,但同時将準确率提升 0.2%。如果我們将局部比率調整為 γ = 0.25,我們可以将準确度提高 0.8%,并減少 3% 的計算量。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion
《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

MS COCO 上 EFM 的消融研究

接下來,我們對 EFM 進行了消融研究,并比較了圖 6 中所示的三種不同的特征融合政策。我們選擇 PRN [33] 和 ThunderNet [25] 進行比較。帶有上下文增強子產品 (CEM-Context Enhancement Module) 和空間注意子產品 (SAM-Spatial Attention Module) 的 PRN 和 ThunderNet 分别是 FPN 和 GFM 架構。我們還設計了一個 GFM 來與proposed的 EFM 進行比較。此外,GIoU [29]、SPP 和 SAM 也适用于 EFM。表2中列出的所有實驗結果均采用CSPPeleeNet作為主幹。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

實驗結果表明,所提出的 EFM 比 GFM 慢 2 fps,但其 AP50 顯着提升了 2.4%。 GIoU 可以将 AP 提升 0.7%,但 AP50 顯着下降 2.7%。對于邊緣計算,真正重要的是目标的數量和位置。是以,我們不會在後續模型中使用 GIoU 訓練。 SAM能夠比SPP獲得更好的幀速率和AP,是以我們使用EFM(SAM)作為最終架構。

4.3. ImageNet Image Classification

我們将 CSPNet 應用于 ResNet-10 [8]、ResNeXt-50 [37]、DenseNet-201 [11]、PeleeNet [35] 和 DenseNet201-Elastic [34],并與最先進的方法進行比較。實驗結果如表 3 所示。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

實驗結果證明,無論是哪種架構,當引入CSPNet的概念後,計算量都減少了,精度要麼保持不變,要麼提升,對輕量級模型的改進尤其有用。例如,與 ResNet-10 相比,CSPResNet-10 可以将準确率提高 1.8%。對于 PeleeNet 和 DenseNet-201-Elastic,CSPPeleeNet 和 CSPDenseNet-201-Elastic 分别可以減少 13% 和 19% 的計算量,或者稍微提升一點,或者保持精度。對于 ResNeXt-50 的情況,CSPResNeXt-50 可以減少 22% 的計算量,并将 top-1 的準确率提升到 77.9%。

提出的 CSPResNeXt-50 也與 ResNet-152 [8]、DenseNet-264 [11] 和 HarDNet-138s [2] 進行了比較,無論 #parameter、BFLOPs 和 top-1 精度,CSPResNeXt-50 都達到了最好結果。對于 10crop 測試,CSPResNeXt-50 優于 Res2NeXt-50 [5]。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

4.4. MS COCO Object Detection

在目标檢測任務中,我們針對三個目标場景:(1)GPU 實時:我們采用帶有 PANet(SPP)的 CSPResNeXt50 [19]; (2) 移動 GPU 上的實時性:我們采用基于 CSPDenseNet 的模型和建議的 EFM (SAM); (3) CPU 上的實時性:我們采用帶有 PRN [33] 的基于 CSPDenseNet 的模型。上述模型與最先進方法的比較如表 4 所示。關于 CPU 和移動 GPU 的推理速度的分析将在下一小節詳細介紹。

如果與以 30∼100 fps 運作的物體檢測器相比,帶有 PANet (SPP) 的 CSPResNeXt50 在 AP、AP50 和 AP75 中實作了最佳性能。它們的檢測率分别為 38.4%、60.6% 和 41.6%。如果在輸入圖像大小為 512×512 的情況下與 LRF [36] 相比,帶有 PANet (SPP) 的 CSPResNeXt50 的性能優于帶有 LRF 的 ResNet101 0.7% AP、1.5% AP50 和 1.1% AP75。如果與以 100∼200 fps 運作的物體檢測器相比,帶有 EFM (SAM) 的 CSPPeleeNet 以與 Pelee [35] 和 CenterNet [43] 相同的速度分别提高了 12.1% 和 4.1% 的 AP50。

如果與 ThunderNet [25]、YOLOv3-tiny [28] 和 YOLOv3-tiny-PRN [33] 等非常快的物體檢測器相比,建議的帶有 PRN 的 CSPDenseNetb 參考是最快的。它可以達到 400 fps 的幀速率,即比使用 SNet49 的 ThunderNet 快 133 fps。此外,它在 AP50 上高出 0.5%。如果與 ThunderNet146 相比,帶有 PRN (3l) 的 CSPPeleeNet Reference 将幀速率提高了 19 fps,同時保持與 AP50 相同的水準。

4.5. Analysis

計算瓶頸

圖 7 顯示了 PeleeNet-YOLO、PeleeNet-PRN 和提議的 CSPPeleeNet-EFM 每一層的 BLOPS。 PeleeNet-YOLO 的計算瓶頸出現在頭部內建特征金字塔時,而 PeleeNet-PRN 的計算瓶頸出現在 PeleeNet 主幹的transition層上。至于提出的CSPPeleeNetEFM,它可以平衡整體計算瓶頸,減少PeleeNet主幹44%的計算瓶頸,減少PeleeNet-YOLO 80%的計算瓶頸。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

記憶體流量

圖 8 顯示了 ResNeXt50 和建議的 CSPResNeXt50 每一層的大小。提議的 CSPResNeXt (32.6M) 的 CIO 低于原始 ResNeXt50 (34.4M) 的 CIO。此外,我們的 CSPResNeXt50 去除了 ResXBlock 中的瓶頸層并保持輸入通道和輸出通道的相同數量,如 Maet al. [23] 當 FLOP 固定時,這将具有最低的 MAC 和最有效的計算。 低CIO 和 FLOP 使我們的 CSPResNeXt50 在計算方面比普通 ResNeXt50 高出 22%。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

推理率

我們進一步評估了所提出的方法是否能夠部署在具有移動 GPU 或 CPU 的實時檢測器上。實驗基于 NVIDIA Jetson TX2 和 Intel Core i9-9900K。 CPU 上的推理率使用 OpenCV DNN 子產品進行評估。我們不采用模型壓縮或量化來進行公平比較。結果如表5所示。

《CSPNet:A New Backbone that can Enhance Learning Capability of CNN》論文翻譯前言Abstract1.Introduction2.Related work3.Method4.Experiments5. Conclusion

如果我們比較在 CPU 上執行的推理速度,CSPDenseNetb Ref.-PRN 比 SNet49-TunderNet 獲得更高的 AP50,并且在幀速率方面也比 SNet49TunderNet 高 55 fps。另一方面,CSPPeleeNet Ref.-PRN (3l) 達到與 SNet146-ThunderNet 相同的精度水準,但在 CPU 上将幀速率顯着提高了 20 fps。

如果我們比較在移動 GPU 上執行的推理速度,我們提出的 EFM 可以大大降低生成特征金字塔時的記憶體需求,這絕對有利于在記憶體帶寬受限的移動環境下運作。例如,CSPPeleeNet Ref.-EFM (SAM) 可以有比 YOLOv3-tiny 更高的幀率,其 AP50 比 YOLOv3-tiny 高 11.5%。對于相同的 CSPPeleeNet 參考。骨幹網,雖然 EFM (SAM) 在 GTX 1080ti 上比 PRN (3l) 慢 62 fps,但在 Jetson TX2 上達到 41 fps,比 PRN (3l) 快 3 fps,并且 AP50 增加了 4.6%。

5. Conclusion

我們提出了 CSPNet,它使最先進的方法(如 ResNet、ResNeXT 和 DenseNet)能夠針對移動 GPU 或 CPU 進行輕量化。主要貢獻之一是我們已經認識到備援梯度資訊問題會導緻優化效率低下和推理計算成本高昂。我們建議利用跨階段特征融合政策和截斷梯度流來增強不同層内學習特征的可變性。此外,我們提出了結合 Maxout 操作的 EFM 來壓縮從特征金字塔生成的特征圖,這在很大程度上減少了所需的記憶體帶寬,是以推理效率足以與邊緣計算裝置相容。通過實驗,我們已經表明,在移動 GPU 和 CPU 上實時對象檢測任務的準确性和推理率方面,所提出的帶有 EFM 的 CSPNet 顯着優于競争對手。

繼續閱讀