符惠桐,王鵬,李曉艷,呂志剛,邸若海
(西安工業大學電子信息工程學院,710021,西安)
目標識別的主要研究內容是從海量圖像中高效、準確地定位和識別預定義的特殊目標[1]。深度學習強大的表征能力和建模能力在很大程度上克服了復雜環境、光照變換、物體形變等對識別結果的影響[2-3]。在多種領域,傳統的人力活動將被智能化、無人化的智能設備所取代[4]。此外,在實際生活中,可見光圖像大多受到光線、遮擋或者背景復雜等因素的影響,目標識別精度降低[5-6],而且人們也無法攜帶大型設備來支撐基于深度學習的目標檢測算法,將輕量化的目標檢測模型植入嵌入式設備才更接近于實際生活的使用要求[7]。目前,大多數的目標檢測算法需要GPU的加速支持才能在短時間內訓練完成深度學習算法,達到實時檢測的效果[8]。
隨著計算機硬件水平的發展,計算機的算力資源得到極大提升,基于深度學習的目標識別算法發展也日新月異。2017年,Howard等提出了輕量級骨干網絡MobileNets,引入深度可分離卷積模塊,減少了大量的卷積運算與浮點運算[9],但網絡本身參數少,提取特征能力不足,識別精度較低。2019年,Lee等基于VoVNetV2骨干網絡提出了一種輕量化的無錨點目標檢測實時算法CenterMask-Lite[10],對骨干網絡進行優化,緩解通道信息丟失問題,在COCO數據集[11]上均值平均精度(mAP)達到40.7%,但需要類似于RTX 2080Ti顯卡的算力支持。同年,Google公司的Tan等提出了可擴展的目標識別模型EfficientDet,基于神經網絡架構搜索技術提出了多種規模模型以適應不同平臺[12],但存在小規模模型精確度不足、大規模模型訓練困難的問題。2020年,Han等提出了新的輕量化網絡GhostNet,利用線性變化生成更多的特征圖,以很小的代價從原始特征中挖掘更多特征信息,在效率以及準確率方面都優于最新的輕量化網絡[13]。同年,Bochkovskiy等匯集主流的優化技巧和更復雜的網絡架構設計出YOLOv4,可以在單顯卡上進行快速、精準的訓練與檢測,是一個實用性極強的目標檢測算法[14],但模型參數量依然很多,模型體積很大。圖1展示了目前主流算法在COCO數據集上檢測的準確率與檢測速度,算法運行環境均為Nvidia RTX 2080Ti顯卡,藍色區域表示檢測速度高于25幀/s,可以看出,很難有算法可同時滿足高檢測速度和高檢測精度的需求。

圖1 部分主流目標檢測算法性能
針對現有的輕量化模型無法兼顧檢測速度和檢測精度的問題,本文選取目前主流的目標識別算法YOLOv4進行模型輕量化,通過融入多個空間金字塔池化(SPP)模塊優化模型性能,并且利用輕量化Ghost卷積模塊結合通道剪枝極限壓縮的方法,對模型進行高效的壓縮與加速,獲得精度高、體積小、效率高的目標識別模型,從而適合部署于資源有限的嵌入式平臺上。
YOLOv4[14]目標識別算法兼顧了檢測效率和準確率,是一種實時高效的一階段目標識別算法。YOLOv4算法在原有的YOLO框架之上,對特征提取骨干網絡、用于特征融合的頸部網絡以及進行分類回歸的預測頭輸出進行了優化,集成了近年來深度卷積神經網絡中優秀的算法和模型。骨干網絡在YOLOv3原有的Darknet53基礎之上,結合交叉階段部分連接(CSP)[15]設計出CSPDarknet53特征提取網絡,新的骨干網絡在減少計算復雜度的同時,保證了網絡的識別效果;頸部網絡在原有的特征金字塔[16]基礎上,結合路徑聚合網絡[17]的思想,引入SPP[18],SPP模塊有效增大了網絡的感受野,將局部特征與全局特征進行融合,提升了檢測器性能,路徑聚合的連接方式有利于特征信息更好地從下向上傳遞,有效改善了深層網絡丟失淺層特征信息的問題;預測頭結構沒有變化,對損失函數及非極大值抑制算法(NMS)進行了優化。采用CIOU-Loss損失函數,綜合考慮目標框重疊面積(即交并比IoU)、中心點距離、長寬比的各項損失,使預測框的回歸速度與精度均達到最優。非極大值抑制算法采用DIOU-NMS,綜合考慮重合邊界框的IOU和距離信息,有效提升了重疊目標的檢測性能。YOLOv4的算法框架如圖2所示。圖中:CBL和CBM模塊是在卷積層(Conv)后融入批處理歸一化(BN)[19]操作以及采用Leaky relu、Mish激活函數的卷積模塊;拼接操作表示對相同尺寸的特征圖進行特征通道的拼接;特征相加表示對具有相同尺寸的特征圖進行相加。

