嚴(yán) 晶 任明武
(南京理工大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院 南京 210000)
目前,隨著人們生活和科學(xué)技術(shù)的不斷發(fā)展,智能手機(jī)已經(jīng)普惠大眾。當(dāng)下的智能手機(jī)更是搭載了高分辨率相機(jī),利用智能手機(jī)的高分辨率相機(jī)拍攝人民幣特征區(qū)域甚至可以看到人眼都無法看清的人民幣紋理細(xì)節(jié)。且隨著支付寶、微信等第三方支付工具的興起,人們可能不具備人民幣鑒偽的能力,則有可能受到欺騙。
在過去的幾年中,深度神經(jīng)網(wǎng)絡(luò)已經(jīng)取得了顯著的發(fā)展,同時(shí)這些網(wǎng)絡(luò)的計(jì)算復(fù)雜度和資源消耗也不斷增加。例如,廣泛使用的VGG16[8]網(wǎng)絡(luò)模型在對(duì)單張224*224 大小的圖像進(jìn)行分類的時(shí)候,需要500M 以上的存儲(chǔ)空間以及15B FLOPs。在實(shí)時(shí)應(yīng)用程序或者資源受限的設(shè)備中,這些網(wǎng)絡(luò)的部署產(chǎn)生了巨大的挑戰(zhàn)。傳統(tǒng)的解決方法是把模型的前向推理放在服務(wù)器上,然后通過網(wǎng)絡(luò)將預(yù)測(cè)結(jié)果傳回終端并上顯。這種解決方式比較依賴網(wǎng)絡(luò),當(dāng)終端處于無網(wǎng)或者網(wǎng)絡(luò)延時(shí)等的情況下,將無法保證應(yīng)用程序的實(shí)時(shí)性。近年來,在無人駕駛、智能手機(jī)等嵌入式和移動(dòng)設(shè)備取得了迅速發(fā)展,在這些設(shè)備上部署CNN 模型的需求變得越來越強(qiáng)烈,這也推動(dòng)了對(duì)計(jì)算效率高,模型體積小的CNN 的研究。人們主要從三個(gè)方面進(jìn)行了研究探索[24]:1)在原有的模型基礎(chǔ)上進(jìn)行網(wǎng)絡(luò)剪枝與壓縮,比如進(jìn)行網(wǎng)絡(luò)剪枝[7,17]、量化[13]、低秩分解等,但非結(jié)構(gòu)化的稀疏模型需要專門的軟/硬件支持[17];2)緊湊網(wǎng)絡(luò)設(shè)計(jì),比如MobileNet[12],shuffleNet[2,9],Xception[6]等;3)使用AutoML技術(shù),傳統(tǒng)網(wǎng)絡(luò)剪枝需要人們手工設(shè)計(jì)模型度量標(biāo)準(zhǔn),這往往需要經(jīng)驗(yàn)與多次嘗試,AutoML 技術(shù)克服這種弊端,讓機(jī)器自主學(xué)習(xí)新的網(wǎng)絡(luò)架構(gòu),比如RasNet[11]。
本文提出的手機(jī)人民幣鑒偽技術(shù)需要將網(wǎng)絡(luò)模型部署到手機(jī)上,在手機(jī)本地實(shí)現(xiàn)真?zhèn)舞b別。在不大幅度降低(甚至提高)預(yù)測(cè)準(zhǔn)確率的前提下,構(gòu)建基于移動(dòng)終端的卷積神經(jīng)網(wǎng)絡(luò)并將之用于人民幣真?zhèn)窝芯渴潜疚牡暮诵难芯咳蝿?wù)。為此本文構(gòu)建了輕量化的Light_DPN 網(wǎng)絡(luò),以DPN92 為主體網(wǎng)絡(luò)架構(gòu),運(yùn)用緊湊網(wǎng)絡(luò)設(shè)計(jì)、網(wǎng)絡(luò)剪枝等技術(shù)設(shè)計(jì)出了新模型。本文設(shè)計(jì)了詳細(xì)的人民幣采集方案,并與某銀行合作采集制作紙幣數(shù)據(jù)集,并對(duì)本文提出的Light_DPN網(wǎng)絡(luò)算法進(jìn)行多組驗(yàn)證分析實(shí)驗(yàn)。
ResNet[4]能夠進(jìn)行特征復(fù)用,但是不能很好地提取新的特征。相反,DenseNet[15]可以提取新的特征,但是擁有很高的特征冗余度,DPN 即將這兩者結(jié)合起來。原始DPN92 網(wǎng)絡(luò)參數(shù)量34.22M,模型大小137.78M,浮點(diǎn)數(shù)運(yùn)算量6.42GFLOPs。本文采集人民幣的左上角國(guó)徽區(qū)域和中間花卉區(qū)域的圖像樣本,分別進(jìn)行訓(xùn)練,將訓(xùn)練好的模型部署到移動(dòng)端,按照原始的DPN 網(wǎng)絡(luò)模型的大小,APP 將會(huì)太大,增加手機(jī)運(yùn)行負(fù)荷,給用戶下載造成負(fù)擔(dān)。
本文改進(jìn)原始的DPN 網(wǎng)絡(luò),通過引入Learned Group Convolution[16](以下簡(jiǎn)稱L-Conv)和Squeeze and Excitation[10](以下簡(jiǎn)稱SE)結(jié)構(gòu),在保證模型預(yù)測(cè)準(zhǔn)確率的情況下有效地壓縮了模型大小,減少了模型FLOPs 的大小。引入L-Conv,在訓(xùn)練的早期階段就開始進(jìn)行權(quán)重剪枝,自主學(xué)習(xí)稀疏網(wǎng)絡(luò)。在測(cè)試階段,通過引入index 層將輸入特征進(jìn)行重新排序,就可以使用普通的組卷積替代L-Conv。目前,組卷積在很多的深度學(xué)習(xí)庫(kù)中都已經(jīng)實(shí)現(xiàn),這無疑降低了將Light_DPN 網(wǎng)絡(luò)部署到實(shí)際應(yīng)用中的難度和成本。另外,本文通過在DPN 網(wǎng)絡(luò)中ResNet分支直連部分引入擠壓和激勵(lì)結(jié)構(gòu),使得它在學(xué)習(xí)過程中可以自主獲得每個(gè)特征通道的重要性,通過強(qiáng)化重要的特征來提高模型的準(zhǔn)確率。


