林 雪,張志佳,劉立強,楊欣朋,王士顯
1(沈陽工業大學 信息科學與工程學院,沈陽 110870)2(遼寧航天凌河汽車有限公司研發部,遼寧 凌源 122500)
E-mail:18201084058@163.com
交通標志識別是智能交通系統[1](Intelligent Transportio System,ITS)的重要組成部分,傳統的交通標志識別采用人工設計特征與機器學習相結合的識別方法,包括基于淺層神經網絡或支持向量機等算法,通過掌握的先驗知識設計特征,要求設計人員對特征掌握程度較高,例如模板匹配等,將輸入樣本與模板進行相關度匹配進行分類[2],以及傳統特征與深度特征相結合[3]的方法進行識別.
在LeCun 等人確立了卷積神經網絡(CNN)的現代結構LeNet-5之后,卷積神經網絡成為目標識別的主要研究方向,學者們對LeNet網絡進行復雜度的升級和深度的擴展,衍生出了AlexNet、GoogleNet和ResNet等深度網絡[4].大部分深度神經網絡中存在巨大的計算冗余,真正對識別結果做出貢獻的權值僅有5%(Denil M,2013)[5],舍棄冗余保留對識別結果影響較大的權重參數就可實現目標識別在大部分應用中的需求.模型壓縮可從模型結構與卷積方式的角度對模型進行輕量化改進如SqueezeNet(Forrest N.Iandola,2016)[6]、MobileNet(Howard A G,2017)[7]以及ShuffleNet(Zhang X,2017)[8]等,也可通過剪枝與量化的方式對模型結構與參數進行優化.模型剪枝主要分為權重剪枝和通道剪枝兩種方式,通道剪枝在減少計算量的同時也壓縮了模型的橫向結構,成為了模型剪枝的主要研究方向,常見的有基于范數[9]或基于幾何中心(Yang He,2018)[10]的剪枝方法.模型量化的兩個方向是權值共享和權值精簡,如Deep Compression算法(Han S,2015)[11]在剪枝后通過k-means聚類確定量化閾值,并對同一聚類的參數共享聚類中心的權重值.
VGGNet是對AlexNet的改進與加深,采用3×3小卷積核的多層串聯代替大卷積核,減少了網絡的參數量與計算量,加深網絡的深度帶來更多層次的特征提取.在實際應用中,交通標志識別的距離為20米-50米,在該區間內采集所得圖像中交通標志為小目標,VGG的3×3小卷積核可以提取更加細節的交通標志特征.
針對沈陽及周邊市區路況中的常見交通標志,本文選用VGGNet以及自采數據集訓練交通標志識別模型,基于LASSO回歸對卷積通道進行剪枝以減小模型寬度,固定通道后通過恢復訓練提高模型識別精度;以K-L散度為閾值選擇標準,將參數由float32形式量化為int8形式,擬合復雜模型的參數分布;以數據融合的方式擴增數據樣本,解決樣本不均衡以及深層網絡訓練過擬合的問題.
通道剪枝以卷積核為剪枝對象,根據確定的通道剪枝標準將特定通道剪去,這種剪枝方法避免了參數剪枝會引起不規則的內存訪問的弊端.本文基于通道剪枝的結構化稀疏思想,利用Laoss回歸的思想對卷積通道進行裁剪,解決網絡架構過大計算冗余的問題.
卷積神經網絡參數量巨大帶來冗余問題的同時也會造成訓練模型的過擬合問題,通常通過對Loss引入正則化懲罰項解決過擬合問題.
使用L2范數正則化懲罰項時:
(1)
L2范數正則化稱為嶺回歸.將正則化項中的L2范數替換為L1范數:
(2)
以L1范數為懲罰項的線性回歸方式稱為LASSO回歸.LASSO回歸比嶺回歸更優越的地方在于易于將權重wT的分量稀疏為0.