圖2 YOLOv4算法框架
為壓縮YOLOv4模型體積,本文提出了一種采用Ghost模塊的YOLO目標識別算法GS-YOLO。首先基于Ghost模塊重構目標識別模型;其次融入多個空間金字塔池化模塊,在不同尺度上進行特征信息的融合;然后采用通道剪枝極限壓縮的方法壓縮識別模型;最后利用微調的方法恢復識別精度,從而獲得高精度、體積小、運行效率高的輕量化目標識別模型。
GS-YOLO算法整體流程如圖3所示。首先,建立初始目標檢測網絡模型G-YOLO。采用Ghost卷積模塊完成卷積操作,以簡單的線性映射生成Ghost特征圖,在保證通道數不變的情況下,減少網絡參數和浮點型運算,縮減模型體積,提升計算速度。在模型中融入多個SPP模塊,在不同的尺度將不同感受野尺寸的特征信息進行融合,豐富特征圖信息,從而有效提升檢測器的檢測精度,完成G-YOLO模型的建立。然后,利用通道剪枝極限壓縮方法剔除冗余參數,得到緊湊的GS-YOLO模型。基于通道稀疏化的方式訓練初始模型G-YOLO有助于通道剪枝時區分重要信道與非重要信道。利用通道裁剪操作,去除小尺度因子的非重要通道,減小網絡模型體積與運算量、防止網絡模型過擬合。最后,對剪枝模型進行微調,在保證檢測速度的同時,提升模型壓縮后目標識別的檢測精度。

圖3 GS-YOLO算法流程
Han等發現,特征中的冗余是卷積神經網絡成功應用到圖像領域的重要原因,因此提出Ghost輕量化卷積模塊[13]。在進行卷積運算時:輸入數據為X∈Rc×h×w,其中c為輸入的通道數,h和w為輸入數據的長和寬;卷積核f∈Rc×k×k×n,其中k為卷積核尺寸,n為卷積核數量。通過標準卷積公式得到特征圖,公式為
Y=X*f+b
(1)
式中:*為卷積操作;b為偏置項;Y∈Rh′×w′×n為輸出特征圖,h′與w′為輸出特征的長和寬。標準的卷積操作中浮點型運算量為n×h′×w′×c×k×k,卷積操作如圖4a所示,其中包含著大量相似的冗余特征。在Ghost模塊中,采用更廉價的線性操作完成冗余特征的生成,減少大量的卷積運算。Ghost模塊首先利用標準卷積生成m層通道的本源特征Y′,Y′∈Rh′×w′×m,m為本源特征通道數且m≤n。然后,基于Y′利用簡單的線性變化得到幻影特征
(2)


(a)標準卷積
(3)
若d×d與k×k相同,且s?c,則理論上速度提升為原來的s倍。在整個YOLOv4的網絡中,本文替換所有的傳統卷積模塊為Ghost卷積模塊。


圖5 SPP模塊
輸入的特征圖通過3個不同尺度的內核做最大池化操作,再通過拼接操作將得到的特征圖進行拼接。最終,輸出特征圖的特征通道數為輸入特征圖通道數的4倍。輸出特征圖尺寸為

