YOLO Nano 論文學習


Convolutional Neural Network for Object Detection)

論文地址:https://arxiv.org/abs/1910.01271v1

Abstract

目標檢測任務是當前計算機視覺中一個非常活躍的研究領域,通過設計深度卷積神經網絡,我們在目標檢測任務上取得了顯著的進步。儘管很成功了,但是要在邊緣側、移動平臺上部署目標檢測網絡仍然受到計算複雜度和內存大小的限制。因此,人們對邊緣側和移動端的高效率深度神經網絡設計越來越有興趣。在這篇論文中,作者針對目標檢測任務提出了一個極其緊湊的CNN網絡 — YOLO Nano。作者使用了人機協同的策略來設計 YOLO Nano,主要的網絡原型設計是基於單階段目標檢測網絡 — YOLO 系列的設計原理,然後結合結構搜索技術來創造出一個簡練的網絡,它有着模塊級別的宏觀結構設計,以及專門針對嵌入式平臺目標檢測的微觀結構設計。YOLO Nano 的模型大小僅爲 4.0 MB(要比 Tiny YOLOv2 和 Tiny YOLOv3分別小15.1倍和8.3倍),推理時的計算量爲 4.57B 次運算(要比Tiny YOLOv2 和 Tiny YOLOv3分別低34%34\%17%17\%),但是取得的mAP約爲69.1%69.1\%(要比Tiny YOLOv2 和 Tiny YOLOv3分別高12%12\%10.7%10.7\%)。作者在Jetson AGX Xavier 嵌入式平臺不同的功率預算下,進行了推理速度和性能效率的實驗,進一步證明了YOLO Nano 在嵌入式平臺的性能。

1. Introduction

計算機視覺中一個非常活躍的領域就是目標檢測,它不僅要在場景中定位到物體,而且要給該物體指定一個類別標籤。該領域目前所取得的成績基本都得益於深度學習帶來的提升,尤其是深度卷積神經網絡。人們起初關注在如何提升準確率,於是有了越來越複雜的目標檢測網絡如SSD、R-CNN 和 Mask R-CNN 等。儘管這些網絡取得了 state of the art 的效果,但是受限於計算複雜度和內存大小,很難部署在邊緣側、移動端設備上。這些網絡中即便是較快的變體,如 Faster R-CNN,在嵌入式處理器上的推理速度也只有幾幀每秒。這就使得這些網絡無法應用在很多場景中,如無人機、視頻監控、自動駕駛等,這些任務需要在本地嵌入式平臺上運算。

爲了實現嵌入式平臺上的目標檢測,越來越的人開始探索和設計適合邊緣側、移動端的高效率目標檢測框架。YOLO 系列是其中一個比較有趣的目標檢測網絡,該單階段網絡在高端GPU上實現了嵌入式目標檢測的表現。但是這個網絡結構對很多邊緣側、移動場景來說,仍然太大了(YOLOv3的模型大小有240MB),而且由於其計算複雜度比較高,在移動端處理器上運行的時候,它的推理速度比較慢(YOLOv3有65B 次的運算)。爲了解決這個問題,Redmon 等人提出了 Tiny YOLO 結構,極大地降低了模型大小,但也會造成檢測性能的退步。

在這篇論文中,作者探索了人機協同的設計策略,針對目標檢測任務設計了一個非常簡練的卷積網絡,將網絡的原型設計和結構搜索技術耦合起來。更具體點就是,作者基於YOLO系列的設計原理,利用人機協同的設計策略提出了 YOLO Nano,該網絡非常緊湊簡練,有着高度定製化的模塊級別的宏觀結構設計,以及專門針對嵌入式平臺目標檢測的微觀結構設計。

2. Methods

這篇論文中,作者利用人機協同設計的策略,提出了 YOLO Nano,一個適合嵌入式平臺目標檢測的、極其緊湊的深度卷積神經網絡。YOLO Nano 的設計策略主要由兩個設計階段構成:i) 主要網絡原型設計,ii) 結構搜索。

2.1 Principled network design prototyping

