楊國威,許志旺,房 臣,王以忠
天津科技大學 電子信息與自動化學院,天津 300222
近年來,目標檢測網絡[1-2]發展非常成熟,其較高的網絡性能得益于模型參數以及深度的成倍增加。正因如此,復雜的網絡模型嚴重限制了目標檢測網絡在手機等資源受限的嵌入式平臺上使用。因此,如何在保證目標檢測網絡性能或者性能降低很少的情況下,減小網絡模型存儲空間,提高網絡推理速度成為目前急需解決的問題。
為解決上述問題,劉勤讓等[3]提出固定閾值剪枝方法,通過剪除小于固定閾值的神經元結構達到降低神經網絡參數的效果,但是容易造成誤剪枝,損失網絡性能。靳麗蕾等[4]提出了混合剪枝方法,通過將權重剪枝和卷積核剪枝相結合剪除網絡中冗余的參數,但是這種方法增大了計算量,實際剪枝操作繁瑣且不能提高網絡模型推理運行速度。BWN(binary-weight-networks)[5]網絡通過將模型的權重參數量化到1 bit以達到壓縮效果,并將權重參數乘以尺度因子,把網絡模型的量化壓縮問題轉變成權重參數優化問題。TWNs(ternary weight networks)[6]提出將網絡模型的權重參數量化到2 bit,量化值范圍取(1,0,-1),這種方法雖然能夠極大地壓縮網絡模型,但是網絡檢測精度損失嚴重。INQ(incremental network quantization)[7]提出將激活值量化成1 bit,不但將乘加操作簡化成位操作,而且減少網絡內存消耗,這種方法雖然加快推理速度,但是二值量化容易損失數據信息,對網絡模型檢測精度影響很大。Vanhoucke等[8]提出了8 bit參數量化的方法,該方法可以在準確率損失極小的同時實現大幅加速,然而此方法對網絡模型的壓縮效果不夠明顯。
綜合上述研究,分別對網絡模型剪枝或者量化容易使網絡性能下降且壓縮效果[9-10]不夠明顯。本文將采用融合動態閾值剪枝和均勻映射量化方法[11]對目標檢測網絡進行壓縮實驗。首先通過網絡模型稀疏化訓練得到縮放因子,根據縮放因子的分布計算卷積層中通道重要性的占比并,以此判斷卷積層對網絡模型貢獻,設置動態閾值將對網絡貢獻小的卷積層剪除,循環計算剪枝的動態閾值實現網絡模型最大程度的剪枝。其次通過均勻映射量化的方式將32位浮點型數據按照量化縮放系數Δ和零點偏移z量化成8位整型數據,減少網絡存儲空間,加快網絡推理速度。通過融合動態閾值剪枝與均勻映射量化的壓縮方法,權衡目標檢測網絡模型復雜度和性能之間的關系,將網絡模型壓縮到合適的大小,以擴展適用范圍。
本文提出的融合動態閾值剪枝和均勻映射量化的目標檢測網絡壓縮方法主要分為兩部分。第一部分為動態閾值剪枝,通過分析網絡結構并進行稀疏化訓練,然后計算縮放因子分布和動態閾值,剪除低于動態閾值的卷積層,并通過知識蒸餾策略迅速恢復網絡性能,循環計算每次剪枝的動態閾值實現網絡模型最大程度的剪枝;第二步為均勻映射量化,計算均勻映射量化的縮放系數Δ和零點偏移量z,通過均勻映射量化方法,將32位高精度參數映射成低比特整型數據進行參數存儲,并通過微調再訓練的方式循環量化操作,確保網絡模型被壓縮到合適大小。圖1為融合動態閾值剪枝與均勻映射量化的網絡壓縮框架示意圖。
對目標檢測網絡模型實施全局閾值剪枝方案,難以把握網絡模型的剪枝比例。剪枝比例設置大,很容易對重要性大的數據信息誤剪枝,損失網絡模型精度且無法恢復;剪枝比例設置過小則無法達到較好的壓縮效果。針對這個問題,本文提出基于動態閾值的剪枝算法,通過計算所有卷積層通道縮放因子分布確定閾值,并選取T%位置的縮放因子作為該次剪枝的閾值。根據縮放因子的分布確定動態閾值能夠克服固定閾值設置過大或者過小帶來的弊端。通過計算縮放因子小于閾值的通道數占據卷積層中所有通道數的比例,判斷計算的該卷積層對目標檢測網絡模型貢獻的大小,剪枝時候優先把重要度低的卷積層剪除。動態閾值剪枝流程如圖2所示。
根據流程圖2,基于動態閾值剪枝的步驟主要有:基礎訓練、稀疏化訓練、動態閾值剪枝、知識蒸餾策略微調等。
(1)基礎訓練
目標檢測網絡模型基礎訓練精度越高,稀疏化訓練效果越好??紤]到目標檢測網絡YOLO系列[12]原始先驗框由COCO數據集訓練得到,然而COCO數據集消耗龐大的計算機資源且沒有針對單一物體的訓練,故選取VOC數據集、行人與車輛數據集以及Hands數據集替代進行壓縮實驗,以增強目標檢測網絡模型的魯棒性和泛化能力,更好適應目標檢測場景。為了提高目標檢測網絡模型基礎訓練的精度,得到更加精確的先驗框分布位置信息,采取對K-means算法[13]初始聚類中心進行計算,目的是使初始的K個聚類中心盡可能分散,以保證網絡訓練迭代優化和先驗框分布合理。從輸入點集合任選一個點作為第一個聚類中心C1,通過公式
依次計算出其他點x到P1之間的距離,并通過公式
計算樣本點被選為新聚類中心的概率,并大概率選取較遠點作為新的聚類中心,重復計算,直至選出K個聚類中心,并對這K個初始聚類中心運行標準K-means聚類算法。根據改進K-means算法優化這3類數據集生成的9個先驗框,并將其均勻分布到3個尺度特征圖中,使先驗框位置得以優化,從而使得目標檢測網絡對于錨框[14]的回歸更加精確,基礎訓練的網絡性能更好。
(2)稀疏化訓練
YOLO系列目標檢測網絡卷積層后普遍連接批量歸一化層,且目標檢測網絡模型卷積層中含有大量冗余參數。因此網絡模型在稀疏化訓練時,利用批量歸一化層中的縮放因子γ和平移因子β評估數據信息對網絡模型的特征表達是否有利的特點,在網絡模型訓練正向傳播過程中更新學習參數,并在稀疏化訓練時通過式(3)進行聯合訓練優化。利用學習調整的縮放因子γ作為衡量網絡模型卷積層中通道參數重要性的指標。利用網絡模型批量歸一化層中學習調整的縮放因子并進行聯合訓練優化的優勢在于沒有給網絡增加額外的網絡計算。如果在網絡中增加縮放層,網絡中的縮放因子容易發生冗余混亂,給網絡壓縮造成難度。
通過對L目標損失函數聯合訓練優化:
得出損失函數和正則項稀疏化的最優解,降低損失函數同時得到衡量卷積層通道參數重要性的縮放因子分布情況。式中第一項為網絡模型訓練過程中的損失函數,(x,y)代表網絡模型訓練過程中的輸入與目標,w代表網絡模型訓練過程中可更新的參數。第二項f(γ)=||γ代表對網絡模型中的縮放因子進行L1正則化,用于網絡模型稀疏化訓練,使縮放因子分布更清晰,利于剪枝,α用來平衡兩個損失項,通常取值為10-4。經過稀疏化訓練,對網絡模型貢獻小的通道縮放因子值會變小,向0靠近。
對式(3)進行聯合訓練優化時,縮放因子以批量歸一化層公式(4)為約束:
式中,BNγ,β(xi)網絡模型批量歸一化的輸出,γ和β為批量歸一化層中縮放因子和平移因子。網絡模型訓練時通過式(4)對批量歸一化層參數更新學習,得出縮放因子和尺度因子的線性關系,并將縮放因子輸入式(3)聯合訓練優化。其中為規范化處理數據值,通過公式
將數據信息進行規范化處理,使數據分布更合理,更容易在網絡模型訓練過程中學習到有用的特征信息。其中σ2B為網絡批處理數據的方差,通過公式
可計算得到批處理數據的方差值。其中μB為網絡批處理數據的均值,通過式(7)可計算得:
其中輸入為x,m為小批量處理的數值。初始化時令γ=1,β=0,通過對網絡模型批量歸一化層中表達網絡模型特征的數據參數進行學習調整,將學習到的縮放因子利用式(3)進行聯合訓練優化,得出損失函數和正則項稀疏化的最優解,在優化損失函數同時得到用來衡量卷積層通道參數重要性的縮放因子分布情況。
(3)動態閾值剪枝
稀疏化訓練后,重要性低的通道參數縮放因子值變小,通過計算卷積層中冗余參數的占比來判斷卷積層對網絡模型的重要性。根據縮放因子的分布計算剪枝的動態閾值,根據對網絡模型的實際需求確定剪枝比例,最大程度剪除對網絡模型貢獻小的部分。本文提出的基于動態閾值的剪枝算法如下:
算法1基于動態閾值的剪枝算法
輸入:訓練集{x,y},懲罰因子α。
初始化網絡參數w,縮放因子γ
While模型大小未達到要求:
epoch=1
while epoch<epochmaxdo
根據公式目標函數進行訓練,更新參數w和γ
衡量整個網絡卷積層中的γ,將其按照大小進行排序
end while
計算縮放因子在不同區間的分布情況,設置動態閾值T
計算卷積層中縮放因子小于閾值的通道參數的比例,并將其排序
選取排在T%位置的縮放因子的絕對值作為該次剪枝閾值Tthreshold
foriinγ:
如果||i<Tthreshold,則將i對應的冗余部分剪去
對剪枝后網絡微調
輸出:剪枝后的網絡模型。
網絡模型通過稀疏化訓練計算評估通道參數重要性的縮放因子分布情況,并計算小于閾值的通道參數在卷積層中的占比,設置動態閾值T并選取排在T%位置的縮放因子值作為當次剪枝的閾值Tthreshold。多次循環剪枝操作且每次根據更新的參數以及縮放因子分布設置動態閾值,防止固定閾值導致的誤剪枝,使得精度大幅度下降或者剪枝力度不夠無法達到很好的壓縮效果。此外,基于動態閾值的剪枝可以根據需求控制剪枝的比例,更好地權衡網絡剪枝精度、網絡模型大小以及剪枝后網絡模型的速度之間的關系。
(4)知識蒸餾策略微調
由于剪枝前后的網絡模型結構相似,剪枝后的網絡模型性能略微降低,因此能夠使用“老師-學生”策略的知識蒸餾[15]迅速恢復網絡精度。利用動態閾值剪枝前復雜的“老師”網絡模型的數據信息以及標簽信息指導訓練動態閾值剪枝后的簡單的“學生”網絡模型,使簡單的“學生”網絡模型的性能指標無限接近于復雜的“老師”網絡模型的性能指標。本文對目標分類與位置進行知識蒸餾學習,并對目標檢測位置進行回歸,在老師學生邊界回歸公式中考慮老師網絡邊界回歸:
式中,Lb表示復雜的“老師”網絡模型邊界回歸損失,Rs表示簡單的“學生”網絡模型的回歸,Rt表示復雜的“老師”網絡模型的回歸,m為可調閾值。公式含義為,當簡單的“學生”網絡的回歸位置與真實位置的L2距離大于復雜的“老師”網絡模型的回歸位置與真實位置的L2距離,并且大于某一設定閾值時,簡單的“學生”網絡模型邊界損失取復雜的“老師”網絡模型的位置回歸與真實位置之間的L2距離,否則復雜邊界損失置0。通過使用新的損失公式對目標檢測任務中的簡單的“學生”網絡模型進行位置回歸,使得“學生”網絡能夠迅速學習到老師網絡的數據信息,恢復網絡的檢測精度。
均勻映射量化[16-17]目的主要是將網絡模型中的權值參數從高精度轉換成低精度。高精度浮點型數據使網絡收斂,低比特的數據進行存儲能夠降低模型所需內存,提高目標檢測網絡模型推理速度。本文采用均勻映射量化的壓縮方式,計算量化縮放系數Δ和零點偏移量z,并采用Round函數公式將高精度浮點型數據量化成低比特整型數據,并通過Clamp函數剔除部分極端數據。
首先,對目標檢測網絡模型輸入的特征數據信息進行均勻映射量化,32位高精度浮點型數據均勻映射量化到8位低比特整型的數據范圍是(0,255),如圖3所示。用x表示網絡模型均勻映射量化前的高精度浮點型數據,用xint表示網絡模型均勻映射量化后低比特整型數據,rmax和rmin分別表示量化前浮點型數據范圍內最值,作用是用來計算量化的縮放系數以及零點偏移量,Δ表示網絡量化的縮放系數,通過縮小縮放系數公式(9)的數據映射的范圍以減少誤差:
z表示零點偏移,計算如下:
均勻映射量化時浮點型數據0會映射到零點整型數據,然而浮點數的0有特殊意義,比如padding時,浮點數據0值是參與計算的,進行8 bit量化后還是0,導致此處的信息丟失。通過零點偏移量將浮點型0值映射到整型數據范圍(0,255)中,使得浮點型數據信息不丟失,量化結果更準確。
通過式(11)Round函數對高精度浮點型數據的計算結果四舍五入取整,并進行零點偏移,映射到整型數據范圍。如圖3所示。
將浮點型數據按照函數量化成整型數據過程中,為防止部分極端數據對量化結果造成過大偏差,使用Clamp函數將極少部分極端的數據剔除:
其中Clamp函數的計算原則如下所示:
網絡模型通過對均勻映射量化后低比特的整型數據進行推理計算和參數存儲,然而在網絡模型的輸出端需要通過量化操作的逆運算,將低比特整型數據反量化成高精度浮點型數據。反量化的輸出Y計算公式為:
均勻映射量化減少網絡模型的存儲空間,極大提高網絡模型的推理速度,有利于部署在汽車等資源受限平臺使用。
本文主要以YOLO系列目標檢測算法為例進行網絡壓縮實驗,驗證融合動態閾值的剪枝算法和均勻映射量化的目標檢測網絡壓縮方案的可行性和有效性。
本實驗基于Darknet[18]框架以及TITAN XP型號GPU的硬件設備,CPU為E5-2640v4,Ubuntu16.04操作系統,32 GB DDR4的內存,利用YOLOv3[19]網絡模型在行人與車輛數據集進行壓縮實驗。同時對YOLO系列[20]其他網絡模型分別在Hands數據集、VCO2012數據集以及行人與車輛數據集上進行壓縮實驗,以驗證本文提出的壓縮方法的可行性和有效性。
基礎訓練時,網絡每迭代2 000次保存一次網絡模型,基礎訓練的超參數設置如表1所示。

