溫明莉,趙 軒,蔡夢倩
(四川大學(xué) 計算機(jī)學(xué)院,四川 成都 610065)
基于深度學(xué)習(xí)的端到端驗證碼識別
溫明莉,趙 軒,蔡夢倩
(四川大學(xué) 計算機(jī)學(xué)院,四川 成都 610065)
驗證碼是一種在網(wǎng)絡(luò)環(huán)境中用來區(qū)分人類和機(jī)器的測試方法,驗證碼識別的研究可以更好地發(fā)現(xiàn)驗證碼在網(wǎng)絡(luò)安全中的漏洞,從而防止網(wǎng)絡(luò)中的一些惡意入侵。文章提出了一種深度神經(jīng)網(wǎng)絡(luò)模型來識別驗證碼,引入卷積神經(jīng)網(wǎng)絡(luò),對驗證碼不經(jīng)過任何預(yù)處理,端到端識別驗證碼,避免傳統(tǒng)的定位、分割等步驟,仿真訓(xùn)練驗證碼數(shù)據(jù),擴(kuò)大網(wǎng)絡(luò)所需數(shù)據(jù)集,提高驗證碼識別準(zhǔn)確率。試驗結(jié)果表明,該模型對于識別不同級別的復(fù)雜驗證碼都有很好的效果,單個識別率高達(dá)99%。
深度神經(jīng)網(wǎng)絡(luò);驗證碼識別;卷積神經(jīng)網(wǎng)絡(luò)
隨著互聯(lián)網(wǎng)行業(yè)的蓬勃發(fā)展,網(wǎng)絡(luò)安全也逐漸成為人們關(guān)注的重點,在人們的日常生活中扮演著重要角色,驗證碼應(yīng)運而生,在互聯(lián)網(wǎng)中無處不在。驗證碼(Completely Automated Public Turing test to tell Computers and Humans Apart,CAPTCHA)是一種用來區(qū)分用戶行為是人類行為或機(jī)器行為,這對于人類來說,準(zhǔn)確率可高達(dá)90%,而對于計算機(jī)卻很困難。用戶在網(wǎng)絡(luò)站點進(jìn)行會員注冊與登錄,以及自動回復(fù)時,用戶需填寫網(wǎng)站所提供的驗證碼,與網(wǎng)站服務(wù)器的驗證碼結(jié)果對比成功之后,才能順利通過服務(wù)器的驗證,完成剩下的各種操作。它們直觀、廉價、快速地保護(hù)網(wǎng)站和防止垃圾郵件,常用在郵箱注冊與登錄、網(wǎng)上購物等,常用的驗證碼是一種包含不同扭曲遮擋變形程度的數(shù)字、字母或者文字的圖片。
在計算機(jī)視覺領(lǐng)域,傳統(tǒng)的驗證碼識別技術(shù)被分為預(yù)處理(去噪等)、定位、分割(字符分割),字符識別等模塊。各模塊獨立存在,這樣意味著一旦某個模塊出現(xiàn)錯誤,將導(dǎo)致整個驗證碼識別系統(tǒng)的識別率降低,而端到端的驗證碼識別系統(tǒng)完美地解決了該問題。深度神經(jīng)網(wǎng)絡(luò)有很多網(wǎng)絡(luò)層,不同層可以學(xué)習(xí)到不同等級的特征,整個網(wǎng)絡(luò)統(tǒng)一訓(xùn)練來完成該系統(tǒng)最終的驗證碼識別這一目標(biāo),不同的神經(jīng)網(wǎng)絡(luò)有其獨特的使用目的。本文使用的卷積神經(jīng)網(wǎng)絡(luò)在圖像處理和視頻理解上都取得了巨大的成功,比如Google就用卷積神經(jīng)網(wǎng)絡(luò)處理街景圖片來檢測家庭住址等。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一種多層感知機(jī),它的卷積層由多個平面組成,每個平面有不同的多個獨立神經(jīng)元,通過滑動窗口來得到特征圖。在本文的模型中,選擇CNN學(xué)習(xí)圖片的特征表達(dá)。
卷積神經(jīng)網(wǎng)絡(luò)與BP神經(jīng)網(wǎng)絡(luò)類似,都采用了前向傳播計算輸出值、反向傳播調(diào)整權(quán)重和偏置;CNN與標(biāo)準(zhǔn)的BP神經(jīng)網(wǎng)絡(luò)最大的不同是:CNN中相鄰層之間的神經(jīng)單元并不是全連接,而是部分連接,也就是某個神經(jīng)單元的感知區(qū)域來自于上層的部分神經(jīng)單元,而不是像BP神經(jīng)網(wǎng)絡(luò)那樣與所有的神經(jīng)單元相連接。
1.1 卷積層
本文的網(wǎng)絡(luò)結(jié)構(gòu)大部分通過卷積層來獲取驗證碼圖片的特征。卷積層有局部感知、權(quán)值共享的特點,它使用稀疏連接來挖掘圖像中的空間局部關(guān)聯(lián)信息,并通過局部感受野提取出初級視覺特征,如邊緣、方向等。同時,卷積神經(jīng)網(wǎng)絡(luò)可以通過局部連接與權(quán)值共享,極大地減少了訓(xùn)練網(wǎng)絡(luò)所需參數(shù)個數(shù),從而加快收斂速度。卷積層的輸入來源于輸入層或者上一層卷積層,每一層的多個獨立卷積核大小相同,在本文的網(wǎng)絡(luò)結(jié)構(gòu)中,使用的卷積核大小均為7×7。網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及參數(shù)設(shè)置如表1所示。
表1 網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及參數(shù)設(shè)置
1.2 Batch Normalization
在每一層卷積和全連接之后,接Batch Normalization操作。因為低層網(wǎng)絡(luò)在訓(xùn)練過程中更新了參數(shù),引起后面層輸入數(shù)據(jù)分布的變化,將會影響網(wǎng)絡(luò)的訓(xùn)練速度。所以我們在每一層輸入時添加預(yù)處理操作,插入一個歸一化層,其是一個可學(xué)習(xí)、有參數(shù)的網(wǎng)絡(luò)層。Batch Normalization操作提高網(wǎng)絡(luò)的泛化能力,不用考慮加入dropout以及L2正則項參數(shù)的選擇問題,也不需要使用局部響應(yīng)歸一化層,便可將訓(xùn)練數(shù)據(jù)徹底打亂,使得網(wǎng)絡(luò)迅速收斂。
在本文的深度學(xué)習(xí)訓(xùn)練過程中,需要大量的數(shù)據(jù)來訓(xùn)練網(wǎng)絡(luò)模型。但是至今為止,沒有一個公開的驗證碼數(shù)據(jù)集,利用Python語言編碼自動生成訓(xùn)練樣本。生成的驗證碼如圖1所示。
圖1 驗證碼
該驗證碼圖片大小為90×30。90是圖片長度,30為圖片高度。加入了3種字體times,arial,Calibri。驗證碼經(jīng)過了不同程度的噪聲、旋轉(zhuǎn)、扭曲、個別字符覆蓋,所有驗證碼包含了0-9以及a-z、A-Z 62個字符。用了5萬張驗證碼圖片的數(shù)據(jù)訓(xùn)練,1萬的數(shù)據(jù)測試。為了驗證該網(wǎng)絡(luò)的普遍適用性,又用某網(wǎng)站的10 000張數(shù)據(jù)做訓(xùn)練樣本,用200張該網(wǎng)站驗證碼測試。該網(wǎng)站驗證碼有0-9 10種繁體字形、彩色圖片,外加等于兩字,實現(xiàn)了不同程度的旋轉(zhuǎn)和覆蓋。
驗證碼圖片生成之后,我們開始網(wǎng)絡(luò)訓(xùn)練。首先將生成的驗證碼圖片保存為pkl文件,每個pkl文件包含了10 000張驗證碼圖片,使得網(wǎng)絡(luò)可以更快更輕松地加載數(shù)據(jù)集文件。網(wǎng)絡(luò)采用小批量訓(xùn)練的方式,每次訓(xùn)練100張圖片。該網(wǎng)絡(luò)使用Keras深度學(xué)習(xí)框架,ReLu激活函數(shù),迭代次數(shù)1 000次,達(dá)到的準(zhǔn)確率如表2所示。
表2 驗證碼準(zhǔn)確率
本文提出了端到端的基于卷積神經(jīng)網(wǎng)絡(luò)對驗證碼的識別方法,替代了傳統(tǒng)的定位、分割、識別等步驟,在驗證碼識別應(yīng)用中得到了很好的效果。當(dāng)然,如果驗證碼更復(fù)雜,該網(wǎng)絡(luò)模型的訓(xùn)練則需要更多的訓(xùn)練數(shù)據(jù)來增強(qiáng)網(wǎng)絡(luò)的魯棒性。
[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— ),女,四川達(dá)州,碩士。