李 昊,程 輝
(江漢大學 數學與計算機科學學院,武漢 430056)
驗證碼是一種被廣泛應用于互聯網安全領域,可有效防止自動化腳本對服務器進行攻擊、區分人類和計算機的圖靈測試技術[1].較低的分辨率及背景帶干擾等特點,使其對傳統的光學字符識別技術(Optical Character Recognition,OCR)具有一定的抵抗能力,可有效避免金融詐騙、刷單式營銷等惡性事件的發生,因此備受金融證券系統和電商網站的青睞,被廣泛部署于各項服務中,為建設安全的互聯網環境做出了巨大的貢獻.近年來,計算機視覺技術(Computer Vision,CV)飛速發展,傳統的驗證碼變得不再安全.由此引發了驗證碼生成技術的更新迭代,出現了帶有彩色圖形噪聲、字符扭曲粘連嚴重的新型驗證碼.對于這種情況,旋轉匹配、支持向量機(Support Vector Machine,SVM)[2,3]等傳統算法變得不再適用.
得益于腦科學和神經科學的發展,有學者提出通過構造人工神經網絡(Artificial Neural Network,ANN),即把眾多具有信息處理功能的“神經元”按照一定的方式進行連接,組成網絡反復訓練,來模仿人腦的學習過程,進而達成“機器以人的方式學習圖片特征,識別驗證碼”的效果.1998年,LeCun 等人[4]在已有的工作基礎上設計了如圖1所示的名為LeNet-5的卷積神經網絡(Convolutional Neural Network,CNN)并在手寫數字的識別任務上取得成功.這之后,陸續有研究者設計出更深層的網絡.其中,文獻[5]設計的AlexNet 首先將修正線性單元ReLU 作為網絡各層的激活函數,大大縮短了模型收斂所需的時間;文獻[6]提出的VGG16和VGG19 則在加深網絡層數的同時使用小卷積核代替大卷積核,不僅減少了卷積操作帶來的計算量,還提升了模型提取圖像特征的精度;文獻[7] 設計的GoogLeNet 提出使用多尺度稀疏結構,保持網絡結構稀疏性的同時,充分利用了密集矩陣的高計算性能.實驗證明,將它們用于驗證碼識別都可取得不錯的成績.卷積神經網絡深度的增加帶來更強的圖像特征表達能力的同時,優化難、訓練成本高等問題也接踵而至,參數數量的激增,又令模型變得十分“臃腫”,限制了其在移動端及工業控制設備等算力弱、存儲小的平臺上的部署.如何在減少參數數量的同時獲得更強的特征表示能力和更高的識別成功率,便是一個十分重要的問題.
基于上述分析,本文設計了一種融合了空洞卷積和多尺度稀疏結構的輕量神經網絡用于復雜驗證碼圖像的特征提取和識別,計算網絡輸出的Sigmoid 交叉熵作為模型損失率,采用RAdam 算法做優化,其特點及計算過程在第1.3 節中介紹.

圖1 LeNet-5的結構
對圖像進行適當的預處理,可有效消除圖像中無關識別的信息[8],降低維度,既增強了特征因素的可檢測性,也有助于神經網絡設計的輕量化.本次實驗中對原始樣本集的預處理由統一尺寸及灰度轉換兩部分組成.其中,灰度轉換將三通道的驗證碼圖像轉換為單通道[9],這使得參與計算的數據量大大減少,既有利于圖像的進一步處理,也降低了神經網絡的負載,使其變得更輕.其轉換方法可用式(1)表示:

輕量神經網絡的設計要遵循幾個原則:盡量完整的網絡結構、不宜過多的層數以及盡可能少的內存訪問成本(Memory Access Cost,MAC)[10].基于此,本文設計了如圖2所示的名為LNet的輕量神經網絡,其參數信息如表1所示.其中,卷積操作使用如圖3(a)所示的大小為3×3,擴張率為2的空洞卷積核(atrous convolutions),相比于如圖3(b)所示的傳統卷積核,可在不增加參數的前提下獲得更大的感受野(Receptive Field,RF)[11];使用1×1 卷積核在不損害模型表達能力的前提下大大減少參數量和計算量[12].使用Leaky ReLU[13]作為各層的激活函數來緩解梯度消失問題,不使用修正效果更好的PReLU 函數的原因在于PReLU 會引入新的超參,加重模型的訓練負擔.Leaky ReLU的修正方法可用式(2)表示(a為常數).


圖2 輕量神經網絡
交叉熵在信息論中可用于度量兩個概率分布的差異性.適用于驗證碼識別任務的Sigmoid 交叉熵作為損失函數可用式(3)表示.


表1 LNet 參數信息

圖3 普通卷積核和空洞卷積核
RAdam 由Liu 等人[14]提出,兼有Adam 優化器[15–17]和隨機梯度下降法(Stochastic Gradient Descent,SGD)[18]兩者的優點,可在獲得較快收斂速度的同時有效避免掉入局部最優解的陷阱.根據方差分散度動態地打開或關閉自適應學習率,在大數據集上表現良好且內存需求不高,其計算過程可用式(4)~式(12)表示:


