【Yolo系列】YOLO-NANO

鏈接:https://arxiv.org/abs/1910.01271

開源代碼:https://github.com/liux0614/yolo_nano/issues/5

YOLO Nano 大小隻有 4.0MB 左右,比 Tiny YOLOv2 和 Tiny YOLOv3 分別小了 15.1 倍和 8.3 倍,性能卻有較爲顯著的提升。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-GS8Sj19r-1572972676015)(/api/file/getImage?fileId=5dc1992331285a0967000099)]

目標檢測在計算機視覺領域是一個活躍的研究分支,而深度學習已經成爲這一領域最前沿也是最成功的解決方案。但是,在邊緣和移動設備中廣泛部署神經網絡模型需要大量的計算算力和內存。因此,近來研究領域主要在解決適合以上設備的神經網絡。

本文便是這些研究中的一個,研究者提出了名爲 YOLO Nano 的網絡。這一模型的大小在 4.0MB 左右,比 Tiny YOLOv2 和 Tiny YOLOv3 分別小了 15.1 倍和 8.3 倍。在計算上需要 4.57B 次推斷運算,比後兩個網絡分別少了 34% 和 17%。

在性能表現上,在 VOC2007 數據集取得了 69.1% 的 mAP,準確率比後兩者分別提升了 12 個點和 10.7 個點。研究者還在 Jetson AGX Xavier 嵌入式模塊上,用不同的能源預算進行了測試,進一步說明 YOLO Nano 非常適合邊緣設備與移動端。

從兩階段目標檢測開始的故事

目標檢測任務目前有兩種通行的解決方案,一種是兩階段目標檢測,另一種是單階段的。對於兩階段目標檢測,首先需要神經網絡識別目標(如在目標上打上定位框),然後對識別出的目標進行分類。另一種則是單階段,直接使用網絡對目標進行檢測。兩階段的好處在於實現容易,但下游的分類任務依賴上游識別定位任務的表現。而單階段方法儘管不需要首先識別目標,但加大了端到端實現目標檢測的難度。

一般而言,兩階段目標檢測方法準確性高,但速度不快;而單階段的檢測器速度快,準確率並達不到最高。不過隨着基於關鍵點的方法越來越流行,單階段不僅快,同時效果也不錯。

在單階段目標檢測方法中,圍繞效率而生的 YOLO 神經網絡是一個非常有趣的存在,我們最常調用的檢測器也是它了。YOLO 可以在 GPU 實現實時目標檢測,而且效果還挺好。

然而,這些網絡架構對於很多邊緣和移動場景而言太大了(例如,YOLOv3 網絡的大小爲 240MB),而且因爲計算複雜度(YOLOv3 需要多達 65B 的運算量)過高,在這些設備上的推斷速度會很慢。爲了解決這些問題,Redmon 等提出了 Tiny YOLO 家族的網絡架構,可以在一定程度上犧牲目標檢測性能,換取模型規模的極大縮小。

本研究中,研究者通過人機協作設計策略(human-machine collaborative design)的方法進行構建。在構建的過程中,首先設計主要的網絡原型,原型基於 YOLO 網絡家族中的單階段目標檢測網絡架構。然後,將原型和機器驅動的設計探索策略結合,創建一個緊湊的網絡。這個網絡是高度定製化的,在模塊級別上有着宏架構(macro-architecture)和微架構(micro-architecture),可用於嵌入式目標檢測任務。

YOLO Nano 設計思路

YOLO Nano 在架構設計的中經過了兩個階段:首先設計一個原型網絡,形成網絡的主要設計架構;然後,使用機器驅動的方法進行探索設計。

原型主體網絡設計

首先是設計主要的網絡原型,研究者創建了一個原始的架構(表示爲ϕ),用於引導機器進行後續的探索設計。具體而言,研究者設計的網絡基於 YOLO 家族中的單階段目標檢測架構。

YOLO 家族的網絡架構最明顯的特徵是,它們不像基於「候選框」的網絡那樣需要構建一個 RPN,該網絡會生成一系列定位目標的候選邊界框,然後對生成的邊界框進行分類。YOLO 家族的網絡可以直接對輸入的圖像進行處理,然後生成輸出結果。

這樣一來,所有目標檢測的預測都是將一張圖像輸入,直接得到輸出,相比於 RPN 那種需要成百上千次的計算來得到最終結果而言省去了很多計算步驟,這使得 YOLO 家族的網絡在運算上非常快,對於嵌入式目標檢測任務而言也是最合適的。

機器驅動的探索設計

在這一階段,研究者讓機器使用最初的原型網絡、數據和人類提出的設計的要求做爲指引,然後機器驅動的探索設計會決定模塊級別的宏架構和微架構,用於最終的 YOLO Nano 網絡。

具體來說,機器驅動的探索設計是通過生成式整合來實現的。這一方法可以決定最優的網絡宏架構和微架構,並符合人類的要求。

