馬金林,陳德光,馬自萍,魏 麟
(北方民族大學 計算機科學與工程學院,銀川 750021)
隨著互聯網技術的飛速發展,驗證碼(CAPTCHA)識別已成為判別人機身份的有效手段,擔負著保護網絡賬號安全的第一道屏障,用于防止網站被自動程序進行大批量的惡意攻擊[1]。基于此,驗證碼識別技術的研究有益于驗證各種驗證碼的安全性,幫助人們設計更可靠、安全的驗證碼。
傳統的驗證碼處理流程可分為驗證碼預處理、二值化、去除離散噪聲、字符分割、歸一化、特征提取、訓練和字符識別等步驟[2]。這些步驟相對獨立,整個流程較為復雜,其對粘連較低、噪聲較小的驗證碼圖片效果明顯,而對于字符相互堆疊、扭曲度較高的驗證碼效果不理想。近年來,隨著深度學習的興起,有學者提出采用深度神經網絡的方法實現噪音較大的驗證碼識別,并取得了較好的成果。文獻[3]提出的基于兩極DCNN架構的模型能將形變度較大的驗證碼識別準確度提升至95%以上,但是其模型的參數量與浮點數計算量偏高。文獻[4]提出的自適應中值濾波算法經過多次迭代后平均準確度達到98%以上,但是其步驟較多相對繁瑣。文獻[5]提出的方法對極其復雜驗證碼的識別率達到82%左右,但是驗證碼復雜性還缺少評判標準。
神經網絡的特征提取與訓練過程類似于“黑箱”操作,若要得到識別率高的結果,需要針對網絡結構以及模型參數進行大量的繁瑣調整,而在國內外研究過程中,通常情況下直接給出模型的合理結構與最優參數值,并未對結構和參數值的探索過程進行合理的解釋,致使網絡的泛化能力較差且不便于后續改進。同時,在以往的驗證碼識別系統中,模型優劣的評判標準更注重準確度,并未討論該模型所需參數量與浮點數計算總量,存在一定的局限性。
針對上述問題,本文提出一種基于深度卷積神經網絡的驗證碼識別方法。在研究神經網絡模型結構的基礎上,運用Petri網建模,并利用Petri網的相關理論分析該模型內部組成及相互關聯的關系。在此基礎上,提出模型的優化策略并通過相關實驗驗證優化策略的正確性。同時,針對模型參數量與浮點數計算量之間的關系,提出超活性概念,以對不同模型進行靈敏度分析。
卷積神經網絡(Convolutional Neural Network,CNN)是一種建立在傳統神經網絡基礎上的深度神經網絡[2,6]。在結構上其通常由卷積層、池化層、激勵函數(通常使用線性整流單元)及全連接層組成[7]。圖1為CNN結構。

圖1 CNN結構
Petri網是離散并行系統的數學表示,其用于描述異步并發的系統模型[8-9],它既具有嚴格的數學表述方法,同時也具有直觀的圖形表示方法[10]。為了支撐CNN模型,需要利用先進的信息化技術手段對其建模。由于CNN是發生在訓練周期內的活動,因此可參照Petri網的概念,即以基本網(EN-net)系統為基礎,從而逐步擴展為符合卷積神經模型的網絡結構,進而優化網絡結構與參數以提高驗證碼識別準確度。借助Petri網重要的理論和關鍵技術,并根據EN-net的定義,可對CNN模型給出以下定義:
定義1卷積神經基本網(CNE-net)系統是由四元組N=(P,T,F,M0)組成。其中:P={P0,P1,…,Pm}為有限庫所的集合,每個庫所包含一批驗證碼資源;T={T0,T1,…,Tn}為有限變遷的集合,每個變遷的發生代表當前庫所的資源流向下一個庫所,且當前庫所中不會剩余資源;F為流關系,即庫所與變遷之間關系的集合,為庫所與變遷的笛卡爾積,代表當前階段訓練完成后的信息輸出到后續庫所中,以方便后續工作開展[11];M0為初始情態,即在初始情況下各個庫所的資源分布情況。在此基礎上,CNE-net網絡還應滿足以下條件:
1)P∪T≠?,即庫所與變遷至少存在一類,它們不能同時為空。
2)P∩T≡?,即庫所與變遷是2類元素,不能交叉。
3)F?(P×T)∪(T×P),即流關系F既可以由庫所流向變遷也可以由變遷流向庫所。
4)M0?2p,即M0為初始情態,表示初始情況下各庫所的資源分布情況。
5)dom(F)∪cod(F)≡P∪T,即流關系F的定義域dom(F)與值域cod(F)的并集為庫所P與變遷T的并集,用符號表示為dom(F)={x|?y:(x,y)∈F},cod(F)={y|?x:(x,y)∈F}。
AlexNet網絡設計結構如圖2所示,其由5層卷積、3層池化、3層全連接構成。AlexNet網絡中每層的參數如表1中的AlexNet所示。 基于AlexNet網絡并根據定義1的CNE-net,給出其對應的Petri網模型,如圖3所示,其模型元素與對應的流程如表2所示。