(4)

最大池化操作可以有效地保留特征,SPP模塊相對于固定內核尺寸的最大池化操作擴大了感受野,通過不同尺寸的內核得到了全局特征和局部特征,并進行了特征融合,豐富了特征信息,從而提升了檢測性能。
本文綜合考慮引入參數以及SPP模塊的實際應用,在頸部網絡末端融入多個SPP模塊。考慮到參數影響,采用YOLOv4中各個內核尺寸,即13×13、9×9、5×5。此外,將SPP模塊后一個卷積層的卷積核尺寸由3×3修改為1×1,減少模型參數量。SPP模塊引入位置如圖6所示。引入多個SPP模塊后的YOLOv4模型稱為YOLOv4-3SPP。

圖6 SPP模塊引入位置
通道剪枝需要刪除對應通道的所有輸入與輸出連接,Liu等從通道剪枝的角度出發,提出了基于通道剪枝的網絡瘦身方法[20],通道稀疏化訓練可以幫助通道剪枝操作區分重要通道與非重要通道[21]。圖7是通道稀疏化訓練及剪枝,第i個卷積層每一個通道分配一個尺度因子γ,以γ的絕對值作為評價該通道重要性的依據。經過稀疏化訓練后,尺度因子γ的分布向0靠近,通過設定閾值剪切掉這些通道及連接,進而減少計算量和模型大小。

圖7 通道稀疏化訓練及剪枝
在YOLOv4中,除預測頭結構外,每一個卷積層后均有BN層。若yin和yout表示BN層的輸入和輸出,則BN層的轉換為
(5)
式中:μ和σ2為小批次輸入特征圖的均值和方差;β為偏置;ε為極小因子,防止分母為0。在訓練時,通過L1正則項對γ進行稀疏化訓練,稀疏化訓練的損失函數為
(6)


實驗的測試環境為Ubuntu 16.04操作系統。利用Pytorch和Darknet深度學習框架實現GS-YOLO目標識別算法。服務器硬件配置為Nvidia GTX1060顯卡、Intel Core i7處理器;性能驗證嵌入式平臺采用Nvidia Jetson TX2移動開發板。
根據實際應用的需求,本文著重對人、車輛、飛機等目標進行識別。因為研究背景特殊,目前沒有公開數據集,故首先進行數據集收集制作。數據集圖像主要來源于:內部資料、Imagenet數據集、標準COCO數據集、網絡資源下載、影視資源截圖等。
通過裁剪、旋轉、增加噪聲等方法對搜集的數據集進行增強,最終獲得30 704張數據樣本,包含人、車輛、飛機的樣本各20 429、9 877、3 972張。按照YOLO算法所需的格式進行人工數據標注,圖像樣本如圖8所示。

圖8 部分數據樣本
基于YOLOv4融入多個SPP模塊得到YOLOv4-3SPP模型。在此基礎上,基于Ghost模塊重構得到YOLOv4-3SPP-Ghost(即G-YOLO)模型。基于Ghost模塊重構YOLOv4-Tiny得到YOLOv4-Tiny-Ghost模型。表1針對這些模型的浮點型運算量、模型體積、預測精度以及在GTX 1060和TX2平臺上的預測時間進行了對比。本文中所有實驗模型的圖像輸入尺寸為608×608像素。
從表1可以清晰地看出,YOLOv4-3SPP模型雖然SPP模塊數量增加,但相較于YOLOv4模型浮點型運算量、模型體積以及在相同平臺上的預測時間均有所降低,精確度提高1.16%。將傳統卷積模塊替換為輕量化的Ghost模塊后,YOLOv4-3SPP-Ghost模型的運算量減少至YOLOv4模型的48.88%,模型體積壓縮至47.35%,速度在GTX 1060和TX2上分別提升1.4倍和1.6倍,精度提升0.47%。相較于傳統的YOLOv4-Tiny模型,YOLOv4-Tiny-Ghost的效率在GTX 1060和TX2上分別提升1.4倍、1.6倍,且在TX2開發板上達到了19幀/s的檢測速度,精度僅下降1.43%。

