溫明莉,趙 軒,蔡夢倩
(四川大學 計算機學院,四川 成都 610065)
基于深度學習的端到端驗證碼識別
溫明莉,趙 軒,蔡夢倩
(四川大學 計算機學院,四川 成都 610065)
驗證碼是一種在網絡環境中用來區分人類和機器的測試方法,驗證碼識別的研究可以更好地發現驗證碼在網絡安全中的漏洞,從而防止網絡中的一些惡意入侵。文章提出了一種深度神經網絡模型來識別驗證碼,引入卷積神經網絡,對驗證碼不經過任何預處理,端到端識別驗證碼,避免傳統的定位、分割等步驟,仿真訓練驗證碼數據,擴大網絡所需數據集,提高驗證碼識別準確率。試驗結果表明,該模型對于識別不同級別的復雜驗證碼都有很好的效果,單個識別率高達99%。
深度神經網絡;驗證碼識別;卷積神經網絡
隨著互聯網行業的蓬勃發展,網絡安全也逐漸成為人們關注的重點,在人們的日常生活中扮演著重要角色,驗證碼應運而生,在互聯網中無處不在。驗證碼(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)是一種用來區分用戶行為是人類行為或機器行為,這對于人類來說,準確率可高達90%,而對于計算機卻很困難。用戶在網絡站點進行會員注冊與登錄,以及自動回復時,用戶需填寫網站所提供的驗證碼,與網站服務器的驗證碼結果對比成功之后,才能順利通過服務器的驗證,完成剩下的各種操作。它們直觀、廉價、快速地保護網站和防止垃圾郵件,常用在郵箱注冊與登錄、網上購物等,常用的驗證碼是一種包含不同扭曲遮擋變形程度的數字、字母或者文字的圖片。
在計算機視覺領域,傳統的驗證碼識別技術被分為預處理(去噪等)、定位、分割(字符分割),字符識別等模塊。各模塊獨立存在,這樣意味著一旦某個模塊出現錯誤,將導致整個驗證碼識別系統的識別率降低,而端到端的驗證碼識別系統完美地解決了該問題。深度神經網絡有很多網絡層,不同層可以學習到不同等級的特征,整個網絡統一訓練來完成該系統最終的驗證碼識別這一目標,不同的神經網絡有其獨特的使用目的。本文使用的卷積神經網絡在圖像處理和視頻理解上都取得了巨大的成功,比如Google就用卷積神經網絡處理街景圖片來檢測家庭住址等。
卷積神經網絡(Convolutional Neural Network,CNN)是一種多層感知機,它的卷積層由多個平面組成,每個平面有不同的多個獨立神經元,通過滑動窗口來得到特征圖。在本文的模型中,選擇CNN學習圖片的特征表達。
卷積神經網絡與BP神經網絡類似,都采用了前向傳播計算輸出值、反向傳播調整權重和偏置;CNN與標準的BP神經網絡最大的不同是:CNN中相鄰層之間的神經單元并不是全連接,而是部分連接,也就是某個神經單元的感知區域來自于上層的部分神經單元,而不是像BP神經網絡那樣與所有的神經單元相連接。
1.1 卷積層
本文的網絡結構大部分通過卷積層來獲取驗證碼圖片的特征。卷積層有局部感知、權值共享的特點,它使用稀疏連接來挖掘圖像中的空間局部關聯信息,并通過局部感受野提取出初級視覺特征,如邊緣、方向等。同時,卷積神經網絡可以通過局部連接與權值共享,極大地減少了訓練網絡所需參數個數,從而加快收斂速度。卷積層的輸入來源于輸入層或者上一層卷積層,每一層的多個獨立卷積核大小相同,在本文的網絡結構中,使用的卷積核大小均為7×7。網絡拓撲結構及參數設置如表1所示。