圖2 AlexNet網絡結構

表1 AlexNet各層參數設置

圖3 基于AlexNet的Petri網模型

表2 AlexNet的Petri網模型流程
由上述Petri網結構可知,其類似于一個出現網,而出現網僅是將發生過程按時間順序進行排列,因此其不足以優化AlexNet網絡模型。基于AlexNet網絡的特殊性,并結合CNE-net,下文給出AlexNet網絡的Petri網優化方法。
2.2.1 預備知識
預備知識主要有以下4個方面:
1)發生權。t∈T,M為N的標識,t在M下有發生權,記作M[t>[12],且滿足以下條件:
(1)?s∈·t:M(s)≥W(s,t),即s在t變遷前驅發生的條件為s庫所中的資源要大于等于所需要消耗的資源。
(2)?s∈t:M(s)+W(s,t)≤K(s),即庫所s的容量K要大于等于原庫所中的資源容量加上該變遷所產生的資源容量。
2)后繼。若M[t>,即t在M條件下具有發生權,M′記為M的后繼,后繼關系記為M[t>M′[13],且滿足以下條件:
(1)如果s∈·t-t·,則M′(s)=M(s) -W(s,t),即s庫所要消耗資源W(s,t)。
(2)如果s∈t·-·t,則M′(s)=M(s) +W(s,t),即s庫所要生成資源W(s,t)。
(3)如果s∈·t∩t·,則M′(s)=M(s)+W(t,s) -W(s,t),即s庫所既要生成資源W(t,s),又要消耗資源W(s,t)。
(4)如果s?·t∪t·,則M′(s)=M(s),即s庫所既不生成資源,也不消耗資源。
3)前集與后集。對于x∈P∪T,若有:
(1)·x={y|y∈P∪T∧(y,x)∈F},則稱·x為x的前集[14]。
(2)x·={y|y∈P∪T∧(x,y)∈F},則稱x·為x的后集[14]。
4)公平性。對于t1,t2∈T,若存在正整數k,使得?M∈R(M0)和?σ∈T*:M[σ>有#(ti/σ)=0?#(tj/σ)≤k,i,j∈{1,2}且i≠j,則稱t1和t2處于公平關系[15]。
2.2.2 基于Petri網參數優化的AlexNet網絡
定義2Petri網參數優化的AlexNet(Petri-ANPP-net)由六元組Π=(P,T;F,K,W,M0)組成,其中N=(P,T;F,M0)為定義1中卷積神經的基本網系統,其在滿足基本網系統的前提下還滿足以下條件:
1)Π中有一個開始位置i∈P和一個結束位置o∈P。
2)K為庫所P元素的容量函數,其代表驗證碼圖片批次的大小,即有K:P→{1,2,3,…}∪{∞}。
3)W為流關系F上的權函數,其代表驗證碼圖片的產生或消耗的量多少,本文采用學習率來表示流關系,即有W:F→{1,2,3,…}。
4)M0為初始資源分布情況,且還應該滿足?s∈S:M0(s)≤K(s)。
5)具有合理性,即:Π具有安全性,在任何時刻,Π中的所有庫所中至少包含一類驗證碼資源;具有規范性,任何庫所P均有容納資源(token)多少的表示,而非用一個token表示一類資源,這樣的Petri網描述能力更強。同理,每個變遷t均具有發生權M[t>和后繼M[t>M′;Π不包含無法執行的死任務,即從開始位置{i}起,任何一個變遷均可以被激活用來執行任務。
Petri網是一個異步并發系統,而定義2中Petri-ANPP-net給出的Petri網模型是一個順序執行系統且系統參數較多,將順序執行系統擴展為異步并發系統且減少參數的量。由并發公理可知,系統性能將會得到進一步改善且網絡更容易解讀。
定義3Petri網結構優化的AlexNet(Petri-ANPS-net)是四元組Σ=(S,T,W′,M0),其中,S,T,M0與Petri-ANPP-net中相同,其應滿足以下條件:
1)如果對于?(x,y)∈S×T∪T×S,即當(x,y)∈F時,有W′(x,y)=W(x,y),則稱W′:S×T∪T×S→{0,1,2,…}為Σ的廣義權函數[16]。
2)如果M[t>發生,則?s∈S:M(s)≥W′(s,t)且M(s)+W′(s,t)≤K(s)[16-17],即變遷t在M標識下具有發生權的條件為庫所s中的token要大于等于所消耗的token數量,且庫所s中所容納的token數量要大于等于其原本庫所中的數量加上新產生的token數量。
3)如果M[t>M′發生,則M[t>且?s∈S,有M′(s)=M(s)+W′(t,s)-W′(s,t)][18-19],即M若有后繼M′,則應滿足t在M下有發生權,且M′的token數量為原庫所中的token數量加上產生的token數量再減去消耗的token數量。
4)由于Petri-ANPS-net是異步并發系統,且每個驗證碼字母地位相當,則當其并發時,各個子系統間的權重相同。
為使更改后的模型與原模型變動最小,在圖3模型中P9庫所后設置4組并發操作(這是因為驗證碼的字符長度為4)。并發操作完成后,匯聚于漏庫所O。這樣改進后,將原來的順序執行系統變為異步并發系統,具體優勢有以下3點:
(1)模型簡潔,由定義2的Petri-ANPP-net六元組改造為定義3的Petri-ANPS-net的四元組,降低了模型的復雜度。
(2)模型參數更新合理化,P10~P13共享P9中的token,但是各個分支的關系相互獨立,則各個分支的權值與偏置值的更新與其余分支無關。
(3)加速模型收斂,由于異步并發系統中4條分支同時訓練,相對于順序執行收斂速度更快。
圖4所示為基于ANPS-net的模型(黑色變遷為隱變遷,表示前面的若干庫所與變遷,由于圖4中前面的庫所變遷與圖3中的P0~P9相同,因此采用隱變遷代替)。相關參數見表1(右)表示的Petri-ANPS-net網絡結構。