1*1 卷積雖然可以對(duì)特征通道進(jìn)行降維,減少后續(xù)層參數(shù)量和復(fù)雜度,但是其本身卻擁有著較高的計(jì)算復(fù)雜度。組卷積的概念最早在AlexNet[1]中就引入了,在ResNeXt[5]中很好的證明其能有效地降低參數(shù)量和計(jì)算復(fù)雜度。但是如果將它直接應(yīng)用于DPN 網(wǎng)絡(luò)中1*1 的卷積層將會(huì)導(dǎo)致正確率的猛烈下降。這主要是因?yàn)樵贒PN 網(wǎng)絡(luò)中1*1 的卷積的輸入是前面層的輸出concat組成的,它們本來就擁有內(nèi)在的順序。將這些輸入特征硬性分配給不相交的組會(huì)阻礙網(wǎng)絡(luò)中的特征重用,從而導(dǎo)致模型準(zhǔn)確率的下降。本文引入了L-Conv 結(jié)構(gòu),將訓(xùn)練分為兩個(gè)階段,第一個(gè)階段是壓縮剪枝階段,將那些擁有低權(quán)重的不重要的連接裁減掉。訓(xùn)練的第二階段是優(yōu)化階段,通道分組已經(jīng)確定,迭代若干次進(jìn)行訓(xùn)練優(yōu)化,彌補(bǔ)之前剪枝操作帶來的正確率的下降。在預(yù)測(cè)階段,通過引入index 層將輸入特征重新排序,稀疏層可以直接利用標(biāo)準(zhǔn)的組卷積來實(shí)現(xiàn),無需特殊硬件的支持,有利于模型在移動(dòng)端的部署。
2.2.1 分組及壓縮規(guī)則