表1 基礎網絡訓練參數設置Table 1 Basic network training parameter settings
稀疏化訓練時候,為了加速稀疏化訓練的進程,將權重衰減率設置為10-4,為了恢復精度,分別在稀疏化訓練總次數的60%和80%時,將權重衰減率變為之前的1/10。平衡損失的懲罰因子α設為10-4,稀疏化訓練總共訓練100輪次,對稀疏化后的網絡模型計算動態閾值,利用計算的不同的動態閾值對網絡模型進行不同次數的剪枝。在網絡稀疏化和剪枝微調階段,將網絡模型輸入圖片設置為416×416,這樣通過剪枝前后的網絡模型的參數對比能有效地體現剪枝的作用。
對目標檢測網絡卷積層實施動態閾值剪枝時,優先剪除對網絡模型貢獻小的部分,根據縮放因子分布計算動態閾值下的不同剪枝次數時的剪枝結果,模型大小、參數量、mAP、參數量、FLOPs和檢測速度等如表2所示。
由表2可以驗證動態閾值策略下的剪枝效果。最開始為選取的基礎訓練中精度最高網絡模型。隨后是不同剪枝次數下的動態閾值剪枝效果。根據縮放因子分布計算第一次動態閾值為0.77時,網絡模型的mAP從74.15%提升至74.21%,精度有所提升,網絡模型從239 MB減少到26.1 MB,模型的參數量急劇減少,從6.251×107減少至6.82×106,減少到近1/9,檢測速度略微有所提升。訓練過程中,隨著剪枝次數的增加,根據縮放因子計算的不同動態閾值下網絡模型剪枝效果如表2所示??梢钥闯?,網絡模型的mAP有所下降,網絡模型的大小和參數量都大大減少,經過8次動態閾值剪枝網絡模型的參數量減少至2.04×106個,檢測速度得到有效的提升。在實際的工業生產應用上通??筛鶕嶋H的需要進行剪枝。例如,當對精度要求較高時,選擇較少次數的剪枝,此時參數量大大減少,檢測速度提升不明顯;當對檢測速度以及模型的大小要求較高時,可以選擇較多次數的剪枝。具體根據實際應用來選擇。

