比Tiny YOLOv3小8倍,性能提升11個點,4MB的網絡也能做目標檢測

2020-12-23 機器之心Pro

選自arXiv

作者:Alexander Wong等

機器之心編譯

在本文中,來自滑鐵盧大學與 Darwin AI 的研究者提出了名為 YOLO Nano 的網絡,他們通過人與機器協同設計模型架構大大提升了性能。YOLO Nano 大小只有 4.0MB 左右,比 Tiny YOLOv2 和 Tiny YOLOv3 分別小了 15.1 倍和 8.3 倍,性能卻有較為顯著的提升。

連結:https://arxiv.org/abs/1910.01271

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

本文便是這些研究中的一個,研究者提出了名為 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 在這種優勢下也非常適合邊緣和行動裝置。

相關焦點

  • 1.8M超輕量目標檢測模型NanoDet,比YOLO跑得快,上線兩天Star量超200
    模型性能目前開源的 NanoDet-m 模型在 320x320 輸入解析度的情況下,整個模型的 Flops 只有 0.72B,而 yolov4-tiny 則有 6.96B,小了將近十倍。模型的參數量也只有 0.95M,權重文件在使用 ncnn optimize 進行 16 位存儲之後,只有 1.8mb。
  • 1.8M超輕量目標檢測模型NanoDet,比YOLO快,上線兩天Star量超200
    在這種設置下,320 解析度輸入能夠達到 20.6 的 mAP,比 tiny-yolov3 高 4 分,只比 yolov4-tiny 低 1 個百分點。在將輸入解析度與 YOLO 保持一致,都使用 416 輸入的情況下,NanoDet 與 yolov4-tiny 得分持平。
  • 【源頭活水】YOLO之外的另一選擇,手機端97FPS的Anchor-Free目標檢測模型NanoDet現已開源~
    地址:https://www.zhihu.com/people/lu-cheng-qi-85華為P30上用NCNN移植跑benchmark,每幀僅需10.23毫秒,比yolov4-tiny快3倍,參數量小6倍,COCO mAP(0.5:0.95)能夠達到20.6 。
  • YOLOv3——這可能是目前最好強的目標檢測算法
    的出現可以說是一舉擊敗SSD成為目前開源通用目標檢測算法的領頭羊。   以下兩圖分別是現在領先的一些關於目標檢測領域算法的精準度與相應時間的圖表和在COCO數據集上的各算法的性能表現(均來自darknet官網)
  • 137% YOLOv3加速、10倍搜索性能提升!這樣的驚喜,最新版PaddleSlim...
    與2019年第一季度初次發布相比,PaddleSlim在易用性、模型適配、端側部署、性能提升等方面都有了顯著提升。最核心的體現,在於以下的十個特性。在目標檢測任務中,可以在不降低模型精度的情況下,進行大比例的剪枝,個別任務剪枝後精度反而有所提升。
  • mmdetection最小復刻版(二):RetinaNet和YoloV3分析
    說到這兩個算法,我想做目標檢測的沒有不熟悉的,知乎分析文章不下20篇,所以我這裡寫的都是我認為的核心部分,不會重頭解讀。frozen_stages    大部分目標檢測算法的骨架都是resnet,而在mmdetection中通常都會採用frozen_stages參數固定前n個stage的權重。
  • 目標檢測領域最優!百度大腦一舉獲得 ECCV 2020 兩項冠軍
    一、 COCO Object DetectionCOCO數據集中囊括11萬訓練數據、80個類別,百度團隊基於PaddleDetection,在此次目標檢測和實例分割任務中通過3種方法進行優化:強大的目標檢測效果;加強版FPN模塊和加強版header;Two pipeline策略。
  • 百度AI獲ECCV 2020 挑戰賽「雙冠王」目標檢測技術領先國際
    一、 COCO Object Detection  COCO數據集中囊括11萬訓練數據、80個類別,百度團隊基於PaddleDetection,在此次目標檢測和實例分割任務中通過3種方法進行優化:強大的目標檢測效果;加強版FPN模塊和加強版header;Twopipeline策略。
  • 目標檢測和感受野的總結和想法
    Faster R-CNN, YOLOv3等都用到了Anchor, 怎麼設計Anchor每個目標檢測方法各不相同。這是感受野的一個性質,不過好在大多數現代的網絡設計是對齊的,對很多計算機視覺任務來說,都需要對其輸出特徵,包括目標檢測、語義分割、邊緣檢測、著色等。在網絡對齊時候,所有不同路徑都會導致感受野的中心是重合的,所以不同路徑必須保持相同的stride。這一點可以觀察Inception系列的網絡,兩條路的Stride是不可能不同的。
  • 史上最詳細的Yolov3邊框預測分析
    分配上,在最小的13*13特徵圖上由於其感受野最大故應用最大的anchor box (116x90),(156x198),(373x326),(這幾個坐標是針對416*416下的,當然要除以32把尺度縮放到13*13下),適合檢測較大的目標。中等的26*26特徵圖上由於其具有中等感受野故應用中等的anchor box (30x61),(62x45),(59x119),適合檢測中等大小的目標。
  • 脈衝神經網絡在目標檢測的首次嘗試,性能堪比CNN|AAAI 2020
    DNN-to-SNN是近期廣泛的SNN訓練方法,該方法將目標DNN轉化成SNN的中間DNN網絡進行訓練,然後轉成SNN並復用其訓練的參數,在小數據集分類上能達到不錯的性能,但是在大數據集上分類結果不太理想。
  • 數據科學工具包:手把手用YOLO做目標檢測
    基於 YouTube-8M 數據集的籃球場球員移動檢測              這一次,我將向你展示如何快速地、以相對較低的代價和不那麼強大的機器創建目標檢測模型,這個模型能夠檢測任何你選擇的對象。如果你需要在工作中快速測試你的想法,或者只是有一小段時間建立在家構建你的項目,這是一個很好的方法。去年,我有機會進行了幾個這樣的實驗,本文中出現的所有可視化結果都是出自這些項目。              注意:這一次,我們將主要使用開源庫和工具,因此我們網站上的編碼量將是最小的。
  • 目標檢測的性能評價指標
    不同數據集的某類別的AP計算方法大同小異,主要分為三種:(1)在VOC2010以前,只需要選取當Recall >= 0, 0.1, 0.2, ..., 1共11個點時的Precision最大值,然後AP就是這11個Precision的平均值,map就是所有類別AP值的平均。
  • 目標檢測入門開篇:YOLOv3快速訓練高速路段車輛數據
    # -*- coding: utf-8 -*-import osimport ioimport argparseimport configparserimport numpy as npfrom keras import backend as Kfrom keras.layers import (Conv2D, Input
  • 深度學習檢測小目標常用方法
    不過在這幾年的發展中,也湧現了一些提高小目標檢測性能的解決手段,本文對這些手段做一個分析、整理和總結。歡迎探討,本文持續維護。簡單粗暴又可靠的Data Augmentation深度學習的效果在某種意義上是靠大量數據餵出來的,小目標檢測的性能同樣也可以通過增加訓練集中小目標樣本的種類和數量來提升。
  • 基於YoloV3衛星圖像的儲油罐容積佔用率研究
    單神經網絡模型(即分類和定位任務都將從同一個模型中執行):以一張照片作為輸入,直接預測每個邊界框的邊界框和類標籤,這意味著它只看一次圖像。由於它對整個圖像而不是圖像的一部分執行卷積,因此它產生的背景錯誤非常少。YOLO學習對象的一般化表示。在對自然圖像進行訓練和藝術品測試時,YOLO的性能遠遠超過DPM和R-CNN等頂級檢測方法。
  • 深度學習閱讀導航 | 03 FPN:基於特徵金字塔網絡的目標檢測
    摘要特徵金字塔是目標檢測任務的基本組成部分,用於檢測不同尺度的目標。但最近的深度學習目標檢測器避免使用金字塔表示法,部分原因是它們需要大量計算和存儲。在本文中,作者探索利用深層卷積網絡固有的多尺度、層次結構來構建特徵金字塔,它的好處是只會帶來極小的額外消耗。
  • 嵌入式快訊:M1808 AI 核心板和基於Transformer的車道線檢測網絡
    嵌入式快訊:M1808 AI 核心板和基於Transformer的車道線檢測網絡 RTThread物聯網操作 發表於 2020-12-21 11:06:11 導讀:
  • 從零開始PyTorch項目:YOLO v3目標檢測實現
    該教程一共有五個部分,本文包含其中的前三部分。在過去幾個月中,我一直在實驗室中研究提升目標檢測的方法。在這之中我獲得的最大啟發就是意識到:學習目標檢測的最佳方法就是自己動手實現這些算法,而這正是本教程引導你去做的。