圖1 分組示意圖

圖2 壓縮規(guī)則示意圖
2.2.2 壓縮階段


圖3 訓(xùn)練、剪枝、預(yù)測(cè)示意圖
根據(jù)2.1 節(jié)的分析可知,DPN 簡(jiǎn)單來說是ResNet 和DenseNet 的組合。本文在原始的DPN 模塊中ResNet 分支的特征通道上引入SE 結(jié)構(gòu),其通過顯示地建模通道之間的相互依賴關(guān)系,自主衡量各個(gè)特征通道的重要程度。稍微增加計(jì)算量,但卻獲得了較高的模型性能。SE結(jié)構(gòu)如圖4所示,其中U 表示某一層的輸出特征圖,U∈RH*W*C,其中C 是通道數(shù)。

圖4 擠壓激勵(lì)示意圖
特征圖U 首先執(zhí)行squeeze 操作,該操作通過聚合空間維度的特征信息,將特征圖在channel 維度進(jìn)行特征壓縮來產(chǎn)生每個(gè)通道的描述符。本文選擇簡(jiǎn)單的全局平均池化來聚合空間維度信息,式(4)如下:

SE 結(jié)構(gòu)使模型體積和參數(shù)大小略微增加,但卻帶來顯著的性能改善。并且SE 結(jié)構(gòu)不需要設(shè)計(jì)新的網(wǎng)絡(luò)層,通過全局平均池化,卷積和非線性激活函數(shù)即可獲得特征通道的權(quán)重。簡(jiǎn)單的操作無需特殊的硬件或者軟件平臺(tái)支持,有利于模型在移動(dòng)端的部署。
本文提出的Light_DPN 的block 如圖5 所示,每個(gè)卷積部分都采用了Conv-BN-ReLU 結(jié)構(gòu)。分別在第一個(gè)和第三個(gè)1*1 Conv 部分運(yùn)用了L-Conv,在ResNet 分支部分加入SE 模塊。Light_DPN 輕量級(jí)神經(jīng)網(wǎng)絡(luò)是以DPN92(32×3d)為主體網(wǎng)絡(luò)架構(gòu)的,詳細(xì)的結(jié)構(gòu)描述如表3 所示,其中每個(gè)block 均采用本文提出的block結(jié)構(gòu)(圖5所示)。其中(+K)表示密集連接路徑上的寬度增量。SE 表示在殘差分支使用擠壓激勵(lì)結(jié)構(gòu)。

表3 Light_DPN網(wǎng)絡(luò)結(jié)構(gòu)示意圖