其中,式(4)計算第i步時的梯度;式(5)和式(6)分別計算移動量的一階矩估計和二階矩估計;式(7)對一階矩估計的值做偏差修正;式(8)計算SMA (Simple Moving Average)的最大長度;式(9)對二階矩估計的值做偏差修正;式(10)獲得方差的修正范圍.
本文借助爬蟲工具收集了100 萬張如圖4所示的帶有彩色圖形噪聲、字符扭曲粘連的驗證碼圖像建立主數據庫IDB1,其中每張圖像的原始大小為180×92;分別采集來自大連理工大學綜合教務系統和微信開發者平臺的6 萬張驗證碼圖像建立數據庫IDB2和IDB3,每張圖像的原始大小為168×84.經預處理后的樣本按照98:1:1的比例劃分為訓練集(train set)、驗證集(validation set)和測試集(test set).其中訓練集用于訓練模型,在梯度下降(gradient descent)的過程中確定網絡各層的權重和偏置等參數;驗證集用于學習率、深度等超參數(hyperparameter)的優化[19];測試集則用于對模型性能的最終評估.

圖4 超分辨率重建后的驗證碼圖像示例
本文模型構建及算法設計基于開源框架PyTorch實現,實驗中模型訓練的初始學習率(learning rate)為0.003.采用隨機遍歷算法確保訓練集中的每一張圖像都可被學習到,每次處理256 張圖像,最大迭代輪數(epochs)為500.開展實驗的軟硬件環境如表2所示.

表2 實驗環境的配置參數
LNet在訓練集和測試集上accuracy和loss的擬合曲線分別如圖5和圖6所示.可知擬合狀況良好.

圖5 訓練集和測試集上的accuracy 曲線

圖6 訓練集和測試集上的loss 曲線
為驗證本文設計的復雜驗證碼識別模型的優越性,設計了本文模型與基于VGG16 設計的模型A、基于ResNet-18 設計的模型B、基于GoogLeNet 設計的模型C和基于生成對抗網絡(Generative Adversarial Networks,GAN)設計的模型D的對比實驗.實驗在相同的實驗環境下展開,使用相同的訓練集訓練模型.5 種模型在IDB1、IDB2和IDB3 測試集上的實驗結果如表3和表4所示.
綜合表3和表4可知,本文設計的驗證碼識別模型除了在IDB2 上的識別成功率小于基于GAN 設計的方法外,綜合性能較其余4 種模型均有著一定優勢.

表3 5 種模型識別成功率(%)

表4 5 種模型的識別平均時間(單位:s)
為說明本文在設計輕量神經網絡時采用的策略對模型性能的影響,設計了空洞卷積、1×1 卷積核和多尺度稀疏結構在IDB1 主數據庫上的消融實驗:針對空洞卷積,將LNet中用于驗證碼圖像特征提取的卷積層改用尺寸為3×3的普通卷積核,驗證增大感受野對模型性能的影響;針對1×1 卷積,刪除所有用于降維的1×1 卷積層,查看其對參數數量的影響;針對多尺度稀疏網絡結構,將其更換為如圖7(b)所示的傳統結構.采用參數數量和識別率兩項指標評估模型性能,實驗結果如表5所示.參數數量的計算方法[20,21]可用式(13)表示.

其中,D是神經網絡的層數,i表示第i個卷積層,kil表示第i個卷積層卷積核的邊長,CiI表示輸入第i個卷積層的通道數,CiO表示第i個卷積層輸出的通道數.模型的參數數量直接影響算法的時間復雜度和空間復雜度,時間復雜度則決定了模型的訓練和預測時間.

圖7 多尺度稀疏結構和傳統結構

表5 消融實驗:設計策略對模型性能的影響
由表5可看出,引入空洞卷積后,網絡在不增加參數量的前提下提高了2.3%的性能;1×1 卷積的使用不僅提高了模型的識別率,還將參數量減少了40.1%;多尺度稀疏網絡結構的使用,也對模型性能的提升大有裨益.
面向帶彩色圖形噪聲、字符扭曲粘連的復雜驗證碼圖像的識別任務,本文融合了空洞卷積、1×1 卷積以及多尺度稀疏網絡結構的優點,設計了名為LNet的輕量神經網絡模型.在相同的實驗環境下使用相同的訓練集證明了本文設計的復雜驗證碼識別模型的優越性和有效性;設計消融實驗展示了不同設計策略對模型性能的影響,證明了本文設計模型的合理性.值得進一步討論的還有深度可分離卷積、可變形卷積[22]等對圖像特征提取能力和模型參數數量的影響.同時,如何進一步地壓縮模型以及如何利用現場可編程門陣列(Field Programmable Gate Array,FPGA)加速不同的卷積操作,也是我們團隊所關注的問題.
本文工作受國家自然科學基金、湖北省教育廳科研計劃及國家級大學生創新創業訓練計劃資助,謹在此對提供基金支持的各位老師致以崇高的敬意;對為本文實驗設計做郵件指導的浙江大學蔡登教授和為實驗開展提供必要環境的中國科學院武漢水生生物研究所王瑩博士致以由衷的感謝.