圖4 Petri-ANPS-net模型
2.4.1 DenseNet網絡
密集型卷積神經網絡DenseNet由文獻[20]提出,其從神經網絡的特征入手,簡化模型參數,同時達到了更好的效果。它的主要思想是跨層連接,網絡的每一層輸入都是前面所有層輸出的并集,而該層學習到的特征也會被直接傳給后面所有層作為輸入。在上述過程中,信息流進行整合,避免了信息在層與層之間傳遞丟失的問題,極大地減輕了梯度彌散。
DenseNet主要由密集塊和過渡層組成。在每個密集塊內,層與層之間的非線性轉換函數Hl(·)包含3個連續操作,即批量標準化、線性整流函數ReLU以及3×3 卷積(3×3Conv)[20]。 定義超參數k為增長率,如果Hl(·)每層產生k個特征映射,則第l層將有k0+k(l-1)個特征映射輸入(k0為首個輸入層的特征數)。
2.4.2 DenseNet-BC網絡
DenseNet網絡的密集連接方式會導致后續密集層有大量輸入特征,從而導致參數量急劇增長,因此在每個密集層的3×3Conv前引入1×1Conv作為頸瓶層,來減少特征映射輸入的數量[21],同時,在每個過渡層中引入一個1×1Conv使其輸出特征減少,以增強GPU內存的利用率。
由于實現樸素的DenseNet-BC可能需要大量的GPU內存,基于此,引入共享內存分配機制,所有層都使用共享內存分配來存儲中間結果。后續圖層會覆蓋先前圖層的中間結果,但可以在后向傳遞期間以最低成本重新填充它們的值,這樣做可以將特征映射內存消耗從二次減少到線性。圖5所示為DenseNet-BC網絡結構模型,由3個密集塊與2個過渡層組成,圖6第3列為DenseNet-BCm網絡參數,圖6第4列、第5列給出Petri-DNBC-net的網絡參數。

圖5 DenseNet-BC網絡結構