表2 動態閾值剪枝結果Table 2 Dynamic threshold pruning results
隨后使用基于“老師-學生”的微調策略對動態閾值剪枝后的目標檢測網絡模型進行微調,以使網絡快速恢復檢測精度。
從圖4可以看出,目標檢測網絡經過壓縮之后均能在保證檢測性能的前提下提升檢測速度,較好地實現壓縮效果。
以YOLO系列目標檢測網絡YOLOv3網絡模型為例,經過壓縮,網絡在保證原有性能或者性能下降很少的情況下,減少網絡中冗余的參數,圖5(a)、(b)分別為YOLOv3壓縮前后的網絡結構對比。
通過對比圖5(a)、(b)壓縮前后網絡結構圖可以看出,經過壓縮策略之后,目標檢測網絡的參數量僅為基礎網絡的3.2%,網絡的“寬度”與“深度”都得到減少,網絡的性能并無明顯的下降,網絡的速度提升了3倍以上,這使得YOLO系列目標檢測網絡在資源受限的嵌入式設備上的部署具有重要的意義。
通過對目標檢測網絡進行動態閾值剪枝,參數量減少,網絡結構更緊湊,網絡模型檢測速度大幅度提升,采用均勻映射量化測策略進一步降低網絡模型存儲空間,提升網絡模型檢測速度。表3為壓縮之后的性能指標。