表1 網絡拓撲結構及參數設置
1.2 Batch Normalization
在每一層卷積和全連接之后,接Batch Normalization操作。因為低層網絡在訓練過程中更新了參數,引起后面層輸入數據分布的變化,將會影響網絡的訓練速度。所以我們在每一層輸入時添加預處理操作,插入一個歸一化層,其是一個可學習、有參數的網絡層。Batch Normalization操作提高網絡的泛化能力,不用考慮加入dropout以及L2正則項參數的選擇問題,也不需要使用局部響應歸一化層,便可將訓練數據徹底打亂,使得網絡迅速收斂。
在本文的深度學習訓練過程中,需要大量的數據來訓練網絡模型。但是至今為止,沒有一個公開的驗證碼數據集,利用Python語言編碼自動生成訓練樣本。生成的驗證碼如圖1所示。

圖1 驗證碼
該驗證碼圖片大小為90×30。90是圖片長度,30為圖片高度。加入了3種字體times,arial,Calibri。驗證碼經過了不同程度的噪聲、旋轉、扭曲、個別字符覆蓋,所有驗證碼包含了0-9以及a-z、A-Z 62個字符。用了5萬張驗證碼圖片的數據訓練,1萬的數據測試。為了驗證該網絡的普遍適用性,又用某網站的10 000張數據做訓練樣本,用200張該網站驗證碼測試。該網站驗證碼有0-9 10種繁體字形、彩色圖片,外加等于兩字,實現了不同程度的旋轉和覆蓋。
驗證碼圖片生成之后,我們開始網絡訓練。首先將生成的驗證碼圖片保存為pkl文件,每個pkl文件包含了10 000張驗證碼圖片,使得網絡可以更快更輕松地加載數據集文件。網絡采用小批量訓練的方式,每次訓練100張圖片。該網絡使用Keras深度學習框架,ReLu激活函數,迭代次數1 000次,達到的準確率如表2所示。

表2 驗證碼準確率
本文提出了端到端的基于卷積神經網絡對驗證碼的識別方法,替代了傳統的定位、分割、識別等步驟,在驗證碼識別應用中得到了很好的效果。當然,如果驗證碼更復雜,該網絡模型的訓練則需要更多的訓練數據來增強網絡的魯棒性。
[1]MONI N. Veri fi cation of a human in the loop or Identi fi cation via the Turing Test[J].Unpublished Manuscript,1996(13):45-48.
[2]MAASS W,NATSCHL?GER T,MARKRAM H. A fresh look at real-time computation in generic recurrent neural circuits[R].Technical report,Institute for Theoretical Computer Science,2002.
[3]JAEGER H. Harnessing nonlinearity: Predicting chaotic systems and saving energy in wireless communication[J].Science,2004(304):78-80.
[4]KOLEN J,KREMER S. Gradient fl ow in recurrent nets: the dif fi culty of learning long-term dependencies[M].Florence:Wiley-IEEE Press,2007.
[5]HOCHREITER S. Untersuchungen zu dynamischen neuronalen Netzen. Long short term memory[M].Munchen:Technische Universit at Munchen,1991.
[6]VINYALS O,TOSHEV A,BENGIO S,et al. Show and tell: a neural image caption generator[J].IEEE Conference on Computer Vision& Pattern Recognition,2015(9):3156-3164.
An end-to-end veri fi cation code identi fi cation based on depth learning
Wen Mingli, Zhao Xuan, Cai Mengqian
(Computer Science College of SiChuan University, Chengdu 610065, China)
The verification code is a test method used to distinguish between humans and machines in network environment. The studies on verification code identification can better detect vulnerabilities in the security of the verification code, thereby preventing some malicious intrusion in the network. In this paper, we propose a depth neural network model to identify the veri fi cation code, the introduction of convolution neural network, the veri fi cation code without any pretreatment, end-to-end identi fi cation veri fi cation code, to avoid the traditional positioning, segmentation and other steps, simulation training veri fi cation code data, expand the network required data sets, improve the accuracy of veri fi cation code recognition. The experimental results show that the model has a good effect on identifying different levels of complex veri fi cation codes, with a single recognition rate of up to 99%.
deep neural network; veri fi cation code identi fi cation; convolution neural network
溫明莉(1993— ),女,四川達州,碩士。