圖6 DenseNet-BC網絡參數
從圖6可以看出,該模型由3個密集塊與2個過渡層組成,并將原來的單分類層改為并行的四分類層。
2.4.3 基于Petri網優化的DenseNet-BC
定義4Petri網優化的DenseNet-BC(Petri-DNBC-net)在定義3的條件下還應滿足以下條件:
1)?x∈S∪T,x∩x·≠?即對元素x的前集與后集相交不為空(網絡不為純網)。
2)t1,t2∈T時,t1和t2不一定處于公平狀態。
2.5.1 活性
根據定義1中的CNE-net,如果對任意C∈R(M0),都存在M′∈R(M),使得M′[t>,則稱變遷t是活的。如果t∈T都是活的,則稱N為活的Petri網[14]。
2.5.2 超活性
活性用來評判網絡是否存在死鎖或者陷阱等不足,但是其不能用來評判網絡的反應靈敏度。基于此,提出了超活性的概念。

1)在同構系統中,超活性(R)相同時,則靈敏度相同。
2)在異構系統中,比較超活性R1和R2的值,R較大者則靈敏度相對較高。
2.5.3 3種網絡結構的超活性比較

本文實驗基于Win10平臺,CPU為Inter(R) Xeon(R) E5-1620 v3 3.5 GHz,內存8 GB,顯卡為NVIDIA RTX 2080。
在深度學習的訓練過程中需要大量的數據來訓練構建的網絡模型。由于目前沒有公開的驗證碼數據集,本文采用驗證碼生成器生成4字驗證碼數據集,在生成驗證碼的過程中對字符進行不同程度的旋轉、扭轉、平移、加入噪點及字符重疊等處理[22]。驗證碼圖片大小為60×160,由阿拉伯數字0~9以及小寫字母a~z共36類隨機組成。通過對生成的驗證碼圖片進行灰度化處理,以提高訓練和測試的速度,然后將得到的灰度圖片制作成Tensorflow易讀取的TFrecords格式的數據集。圖7為部分驗證碼圖片。

圖7 部分驗證碼圖片
選擇基于框架Tensorflow的實現,在綜合比較后,損失函數采用sigmoid交叉熵損失函數,優化器采用AdamOptimizer來使損失函數sigmoid交叉熵最小化,其學習率初始固定為0.000 3,初始訓練批次大小為20。在訓練過程中還添加了dropout層,能夠在一定程度上防止過擬合,其參數值為0.5。圖8顯示了不同訓練集下的準確度。