圖5 Light_DPN網(wǎng)絡(luò)block結(jié)構(gòu)示意圖
實(shí)驗(yàn)硬件配置為英特爾至強(qiáng)銀牌4116 處理器,Titan-V顯卡的服務(wù)器,同時(shí)使用vivo S1作為移動(dòng)端,基于android 6.0 開發(fā),配置為6G 運(yùn)行內(nèi)存,雙核1200萬像素的主攝像頭。
本文制定了詳細(xì)的人民幣采集方案,并與某銀行合作,請(qǐng)求銀行提供各式各樣的人民幣樣本庫(kù)。采集設(shè)備包含低、中、高端手機(jī)各一部,采集數(shù)據(jù)時(shí)模擬真實(shí)應(yīng)用場(chǎng)景,利用這三部手機(jī)在4 種場(chǎng)景下(室內(nèi)自然光、室內(nèi)日光燈,室外陽光、夜),采用4種拍攝姿勢(shì)(放置平拍,手拿仰視拍,手拿平視拍,手拿俯視),兩種拍攝距離(6cm、8cm),3 種聚焦方式(對(duì)焦、輕度模糊、重度模糊),對(duì)4 種紙幣質(zhì)量(正常,有污跡、破損、褶皺)進(jìn)行拍攝。本文中采集紙幣國(guó)徽和花卉區(qū)域,這兩個(gè)區(qū)域采用雕刻凹版印刷技術(shù),此技術(shù)工藝復(fù)雜,制作成本昂貴,而假幣采用的是普通膠印技術(shù)。由于制作工藝不同,相比于假幣,真幣在這兩個(gè)區(qū)域紋理更加清晰,有明顯的凹凸感和三維效果。在高分辨率鏡頭下,這種區(qū)別將會(huì)更加明顯。國(guó)徽和花卉區(qū)域分別建立鑒偽數(shù)據(jù)庫(kù),以國(guó)徽數(shù)據(jù)庫(kù)為例,訓(xùn)練集包含1800 張(900張真,900 張假),驗(yàn)證集600 張(300 張真,300 張假),測(cè)試集600張(300張真,300張假)。
在訓(xùn)練集上,將原始圖像隨機(jī)裁剪成不同大小和不同寬高比的圖像,然后將這些圖像縮放成224*224 大小的圖像。在驗(yàn)證集上,先將圖像縮放成256*256,然后采用中心裁剪的方式裁剪出224*224 大小的圖像進(jìn)行前向推理。訓(xùn)練一個(gè)模型使用300 個(gè)周期,weight decay=1e-4 ,學(xué)習(xí)率設(shè)置采用cosine 函數(shù),初始值為0.1,并隨著訓(xùn)練epoch的增加逐漸降為0。
原始DPN 網(wǎng)絡(luò)模型大小為137.7817M,參數(shù)量34.22M,F(xiàn)LOPs 的大小6387.48M,在國(guó)徽和花卉特征數(shù)據(jù)集上的預(yù)測(cè)準(zhǔn)確率分別為99.87%和99.89%。運(yùn)用本文2.4 小節(jié)提出的Light_DPN 網(wǎng)絡(luò)模型,進(jìn)行了兩組對(duì)比實(shí)驗(yàn)。第一組對(duì)比實(shí)驗(yàn)是,Learned Group Convolution中壓縮系數(shù)不變,對(duì)比在引入和不引入擠壓激勵(lì)結(jié)構(gòu)(SE)的兩種情況下,對(duì)模型parameter、Flops,以及國(guó)徽和花卉區(qū)域前向推理預(yù)測(cè)的正確率的比較。實(shí)驗(yàn)結(jié)果如表4 所示。 第二組對(duì)比實(shí)驗(yàn)是,在引入擠壓激勵(lì)結(jié)構(gòu)的情況下,對(duì)比不同的Condensation factor(壓縮系數(shù))對(duì)國(guó)徽和花卉區(qū)域預(yù)測(cè)的正確率、模型參數(shù)、Flops的影響。Condensation factor 值越大表示裁剪得越多。在本實(shí)驗(yàn)中,設(shè)置Condensation factor 即為groups 的數(shù)量,即分組的數(shù)量。實(shí)驗(yàn)結(jié)果如表4 所示。圖6和圖7分別表示國(guó)徽特征區(qū)域和花卉特征區(qū)域在4 種情況下的訓(xùn)練損失圖像。其中標(biāo)簽為“C=4”和“C=8”表示在不引入SE 結(jié)構(gòu),壓縮系數(shù)為4 和8 的兩種情形。“SE C=4”和“SE C=8”表示在引入SE結(jié)構(gòu)壓縮系數(shù)為4和8的情形。

表4 實(shí)驗(yàn)結(jié)果對(duì)比表

圖6 國(guó)徽區(qū)域訓(xùn)練損失

