蒲 亮,石 毅
(華中光電技術研究所-武漢光電國家研究中心,武漢 430223)
隨著現代戰爭對無人化和智能化需求的增加,基于深度神經網絡的人工智能技術在目標檢測和目標跟蹤等領域得到了廣泛的應用[1-2]。但是,隨著深度學習模型越來越復雜,參數和層數越來越多,巨大的存儲成本和計算成本嚴重阻礙了深度學習模型在嵌入式設備上的部署[3-4]。因而,對網絡模型的壓縮裁剪是完成卷積神經網絡模型部署的重要步驟之一[5-6]。
模型壓縮剪枝一般分為結構化剪枝和非結構化剪枝2 種[7-9]。在結構化剪枝中,通過對BN 層的縮放因子施加L1 范數正則化訓練后,使通道對應的縮放因子產生稀疏化,裁剪符合條件的通道來達到模型壓縮,取得一定成效[10-11]。為了進一步提高模型在嵌入式設備上的運行速度,需要開展更加深入的神經網絡模型壓縮裁剪技術的研究。本文通過新的優化策略-加速近端梯度(APG)、輕量級網絡設計、非結構化剪枝和神經網絡結構搜索(NAS)等手段相結合,實現對目標分類和目標檢測等常見卷積神經網絡模型的壓縮剪枝,并將壓縮剪枝后模型的推斷過程在嵌入式架構中實現,為深度學習技術在邊緣端設備平臺上的實現奠定了基礎。
本文采用神經網絡結構搜索(NAS)技術,基于數據和任務驅動的輕量級網絡設計,首先訓練出一個精度不低但相比常規CNN 參數量和計算量都較小的模型。將NAS 直接應用于具有可變化channel數和層尺寸的網絡,通過最小化剪枝后網絡的損失來學習channel 的數量,如圖1所示。這種剪枝方法包括3 個階段:

圖1 傳統剪枝范式和基于TAS 的剪枝范式Fig.1 Traditional pruning paradigm and TAS-based pruning paradigm
(1)用標準分類訓練程序訓練未剪枝的大型網絡;
(2)通過可變換結構搜索(transformable architecture search,TAS)搜索小型網絡的深度和寬度,TAS 的目標是尋找一個網絡的最佳規模;
(3)利用簡單的知識蒸餾(knowledge distillation)方法,將未剪枝網絡中的信息遷移到搜索到的小型網絡中。
在完成NAS 剪枝與輕量化模型設計后,以該模型為baseline,為網絡中每一個group/block/channel等level(層級)的結構都賦予一個對應衡量其重要性的參數因子(或為方便直接采用BN 層中的縮放因子),并對這些參數因子施加L1 范數正則化,同時采用加速近端梯度(APG)優化算法,進行稀疏化訓練。即是在網絡的每個通道輸出上、每個殘差結構卷積分支上以及一些group 卷積的非identity group 的輸出上乘以一個縮放因子。
由于L1 范數不可微,本文采用更好的針對L1范數正則化的近端梯度優化方法,該優化算法的解形式是軟閾值函數。根據推導過程發現,要想使用該方法,要進行兩次網絡前傳,代價太大。因此,可采用APG(accelerated proximal gradient)算法。其實,APG 算法只不過比牛頓動量優化算法多出一個投影函數(這個投影函數就是軟閾值函數),只需要在牛頓動量算法的優化器中對縮放因子施加軟閾值函數即可,軟閾值函數的兩個參數是學習率和對應縮放因子值。
目標函數為
使用APG 算法更新λ,求解過程為
其中,g(λ)表示為
作進一步的變換:
BN(batch normalization)層的計算公式為
BN 層的作用是解決訓練過程中的內部協變偏移。根據式(12),該操作會將卷積的輸出值減去一個均值再除以一個標準差,后面再做一個仿射變換,而且縮放因子γ 和偏移β 都是可學習參數,這樣既能防止卷積的輸出值變化過大(導致不易收斂),同時又不會將學到的信息完全去除掉。
在CNN 中,卷積層的每一個通道對應著一個縮放因子γ 和偏移β,如果縮放因子γ 很小的話,那么這個通道可以略去,對神經網絡的最終輸出結果影響不會很大。就是說,γ 可以衡量每個通道的重要性,如果對這個γ 進行優化更新時采用L1 正則化,可以讓其產生稀疏解。
總的損失函數如下,第二項即為正則化項:
L1 范數和L2 范數正則化。在模型的訓練中,為了防止過擬合,一般都會添加正則化項。由于L2 范數是可微的,所以大多數模型訓練都是采用L2 范數正則化,能得到比較平滑的解。
如圖2所示,基線模型訓練好之后,會產生一些接近0 的縮放因子,這時就可以把與這些接近0的縮放因子對應的通道直接去掉,同時與該通道對應和相連的卷積核都去掉,就得到了剪枝后的模型。

