林 雪,張志佳,劉立強(qiáng),楊欣朋,王士顯
1(沈陽工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,沈陽 110870)2(遼寧航天凌河汽車有限公司研發(fā)部,遼寧 凌源 122500)
E-mail:18201084058@163.com
交通標(biāo)志識(shí)別是智能交通系統(tǒng)[1](Intelligent Transportio System,ITS)的重要組成部分,傳統(tǒng)的交通標(biāo)志識(shí)別采用人工設(shè)計(jì)特征與機(jī)器學(xué)習(xí)相結(jié)合的識(shí)別方法,包括基于淺層神經(jīng)網(wǎng)絡(luò)或支持向量機(jī)等算法,通過掌握的先驗(yàn)知識(shí)設(shè)計(jì)特征,要求設(shè)計(jì)人員對(duì)特征掌握程度較高,例如模板匹配等,將輸入樣本與模板進(jìn)行相關(guān)度匹配進(jìn)行分類[2],以及傳統(tǒng)特征與深度特征相結(jié)合[3]的方法進(jìn)行識(shí)別.
在LeCun 等人確立了卷積神經(jīng)網(wǎng)絡(luò)(CNN)的現(xiàn)代結(jié)構(gòu)LeNet-5之后,卷積神經(jīng)網(wǎng)絡(luò)成為目標(biāo)識(shí)別的主要研究方向,學(xué)者們對(duì)LeNet網(wǎng)絡(luò)進(jìn)行復(fù)雜度的升級(jí)和深度的擴(kuò)展,衍生出了AlexNet、GoogleNet和ResNet等深度網(wǎng)絡(luò)[4].大部分深度神經(jīng)網(wǎng)絡(luò)中存在巨大的計(jì)算冗余,真正對(duì)識(shí)別結(jié)果做出貢獻(xiàn)的權(quán)值僅有5%(Denil M,2013)[5],舍棄冗余保留對(duì)識(shí)別結(jié)果影響較大的權(quán)重參數(shù)就可實(shí)現(xiàn)目標(biāo)識(shí)別在大部分應(yīng)用中的需求.模型壓縮可從模型結(jié)構(gòu)與卷積方式的角度對(duì)模型進(jìn)行輕量化改進(jìn)如SqueezeNet(Forrest N.Iandola,2016)[6]、MobileNet(Howard A G,2017)[7]以及ShuffleNet(Zhang X,2017)[8]等,也可通過剪枝與量化的方式對(duì)模型結(jié)構(gòu)與參數(shù)進(jìn)行優(yōu)化.模型剪枝主要分為權(quán)重剪枝和通道剪枝兩種方式,通道剪枝在減少計(jì)算量的同時(shí)也壓縮了模型的橫向結(jié)構(gòu),成為了模型剪枝的主要研究方向,常見的有基于范數(shù)[9]或基于幾何中心(Yang He,2018)[10]的剪枝方法.模型量化的兩個(gè)方向是權(quán)值共享和權(quán)值精簡(jiǎn),如Deep Compression算法(Han S,2015)[11]在剪枝后通過k-means聚類確定量化閾值,并對(duì)同一聚類的參數(shù)共享聚類中心的權(quán)重值.
VGGNet是對(duì)AlexNet的改進(jìn)與加深,采用3×3小卷積核的多層串聯(lián)代替大卷積核,減少了網(wǎng)絡(luò)的參數(shù)量與計(jì)算量,加深網(wǎng)絡(luò)的深度帶來更多層次的特征提取.在實(shí)際應(yīng)用中,交通標(biāo)志識(shí)別的距離為20米-50米,在該區(qū)間內(nèi)采集所得圖像中交通標(biāo)志為小目標(biāo),VGG的3×3小卷積核可以提取更加細(xì)節(jié)的交通標(biāo)志特征.
針對(duì)沈陽及周邊市區(qū)路況中的常見交通標(biāo)志,本文選用VGGNet以及自采數(shù)據(jù)集訓(xùn)練交通標(biāo)志識(shí)別模型,基于LASSO回歸對(duì)卷積通道進(jìn)行剪枝以減小模型寬度,固定通道后通過恢復(fù)訓(xùn)練提高模型識(shí)別精度;以K-L散度為閾值選擇標(biāo)準(zhǔn),將參數(shù)由float32形式量化為int8形式,擬合復(fù)雜模型的參數(shù)分布;以數(shù)據(jù)融合的方式擴(kuò)增數(shù)據(jù)樣本,解決樣本不均衡以及深層網(wǎng)絡(luò)訓(xùn)練過擬合的問題.
通道剪枝以卷積核為剪枝對(duì)象,根據(jù)確定的通道剪枝標(biāo)準(zhǔn)將特定通道剪去,這種剪枝方法避免了參數(shù)剪枝會(huì)引起不規(guī)則的內(nèi)存訪問的弊端.本文基于通道剪枝的結(jié)構(gòu)化稀疏思想,利用Laoss回歸的思想對(duì)卷積通道進(jìn)行裁剪,解決網(wǎng)絡(luò)架構(gòu)過大計(jì)算冗余的問題.
卷積神經(jīng)網(wǎng)絡(luò)參數(shù)量巨大帶來冗余問題的同時(shí)也會(huì)造成訓(xùn)練模型的過擬合問題,通常通過對(duì)Loss引入正則化懲罰項(xiàng)解決過擬合問題.
使用L2范數(shù)正則化懲罰項(xiàng)時(shí):
(1)
L2范數(shù)正則化稱為嶺回歸.將正則化項(xiàng)中的L2范數(shù)替換為L(zhǎng)1范數(shù):
(2)
以L1范數(shù)為懲罰項(xiàng)的線性回歸方式稱為L(zhǎng)ASSO回歸.LASSO回歸比嶺回歸更優(yōu)越的地方在于易于將權(quán)重wT的分量稀疏為0.
圖1 LASSO回歸和嶺回歸Fig.1 LASSO regression and ridge regression
由圖1可看出L1范數(shù)等值線為菱形,Loss等值線容易與范數(shù)等值線的頂點(diǎn)相交,范數(shù)等值線的頂點(diǎn)在坐標(biāo)軸上,可將權(quán)重向量中的某一參數(shù)歸為0.
神經(jīng)網(wǎng)絡(luò)剪枝過程分為兩步:1)根據(jù)剪枝標(biāo)準(zhǔn)剪裁掉不重要的通道;2)恢復(fù)訓(xùn)練保留的固定通道.神經(jīng)網(wǎng)絡(luò)訓(xùn)練的誤差公式為:
(3)
固定W值,利用LASSO回歸將參數(shù)向量β中的某些元素βi歸為0同時(shí)舍去βi對(duì)應(yīng)通道;隨后固定β值,重新訓(xùn)練W.
(4)
‖β‖0≤c′
剪去β向量中的0元素對(duì)應(yīng)的通道,對(duì)剩下的通道重構(gòu)誤差進(jìn)行恢復(fù)訓(xùn)練.恢復(fù)訓(xùn)練的損失函數(shù)為:
(5)
模型量化的主要目的是為了減小模型的占用內(nèi)存、壓縮模型的計(jì)算量和運(yùn)行時(shí)間,使模型能夠在移動(dòng)嵌入式設(shè)備上運(yùn)行.本文將float32浮點(diǎn)型權(quán)重卷積操作用更精簡(jiǎn)的低比特位權(quán)重如int8卷積操作代替,達(dá)到壓縮模型的目的.
p(x),q(x)是兩個(gè)離散隨機(jī)變量的概率分布函數(shù),p(x)關(guān)于q(x)的相對(duì)熵為:
(6)
真實(shí)分布相對(duì)于理論分布的相對(duì)熵稱為前向K-L散度,K-L散度具有非負(fù)性和不對(duì)稱性.量化過程中,原始模型權(quán)重分布為最優(yōu)期望分布,對(duì)原始模型進(jìn)行量化得到擬合模型,擬合模型的權(quán)重概率分布與原始模型越接近越好,本文采用相對(duì)熵即K-L散度作為擬合誤差優(yōu)化量化結(jié)果.
通常情況下權(quán)重參數(shù)的量化是找到權(quán)重分布的最大絕對(duì)值,以此作為最大邊界與int8做等比映射得到量化后參數(shù).但大部分神經(jīng)網(wǎng)絡(luò)模型中各層的權(quán)重分布高度不均勻,通過直接映射的方式擬合原始參數(shù)會(huì)產(chǎn)生信息損失,量化結(jié)果并不理想.本文采用最佳閾值的思想,確定最佳閾值|S|,將±|S|以及絕對(duì)值更大的參數(shù)均映射為±127,舍去權(quán)重分布中絕對(duì)值較大但分布較為稀疏的權(quán)重.
K-L散度作為量化的誤差標(biāo)準(zhǔn),最優(yōu)化擬合分布q(int8)使其最接近期望分布p(float32).
算法.模型量化
輸入:Calibration dataset,Model_a(FP32),Deploy_prototxt_file
Begin:
原始模型Model_a(FP32)的概率分布P(Model_a)=probability_distribution(Model_a);
收集各層校準(zhǔn)數(shù)據(jù)集權(quán)重值直方圖,確定閾值s1…sn;#閾值內(nèi)分布占比不低于固定值
For i=1→n
Int8 Model_ b
{
截?cái)嚅撝低獾膮?shù)加到閾值位置得到截?cái)嗄P蚆odel_a′;
對(duì)截?cái)嗄P瓦M(jìn)行int8量化Model_b = Quantize(Model_a′,int8);
反量化Model_b恢復(fù)參數(shù)位數(shù)得到反量化模型Model_b′;
計(jì)算量化后的概率分布P(Model_b)= probability_distribution(Model_b′);
求得量化模型與原始模型的K-L散度Di(a‖b)= KL_divergence(P(Model_a),P(Model_b));
}
排序得到Di(a‖b)最小時(shí)對(duì)應(yīng)的i值確定最佳分布閾值s
s=Sort(Min(Di(a‖b),i)
End
輸出:Model_b #選用s對(duì)應(yīng)的量化模型Model_b
數(shù)據(jù)是網(wǎng)絡(luò)訓(xùn)練的基礎(chǔ),為了提高模型的實(shí)用性,本課題在沈陽及周邊市區(qū)真實(shí)街景下采集數(shù)據(jù)用于模型的訓(xùn)練,數(shù)據(jù)融合的方式擴(kuò)增訓(xùn)練樣本數(shù)量,并增加正則化懲罰項(xiàng).為了本文數(shù)據(jù)集采自2018年11月-12月不同時(shí)間,不同天氣狀況下沈陽市及周邊城市交通環(huán)境中,保證了數(shù)據(jù)的多樣性.
拍攝視頻的方式采集視頻,對(duì)視頻分幀獲取得到樣本圖像,圖2為60km/h標(biāo)志的樣例.
圖2 采集到交通路口的標(biāo)志數(shù)據(jù)Fig.2 Signage data at traffic intersections
視頻分幀后通過目標(biāo)檢測(cè)截取共6787個(gè)樣本,包括常見的10類交通標(biāo)志,2/3樣本為訓(xùn)練集、1/3為測(cè)試集進(jìn)行模型訓(xùn)練.為了防止過擬合,通過數(shù)據(jù)增強(qiáng)等方式進(jìn)行數(shù)據(jù)擴(kuò)增.
本文采用SamplePairing思想對(duì)自采數(shù)據(jù)集進(jìn)行數(shù)據(jù)擴(kuò)增,從訓(xùn)練集抽取的兩幅圖像1∶1疊加合成一個(gè)新的樣本,選取其中一個(gè)樣本的標(biāo)簽作為新樣本的標(biāo)簽,補(bǔ)充數(shù)據(jù)集的豐富度.
選取標(biāo)簽為ya的訓(xùn)練圖像xa與標(biāo)簽為yb的訓(xùn)練樣本xb融合,求得平均值作為新樣本,標(biāo)簽采用二者之一.10類樣本都可引入了其他9種類型的相關(guān)噪聲,通過數(shù)據(jù)增強(qiáng)的形式增加樣本中的噪聲,對(duì)模型增加了正則化項(xiàng)效果如圖3所示.
進(jìn)行數(shù)據(jù)擴(kuò)增是為了平衡樣本數(shù)量,同時(shí)平衡訓(xùn)練過程中的學(xué)習(xí)方向.可以通過融合后同時(shí)擁有兩個(gè)樣本特征但只有一個(gè)標(biāo)簽的數(shù)據(jù)明晰特征界限,提高識(shí)別精度.原始數(shù)據(jù)集中樣本種類多但樣本數(shù)量的差異過大,對(duì)于原始樣本數(shù)量過小的類別要想平衡到可以訓(xùn)練的規(guī)模會(huì)掩蓋了原始的特征無法進(jìn)行訓(xùn)練學(xué)習(xí),所以選取了十類數(shù)量較多的樣本通過融合擴(kuò)增平衡數(shù)量,并對(duì)其進(jìn)行訓(xùn)練.
圖3 正則化懲罰Fig.3 Regularization penalty
本文中交通標(biāo)志識(shí)別模型均是通過Caffe框架學(xué)習(xí)訓(xùn)練,本實(shí)驗(yàn)實(shí)現(xiàn)的操作系統(tǒng)為L(zhǎng)inux Ubuntu16.04,系統(tǒng)硬件配置為Intel(R)HD Graphics 530,顯存為4G,CPU為Intel(R)Core(TM)i7-6700HQ CPU @ 2.60GHz,內(nèi)存為8G.
采用基于L1范數(shù)的Loass回歸,通過收縮懲罰參數(shù)λ對(duì)通道進(jìn)行剪裁,后續(xù)仍然采用最小均方誤差作為誤差標(biāo)準(zhǔn)對(duì)固定通道后的模型進(jìn)行恢復(fù)訓(xùn)練.由表1可知,剪枝VGG模型得到VGG-cp模型,減少5倍卷計(jì)量,top-1損失0.4%,但GPU運(yùn)行速率有明顯的提升.
表1 通過LASSO優(yōu)化剪枝后模型對(duì)比Table 1 Model comparison after pruning
模型剪枝是一個(gè)訓(xùn)練與剪枝同時(shí)進(jìn)行的動(dòng)態(tài)過程所以訓(xùn)練過程中模型的單次算量FLOPS介于VGG與VGG-cp之間.基本操作是一個(gè)訓(xùn)練過程,迭代次數(shù)為n的訓(xùn)練,時(shí)間復(fù)雜度介于O(VGG(flops)×n)與O(VGG-cp(flops)×n)之間.一個(gè)完整的基本操作由各層串聯(lián)而成,單層計(jì)算量flops=M×N×K×K×H×W,其中M、N為輸入及輸出通道數(shù),K為卷積核大小,H、W為特征圖大小.通過計(jì)算VGG及VGG-cp各層計(jì)算量得出,迭代n次時(shí)模型剪枝的時(shí)間復(fù)雜度介于O(1.55×1010n)與O(3.28×109n)之間.剪枝過程的空間復(fù)雜度介于VGG與VGG-cp的參數(shù)量之間,即O(VGG(params))與O(VGG(params))之間.單層參數(shù)量params=N×(K×K×M+1),其中M、N為輸入及輸出通道數(shù),K為卷積核大小.通過計(jì)算VGG及VGG-cp各層參數(shù)量得出,模型剪枝的空間復(fù)雜度介于O(1.38×108)與O(1.26×108)之間.
由表2可知量化后模型的參數(shù)類型由float32變?yōu)閕nt8,空間占用為原模型的1/4.VGG模型量化后GPU運(yùn)行速度提升11.3%,VGG-cp模型量化后GPU運(yùn)行速度提升33.6%,但剪枝模型已經(jīng)經(jīng)過一次去除冗余,再次量化對(duì)模型精度損失較大.
表2 量化結(jié)果Table 2 Quantitative results
模型量化的基本操作為量化與反量化,單層網(wǎng)絡(luò)的參數(shù)量為params=N×(K×K×M+1),其中M、N為輸入及輸出通道數(shù),K為卷積核大小.VGG與VGG-cp的量化參數(shù)量分別為1.38×108與1.26×108,量化的時(shí)間復(fù)雜度為O(1.38×108×2×n)=O(2.76×108×n)和O(1.26×108×2×n)=O(2.52×108×n),量化的空間復(fù)雜度為O(1.38×108)與O(1.26×108).
圖4為原始數(shù)據(jù)10類共6787個(gè)樣本的數(shù)據(jù)分布,按照10類樣本的數(shù)據(jù)量由大到小做0.1-1的升序比例的數(shù)據(jù)擴(kuò)增.圖5為融合擴(kuò)增后10類共9115個(gè)樣本的數(shù)據(jù)分布,因?yàn)閿?shù)據(jù)量小的種類擴(kuò)增比例大,所以各類數(shù)據(jù)分布更加均勻.由表3可知通過數(shù)據(jù)擴(kuò)增后的訓(xùn)練結(jié)果均有提升,top-1錯(cuò)誤率減少0.9%,top-5錯(cuò)誤率減少0.2%.通過對(duì)300個(gè)交通標(biāo)志樣本進(jìn)行測(cè)試得到,數(shù)據(jù)擴(kuò)增后訓(xùn)練模型的誤測(cè)數(shù)少于原始訓(xùn)練模型,可知模型獲得了更高的擬合能力.
圖4 原始數(shù)據(jù)Fig.4 Original data
圖5 擴(kuò)增后數(shù)據(jù)Fig.5 Data amplification
表3 數(shù)據(jù)擴(kuò)增訓(xùn)練結(jié)果對(duì)比Table 3 Comparison of data amplification training results
面向城市路況的交通標(biāo)志識(shí)別模型的優(yōu)化與訓(xùn)練,本文采用基于Laoss回歸的通道剪枝方法,壓縮網(wǎng)絡(luò)橫向結(jié)構(gòu)提高識(shí)別速率,GPU運(yùn)行速度提高了29.6%,VGG模型模型空間占用減少30M;以K-L散度作為誤差損失擬合模型的參數(shù)分布,將VGG模型空間縮小為原來的1/4,GPU運(yùn)行速度提高了12.8%;通過數(shù)據(jù)融合對(duì)數(shù)據(jù)進(jìn)行擴(kuò)增提高模型的推演能力,Top-1提高了0.9%測(cè)試識(shí)別率,通過樣本測(cè)試實(shí)驗(yàn)的誤測(cè)數(shù)降低證明模型的擬合能力得到了提高.