圖8 不同訓練集的準確度
從圖8可以看出,當選用45 000張驗證碼圖片時(其中訓練集為40 000張,測試集為5 000張),其準確度最高為55%左右(測試方式為測試10個批次,每個批次為40張,將每個批次的準確度相加再除以10即為最終的準確度),較其余3組數據集性能更為優越。因此,在下文的實驗中,TFrecords數據集均采用45 000張圖片制作。
由Petri-ANPP-net可知,Petri網在結構確定的情況下,其性能由庫所P中資源和流關系F上的權函數共同決定。預備實驗中的學習率(權函數)與批次大小(資源)是隨機設置的,存在較大的局限性,而同時調整2個參數會導致模型變得異常復雜。因此,假設當token發生變化時,權函數W為理想條件,即M[t>M′一定發生。同理,當調整權函數W時,其資源一定滿足所有條件即不發生沖突、沖撞等異常情況。
實驗1結合預備實驗,將初始學習率設為0.000 3,即流關系F的權值設置為0.000 3(這里將0.000 3看成無窮大,資源均能快速通過),設置4組不同批次的對照實驗。第1組為10張/批次,第2組為20張/批次,第3組為25張/批次,第4組為30張/批次。在初始庫所P0中放置不同的token數量,以測試該系統的最佳token性能。圖9顯示了不同大小的批次量在不同迭代次數下的準確度。

圖9 不同大小批次量的準確度
從圖9可以看出,批次量太大或太小均會影響系統的整體性能,當批次量為25張/批次時,在該網絡結構條件下準確度達到最優,且最優值為60%。
實驗2由實驗1可知,當批次量設置為25張/批次時,系統所能達到的性能具有最優標準。但是實驗1隨機固定了初始學習率,不能說明實驗1的最高準確度就是該網絡結構下的最高值。基于此,在實驗1的基礎上(即固定批次量為25張/批次),設置4組不同的學習率參數進行對照實驗。第1組學習率為0.000 2,第2組學習率為0.000 3,第3組學習率為0.000 4,第4組學習率為0.000 5。圖10顯示了不同學習率在不同迭代次數下的準確度。

圖10 不同學習率的準確度
從圖10可以看出,學習率過大或過小均會影響系統整體性能,當學習率為0.000 3時,在該網絡結構條件下,準確度達到最優,且最優值為60%(說明實驗1隨機設置的學習率即為最佳學習率)。
基于Petri-ANPP-net所能達到的準確度最高為60%,與預處理實驗中55%相比略有提升。而此時庫所中token資源與流關系F均已調整為最佳。由以上實驗可知,參數調節能在一定范圍內優化系統性能。
由Petri-ANPS-net可知,網結構優化后,其性能也會發生改變。為此,設置實驗3、實驗4兩組實驗。
實驗3為驗證不同學習率下Petri網優化結構后模型的準確度,將批次量設置為25張/批次(結合實驗1、實驗2),進行了4組對比實驗。第1組學習率為0.000 1,第2組學習率為0.000 2,第3組學習率為0.000 3,第4組學習率為0.000 4,實驗結果如圖11所示。

圖11 優化結構后不同學習率的準確度
從圖11可以看出,在網絡結構合理的條件下,準確度將保持較高水平,當學習率為0.000 3時,其最高值相對平穩且略優于其他各組。
實驗4為驗證不同批次下Petri網優化結構后模型的準確度,將學習率設置為0.000 3(由實驗3得),調整批次大小后再進行4組實驗。第1組批次大小為20張/批次,第2組為25張/批次,第3組為30張/批次,第4組為40張/批次,優化結構后不同批次下準確度的實驗結果如圖12所示。

圖12 優化結構后不同批次的準確度
從圖12可以看出,在網絡結構合理的情況下,單一參數在一定范圍內變化對準確度影響較小;當學習率為0.000 3、批次大小為30張/批次時,其準確度最高達到了97.50%。
對以上各組實驗中不同參數條件下的平均最高準確度進行總結,結果如表3所示。

表3 不同參數下的平均最高準確度
從表3可以看出,批次和學習率均能影響模型性能,尤其是一些不合理的參數會導致網絡模型失敗,在最佳參數條件下,Petri-ANPS-net網絡相對于Petri-ANPP-net絕對準確度提升了37.10%,說明網絡模型設計是系統成功的關鍵。
由Petri-DNBC-net可知,當網絡模型改變后,則網絡性質將會發生一定的改變,從而導致網絡性能發生改變。
實驗5參考Petri-ANPP-net以及Petri-ANPS-net,將驗證碼大小設置為224×224。經過綜合比較后,學習率設置為0.1,偏置值設置為0.000 1,批次大小為64張/批次。在此基礎上,設置4組對比實驗,第1組網絡深度為40,增長率為12%,第2組網絡深度為40,增長率為24%,第3組網絡深度為100,增長率為12%,第4組網絡深度為100,增長率為24%。表4為在各參數條件下Petri-DMBC-net的準確度。

表4 Petri-DNBC-net的準確度
從表4可以看出,當深度和增長率增加后,其準確度會相應增加,當深度為100時,其準確度大于99%。
由以上實驗可知,Petri-DNBC-net的準確度略優于Petri-ANPS-net,且Petri-ANPP-net準確度最低。但是,準確度僅是驗證模型綜合性能的指標之一。為此,還應考慮超活性對模型性能的影響。
為測試各模型的超活性,選擇在不同模型的最高準確度下進行超活性分析,實驗結果如表5所示。

表5 不同模型的性能指標
從表5可以看出:
1)Petri-ANPP-net和Petri-ANPS-net網絡的超活性R值相同,說明它們的靈敏度相同,這也驗證了同構網絡具有相同的PQ、FPN和超活性R值。同時,Petri-ANPP-net的最高準確度為60.40%,而Petri-ANPS-net的最高準確度為97.50%,說明Petri-ANPS-net綜合性能遠高于Petri-ANPP-net。
2)無論在何種條件下,Petri-DNBC-net的準確度都略高于Petri-ANPS-net。而在超活性方面,Petri-DNBC-net的超活性RD≈280,Petri-ANPS-net的超活性RA≈14。因此,Petri-DNBC-net的靈敏度高于Petri-ANPS-net,且綜合性能也優于Petri-ANPS-net網絡。
本文利用Petri網理論,基于AlexNet、DenseNet-BC網絡得到Petri-ANPP-net、Petri-ANPS-net以及Petri-DNBC-net 3種優化的網絡模型,并提出基于Petri網優化的驗證碼識別方法。基于模型異構性對評判標準產生的影響,提出了超活性概念,其對模型的靈敏度評判具有較高準確性,能夠消除異構性從而達到公平評判模型靈敏度的目的。實驗結果表明,本文方法能夠在一定程度上優化網絡模型的結構和參數。下一步將優化卷積核、池化核以及研究學習率與批次大小之間的關系,以提升驗證碼的安全性。