圖1 LASSO回歸和嶺回歸Fig.1 LASSO regression and ridge regression
由圖1可看出L1范數等值線為菱形,Loss等值線容易與范數等值線的頂點相交,范數等值線的頂點在坐標軸上,可將權重向量中的某一參數歸為0.
神經網絡剪枝過程分為兩步:1)根據剪枝標準剪裁掉不重要的通道;2)恢復訓練保留的固定通道.神經網絡訓練的誤差公式為:
(3)
固定W值,利用LASSO回歸將參數向量β中的某些元素βi歸為0同時舍去βi對應通道;隨后固定β值,重新訓練W.
(4)
‖β‖0≤c′
剪去β向量中的0元素對應的通道,對剩下的通道重構誤差進行恢復訓練.恢復訓練的損失函數為:
(5)
模型量化的主要目的是為了減小模型的占用內存、壓縮模型的計算量和運行時間,使模型能夠在移動嵌入式設備上運行.本文將float32浮點型權重卷積操作用更精簡的低比特位權重如int8卷積操作代替,達到壓縮模型的目的.
p(x),q(x)是兩個離散隨機變量的概率分布函數,p(x)關于q(x)的相對熵為:
(6)
真實分布相對于理論分布的相對熵稱為前向K-L散度,K-L散度具有非負性和不對稱性.量化過程中,原始模型權重分布為最優期望分布,對原始模型進行量化得到擬合模型,擬合模型的權重概率分布與原始模型越接近越好,本文采用相對熵即K-L散度作為擬合誤差優化量化結果.
通常情況下權重參數的量化是找到權重分布的最大絕對值,以此作為最大邊界與int8做等比映射得到量化后參數.但大部分神經網絡模型中各層的權重分布高度不均勻,通過直接映射的方式擬合原始參數會產生信息損失,量化結果并不理想.本文采用最佳閾值的思想,確定最佳閾值|S|,將±|S|以及絕對值更大的參數均映射為±127,舍去權重分布中絕對值較大但分布較為稀疏的權重.
K-L散度作為量化的誤差標準,最優化擬合分布q(int8)使其最接近期望分布p(float32).
算法.模型量化
輸入:Calibration dataset,Model_a(FP32),Deploy_prototxt_file
Begin:
原始模型Model_a(FP32)的概率分布P(Model_a)=probability_distribution(Model_a);
收集各層校準數據集權重值直方圖,確定閾值s1…sn;#閾值內分布占比不低于固定值
For i=1→n
Int8 Model_ b
{
截斷閾值外的參數加到閾值位置得到截斷模型Model_a′;
對截斷模型進行int8量化Model_b = Quantize(Model_a′,int8);
反量化Model_b恢復參數位數得到反量化模型Model_b′;
計算量化后的概率分布P(Model_b)= probability_distribution(Model_b′);
求得量化模型與原始模型的K-L散度Di(a‖b)= KL_divergence(P(Model_a),P(Model_b));
}
排序得到Di(a‖b)最小時對應的i值確定最佳分布閾值s
s=Sort(Min(Di(a‖b),i)
End
輸出:Model_b #選用s對應的量化模型Model_b
數據是網絡訓練的基礎,為了提高模型的實用性,本課題在沈陽及周邊市區真實街景下采集數據用于模型的訓練,數據融合的方式擴增訓練樣本數量,并增加正則化懲罰項.為了本文數據集采自2018年11月-12月不同時間,不同天氣狀況下沈陽市及周邊城市交通環境中,保證了數據的多樣性.
拍攝視頻的方式采集視頻,對視頻分幀獲取得到樣本圖像,圖2為60km/h標志的樣例.

圖2 采集到交通路口的標志數據Fig.2 Signage data at traffic intersections
視頻分幀后通過目標檢測截取共6787個樣本,包括常見的10類交通標志,2/3樣本為訓練集、1/3為測試集進行模型訓練.為了防止過擬合,通過數據增強等方式進行數據擴增.
本文采用SamplePairing思想對自采數據集進行數據擴增,從訓練集抽取的兩幅圖像1∶1疊加合成一個新的樣本,選取其中一個樣本的標簽作為新樣本的標簽,補充數據集的豐富度.
選取標簽為ya的訓練圖像xa與標簽為yb的訓練樣本xb融合,求得平均值作為新樣本,標簽采用二者之一.10類樣本都可引入了其他9種類型的相關噪聲,通過數據增強的形式增加樣本中的噪聲,對模型增加了正則化項效果如圖3所示.
進行數據擴增是為了平衡樣本數量,同時平衡訓練過程中的學習方向.可以通過融合后同時擁有兩個樣本特征但只有一個標簽的數據明晰特征界限,提高識別精度.原始數據集中樣本種類多但樣本數量的差異過大,對于原始樣本數量過小的類別要想平衡到可以訓練的規模會掩蓋了原始的特征無法進行訓練學習,所以選取了十類數量較多的樣本通過融合擴增平衡數量,并對其進行訓練.

圖3 正則化懲罰Fig.3 Regularization penalty
本文中交通標志識別模型均是通過Caffe框架學習訓練,本實驗實現的操作系統為Linux Ubuntu16.04,系統硬件配置為Intel(R)HD Graphics 530,顯存為4G,CPU為Intel(R)Core(TM)i7-6700HQ CPU @ 2.60GHz,內存為8G.
采用基于L1范數的Loass回歸,通過收縮懲罰參數λ對通道進行剪裁,后續仍然采用最小均方誤差作為誤差標準對固定通道后的模型進行恢復訓練.由表1可知,剪枝VGG模型得到VGG-cp模型,減少5倍卷計量,top-1損失0.4%,但GPU運行速率有明顯的提升.

表1 通過LASSO優化剪枝后模型對比Table 1 Model comparison after pruning
模型剪枝是一個訓練與剪枝同時進行的動態過程所以訓練過程中模型的單次算量FLOPS介于VGG與VGG-cp之間.基本操作是一個訓練過程,迭代次數為n的訓練,時間復雜度介于O(VGG(flops)×n)與O(VGG-cp(flops)×n)之間.一個完整的基本操作由各層串聯而成,單層計算量flops=M×N×K×K×H×W,其中M、N為輸入及輸出通道數,K為卷積核大小,H、W為特征圖大小.通過計算VGG及VGG-cp各層計算量得出,迭代n次時模型剪枝的時間復雜度介于O(1.55×1010n)與O(3.28×109n)之間.剪枝過程的空間復雜度介于VGG與VGG-cp的參數量之間,即O(VGG(params))與O(VGG(params))之間.單層參數量params=N×(K×K×M+1),其中M、N為輸入及輸出通道數,K為卷積核大小.通過計算VGG及VGG-cp各層參數量得出,模型剪枝的空間復雜度介于O(1.38×108)與O(1.26×108)之間.
由表2可知量化后模型的參數類型由float32變為int8,空間占用為原模型的1/4.VGG模型量化后GPU運行速度提升11.3%,VGG-cp模型量化后GPU運行速度提升33.6%,但剪枝模型已經經過一次去除冗余,再次量化對模型精度損失較大.

表2 量化結果Table 2 Quantitative results
模型量化的基本操作為量化與反量化,單層網絡的參數量為params=N×(K×K×M+1),其中M、N為輸入及輸出通道數,K為卷積核大小.VGG與VGG-cp的量化參數量分別為1.38×108與1.26×108,量化的時間復雜度為O(1.38×108×2×n)=O(2.76×108×n)和O(1.26×108×2×n)=O(2.52×108×n),量化的空間復雜度為O(1.38×108)與O(1.26×108).
圖4為原始數據10類共6787個樣本的數據分布,按照10類樣本的數據量由大到小做0.1-1的升序比例的數據擴增.圖5為融合擴增后10類共9115個樣本的數據分布,因為數據量小的種類擴增比例大,所以各類數據分布更加均勻.由表3可知通過數據擴增后的訓練結果均有提升,top-1錯誤率減少0.9%,top-5錯誤率減少0.2%.通過對300個交通標志樣本進行測試得到,數據擴增后訓練模型的誤測數少于原始訓練模型,可知模型獲得了更高的擬合能力.

圖4 原始數據Fig.4 Original data

圖5 擴增后數據Fig.5 Data amplification

表3 數據擴增訓練結果對比Table 3 Comparison of data amplification training results
面向城市路況的交通標志識別模型的優化與訓練,本文采用基于Laoss回歸的通道剪枝方法,壓縮網絡橫向結構提高識別速率,GPU運行速度提高了29.6%,VGG模型模型空間占用減少30M;以K-L散度作為誤差損失擬合模型的參數分布,將VGG模型空間縮小為原來的1/4,GPU運行速度提高了12.8%;通過數據融合對數據進行擴增提高模型的推演能力,Top-1提高了0.9%測試識別率,通過樣本測試實驗的誤測數降低證明模型的擬合能力得到了提高.