表1 改進YOLOv4模型對比
表1表明,本小節基于YOLOv4所改進的YOLOv4-3SPP-Ghost模型相較于傳統的YOLOv4模型參數更少,識別精度更高。由此證明:在頸部不同尺度融入多個優化后的SPP模塊可以有效提升目標檢測模型精度,對模型的預測效率也有略微提升;采用Ghost模塊進行模型輕量化操作后,模型的體積、運算量得到有效壓縮,并且預測時間也有效降低。
設置不同的懲罰項α對YOLOv4-3SPP-Ghost進行稀疏化訓練,訓練過程中的損失以及經過稀疏化訓練后的均值平均精度如圖9所示。

(a)訓練損失
由圖9可以看出,針對YOLOv4-3SPP-Ghost模型以及數據集,當α=0.000 1時,訓練100次,平均檢測精度以及訓練損失分別達到最佳和最低。因此,本文稀疏化訓練選取α=0.000 1。
當α=0.000 1時,100次稀疏化訓練的過程如圖10所示,可以看出,不同通道的尺度因子均向0靠近,可有效地進行通道裁剪。

圖10 稀疏化過程中尺度因子分布情況
為了驗證模型裁剪的有效性,本文對模型YOLOv4-3SPP-Ghost進行裁剪,裁剪率分別為0.5、0.8以及0.9,用YOLOv4-3SPP-Ghost-0.5、YOLOv4-3SPP-Ghost-0.8、YOLOv4-3SPP-Ghost-0.9表示。不同裁剪率模型的性能對比如表2所示。

表2 不同裁剪率模型性能對比
由表2可以看出,隨著裁剪比例的提升,模型體積、浮點型運算量及預測時間均在降低,在平臺GTX 1060均達到實時檢測。YOLOv4-3SPP-Ghost-0.8模型的浮點型運算量壓縮至YOLOv4模型的8.2%,體積壓縮至4%,檢測速度在GTX 1060和TX2平臺上分別提高2.9倍和2.7倍。實驗結果證明,模型通道裁剪在保證精確度的基礎上,可有效地壓縮體積和浮點型運算量,提升算法的檢測速度,壓縮后的模型體積與預測速度均優于傳統YOLOv4模型。YOLOv4-3SPP-Ghost-0.8模型部分識別結果如圖11所示。

圖11 YOLOv4-3SPP-Ghost-0.8模型部分識別結果
針對現有的輕量化模型無法兼顧檢測速度和檢測精度的問題,本文提出了一種基于Ghost模塊的YOLO目標識別算法GS-YOLO。該算法通過增加SPP模塊優化網絡模型,重新設計了SPP模塊的引入位置,在減少模型浮點型計算量的同時,提升基礎網絡的檢測精度與檢測速度。利用高效輕量化模塊替換結合通道剪枝極限壓縮的方法,在保證精度的同時,有效壓縮了模型體積和運算量,減少了模型占有的內存資源,提升了模型的運行效率。其中:采用輕量化Ghost卷積模塊重構目標識別模型,減少卷積操作,提升算法的檢測速率;采用通道剪枝極限壓縮方法裁剪模型并對模型進行微調,在保證精確度的基礎上,進一步減少參數量、運算量并壓縮模型體積,提升檢測速度。但是,本文只考慮了降低參數量,并未考慮不同硬件平臺的特點,后期可以針對不同的平臺設計不同的模型,對擴展模型的泛化能力進行進一步研究。
實驗結果證明,本文提出的方法有效地對YOLOv4模型進行了壓縮,相較于傳統的YOLOv4模型有更小的體積和更快的檢測速度,對算力低、內存少的嵌入式平臺友好。此外,本文所提方案不僅可以對YOLOv4模型進行高效的壓縮與加速,基于卷積層和BN層所設計的卷積神經網絡模型都可參照本文方案進行卷積操作的替換以及通道裁剪,為深度學習算法部署在資源有限的嵌入式平臺上提供理論支撐。