YOLO Nano 設計的第一個階段就是主要網絡原型設計,作者首先構造一個初級的網絡設計原型(用ϕ\phi表示),用人工設計原則來指導電腦結構搜索。更具體點,作者基於 YOLO 系列的設計原理構建了一個初級的網絡原型。YOLO 系列的顯著特徵就是,基於候選區域的網絡需要先構建一個 RPN 網絡來產生可能存在目標物體的候選區域,然後再對這些區域進行分類,而 YOLO 直接用一個單階段網絡對輸入圖片進行處理,輸出預測結果。因此,單次前向傳播就可以得到一張圖像的所有預測,而基於候選區域的網絡則需要成百上千次的前向傳播纔可能得到最終的結果。這就使得YOLO系列速度非常快,更適合嵌入式平臺的目標檢測。

該原型設計受 YOLO 系列網絡結構啓發,由一組特徵提取模塊堆疊而成,在各模塊之間穿插着 shortcut 連接。特徵提取模塊類似於特徵金字塔,這樣它可以在三個不同的尺度上表示特徵。這些特徵提取模塊後面跟着多個卷積層,在三個尺度上,它們的輸出分別是一個包括邊框信息、是否有目標物體、類別預測的三維 tensor。這樣,該原型結構設計就可以進行多尺度目標檢測了。

YOLO Nano 網絡結構中各模塊和層具體的宏觀和微觀結構設計,以及網絡模塊的個數都留給結構搜索階段去自動地作決定。

2.2 Machine-driven design exploration

在網絡設計原型 ϕ\phi、數據,以及人爲的針對各移動平臺的設計要求的指導下,我們然後利用結構搜索技術來決定 YOLO Nano 模塊級的宏觀和微觀結構設計。更具體點說,在這篇論文中 machine-driven 的結構搜索通過生成合成(generative synthesis)的方法實現,它可以判斷網絡中最優的宏觀結構和微觀結構設計,並且符合人爲設定的要求條件。生成合成(generative synthesis)的整體目的是學習一個生成模型,它生成的 DNN 滿足設計要求和條件,如下所述。作者將生成合成的概念用公式表述爲一個約束優化問題,gg 是要判斷的生成模型,對於給定的一個 seeds 集合 SS,該生成模型輸出的網絡{NssS}\{N_s | s \in S \} 能夠最大化一個全局表現函數μ\mu,通過指標函數1r()1_r(\cdot) 來滿足要求和條件限制:

g=maxgμ(g(s))subject to1r(g(s))=1,sSg = \max_g \mu (g(s)) \quad \text{subject to} \quad 1_r (g(s)) = 1, \forall s \in S

由於可行性區域太大了,要想找到上述等式中的全局最優解幾乎是不可能的,作者轉而通過迭代優化的方法來找到一個近似解 g^\hat g,初始解g^0\hat g_0ϕ,μ,1r()\phi, \mu, 1_r(\cdot) 指導,然後逐步更新,這樣每個近似解 g^k\hat g_k 都會比之前的近似解(如 g^1,...,g^k1\hat g_1, ..., \hat g_{k-1})的 μ\mu 要更優,但仍然滿足條件 1r()1_r(\cdot)。最終的近似解 g^\hat g 用於構建 YOLO Nano 網絡。

爲了引導生成合成階段輸出一個適合邊緣側和移動端的目標檢測模型,該模型不僅高效、緊湊,而且它的檢測效果要好,一個關鍵步驟就是指標函數 1r()1_r(\cdot) 要嚴格履行設計的要求。在這篇論文中,指標函數 1r()1_r(\cdot) 設計如下:(i) 在VOC數據集上,mAP65%mAP \geq 65\%,(ii) 計算成本 5B\leq 5B 次運算,(iii) 8-bit 權重精度。有了這些算力開支的要求,YOLO Nano 的計算成本就要低於 Tiny YOLOv3,這是目前最流行的、適合嵌入式平臺的目標檢測模型之一。

3. YOLO Nano 結構設計

YOLO Nano 網絡的結構如圖1 所示,下面將介紹幾個有趣的發現。

3.1 Residual Projection-Expansion-Projection Macroarchitecture