圖2 基于BN 層的剪枝范式Fig.2 BN-based pruning paradigm
本文系統由訓練數據庫、稀疏訓練模塊和剪枝模塊組成,其中,訓練數據庫存儲于上位機可訪問的存儲器上,稀疏訓練模塊和剪枝模塊運行在多GPU并行計算服務器上,目標檢測模型運行在FPGA 等邊緣端硬件上。如圖3所示。

圖3 系統組成Fig.3 Components of the experimental system
本文神經網絡模型的稀疏化訓練和模型的壓縮剪枝流程如圖4所示,主要可以分5 步:

圖4 算法流程Fig.4 Algorithm flow chart of the proposed method
(1)采用神經網絡結構搜索(NAS)技術、基于數據和任務驅動的輕量級網絡設計,首先訓練出一個精度不低但相比常規CNN 參數量和計算量都較小的模型;
(2)以步驟(1)中的模型為baseline,為網絡中每一個group/block/channel 等level(層級)的結構都賦予一個對應衡量其重要性的參數因子(或為方便直接采用BN 層中的縮放因子),并對這些參數因子施加L1 范數正則化,同時采用加速近端梯度(APG)優化算法,進行稀疏化訓練;
(3)對于稀疏化訓練完的模型,將模型中那些接近0 的參數因子對應的channel/group/block 進行裁剪;
(4)再微調剪枝后的模型,使其恢復性能;
(5)模型微調后如果能回到baseline 的精度或下降在5%以內,則返回到步驟(2),進行下一輪模型壓縮剪枝,否則結束該程序。
本文目標分類數據集有cifar、ImageNet,目標檢測數據集有voc、coco 等。ImageNet 有超過1000 萬張圖片,一般使用經過“修剪”后的1000 個非重疊類的列表。目標分類常用Top-1 Accuracy 和Top-5 Accuracy 來評價模型的好壞。PASCAL VOC2007 和2012 數據集總共分4 個大類,總共20 個小類。目標檢測模型的優劣則一般使用mAP(平均精確率均值)這個指標來進行評價。
(1)上位機平臺
上位機網絡模型的訓練需要利用大量數據樣本進行迭代運算,計算量巨大,故在配備了10 個計算GPU 的并行計算工作站上進行,其配置如下:
CPU:2×Intel Xeon E5-2683 V3 2.0G;
GPU:10×NVIDIA GeForce1080ti;
內存:512 G(32 G×16)DDR4 2400 RegECC(最大支持1.5 T);
硬盤:8×2 T SSD;
顯示器:27.9 英寸4 K;
網路:Intel I350 雙千兆網口+1×千兆管理網絡接口;
電源:2000 W 80PLUS 2+2 高效冗余電源。
(2)嵌入式平臺
神經網絡模型的代碼在嵌入式平臺上運行,主要包括:
①智能圖像處理SOC 平臺ARM 部件
Cortex-A53 4 核處理器;
典型工作頻率1.5 GHz;
A53 每個核中都包含32 KB 的指令cache 和32 KB 的數據cache,L2Cache 大小均為512 KB。
②智能SOC 硬件平臺
FPGA SOC:Xilinx XCZU9EG;
內存:4 G 64 bit DDR4;
閃存:32 G。
在上位機上,輸入已有目標檢測神經網絡模型結構文件和訓練數據集,進行稀疏訓練和模型剪枝,運行結果如圖5所示。對比壓縮剪枝后和壓縮剪枝前的模型準確率、參數量和計算量壓縮率,壓縮剪枝前的模型準確率為80.49%,模型參數文件大小為43.7 MB,計算量BFLOPS 為6.915。壓縮剪枝后模型準確率為80.55%,模型參數文件大小為3.9 MB,計算量BFLOPS 為1.105。壓縮剪枝后模型準確率提高0.06%,參數量下降91.1%,計算量下降84.0%。通過本文提出的壓縮剪枝算法,在參數量和計算量大幅下降的同時準確率與壓縮前模型保持相同水平。

圖5 基于嵌入式硬件平臺剪枝后的目標檢測模型運行結果Fig.5 Experimental results of the target detection model with our proposed method,which was based on embedded hardware platform
進一步,將壓縮剪枝后的模型部署在嵌入式硬件平臺中,用壓縮后的模型進行前向推理。統計模型運行時間,發現除去圖像預處理時間,單幀圖像處理時間(CNN 主干網絡處理時間與網絡后處理時間之和)最大值小于40 ms,處理速度達到25 幀以上。
本文通過研究基于BN 層的結構化剪枝、基于加速近端梯度(APG)優化的一般化結構化剪枝、基于數據和任務驅動的輕量級網絡設計以及基于神經網絡結構搜索(NAS)剪枝等關鍵算法技術,完成了對目標分類和目標檢測等常見卷積神經網絡模型的壓縮剪枝,實驗表明壓縮剪枝后模型準確率不變,參數量下降91.1%,計算量下降84.0%。最后將壓縮剪枝后模型的推斷過程在嵌入式架構中實現,為深度學習在邊緣端設備平臺上的實現奠定了基礎。