圖7 花卉區(qū)域訓(xùn)練損失
采用pytorch 將模型部署在移動(dòng)端,CPU 運(yùn)行測(cè)試,平均預(yù)測(cè)一張圖的時(shí)間為1360ms。以國(guó)徽區(qū)域和花卉區(qū)域在引入SE 結(jié)構(gòu)、壓縮系數(shù)為4 的情形為例,訓(xùn)練損失曲線如圖8 和圖9 所示。圖中第50、100、150 epochs的時(shí)候loss突然急劇增加,這是由于剪枝操作引起的。迭代共進(jìn)行300 個(gè)epochs,C=4,則前150 epochs 處于壓縮階段,共進(jìn)行3個(gè)剪枝操作,分別在第50、100、150epochs 是執(zhí)行,該操作剪去了剩余權(quán)重的一半,所以造成了loss 突然急劇增加。但是這些訓(xùn)練損失圖也表明了模型可以在后續(xù)的優(yōu)化階段從這些剪枝操作中恢復(fù)過來,loss會(huì)再次逐漸趨于平緩。從表4可以看出,在Light_DPN 網(wǎng)絡(luò)ResNet 分支引入擠壓激勵(lì)結(jié)構(gòu)能夠使正確率提高一兩個(gè)百分點(diǎn)。從實(shí)驗(yàn)結(jié)果中可以看到,壓縮系數(shù)取8 比取4 的時(shí)候具有更高的準(zhǔn)確率,且壓縮系數(shù)取8的時(shí)候獲得與原始DPN 網(wǎng)絡(luò)相同級(jí)別的準(zhǔn)確率,這不僅證明了深度卷積神經(jīng)網(wǎng)絡(luò)中具有很高的參數(shù)冗余,還證明了剪枝的合理性,有的時(shí)候剪枝能夠帶來更高的準(zhǔn)確率、更好的效果。

圖8 C=4時(shí)有SE國(guó)徽損失函數(shù)圖

圖9 C=4有SE花卉損失函數(shù)圖
針對(duì)目前深度神經(jīng)網(wǎng)絡(luò)模型復(fù)雜度高,計(jì)算量大,不利于其在移動(dòng)端的部署等問題,本文提出了一種以DPN92 網(wǎng)絡(luò)為主體網(wǎng)絡(luò)架構(gòu)的輕量級(jí)Light_DPN 網(wǎng)絡(luò)。通過在訓(xùn)練期間,用Learned Group Convolution 替代常規(guī)的1*1 卷積,訓(xùn)練開始階段就進(jìn)行剪枝操作去除冗余的連接權(quán)重。并且為了使模型在預(yù)測(cè)時(shí)效率更高,通過引入index 層將修剪后的網(wǎng)絡(luò)用常規(guī)組卷積替代Learned Group Convolution 卷積,而常規(guī)組卷積在大多數(shù)深度學(xué)習(xí)庫(kù)中均已有效實(shí)現(xiàn)。另外在Light_DPN 網(wǎng)絡(luò)的ResNet分支部分引入了擠壓激勵(lì)結(jié)構(gòu),其可以自主獲得各個(gè)通道的權(quán)重,強(qiáng)化重要的特征通道,抑制無用的特征。在本文的實(shí)驗(yàn)中,就模型的計(jì)算效率和模型大小而言,Light_DPN 相比于相同精度級(jí)別的原始DPN 網(wǎng)絡(luò)在本文采集的國(guó)徽和花卉數(shù)據(jù)集上具有更高的優(yōu)越性,其模型更小,計(jì)算量更小。并將其運(yùn)用到手機(jī)辨幣中,可以讓用戶在沒有互聯(lián)網(wǎng)的情況下也可隨時(shí)隨地進(jìn)行人民幣的真?zhèn)舞b別。不需要網(wǎng)絡(luò),不需要與云端服務(wù)器進(jìn)行通信,模型預(yù)測(cè)占用手機(jī)空間小,運(yùn)行起來流暢、快速,且功耗低,延長(zhǎng)了電池壽命。這款A(yù)PP將會(huì)有很大的應(yīng)用前景,同時(shí)也為人民幣走向國(guó)際化道路推波助瀾。