關於 YOLO Nano,第一個值得注意的就是它獨特的殘差 projection-expansion-projection(PEP)宏觀結構,除了 expansion-projection 宏觀結構。慘差PEP結構的構成如下:i) 一個由 1×11\times 1卷積構成的 projection 層,將輸出通道映射爲一個維度較低的輸出tensor,ii) 一個由 1×11\times 1 卷積構成的 expansion 層,將通道數增大爲較高的維度,iii) 一個 depthwise 卷積層對 expansion 層的每一個輸出通道,用不同的濾波器進行空間卷積,iv) 一個由 1×11\times 1卷積構成的 projection 層,將輸出通道映射爲一個較低維度的輸出 tensor。殘差PEP結構極大地降低了計算複雜度和模型複雜度,而保留了模型的能力。

3.2 Fully-connected Attention Macroarchitecture

第二個值得注意的點就是,網絡結構搜索階段中輕量級的全連接注意力(fully-connected attention, FCA)機制,這和其它結構搜索方法中固定的 module-level introduction 不同。FCA 結構由2個全連接層構成,學習各通道間動態的、非線性的相互依賴關係,通過 channel-wise 相乘來產生各通道的權重。基於全局信息,FCA 有助於動態特徵校正,對於富含信息的特徵給予更多的關注,因此能更好地利用網絡的能力。這就有助於在模型結構複雜度和計算複雜度降低的同時,很好地平衡模型的表現力。

3.3 Macroarchitecture and Microarchitecture Heterogeneity

第三個值得注意的點就是高度多樣性,不僅是指宏觀結構(PEP模塊、EP模塊、FCA,以及3×33\times 31×11\times 1卷積層的多樣混合),也指單個特徵提取模塊和網絡層的微觀結構,每一個模塊或網絡層都有獨特的微觀結構。YOLO Nano 中微觀結構的高度多樣性有一個好處,網絡結構中每個部分都能獨特地設計,進而在結構複雜性、計算複雜度和模型能力上實現很好的平衡。該結構多樣性也證明了結構搜索策略的優勢與靈活性,否則,要是由人爲來設計一個顆粒度這樣強的網絡結構幾乎是不可能的。

4. Experiment Results and Discussion

爲了研究 YOLO Nano 在嵌入式平臺上目標檢測的表現,作者在 PASCAL VOC 數據集上檢驗了其模型大小、目標檢測準確率和計算成本。爲了比較性能,作者將 Tiny YOLOv2 和 Tiny YOLOv3 網絡用作爲 baseline 模型,因爲它們模型較小、計算複雜度較低,是最常用的、適合嵌入式平臺的深度卷積網絡。VOC2007/2012 數據集由自然圖片組成,標註了20個不同的物體類別。作者用 VOC2007/2012 訓練集來訓練模型,在VOC2007測試集上計算 mAP,評價目標檢測的準確率。

表1展示了 YOLO Nano 模型、Tiny YOLOv2、Tiny YOLOv3 的大小,目標檢測的準確率。首先,我們可以看到 YOLO Nano 模型只有4 MB,比 Tiny YOLOv2 和 Tiny YOLOv3 分別小 15.1 倍和8.3 倍,這對邊緣側和移動端場景非常重要。其次,YOLO Nano 儘管模型很小,但是它在 VOC 2007 測試集上的 mAP 爲 69.1%69.1\%,這比 Tiny YOLOv2 和 Tiny YOLOv3 分別高 12%12\%10.7%10.7\%。第三, YOLO Nano 的推理僅有 45.7 億次的運算,比 Tiny YOLOv2 和 Tiny YOLOv3 分別低 34%34\%17%17\%

最後,爲了研究 YOLO Nano 在嵌入式實際場景中的表現,作者在 Jetson Xavier 嵌入式平臺上、不同的功率預算下,測試了推理速度和功率效率。在15W和30W的功率預算下,YOLO Nano 取得的推理速度爲 26.9 FPS 和 48.2 FPS,功率效率爲 1.97 張圖片每秒每瓦特和1.61張圖片每秒每瓦特。這些實驗結果表明,YOLO Nano 網絡可以在準確率、模型大小、計算複雜度之間取得很好的平衡,適合邊緣側、移動端場景的目標檢測。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章