生成式整合的總體目標是學習生成式的機器,用於生成符合設計要求、限制等條件的深度神經網絡。決定生成器 G 可以形式化爲一個帶約束的最優化問題,即在給定一系列種子 S 的情形下,生成網絡 {N_s|s ∈ S} 以最大化全局性能函數 U。在最大化過程中需要滿足指示函數 1_r(·),1r(·) 被定義來表示人類提出的需求和限制條件。

在這裏插入圖片描述

YOLO Nano 架構設計

瞭解了 YOLO Nano 的設計思路後,我們再看看它的架構是什麼樣的。如下圖 1 所示,YOLO Nano 主要可以分爲三部分,其中會有便捷連接連通不同抽象程度的特徵圖。

在這裏插入圖片描述

圖 1:YOLO Nano 神經網絡架構。注意其中 PEP(x) 表示殘差 PEP 模塊第一個映射層的 x 通道,FCA(x) 表示降維率爲 x。

值得注意的是,YOLO Nano 有三種比較高效的模塊,它們共同提升了整體建模的參數效率和運算效率。

殘差映射-擴張-映射宏架構

YOLO Nano 網絡架構第一個非常值得關注的模塊就是殘差映射-擴張—映射(PEP)宏架構(Macro-architecture),它和原來 YOLO 家族的模塊有一些不同。

殘差 PEP 宏架構主要由以下四部分組成:

一個 1*1 卷積的映射層,它將輸入的特徵圖映射到較低維度的張量;

一個 1*1 卷積的擴張層,它會將特徵圖的通道再擴張到高一些的維度;

一個逐深度(depth-wise)的卷積層,它會通過不同濾波器對不同的擴張層輸出通道執行空間卷積;

一個 1*1 卷積的映射層,它將前一層的輸出通道映射到較低維度。

殘差 PEP 宏架構的使用可以顯著降低架構和計算上的複雜度,同時還能保證模型的表徵能力。

全連接注意力宏架構

YOLO Nano 第二個值得注意的模塊是,通過機器驅動設計的探索過程,研究者在神經網絡引入了輕量級的全連接注意力(FCA)模塊。FCA 宏架構由兩個全連接層組成,它們可以學習通道之間的動態、非線性內部依賴關係,並通過通道級的乘法重新加權通道的重要性。

FCA 的使用有助於基於全局信息關注更加具有信息量的特徵,因爲它再校準了一遍動態特徵。這可以更有效利用神經網絡的能力,即在有限參數量下儘可能表達重要信息。因此,該模塊可以在修剪模型架構、降低模型複雜度、增加模型表徵力之間做更好的權衡。

宏架構和微架構的異質性

對於第三點,YOLO Nano 不僅在宏架構(PEP 模塊、EP 模塊、FCA 以及各個 3×3 和 1×1 卷積層的多樣化組合)方面存在高度異質性,同樣在獨立特徵表徵模塊和層級這些微架構之間也會存在異質性。

YOLO Nano 架構具有高度異質性的優勢在於,它可以使網絡架構的每個模塊都經過特定的設計,從而在模型架構、計算複雜度和表徵能力之間實現更優的權衡。YOLO Nano 這種架構多樣性還展示了機器驅動設計探索策略和生成式組合一樣靈活,因爲人類設計者或其它設計探索方法無法在如此細粒度的層級上自定義架構。

實驗效果

爲了研究 YOLO Nano 在嵌入式目標檢測上的性能,研究者在 PASCAL VOC 數據集上檢測了模型大小、目標檢測準確率、計算成本三大指標。爲了體現對比,流行的 Tiny YOLOv2 和 Tiny YOLOv3 網絡會作爲基線模型。

如下表 1 展示了 YOLO Nano 、Tiny YOLOv2 和 Tiny YOLOv3 的模型大小與準確率。

在這裏插入圖片描述

表 1:緊湊網絡在 VOC 2007 測試集上的目標檢測準確率結果,輸入圖像大小爲 416*416,最優結果用加粗展示。

最後,爲了探索 YOLO Nano 在現實世界中的性能,尤其是在邊緣設備中的表現,研究者在 Jetson AGX Xavier 嵌入式模塊測試了 YOLO Nano 的推斷速度與能源效率。在 15W 和 30W 能源預算下,YOLO Nano 分別能實現∼26.9 FPS 和 ∼48.2 的推斷速度。

這些實驗都表明這篇論文提出來的 YOLO Nano 網絡在準確率、模型大小和計算複雜度上提供了非常好的權衡,這種優勢主要是通過人機協作的設計策略獲得的,而且 YOLO Nano 在這種優勢下也非常適合邊緣和移動設備。

參考:
https://mp.weixin.qq.com/s/I-pBXgxG_nvWXnKTs78j8w

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