楊玉敏 廖育榮 林存寶 倪淑燕 吳止鍰
(1.航天工程大學研究生院 北京 101400)(2.航天工程大學電子與光學工程系 北京 101400)(3.洛陽電子裝備試驗中心 洛陽 471000)
隨著近年來卷積神經網絡(Convolutional Neu?ral Networks,CNN)在計算機視覺領域的廣泛應用,基于CNN的目標檢測算法得到了迅猛發展。Gir?shick等于2014年提出了R-CNN(Regions with Con?volutional Neural Network)[1]算法,首次基于CNN 框架大幅提高了目標檢測的平均精度均值(Mean Av?erage Precision,mAP)。隨后各種基于CNN的目標檢測算法,包括基于候選區域的R-CNN改進算法Fast R-CNN[2]、Faster R-CNN[3]、Mask R-CNN[4],以及基于回歸方法的YOLO(You Only Look Once)系列[5~7]與 SSD(Single Shot MultiBox Detector)系列[8~11]算法先后被提出,顯著提高了目標檢測算法在檢測精度和實時性方面的性能。
雖然R-CNN、YOLO、SSD系列算法在目標檢測性能方面效果優異,但其普遍具有較高的計算復雜性和較大的模型體積,無法充分滿足計算能力、存儲空間、功耗等資源受限場合的應用需求。為了提高目標檢測算法在嵌入式平臺等資源受限條件下的應用能力,各種輕量化目標檢測算法,包括Light-Head R-CNN[12]、Tiny-YOLO[5]、Tiny-SSD[13]等算法先后發展而來,有效提高了輕量化目標檢測算法的性能水平。本文旨在歸納現有輕量化CNN的基礎上,重點對輕量化目標檢測算法進行系統總結,并結合各算法在PASCAL VOC[14~15]等數據集上的測試結果進行對比分析和發展方向探討。
基于候選區域和回歸方法的目標檢測算法雖然性能優異,但其模型大小和參數量相對較大,通常為百MB大小和百M參數量,且其計算復雜度較高,對于內存空間和計算能力受限的嵌入式系統而言通常難以滿足要求。為了滿足資源受限的嵌入式系統的使用要求,研究人員提出了多種輕量化網絡模型,最具代表性的主要為SqueezeNet、Mo?bileNet和ShuffleNet系列輕量化網絡。
2.1.1 SqueezeNet與SqueezeNext
2016年,Iandola等[16]提出了SqueezeNet輕量化網絡,該網絡借鑒了Inception網絡[17]的設計思想,通過Fire module基本模塊實現SqueezeNet網絡的構建,其Fire module結構如圖1(a)所示。Fire mod?ule中主要包含了Squeeze層和Expand層,其中Squeeze層采用1×1的卷積核來減少參數量,Ex?pand層則采用1×1和3×3卷積核分別得到對應特征圖后進行拼接,由此得到Fire module的輸出。利用卷積層、Fire module和池化層構建的SqueezeNet模型大小只有4.8MB,卻在ImageNet上達到了相比AlexNet略優的57.5%的TOP-1分類精度。2018年,Gholami等[18]基于SqueezeNet提出了改進版的SqueezeNext輕量化網絡,其主要采用了如圖1(b)所示的模塊結構。該結構中采用通道數減半的兩層Squeeze層對輸入進行處理,然后通過3×1和1×3搭配的低秩卷積核進行卷積,之后利用一個卷積層實現數據維度匹配。此外,SqueezeNext借鑒ResNet網絡[19]結構思想實現了shortcut連接,并通過硬件實驗指導網絡設計,其參數量相比SqueezeNet有了明顯降低,但卻實現了高達69.8%的TOP-1分類精度。