表3 融合動態閾值和均勻映射量化的壓縮結果Table 3 Compression results combining dynamic threshold and uniform mapping quantization
由表3得知,經過動態閾值剪枝和均勻映射量化,目標檢測網絡模型被壓縮至8 MB左右,檢測速度較壓縮前提升5倍左右。為驗證融合動態閾值剪枝與均勻映射量化方法對目標檢測網絡壓縮的檢測效果,從測試集中選取部分圖片進行測試。圖6中(a)為各數據集中選取的待檢測原圖,(b)為壓縮前的目標檢測網絡模型的檢測效果,(c)為壓縮后的目標檢測網絡模型檢測效果。
由圖6可知,壓縮前的目標檢測網絡能夠準確學習圖片信息并檢測物體位置。采用融合動態閾值剪枝和均勻映射量化后方法,壓縮后的網絡模型檢測效果依然不錯,位置信息以及物體同樣能夠準確檢測出來。
為驗證本文提出的融合動態閾值與均勻映射量化對目標檢測網絡模型壓縮方法的有效性和可行性,分別使用YOLOv3、YOLOv4網絡模型對Hands數據集、行人與車輛數據集、VOC2012數據集進行壓縮實驗。表4為網絡的壓縮結果。

表4 YOLOv3和YOLOv4在三種數據集上的壓縮效果Fig.4 Compression effect of YOLOv3 and YOLOv4 on three datasets
根據目標檢測網絡對三種數據集網絡模型剪枝結果可以看出,壓縮后網絡模型mAP略微下降,極大地壓縮了網絡模型,并將網絡速度提升了5倍左右。為比對壓縮前后網絡模型的性能變化,通過圖片測試網絡模型的mAP以及檢測速度變化,結果如圖7所示。
從圖7可以看出,目標檢測網絡經過壓縮之后均能在保證檢測性能的前提下提升檢測速度,較好地實現壓縮效果。
本文針對目標檢測網絡模型大量冗余參數和計算量大難以應用于嵌入式設備的問題,提出了融合動態閾值剪枝和均勻映射量化的目標檢測網絡壓縮方法。在VOC2012數據集、Hands數據集、行人與車輛數據集上分別對目標檢測網絡中YOLOv3-spp、YOLOv3以及YOLOv4網絡模型進行模型壓縮實驗,實驗結果顯示:與原始網絡相比較,網絡模型縮減95%以上且速度提高5倍;優化后的網絡模型由于網絡層數減少,泛化學習特征的能力略微降低,mAP在不損失速度的前提下略微有所降低。本文融合動態閾值剪枝與均勻映射量化的目標檢測網絡壓縮方法的設計流程具有較為廣泛的應用,通用性強,對其他的目標檢測網絡例如YOLO系列等均可適用。