宋人杰,劉 娟
(東北電力大學(xué)信息工程學(xué)院,吉林吉林132012)
驗(yàn)證碼作為新興的網(wǎng)絡(luò)安全防護(hù)機(jī)制,廣泛用于互聯(lián)網(wǎng)以實(shí)現(xiàn)區(qū)分人機(jī)。對(duì)驗(yàn)證碼識(shí)別技術(shù)的研究,可以及時(shí)發(fā)現(xiàn)和改善驗(yàn)證碼生成程序的漏洞以及增加驗(yàn)證碼圖像的識(shí)別難度,在加強(qiáng)網(wǎng)站安全性方面有著重要意義。在公開(kāi)的驗(yàn)證碼識(shí)別算法中,部分驗(yàn)證碼通過(guò)識(shí)別算法能夠基本能夠識(shí)別。文獻(xiàn)[1]對(duì)字符是模糊粘連的貓撲驗(yàn)證碼,提出了基于局部極小值和最小投影值的方法來(lái)分割;對(duì)有交錯(cuò)粘連的西祠胡同驗(yàn)證碼,通過(guò)顏色聚類(lèi)與豎直投影結(jié)合來(lái)達(dá)到分割字符。最終均采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練和識(shí)別。文獻(xiàn)[2]針對(duì)粘連字符分割致使驗(yàn)證碼字符識(shí)別效果不佳的問(wèn)題,提出一種帶權(quán)值的模板匹配和基于監(jiān)督學(xué)習(xí)的模板權(quán)值調(diào)整相結(jié)合的字符識(shí)別方法。文獻(xiàn)[3]提出了一種基于數(shù)字驗(yàn)證碼外部輪廓結(jié)構(gòu)特征的方法,對(duì)于可分割字符識(shí)別正確率可達(dá)到96%以上。綜上所述,目前研究的驗(yàn)證碼的共同點(diǎn)是能夠?qū)D片上的字符進(jìn)行切割,得到單個(gè)字符,然后進(jìn)行匹配識(shí)別。
本文研究的對(duì)象是復(fù)雜驗(yàn)證碼,即為防止分割的粘連,字符變形扭曲的字符,此類(lèi)驗(yàn)證碼很容易產(chǎn)生誤切分和過(guò)切分的情況,直接影響系統(tǒng)識(shí)別的準(zhǔn)確率。因此,本文將字符分割與字符識(shí)別同步起來(lái),其理論基礎(chǔ)是參與分類(lèi)的特征在識(shí)別結(jié)果的正確性上有著不同的重要度,因此可以顯著降低錯(cuò)誤率,達(dá)到更高的精度。具體思路如下:利用模糊聚類(lèi)算法提取字符串的特征,得到單個(gè)字符的模糊矩陣,由此作為RBF的輸入預(yù)處理,網(wǎng)絡(luò)依據(jù)識(shí)別置信度判斷單個(gè)字符的分割是否滿(mǎn)足要求。如果滿(mǎn)足,則保留輸出結(jié)果;如果不滿(mǎn)足,在單字符特征提取不準(zhǔn)確而拒識(shí)的情況下,則增大隸屬度的選擇范圍,選擇更多節(jié)點(diǎn)進(jìn)行細(xì)節(jié)補(bǔ)償,從而在整體和局部上都取到較好的訓(xùn)練效果。
在字符識(shí)別的筆劃特征提取中,字符中部的筆劃更能反映字符的本質(zhì)特征,根據(jù)模糊特征的思想設(shè)計(jì)合理的函數(shù),以同心圓的方式,從里向外的設(shè)置字符的權(quán)值依次遞減,從而可以提取出更能反映問(wèn)題本質(zhì)的新特征。
本文選擇像素屬于某個(gè)字符的程度(即隸屬度)作為字符的特征。應(yīng)用FCM算法將字符串樣本空間分成若干個(gè)子集,用模糊子集的概念代替確定子集,從而得到模糊的單個(gè)字符分割的結(jié)果。FCM算法的步驟如下[4]:
(1)初始化參數(shù)。輸入指定聚類(lèi)類(lèi)數(shù)C,并在X中根據(jù)給定坐標(biāo)值方法選擇C個(gè)對(duì)象作為初始聚類(lèi)中心。設(shè)定迭代中止條件,比如最大循環(huán)次數(shù)或者聚類(lèi)中心收斂誤差容限。
(2)優(yōu)化目標(biāo)函數(shù)。據(jù)式子(1)進(jìn)行迭代,根據(jù)歐氏距離最小的準(zhǔn)則將數(shù)據(jù)對(duì)象分配到最接近的聚類(lèi)中心,從而形成一類(lèi)。初始化隸屬度矩陣。
(3)提取模糊特征。目標(biāo)函數(shù)(1)通過(guò)拉格朗日乘子法求得極小值得到兩個(gè)迭代公式,即:隸屬度矩陣迭代公式(3)和聚類(lèi)中心迭代公式(4):
反復(fù)執(zhí)行第二步和第三步,更新模糊矩陣和聚類(lèi)中心,直至滿(mǎn)足中止條件。
根據(jù)以上算法得到字符的模糊特征,據(jù)此作為神經(jīng)網(wǎng)絡(luò)的輸入。對(duì)于單行字符,由于字符粘連情況只與其左右相鄰字符相關(guān),因此本文將模式類(lèi)C中的訓(xùn)練樣本按順序進(jìn)行標(biāo)記,以便減小神經(jīng)網(wǎng)絡(luò)二次識(shí)別的搜索范圍,提高識(shí)別效率。由此得到字符的中心矩陣和隸屬度矩陣,作為神經(jīng)網(wǎng)絡(luò)的中間層輸入節(jié)點(diǎn)。
經(jīng)過(guò)前面的樣本預(yù)處理,接下來(lái)就是神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)設(shè)計(jì)。本文采用三層結(jié)構(gòu)的徑向基神經(jīng)網(wǎng)絡(luò),這種網(wǎng)絡(luò)依靠系統(tǒng)的復(fù)雜程度,通過(guò)調(diào)整內(nèi)部大量節(jié)點(diǎn)之間相互連接的關(guān)系,從而進(jìn)行分布式并行信息處理的算法數(shù)學(xué)模型[5]。網(wǎng)絡(luò)結(jié)構(gòu)如圖1:
(1)輸入層:網(wǎng)絡(luò)的輸入即模糊聚類(lèi)分類(lèi)后單個(gè)字符圖像的像素?cái)?shù)據(jù)。當(dāng)像素表示對(duì)象時(shí),其值為1,當(dāng)像素表示背景時(shí),其值為0。
(2)隱層:針對(duì)RBF神經(jīng)網(wǎng)絡(luò)隱層中心個(gè)數(shù)和中心位置難以取得合適的參數(shù)這一問(wèn)題,本文結(jié)合聚類(lèi)算法選取中心。將第一節(jié)所得的第i類(lèi)聚類(lèi)中心作為網(wǎng)絡(luò)的隱層節(jié)點(diǎn),對(duì)其進(jìn)行權(quán)重訓(xùn)練。其中,不同類(lèi)別的中心是按照第一類(lèi)、第二類(lèi)、…、第c類(lèi)在網(wǎng)絡(luò)的中是按順序排列的。RBF網(wǎng)隱層采用如下標(biāo)準(zhǔn)Gaussian徑向基函數(shù),如式子(5):
圖1 RBF網(wǎng)絡(luò)結(jié)構(gòu)圖
其中,δ的取值依實(shí)驗(yàn)具體情況確定:取值越大,代表的像素分布分散的字符,比如“Q”“X”等;取值越小,代表像素集中分布的字符,比如“I”等。為簡(jiǎn)單起見(jiàn),本文根據(jù)實(shí)驗(yàn)情況,選取統(tǒng)一的值。
(3)輸出層:輸出層由一個(gè)線性神經(jīng)元組成,即f(u)=u。依據(jù)實(shí)際需要,該神經(jīng)元有36個(gè)目標(biāo)輸出,字母25個(gè),數(shù)字9個(gè)(其中去除了含有異義的字母O和數(shù)字0)。
針對(duì)單個(gè)字符分割不準(zhǔn)確造成識(shí)別困難的問(wèn)題,提出字符串并聯(lián)集成識(shí)別方法。采用分割和識(shí)別反饋動(dòng)態(tài)結(jié)合的方法,在得到了各個(gè)字符的單分類(lèi)器后,根據(jù)對(duì)識(shí)別置信度的要求進(jìn)行分類(lèi)器的動(dòng)態(tài)選擇與細(xì)節(jié)補(bǔ)償。該方法利用識(shí)別器對(duì)待識(shí)別圖像識(shí)別后,識(shí)別器會(huì)返回一個(gè)衡量識(shí)別圖像是否為一個(gè)獨(dú)立字符的可信度值,根據(jù)這個(gè)返回值,可以判斷送往識(shí)別器識(shí)別的圖像是否為一個(gè)獨(dú)立的字符,只有當(dāng)返回值大于規(guī)定的閾值時(shí),才認(rèn)為識(shí)別結(jié)果是正確的;否則依據(jù)像素隸屬度進(jìn)行再劃分,進(jìn)行識(shí)別判斷,直至滿(mǎn)足識(shí)別可信度。該算法的具體執(zhí)行過(guò)程如下:
Step1:根據(jù)識(shí)別精度的需要設(shè)定初始置信度閾值θ0,令 θ=θ0,當(dāng)識(shí)別結(jié)果滿(mǎn)足可信度的要求時(shí),則輸出識(shí)別結(jié)果,無(wú)需集成其他分類(lèi)器;否則轉(zhuǎn)入Step2。
Step2:尋找與節(jié)點(diǎn)n1相距最近的且類(lèi)別屬性是n1的二選類(lèi)別的節(jié)點(diǎn)n2,確定該節(jié)點(diǎn)所包含的樣本中出錯(cuò)最多的樣本的類(lèi)別,作為二選類(lèi)別(即找到錯(cuò)分的字符分類(lèi)器的相鄰標(biāo)號(hào)的上下兩節(jié)點(diǎn))。提取那些與中間層節(jié)點(diǎn)的最小距離大于u(u為隸屬度最小估計(jì)值)的訓(xùn)練樣本,重新進(jìn)行劃分訓(xùn)練。
Step3:將新節(jié)點(diǎn)加入到原網(wǎng)絡(luò)中,按加法規(guī)則進(jìn)行集成。當(dāng)滿(mǎn)足輸出條件θ時(shí),輸出識(shí)別結(jié)果;若u導(dǎo)致其他節(jié)點(diǎn)識(shí)別精度降低時(shí)仍不滿(mǎn)足輸出條件,則降低可信度閾值θ,重復(fù)上述步驟實(shí)現(xiàn)循環(huán)集成,直到滿(mǎn)足輸出條件,輸出識(shí)別結(jié)果。
定理1:用于外監(jiān)督分類(lèi)的徑向基神經(jīng)網(wǎng)絡(luò),其輸出層的輸出為模式樣本后驗(yàn)概率估計(jì)的充要條件是其隱層單元函數(shù)為Parzen窗密度函數(shù)。
在識(shí)別時(shí),單字符網(wǎng)絡(luò)并聯(lián)集成,形成字符串識(shí)別集成分類(lèi)器,依據(jù)定理1,其評(píng)價(jià)準(zhǔn)則采用基于后驗(yàn)概率的權(quán)值自動(dòng)調(diào)整的方法。當(dāng)?shù)谝淮巫R(shí)別就能滿(mǎn)足識(shí)別要求時(shí),則無(wú)需再訓(xùn)練;否則依次增減節(jié)點(diǎn),并進(jìn)行循環(huán)集成,直至所有結(jié)果均達(dá)到系統(tǒng)要求的可信度。
后驗(yàn)概率估計(jì)是模式分類(lèi)器組合方法的基礎(chǔ),基于后驗(yàn)概率估計(jì)的估計(jì)法一般能更好地利用各個(gè)分類(lèi)器的決策函數(shù)值所提供的信息。本文采用待識(shí)別樣本的最近鄰類(lèi)與次近鄰的比值定義識(shí)別置信度,設(shè)X的最近鄰ρi,次近鄰類(lèi)為ρj,則單分類(lèi)器的置信度為θ(根據(jù)系統(tǒng)的實(shí)際需要在[0.65,0.9]之間變動(dòng)),ρi與 ρj差別越大,決策結(jié)果越可靠、反之則越不可靠[6]。其定義如式(6):
本文采用阿里巴巴網(wǎng)站的驗(yàn)證碼作為有效性測(cè)試集。該圖像的特點(diǎn)是:驗(yàn)證碼圖像尺寸大小已經(jīng)歸一化,分辨率為32*16;字符串由英文字母和數(shù)字組成;背景為純色,阻礙識(shí)別的設(shè)置為字符之間粘連,字符扭曲變形,單個(gè)字符的分割困難。實(shí)驗(yàn)中,首先是獲取驗(yàn)證碼樣本。由于網(wǎng)站對(duì)用戶(hù)輸入驗(yàn)證碼提供了再來(lái)一張的功能,通過(guò)循環(huán)運(yùn)行腳本文件獲取大量樣本文件。本文將所獲樣本的前400個(gè)圖片作為訓(xùn)練集。將剩下的100個(gè)訓(xùn)練樣本構(gòu)成獨(dú)立的測(cè)試集,用于測(cè)試該識(shí)別算法的有效性。
然后進(jìn)行初始參數(shù)的設(shè)置。采用固定間距法預(yù)設(shè)c個(gè)初始類(lèi)心(c為字符個(gè)數(shù)),結(jié)合驗(yàn)證碼圖像的先驗(yàn)知識(shí),本文取c=4,即Ci-Ci-1=4/N;用隨機(jī)數(shù)生成法產(chǎn)生隸屬度初始矩陣U;設(shè)定加權(quán)指數(shù)m(根據(jù)經(jīng)驗(yàn)值取m=2)和迭代中止條件,如最大循環(huán)次數(shù)或者聚類(lèi)中心收斂誤差容限值,本文取迭代截止誤差ε>0;閾值ε =0.000 1;取經(jīng)驗(yàn)值1.5。
為了驗(yàn)證本文算法的有效性,與目前流行的基于神經(jīng)網(wǎng)絡(luò)的驗(yàn)證碼識(shí)別算法進(jìn)行實(shí)驗(yàn)對(duì)比驗(yàn)證。文獻(xiàn)[7]選擇的是基于徑向基核函數(shù)(RBF)的SVW進(jìn)行分類(lèi)識(shí)別。文獻(xiàn)[8]提出了一種基于神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)驗(yàn)證碼的識(shí)別方法,并利用開(kāi)源的神經(jīng)網(wǎng)絡(luò)包JOONE實(shí)現(xiàn)了驗(yàn)證碼識(shí)別系統(tǒng)。實(shí)驗(yàn)中將本文算法與上述兩種方法進(jìn)行了比較,實(shí)驗(yàn)結(jié)果見(jiàn)表1:
表1 識(shí)別結(jié)果性能比較
本文算法以RBF網(wǎng)絡(luò)為基礎(chǔ),結(jié)合了聚類(lèi)算法的思想,并與當(dāng)前流行的SVM和BP卷積神經(jīng)網(wǎng)絡(luò)分類(lèi)算法進(jìn)行了比較。從表1數(shù)據(jù)可以看出,在收斂速度上,本文算法好于 BP神經(jīng)網(wǎng)絡(luò)分類(lèi)算法,且具有更好的推廣性。在低質(zhì)量字符串識(shí)別率上,本文算法好于SVW方法,充分體現(xiàn)了算法的有效性和良好的推廣性。
本文主要是針對(duì)低質(zhì)量字符串分割識(shí)別的不足,提出了基于模糊聚類(lèi)和神經(jīng)網(wǎng)絡(luò)集成的動(dòng)態(tài)識(shí)別方法。神經(jīng)網(wǎng)絡(luò)和模糊聚類(lèi)的集成應(yīng)用可以互補(bǔ)不足,對(duì)于拒識(shí)、誤識(shí)的字符依據(jù)像素的隸屬度直接進(jìn)行再劃分,折中了識(shí)別率和效率。而且對(duì)于本文中的實(shí)驗(yàn)數(shù)據(jù)量小,對(duì)實(shí)時(shí)性要求不高的應(yīng)用來(lái)說(shuō)是實(shí)用的。雖然在文章中使用了聚類(lèi)方法,但它并不是一個(gè)通用的聚類(lèi)算法,也不是一個(gè)能適合于所有聚類(lèi)問(wèn)題的算法。如何改進(jìn)聚類(lèi)算法,得到不同數(shù)目字符的自適應(yīng)識(shí)別將是今后研究的方向。
[1]王璐,張榮,尹東,詹金春,吳陳洋.粘連字符的圖片驗(yàn)證碼識(shí)別[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(28):150-153.
[2]呂剛,郝平.基于權(quán)值模板和監(jiān)督學(xué)習(xí)的驗(yàn)證碼識(shí)別[J].計(jì)算機(jī)與現(xiàn)代,2010,30(12):41-43.
[3]潘大夫,汪渤.一種基于外部輪廓的數(shù)字驗(yàn)證碼識(shí)別方法[J].微計(jì)算機(jī)信息,2007,23(9):256-258.
[4]樂(lè)曉蓉,王正群,郭亞琴,王向東.基于模糊聚類(lèi)算法的神經(jīng)網(wǎng)絡(luò)集成[J].計(jì)算機(jī)工程,2007,33(5):180-181.
[5]劉勇,趙斌,梁夷龍,夏紹瑋.改進(jìn)徑向基函數(shù)神經(jīng)網(wǎng)及其在手寫(xiě)體字符識(shí)別中的應(yīng)用[J].計(jì)算機(jī)學(xué)報(bào),2000,23(1):96-101.
[6]丁杰,楊靜宇.一種基于AP的仿生模式識(shí)別方法[J].計(jì)算機(jī)科學(xué),2011,38(5):224-226.
[7]殷光,陶亮.一種SVM驗(yàn)證碼識(shí)別算法[J].計(jì)算機(jī)工程與應(yīng)用,2011,47(18):188-190.
[8]左保河,石曉愛(ài),謝芳勇,章拓.基于神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)驗(yàn)證碼識(shí)別研究[J].計(jì)算機(jī)工程與科學(xué),2009,31(12):20-22.