王雪純 王冰晨
(河南大學(xué),河南 開(kāi)封 475000)
驗(yàn)證碼在計(jì)算機(jī)網(wǎng)絡(luò)通信技術(shù)及資源共享領(lǐng)域的廣泛應(yīng)用,激發(fā)國(guó)內(nèi)外學(xué)者對(duì)驗(yàn)證碼的設(shè)計(jì)和識(shí)別進(jìn)行系統(tǒng)研究,Mori 和Malik 提出了一種有效的基于形狀上下文匹配的方法。Zhang J 和Wang X 利用4 種傳統(tǒng)圖像處理技術(shù)研究驗(yàn)證碼識(shí)別的有效方法。更多的研究則采用傳統(tǒng)的機(jī)器學(xué)習(xí)算法進(jìn)行檢測(cè)[1]。機(jī)器學(xué)習(xí)算法為難以建模的網(wǎng)絡(luò)空間安全問(wèn)題[2]提供可能性的同時(shí),在性能及效果方面存在一定的提升空間,而基于深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)(Convolutionional Neural Networks, CNN)因其在大數(shù)據(jù)背景下的性能及效果明顯優(yōu)于傳統(tǒng)的機(jī)器學(xué)習(xí)算法,近年來(lái)被廣泛應(yīng)用于處理解決語(yǔ)音、圖像識(shí)別與處理等問(wèn)題。
與傳統(tǒng)方法相比,CNN 的主要優(yōu)勢(shì)在于可以有效地從龐雜的樣本中學(xué)習(xí)相應(yīng)的特征,省去提取復(fù)雜特征的步驟,降低了網(wǎng)絡(luò)模型的復(fù)雜度。當(dāng)擁有足夠的標(biāo)注樣本時(shí),定義一個(gè)切實(shí)可行的網(wǎng)絡(luò)模型,即可得到高于傳統(tǒng)方法的識(shí)別效果。劉世林等人[3]提出了卷積循環(huán)神經(jīng)網(wǎng)絡(luò)(CRNN),將CNN 和RNN 結(jié)合起來(lái)完成對(duì)驗(yàn)證碼的識(shí)別。VGGNet 是牛津大學(xué)計(jì)算機(jī)視覺(jué)組(Visual Geometry Group)和Google DeepMind 公司的研究員一起研發(fā)的深度卷積神經(jīng)網(wǎng)絡(luò),其主要探索卷積神經(jīng)網(wǎng)絡(luò)的深度與網(wǎng)絡(luò)性能間的關(guān)系。張濤等人[4]提出采用深度學(xué)習(xí)端對(duì)端的單任務(wù)整體分類(lèi)的方式對(duì)字符進(jìn)行分割。
該文提出的輕量級(jí)網(wǎng)絡(luò)模型主要由卷積模塊(卷積層(Conv2d)、線(xiàn)性整流層(ReLU)、池化層以及Dropout 層)和用于分類(lèi)的全連接層組成,如圖1 所示。
圖1 該文網(wǎng)絡(luò)結(jié)構(gòu)
2.1.1 傳統(tǒng)卷積
卷積層(Convolutional layer)的每層由若干個(gè)卷積單元組合而成,可以用來(lái)提取輸入信號(hào)的不同特征,第一層卷積層可以用來(lái)提取較為低級(jí)的特征,例如線(xiàn)條、邊角等;多層卷積層可從低級(jí)特征中迭代提取得到較復(fù)雜的特征。該文采取5×5 卷積核的卷積層來(lái)進(jìn)行實(shí)驗(yàn)。
2.1.1.1 參數(shù)量
假設(shè)一共有A個(gè)通道,1個(gè)5×5卷積核的參數(shù)量KP5×5如公式(1)所示。
2.1.1.2 感受野
感受野(Receptive Field)如公式(2)所示。
式中:RFi為第i層的感受野;stride為第i層的卷積步長(zhǎng);ksize為卷積核大小。
2.1.2 空洞卷積
空洞卷積(Convolution with holes)可以使較高的卷積層也保持較大的特征圖譜,對(duì)一些小目標(biāo)物體進(jìn)行檢測(cè)時(shí),可以提高模型的整體性能,但該過(guò)程須確保殘差網(wǎng)絡(luò)的參數(shù)量保持不變、每個(gè)階段的卷積層視野保持不變。具體過(guò)程如圖2 所示,其中Ci(i=1,2,3,……)為卷積核單元。
圖2 卷積核視野對(duì)比
通過(guò)以上過(guò)程可以看出,普通3×3 的卷積核通過(guò)空洞卷積擴(kuò)充成5×5 的卷積核,使用空洞卷積代替上下采樣,從而很好地保留圖像的空間特征,也不會(huì)損失過(guò)多圖像信息。當(dāng)網(wǎng)絡(luò)層需要更大的感受野,但是計(jì)算資源有限,不能提高卷積核數(shù)量或大小時(shí),應(yīng)考慮使用該方法。
相關(guān)參數(shù)量如下:該文引入?yún)?shù)b、(b-1),將它們的值作為塞入相鄰元素間的空格數(shù),假定原來(lái)的卷積核大小為m,那么塞入(b-1)個(gè)空格后的卷積核大小n,如公式(3)所示。
設(shè)輸入空洞卷積的大小為c,步長(zhǎng)為d,填充量為p,經(jīng)過(guò)空洞卷積變換后特征圖大小k如公式(4)所示。
2.1.3 非對(duì)稱(chēng)卷積
非對(duì)稱(chēng)卷積(Asymmetric Convolutions)是對(duì)n×n卷積進(jìn)行拆分,將其拆分成n×1 卷積和1×n卷積,拆分算法結(jié)果與直接進(jìn)行n×n卷積的結(jié)果是等價(jià)的,n×n卷積運(yùn)算次數(shù)是n×n次乘法,非對(duì)稱(chēng)卷積變成了2×n次乘法,因此運(yùn)算量減少了。當(dāng)n越大時(shí),運(yùn)算量就越少。
線(xiàn)性整流層(Rectified Linear Units layer, ReLU layer)是讓線(xiàn)性整流(Rectified Linear Units, ReLU)作為該層神經(jīng)的激勵(lì)函數(shù)。可在增強(qiáng)判定函數(shù)和整個(gè)神經(jīng)網(wǎng)絡(luò)的非線(xiàn)性特性的同時(shí),不改變其空間或深度信息。ReLU 的另一個(gè)優(yōu)勢(shì)在于當(dāng)模型的泛化準(zhǔn)確度保持在一定范圍的情況下,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練速度可以達(dá)到成倍提升的效果。
池化層(Pooling Layer)是卷積模塊中的重要組成部分。池化(Pooling)本質(zhì)上講是一種形式的降采樣。池化有多種不同形式的非線(xiàn)性池化函數(shù),最大池化(max-pooling)、均值池化(mean-pooling)是最常見(jiàn)的2 種手段。該文采用的是max-pooling,它是將輸入的圖像劃分為多個(gè)矩形區(qū)域,計(jì)算每個(gè)子區(qū)域并輸出最大值,從而達(dá)到池化的效果。直觀上看,當(dāng)發(fā)現(xiàn)一個(gè)特征目標(biāo)之后,它與其他特征的相對(duì)位置的關(guān)系比其精確位置更為重要。池化層通過(guò)該方式不斷地減小數(shù)據(jù)的空間大小,使參數(shù)的數(shù)量和計(jì)算量逐漸下降,通過(guò)該方式一定程度地控制了過(guò)擬合。因此,池化層一般都會(huì)周期性地加在CNN 的卷積層之間。max-pooling 一般選擇大小為2×2 的卷積核。
上文提到max-pooling 在一定程度上可以控制過(guò)擬合,Dropout 層的作用也是為了防止過(guò)擬合,從而提升模型的泛化能力。簡(jiǎn)單來(lái)說(shuō),當(dāng)網(wǎng)絡(luò)前向傳播時(shí),某個(gè)神經(jīng)元的激活值突然以一定的概率p停止工作,即隨機(jī)丟失某一部分局部特征,使其不太依賴(lài)某些局部的特征,從而增強(qiáng)模型的泛化性。如圖3 所示。
圖3 Dropout 層功能
全連接層(fully connected layers,F(xiàn)C)是卷積神經(jīng)網(wǎng)絡(luò)中的分類(lèi)模塊。FC 將經(jīng)過(guò)卷積模塊操作后的圖像元素逐個(gè)串聯(lián)到一起,將這些高度提純特征的圖像元素作為如何投票的依據(jù),依次投到分類(lèi)器中,通過(guò)投票數(shù)做出最終的判決,判斷該驗(yàn)證碼中的數(shù)字。前后傳播關(guān)系如圖4 所示。
參數(shù)量計(jì)算如下。
圖4 中,x1、x2和x3為全連接層的輸入,a1、a2和a3為全連接層的輸出,W11、W21、W31、W12、W22、W32、W13、W23和W33為所占權(quán)重。
圖4 全連接層的前向傳播關(guān)系
該文對(duì)比了在不同卷積情況下卷積神經(jīng)網(wǎng)絡(luò)識(shí)別驗(yàn)證碼的能力。具體網(wǎng)絡(luò)參數(shù)見(jiàn)表1,其中,Conv1 為采用傳統(tǒng)卷積的模型第一層卷積的參數(shù)大小,Conv1_H 為采用空洞卷積時(shí)第一層卷積的參數(shù)大小,Conv1_A 為采用非對(duì)稱(chēng)卷積時(shí)第一層卷積參數(shù)的大小。
表1 網(wǎng)絡(luò)參數(shù)
該文在傳統(tǒng)CNN 的基礎(chǔ)上采用了tenserflow 框架,構(gòu)建了基于卷積神經(jīng)網(wǎng)絡(luò)的輕量級(jí)驗(yàn)證碼識(shí)別方法。實(shí)驗(yàn)平臺(tái)使用Windows10 操作系統(tǒng)、Intel(R)Core(TM)i7-8750H CPU @ 2.20 GHz 2.21 GHz 的處理器以及內(nèi)存為8 192 MB 的RAM。
該文實(shí)驗(yàn)數(shù)據(jù)由pcaptcha 庫(kù)自動(dòng)生成,共999 張驗(yàn)證碼圖像,按照8︰2 劃分的原則,將數(shù)據(jù)集劃分成訓(xùn)練集與測(cè)試集,其中訓(xùn)練集800 張,測(cè)試集199 張。具體生成驗(yàn)證碼如圖5 所示。
圖5 captcha 庫(kù)生成驗(yàn)證碼
該驗(yàn)證碼訓(xùn)練集圖片共800 張,測(cè)試集圖片199 張,分別采用傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)以及2 種輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)(空洞卷積和非對(duì)稱(chēng)卷積)進(jìn)行實(shí)驗(yàn),并將算法準(zhǔn)確率與訓(xùn)練速度2 個(gè)指標(biāo)進(jìn)行對(duì)比。
實(shí)驗(yàn)參數(shù)設(shè)計(jì)如下:訓(xùn)練最大迭代1 500 次,測(cè)試次數(shù)100 次。分別對(duì)3 種方法的訓(xùn)練準(zhǔn)確率以及訓(xùn)練總時(shí)長(zhǎng)進(jìn)行對(duì)比,結(jié)果見(jiàn)表2。
表2 不同方法訓(xùn)練準(zhǔn)確率及單次所用平均時(shí)長(zhǎng)
由表2 可知,當(dāng)準(zhǔn)確率在一定范圍內(nèi)時(shí),2 種輕量級(jí)卷積的訓(xùn)練時(shí)長(zhǎng)均有所縮減??斩淳矸e在擴(kuò)充卷積核時(shí)部分特征缺失,從而導(dǎo)致準(zhǔn)確率下降。非對(duì)稱(chēng)卷積通過(guò)減少運(yùn)算次數(shù),保證訓(xùn)練時(shí)長(zhǎng)可以明顯地縮短。
該文利用對(duì)傳統(tǒng)卷積模塊、空洞卷積模塊以及非對(duì)稱(chēng)卷積模塊的方法進(jìn)行對(duì)比,提出了基于輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò)的驗(yàn)證碼識(shí)別方法。實(shí)驗(yàn)結(jié)果表明,在準(zhǔn)確率大于95%的情況下,空洞卷積和非對(duì)稱(chēng)卷積的訓(xùn)練時(shí)長(zhǎng)都會(huì)縮短,且非對(duì)稱(chēng)卷積比空洞卷積的訓(xùn)練時(shí)長(zhǎng)縮減程度更為明顯。此外,通過(guò)該實(shí)驗(yàn)也發(fā)現(xiàn)空洞卷積在擴(kuò)充核大小時(shí)存在的問(wèn)題,接下來(lái)的工作將繼續(xù)優(yōu)化輕量級(jí)卷積神經(jīng)網(wǎng)絡(luò),同時(shí)通過(guò)該文的實(shí)驗(yàn)數(shù)據(jù),對(duì)網(wǎng)絡(luò)安全以及驗(yàn)證碼安全進(jìn)行分析。