圖1 Fire Module與SqueezeNext基本模塊結構
2.1.2 MobileNet v1與MobileNet v2
2017年,Howard等[20]提出了MobileNet v1輕量化網絡,該網絡使用了深度可分離卷積(Depthwise Separable Convolution,DSC)結構代替傳統卷積結構,將傳統卷積結構中N個DK×DK×C卷積核分解為C個DK×DK×1和N個1×1×C卷積核疊加的形式,其結構圖如圖2(a)所示,通過該方法可使卷積操作運算量降低為原有的1/8~1/9。于此同時,通過引入時間因子α和分辨率因子ρ進一步降低模型參數量,最終MobileNet v1參數量約為4.2 M,且在ImageNet數據集上實現了70.6%的TOP-1分類精度。2018年,Mark等[21]在Mobilenet v1的基礎上提出了Mobilenet v2輕量化網絡,該網絡最大的特點是引入了反向殘差和線性瓶頸結構,反向殘差結構如圖2(b)所示,其不同于常規殘差結構“壓縮—卷積—擴張”過程,而是采用“擴張—卷積—壓縮”的反向式操作,充分利用深度可分離卷積可有效降低中間卷積運算計算量的優勢來保證算法性能,且通過去掉ReLU來避免信息損失。MobileNet v2的參數量約為6.9 M,其在ImageNet數據集上實現了74.7%的TOP-1分類精度。

圖2 深度可分離卷積與反向殘差結構
2.1.3 ShuffleNet v1與ShuffleNet v2
2017年,Zhang等[22]提出了ShuffleNet v1輕量化網絡,其基本模塊結構如圖3(a)所示。Shuf?fleNet v1對常規殘差結構進行了改進,將與輸入特征圖相連的第一個1×1卷積層替換為分組卷積,并利用Channel shuffle操作對分組卷積各組輸出結果進行信息交互,以此實現在降低運算量的情況下保證網絡性能,ShuffleNet v1最終在ImageNet數據集上實現了73.7%的TOP-1分類精度。2018年,Ma等[23]在 ShuffleNet v1 的基礎上又提出了 Shuf?fleNet v2輕量化網絡,該網絡的基本模塊結構如圖3(b)所示,其在對輸入特征圖進行處理時首先進行了通道劃分,其中一個分支不采取任何操作,另一個分支經過卷積處理后,與前一個分支拼接后再進行Channel Shuffle操作,以此實現信息交互,最終ShuffleNet v2在ImageNet數據集上實現了74.9%的TOP-1分類精度。

