摘 要:互聯(lián)網(wǎng)時(shí)代,驗(yàn)證碼是互聯(lián)網(wǎng)安全的重要保證。文章應(yīng)用圖像處理與深度學(xué)習(xí)方法,通過(guò)灰度化、OTSU閾值分割法、腐蝕與膨脹充分提取圖像特征。結(jié)合卷積神經(jīng)網(wǎng)絡(luò)(CNN)、GRU單元,構(gòu)建神經(jīng)網(wǎng)絡(luò)模型。實(shí)現(xiàn)對(duì)驗(yàn)證碼中大小寫(xiě)英文字母和阿拉伯?dāng)?shù)字的精確識(shí)別,驗(yàn)證碼平均識(shí)別準(zhǔn)確率達(dá)到93%左右,具有一定的實(shí)際意義。
關(guān)鍵詞:OTSU閾值分割;腐蝕與膨脹;CNN;GRU
0 引言
在互聯(lián)網(wǎng)時(shí)代,網(wǎng)絡(luò)安全是人們?nèi)找骊P(guān)注的話(huà)題。而驗(yàn)證碼,就是保護(hù)人民網(wǎng)絡(luò)安全中的重要一環(huán)。驗(yàn)證碼是一種區(qū)別當(dāng)前用戶(hù)是人或是計(jì)算機(jī)的測(cè)試方法,廣泛應(yīng)用于互聯(lián)網(wǎng)中,常見(jiàn)于交通系統(tǒng)的票務(wù)購(gòu)買(mǎi),可以有效防止計(jì)算機(jī)程序的自動(dòng)購(gòu)買(mǎi),破壞公平。
驗(yàn)證碼通常由英文字母與阿拉伯?dāng)?shù)字組成,并且為了防止被機(jī)器自動(dòng)識(shí)別,驗(yàn)證碼圖片往往像素較小,伴隨大量噪點(diǎn)與噪聲線(xiàn),同時(shí)字符存在一定程度的扭曲與粘連,識(shí)別難度較大。
本文主要研究由26個(gè)大寫(xiě)字母、26個(gè)小寫(xiě)字母與10個(gè)阿拉伯?dāng)?shù)字組成的4位驗(yàn)證碼,采用結(jié)合CNN與GRU的神經(jīng)網(wǎng)絡(luò)架構(gòu),對(duì)驗(yàn)證碼進(jìn)行識(shí)別。
1 相關(guān)研究工作
近年來(lái),隨著網(wǎng)絡(luò)信息科技的高度發(fā)展,越來(lái)越多的學(xué)者在驗(yàn)證碼識(shí)別領(lǐng)域上進(jìn)行廣泛的探索與研究。文獻(xiàn)[1-5]均應(yīng)用卷積神經(jīng)網(wǎng)絡(luò),通過(guò)調(diào)整學(xué)習(xí)率和網(wǎng)絡(luò)層數(shù)對(duì)圖像驗(yàn)證碼進(jìn)行識(shí)別。文獻(xiàn)[6]采取字符分割算法,通過(guò)預(yù)處理把粘連的驗(yàn)證碼字符切分為獨(dú)立的字符,再利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別。文獻(xiàn)[7]提出了一種對(duì)抗學(xué)習(xí)方法,有效解決了分割過(guò)程中因信息丟失而無(wú)法識(shí)別的問(wèn)題。文獻(xiàn)[8-9]應(yīng)用傳統(tǒng)的機(jī)器學(xué)習(xí)方法,應(yīng)用SVM與Adaboost進(jìn)行驗(yàn)證碼識(shí)別。文獻(xiàn)[10]提出應(yīng)用CTC+LSTM模型,能在數(shù)據(jù)不充足的情況下獲得高識(shí)別精度。
2 驗(yàn)證碼獲取及預(yù)處理
2.1 驗(yàn)證碼圖片獲取
本文實(shí)驗(yàn)數(shù)據(jù)來(lái)源于https://www.kaggle.com/c/technologytest/overview,實(shí)驗(yàn)數(shù)據(jù)共有20 000張4位數(shù)字與大小寫(xiě)字母混合的驗(yàn)證碼圖片。圖片包含一定的噪點(diǎn)、干擾線(xiàn)以及扭曲。
圖片為原始大小,RGB格式。本文使用18 000張作為訓(xùn)練集,2 000張作為測(cè)試集。訓(xùn)練集與測(cè)試集無(wú)交集。
訓(xùn)練集label中的英文字符區(qū)分大小寫(xiě)。如識(shí)別結(jié)果為“5EeF”則識(shí)別正確;如識(shí)別結(jié)果為“5eeF”則識(shí)別錯(cuò)誤,即共有62個(gè)類(lèi)。
2.2 數(shù)據(jù)預(yù)處理
2.2.1 圖片灰度化
在驗(yàn)證碼圖像識(shí)別中,RGB提供信息很少,因此對(duì)圖像作灰度化處理,將三維的RGB通道降至一維,有利于加快后續(xù)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練。
灰度化公式:
?
2.2.2 OTSU閾值分割
在數(shù)字圖像處理中,二值化具有重要作用。在黑白圖像中,圖像的重要輪廓與結(jié)構(gòu)大大凸顯,同時(shí)減少運(yùn)算量。
本文采取OTSU算法,以確定閾值。其核心思想是尋找一個(gè)閾值,把圖像的所有像素點(diǎn)分為兩類(lèi)。一類(lèi)像素值小于等于閾值稱(chēng)為背景區(qū)域;另一類(lèi)像素值大于閾值稱(chēng)為前景區(qū)域。當(dāng)這兩類(lèi)的類(lèi)間方差最大時(shí)為最合適。
2.2.3 特征增強(qiáng)
在原始的驗(yàn)證碼圖片中,存在一定的扭曲、變形,使數(shù)字或字母的形狀特征存在丟失。因此,本文為了使模型更好地識(shí)別出驗(yàn)證碼,增強(qiáng)字符的特征,對(duì)驗(yàn)證碼的字符進(jìn)行了加深加粗。
2.2.4 腐蝕與膨脹
在驗(yàn)證碼中,存在著貫穿字符的噪聲線(xiàn),對(duì)識(shí)別造成極大的干擾。例如“I”加上噪聲線(xiàn),會(huì)識(shí)別為“T”。因此,本文采取形態(tài)學(xué)中的侵蝕與膨脹算法,去除噪聲線(xiàn)。
在形態(tài)學(xué)中,腐蝕與膨脹是最基本的兩種操作,它們通常在二進(jìn)制圖像中使用,與輪廓檢測(cè)相類(lèi)似。
腐蝕通過(guò)將像素添加到圖像中對(duì)象的感知邊界,擴(kuò)張放大圖像的明亮白色區(qū)域。侵蝕則沿著物體邊界移除像素并縮小物體。
3 模型構(gòu)建
3.1 輸入層
在經(jīng)過(guò)特征增強(qiáng)和腐蝕與膨脹處理后,會(huì)對(duì)字符的一些特征信息造成丟失。
因此,本文對(duì)原始圖像只作灰度化處理作為特征圖1。對(duì)原始圖像經(jīng)過(guò)特征增強(qiáng)、腐蝕與膨脹作為特征圖2。把兩張?zhí)卣鲌D堆疊作為模型輸入,保留原始圖像信息與提取的特征信息。
3.2 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)是一類(lèi)包含卷積計(jì)算并且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),本質(zhì)是一個(gè)多層感知機(jī)。卷積神經(jīng)網(wǎng)絡(luò)由卷積層、激活層、池化層3種結(jié)構(gòu)組成。卷積層采用局部連接與權(quán)值共享的方式,減少了權(quán)值數(shù)量,使得網(wǎng)絡(luò)易于優(yōu)化;同時(shí)降低模型復(fù)雜度,減少過(guò)擬合風(fēng)險(xiǎn)。
3.2.1 卷積層
卷積層的作用是進(jìn)行特征提取。通過(guò)一個(gè)矩陣(大小通常為3×3,5×5,7×7),和圖像進(jìn)行點(diǎn)乘。這個(gè)矩陣稱(chēng)為卷積核,點(diǎn)乘的過(guò)程稱(chēng)為卷積。其特點(diǎn)為采用局部連接與權(quán)值共享的方式,減少了權(quán)值數(shù)量,使得網(wǎng)絡(luò)易于優(yōu)化;同時(shí)降低模型復(fù)雜度,減少過(guò)擬合風(fēng)險(xiǎn)。
但是圖像在卷積后會(huì)逐漸變小,雖然提取了特征信息,但是會(huì)丟失圖像角落信息。因此,本文在卷積過(guò)程中,在卷積層中進(jìn)行same padding,填充像素,使得輸出結(jié)果與卷積前一致,避免圖像邊緣信息丟失。
3.2.2 池化層
池化層,又稱(chēng)為下采樣層,主要目標(biāo)是降低特征圖的特征空間。對(duì)卷積層提取的特征圖進(jìn)行下采樣,在減少數(shù)據(jù)量的同時(shí)可以保留有用信息。
本文采取最大池化操作,可以減少卷積層參數(shù)誤差造成估計(jì)均值的偏移,保留更多的紋理信息。
3.2.3 激活函數(shù)
激活函數(shù)給神經(jīng)網(wǎng)絡(luò)引入了非線(xiàn)性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近非線(xiàn)性函數(shù),從而應(yīng)用到眾多非線(xiàn)性模型中。本文采取RELU激活函數(shù),可以有效克服神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中梯度消失的問(wèn)題,加快訓(xùn)練速度。
3.3 GRU單元
GRU[11]單元是LSTM的一個(gè)變體,在LSTM中有3個(gè)門(mén)函數(shù):輸入門(mén)、輸出門(mén)和遺忘門(mén)來(lái)控制輸入值、輸出值和記憶值。在GRU單元中則只有兩個(gè)門(mén):更新門(mén)和遺忘門(mén)。
GRU單元構(gòu)建更為簡(jiǎn)單,適用于搭建較大的網(wǎng)絡(luò)。同時(shí),GRU單元只有兩個(gè)門(mén)控。它的計(jì)算效率更高,有利于構(gòu)筑較大的模型。
3.4 網(wǎng)絡(luò)搭建
本文設(shè)計(jì)了一個(gè)17層卷積神經(jīng)網(wǎng)絡(luò)提取特征,并連接2層GRU單元。網(wǎng)絡(luò)各層參數(shù)如表1所示。
4 實(shí)驗(yàn)驗(yàn)證
在網(wǎng)絡(luò)訓(xùn)練過(guò)程中,參數(shù)的選取如表2所示。
在測(cè)試集中與其他網(wǎng)絡(luò)結(jié)構(gòu)對(duì)比如表3所示。
5 結(jié)語(yǔ)
本文針對(duì)常見(jiàn)的英文字母、數(shù)字混合的4位二維碼,通過(guò)OTSU閾值分割與基于形態(tài)學(xué)的腐蝕與膨脹等預(yù)處理,并搭建神經(jīng)網(wǎng)絡(luò)融合CNN與GRU的特點(diǎn)進(jìn)行識(shí)別,取得了不錯(cuò)的識(shí)別率,對(duì)于驗(yàn)證碼識(shí)別相關(guān)領(lǐng)域的研究具有一定參考價(jià)值。但是本文也存在不足之處,神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中計(jì)算資源消耗大,訓(xùn)練時(shí)間長(zhǎng),如何令網(wǎng)絡(luò)輕量化是接下來(lái)的改進(jìn)方向。
無(wú)線(xiàn)互聯(lián)科技·實(shí)驗(yàn)研究
[參考文獻(xiàn)]
[1]羅焱.基于Tensorflow的驗(yàn)證碼識(shí)別算法實(shí)現(xiàn)[J].信息與電腦(理論版),2020(20):29-30.
[2]張國(guó)榮,劉炳君,付成麗.基于Python和CNN的數(shù)字驗(yàn)證碼識(shí)別[J].太原師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2020(3):62-65.
[3]石邵虎,胡學(xué)先,李志博,等.基于深度學(xué)習(xí)的圖像驗(yàn)證碼識(shí)別研究[J].信息工程大學(xué)學(xué)報(bào),2020(3):325-333.
[4]李世成,東野長(zhǎng)磊.基于卷積神經(jīng)網(wǎng)絡(luò)的驗(yàn)證碼識(shí)別[J].軟件,2020(4):173-177.
[5]李成建,李富成,劉建芳.基于卷積神經(jīng)網(wǎng)絡(luò)的數(shù)字驗(yàn)證碼識(shí)別研究[J].電子設(shè)計(jì)工程,2019(17):107-111.
[6]陳振昂,黃星期,秦中元.基于圖像處理和卷積神經(jīng)網(wǎng)絡(luò)的文本驗(yàn)證碼識(shí)別方案[J].網(wǎng)絡(luò)空間安全,2020(8):75-80.
[7]曹廷榮,陸玲,龔燕紅,等.基于對(duì)抗網(wǎng)絡(luò)的驗(yàn)證碼識(shí)別方法[J].計(jì)算機(jī)工程與應(yīng)用,2020(8):199-204.
[8]安夢(mèng)生.基于SVM的字符驗(yàn)證碼識(shí)別研究[J].淮陰師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2018(4):316-319.
[9]虞水磊,田新宇,王金燕.基于多元統(tǒng)計(jì)分析和機(jī)器學(xué)習(xí)的驗(yàn)證碼識(shí)別[J].山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2019(1):60-64.
[10]杜薇,周武能.基于CTC模型的無(wú)分割文本驗(yàn)證碼識(shí)別[J].計(jì)算機(jī)與現(xiàn)代化,2018(9):48-51.
[11]CHO K,MERRIENBOER B V,GULCEHRE C,et al.Learning phrase representations using RNN Encoder-Decoder for statistical machine translation[J].Computer Science,2014(6):1724-1734.
(編輯?何 琳)
Captcha identification based on CNN and GRU unit
Deng Zhen
(South China Normal University, Guangzhou 510000, China)
Abstract:In the Internet era, captcha is an important guarantee of Internet security. In this paper, image processing and deep learning methods are applied to fully extract image features through graying, OTSU threshold segmentation, corrosion and expansion. The neural network model is constructed by combining convolution neural network(CNN)and GRU unit. The captitals, lower-case letters and Arabic?numerals?are recognized accurately. The average recognition accuracy of the captcha is about 93%, which has a certain practical significance.
Key words:OTSU threshold segmentation; corrosion and expansion; CNN; GRU
作者簡(jiǎn)介:鄧震(2000— ),男,廣東廣州人,本科生;研究方向:深度學(xué)習(xí)在恒星光譜識(shí)別中的應(yīng)用,自然語(yǔ)言處理文本多分類(lèi)。