圖3 ShuffleNet v1與ShuffleNet v2基本模塊結構
為了滿足嵌入式系統等資源受限平臺的使用需求,研究人員基于R-CNN、YOLO、SSD等原始算法,結合各種輕量化網絡模型,通過采用巧妙的融合策略與算法改進,提出了一系列兼具目標檢測精度和實時性的輕量化目標檢測算法,其中最具代表性的仍是以R-CNN、YOLO、SSD系列為代表的輕量化目標檢測算法。
2.2.1 輕量化R-CNN系列
2016年,針對R-CNN系列算法實時性不足問題,Hong等[24]基于Faster R-CNN提出了PVANet輕量化目標檢測算法,該算法通過將CReLU(Concate?nated Rectified Linear Units)、Inception與殘差結構相結合,并借鑒HyperNet網絡[25]思想來構建特征提取網絡,在盡量保留Faster R-CNN精度優勢的情況下提高算法實時性,最終在VOC數據集上實現了84.4%的mAP與20.6 FPS的處理速度。2017年,Li等[12]通過分析R-CNN系列算法頭部架構設計復雜導致算法速度較慢的問題,提出了Light-Head R-CNN輕量化目標檢測算法,該算法一方面利用較大核尺寸的可分離卷積生成通道數較少的特征圖,另一方面通過單個較小的全連接層連接于池化層,從而降低算法復雜度,最終在COCO數據集上實現了37.7%的mAP,檢測速度達到了102 FPS。
2.2.2 輕量化YOLO系列
2015年,文獻[5]在提出YOLO v1算法的同時提出了一個輕量化版本Tiny-YOLO v1,該算法將YOLO v1原有的24層卷積結構簡化為9層,在VOC2007數據集上以相比YOLO v1降低10.7%mAP的代價實現了檢測速度的3.4倍提升。在此基礎之上,文獻[6~7]在后續提出YOLO v2和v3的同時也發布了對應的輕量化版本Tiny-YOLO v2和v3,改進的Tiny-YOLO v2和v3算法在降低模型大小的同時也實現了更高的目標檢測mAP。2016年,Wu等[26]受YOLO算法啟發,提出了一種面向自動駕駛目標檢測任務的SqueezeDet輕量化算法,該算法通過改進的SqueezeNet輕量化網絡,利用全卷積結構實現端到端的目標檢測,有效降低了模型大小和參數量,在KITTI數據集上實現了76.7%的mAP。2018年,Pedoeem等[27]針對非GPU工作平臺,基于YOLO系列算法提出了改進的YOLO-LI?TE輕量化目標檢測算法,該算法網絡結構中僅采用了7層卷積層,并針對其淺層網絡結構特點取消了批歸一化處理,使其能夠在非GPU平臺下實現21 FPS的檢測速度,但其mAP指標相對較低。2019年,Wong等[28]采用人機協作設計策略,將骨干網絡人工設計和機器驅動探索設計相結合,以YO?LO系列算法為基礎提出了YOLO Nano輕量化目標檢測算法,該算法在相比Tiny-YOLO v2和v3算法顯著降低模型大小及運算量的同時,將mAP指標提升了10%以上,且在嵌入式平臺下實現了48.2 FPS的目標檢測速度。
2.2.3 輕量化SSD系列
2018年,Zhang等[29]將MobileNet v1網絡與SSD算法相結合,提出了MobileNet-SSD算法,該算法利用MobileNet v1網絡替換了SSD算法原有的VGG-16網絡,并利用DSC替換了傳統卷積,在VOC數據集上實現了72.0%的mAP,并在NanoPi 2嵌入式平臺下實現了1.13 FPS的目標檢測速度。同年,文獻[21]在提出輕量化網絡MobileNet v2的同時,將原有SSD算法中的常規卷積替換為DSC并將其命名為SSDLite,又將MobileNet v2與SSDLite相結合得到了MobileNet v2+SSDLite輕量化目標檢測算法,其在COCO數據集上實現了22.1%的mAP。同年,Womg等[30]受輕量化網絡 SqueezeNet中fire module基本結構和SSD算法中單點探測整體框架啟發,針對目標檢測問題對二者網絡進行特定改進與結合,以此提出了Tiny-SSD輕量化目標檢測算法,在有效降低算法模型大小的基礎上,在VOC數據集上實現了61.3%的mAP。此外,Li等[31]將DSC與DenseNet網絡相結合構造了DDB(Depth?wise Dense Block)模塊,又將深度卷積與特征金字塔網絡(Feature Pyramid Network,FPN)相結合構造了D-FPN模塊,最后分別將DDB和D-FPN作為骨干網絡和前端網絡提出了Tiny-DSOD輕量化目標檢測算法,該算法在VOC數據集上實現了72.1%的mAP,且具有較高的目標檢測速度。
基于PASCAL VOC、COCO、KITTI數據集,表1為各種輕量化算法在其上的測試結果。對于R-CNN系列輕量化目標檢測算法PVANet與Light-Head R-CNN,其依然保持了較高的目標檢測精度,但在嵌入式平臺下的目標檢測速度仍有待研究。對于YOLO系列輕量化目標檢測算法,隨著算法的改進其模型大小在不斷降低,算法精度也在不斷提高,且在嵌入式系統Jetson AGX Xavier上實現了實時目標檢測能力,取得了模型大小、檢測精度、檢測速度的較好平衡。對于SSD系列輕量化目標檢測算法,其模型大小和參數量均已明顯降低,且在GPU平臺105 FPS處理速度下實現了72.1%的mAP,同樣達到了較好的目標檢測水平。

表1 不同輕量化目標檢測算法性能對比
基于卷積神經網絡的目標檢測算法以其優異的性能已成為當前目標檢測任務的主要解決方案,本文在對基于候選區域和回歸方法的典型目標檢測算法概述的基礎上,重點對輕量化網絡模型及其輕量化目標檢測算法進行了系統總結,闡述了其網絡結構和算法特點,并結合各類算法在PASCAL VOC等數據集上的測試結果對其進行了對比分析??傮w而言,性能優異的輕量化目標檢測算法依然明顯依賴于巧妙的輕量化特征提取網絡設計,以及網絡內部高效的信息提取與傳遞機制,此外,多尺度與多樣化的模型訓練方法也是實現算法性能的有效保障,這些方面可作為改進輕量化目標檢測算法性能的研究方向。