宋人杰,劉 娟
(東北電力大學信息工程學院,吉林吉林132012)
驗證碼作為新興的網(wǎng)絡安全防護機制,廣泛用于互聯(lián)網(wǎng)以實現(xiàn)區(qū)分人機。對驗證碼識別技術的研究,可以及時發(fā)現(xiàn)和改善驗證碼生成程序的漏洞以及增加驗證碼圖像的識別難度,在加強網(wǎng)站安全性方面有著重要意義。在公開的驗證碼識別算法中,部分驗證碼通過識別算法能夠基本能夠識別。文獻[1]對字符是模糊粘連的貓撲驗證碼,提出了基于局部極小值和最小投影值的方法來分割;對有交錯粘連的西祠胡同驗證碼,通過顏色聚類與豎直投影結合來達到分割字符。最終均采用卷積神經網(wǎng)絡進行訓練和識別。文獻[2]針對粘連字符分割致使驗證碼字符識別效果不佳的問題,提出一種帶權值的模板匹配和基于監(jiān)督學習的模板權值調整相結合的字符識別方法。文獻[3]提出了一種基于數(shù)字驗證碼外部輪廓結構特征的方法,對于可分割字符識別正確率可達到96%以上。綜上所述,目前研究的驗證碼的共同點是能夠對圖片上的字符進行切割,得到單個字符,然后進行匹配識別。
本文研究的對象是復雜驗證碼,即為防止分割的粘連,字符變形扭曲的字符,此類驗證碼很容易產生誤切分和過切分的情況,直接影響系統(tǒng)識別的準確率。因此,本文將字符分割與字符識別同步起來,其理論基礎是參與分類的特征在識別結果的正確性上有著不同的重要度,因此可以顯著降低錯誤率,達到更高的精度。具體思路如下:利用模糊聚類算法提取字符串的特征,得到單個字符的模糊矩陣,由此作為RBF的輸入預處理,網(wǎng)絡依據(jù)識別置信度判斷單個字符的分割是否滿足要求。如果滿足,則保留輸出結果;如果不滿足,在單字符特征提取不準確而拒識的情況下,則增大隸屬度的選擇范圍,選擇更多節(jié)點進行細節(jié)補償,從而在整體和局部上都取到較好的訓練效果。
在字符識別的筆劃特征提取中,字符中部的筆劃更能反映字符的本質特征,根據(jù)模糊特征的思想設計合理的函數(shù),以同心圓的方式,從里向外的設置字符的權值依次遞減,從而可以提取出更能反映問題本質的新特征。
本文選擇像素屬于某個字符的程度(即隸屬度)作為字符的特征。應用FCM算法將字符串樣本空間分成若干個子集,用模糊子集的概念代替確定子集,從而得到模糊的單個字符分割的結果。FCM算法的步驟如下[4]:
(1)初始化參數(shù)。輸入指定聚類類數(shù)C,并在X中根據(jù)給定坐標值方法選擇C個對象作為初始聚類中心。設定迭代中止條件,比如最大循環(huán)次數(shù)或者聚類中心收斂誤差容限。
(2)優(yōu)化目標函數(shù)。據(jù)式子(1)進行迭代,根據(jù)歐氏距離最小的準則將數(shù)據(jù)對象分配到最接近的聚類中心,從而形成一類。初始化隸屬度矩陣。


(3)提取模糊特征。目標函數(shù)(1)通過拉格朗日乘子法求得極小值得到兩個迭代公式,即:隸屬度矩陣迭代公式(3)和聚類中心迭代公式(4):

反復執(zhí)行第二步和第三步,更新模糊矩陣和聚類中心,直至滿足中止條件。
根據(jù)以上算法得到字符的模糊特征,據(jù)此作為神經網(wǎng)絡的輸入。對于單行字符,由于字符粘連情況只與其左右相鄰字符相關,因此本文將模式類C中的訓練樣本按順序進行標記,以便減小神經網(wǎng)絡二次識別的搜索范圍,提高識別效率。由此得到字符的中心矩陣和隸屬度矩陣,作為神經網(wǎng)絡的中間層輸入節(jié)點。
經過前面的樣本預處理,接下來就是神經網(wǎng)絡的結構設計。本文采用三層結構的徑向基神經網(wǎng)絡,這種網(wǎng)絡依靠系統(tǒng)的復雜程度,通過調整內部大量節(jié)點之間相互連接的關系,從而進行分布式并行信息處理的算法數(shù)學模型[5]。網(wǎng)絡結構如圖1:
(1)輸入層:網(wǎng)絡的輸入即模糊聚類分類后單個字符圖像的像素數(shù)據(jù)。當像素表示對象時,其值為1,當像素表示背景時,其值為0。
(2)隱層:針對RBF神經網(wǎng)絡隱層中心個數(shù)和中心位置難以取得合適的參數(shù)這一問題,本文結合聚類算法選取中心。將第一節(jié)所得的第i類聚類中心作為網(wǎng)絡的隱層節(jié)點,對其進行權重訓練。其中,不同類別的中心是按照第一類、第二類、…、第c類在網(wǎng)絡的中是按順序排列的。RBF網(wǎng)隱層采用如下標準Gaussian徑向基函數(shù),如式子(5):

圖1 RBF網(wǎng)絡結構圖

其中,δ的取值依實驗具體情況確定:取值越大,代表的像素分布分散的字符,比如“Q”“X”等;取值越小,代表像素集中分布的字符,比如“I”等。為簡單起見,本文根據(jù)實驗情況,選取統(tǒng)一的值。
(3)輸出層:輸出層由一個線性神經元組成,即f(u)=u。依據(jù)實際需要,該神經元有36個目標輸出,字母25個,數(shù)字9個(其中去除了含有異義的字母O和數(shù)字0)。
針對單個字符分割不準確造成識別困難的問題,提出字符串并聯(lián)集成識別方法。采用分割和識別反饋動態(tài)結合的方法,在得到了各個字符的單分類器后,根據(jù)對識別置信度的要求進行分類器的動態(tài)選擇與細節(jié)補償。該方法利用識別器對待識別圖像識別后,識別器會返回一個衡量識別圖像是否為一個獨立字符的可信度值,根據(jù)這個返回值,可以判斷送往識別器識別的圖像是否為一個獨立的字符,只有當返回值大于規(guī)定的閾值時,才認為識別結果是正確的;否則依據(jù)像素隸屬度進行再劃分,進行識別判斷,直至滿足識別可信度。該算法的具體執(zhí)行過程如下:
Step1:根據(jù)識別精度的需要設定初始置信度閾值θ0,令 θ=θ0,當識別結果滿足可信度的要求時,則輸出識別結果,無需集成其他分類器;否則轉入Step2。
Step2:尋找與節(jié)點n1相距最近的且類別屬性是n1的二選類別的節(jié)點n2,確定該節(jié)點所包含的樣本中出錯最多的樣本的類別,作為二選類別(即找到錯分的字符分類器的相鄰標號的上下兩節(jié)點)。提取那些與中間層節(jié)點的最小距離大于u(u為隸屬度最小估計值)的訓練樣本,重新進行劃分訓練。
Step3:將新節(jié)點加入到原網(wǎng)絡中,按加法規(guī)則進行集成。當滿足輸出條件θ時,輸出識別結果;若u導致其他節(jié)點識別精度降低時仍不滿足輸出條件,則降低可信度閾值θ,重復上述步驟實現(xiàn)循環(huán)集成,直到滿足輸出條件,輸出識別結果。
定理1:用于外監(jiān)督分類的徑向基神經網(wǎng)絡,其輸出層的輸出為模式樣本后驗概率估計的充要條件是其隱層單元函數(shù)為Parzen窗密度函數(shù)。
在識別時,單字符網(wǎng)絡并聯(lián)集成,形成字符串識別集成分類器,依據(jù)定理1,其評價準則采用基于后驗概率的權值自動調整的方法。當?shù)谝淮巫R別就能滿足識別要求時,則無需再訓練;否則依次增減節(jié)點,并進行循環(huán)集成,直至所有結果均達到系統(tǒng)要求的可信度。
后驗概率估計是模式分類器組合方法的基礎,基于后驗概率估計的估計法一般能更好地利用各個分類器的決策函數(shù)值所提供的信息。本文采用待識別樣本的最近鄰類與次近鄰的比值定義識別置信度,設X的最近鄰ρi,次近鄰類為ρj,則單分類器的置信度為θ(根據(jù)系統(tǒng)的實際需要在[0.65,0.9]之間變動),ρi與 ρj差別越大,決策結果越可靠、反之則越不可靠[6]。其定義如式(6):

本文采用阿里巴巴網(wǎng)站的驗證碼作為有效性測試集。該圖像的特點是:驗證碼圖像尺寸大小已經歸一化,分辨率為32*16;字符串由英文字母和數(shù)字組成;背景為純色,阻礙識別的設置為字符之間粘連,字符扭曲變形,單個字符的分割困難。實驗中,首先是獲取驗證碼樣本。由于網(wǎng)站對用戶輸入驗證碼提供了再來一張的功能,通過循環(huán)運行腳本文件獲取大量樣本文件。本文將所獲樣本的前400個圖片作為訓練集。將剩下的100個訓練樣本構成獨立的測試集,用于測試該識別算法的有效性。
然后進行初始參數(shù)的設置。采用固定間距法預設c個初始類心(c為字符個數(shù)),結合驗證碼圖像的先驗知識,本文取c=4,即Ci-Ci-1=4/N;用隨機數(shù)生成法產生隸屬度初始矩陣U;設定加權指數(shù)m(根據(jù)經驗值取m=2)和迭代中止條件,如最大循環(huán)次數(shù)或者聚類中心收斂誤差容限值,本文取迭代截止誤差ε>0;閾值ε =0.000 1;取經驗值1.5。
為了驗證本文算法的有效性,與目前流行的基于神經網(wǎng)絡的驗證碼識別算法進行實驗對比驗證。文獻[7]選擇的是基于徑向基核函數(shù)(RBF)的SVW進行分類識別。文獻[8]提出了一種基于神經網(wǎng)絡的網(wǎng)絡驗證碼的識別方法,并利用開源的神經網(wǎng)絡包JOONE實現(xiàn)了驗證碼識別系統(tǒng)。實驗中將本文算法與上述兩種方法進行了比較,實驗結果見表1:

表1 識別結果性能比較
本文算法以RBF網(wǎng)絡為基礎,結合了聚類算法的思想,并與當前流行的SVM和BP卷積神經網(wǎng)絡分類算法進行了比較。從表1數(shù)據(jù)可以看出,在收斂速度上,本文算法好于 BP神經網(wǎng)絡分類算法,且具有更好的推廣性。在低質量字符串識別率上,本文算法好于SVW方法,充分體現(xiàn)了算法的有效性和良好的推廣性。
本文主要是針對低質量字符串分割識別的不足,提出了基于模糊聚類和神經網(wǎng)絡集成的動態(tài)識別方法。神經網(wǎng)絡和模糊聚類的集成應用可以互補不足,對于拒識、誤識的字符依據(jù)像素的隸屬度直接進行再劃分,折中了識別率和效率。而且對于本文中的實驗數(shù)據(jù)量小,對實時性要求不高的應用來說是實用的。雖然在文章中使用了聚類方法,但它并不是一個通用的聚類算法,也不是一個能適合于所有聚類問題的算法。如何改進聚類算法,得到不同數(shù)目字符的自適應識別將是今后研究的方向。
[1]王璐,張榮,尹東,詹金春,吳陳洋.粘連字符的圖片驗證碼識別[J].計算機工程與應用,2011,47(28):150-153.
[2]呂剛,郝平.基于權值模板和監(jiān)督學習的驗證碼識別[J].計算機與現(xiàn)代,2010,30(12):41-43.
[3]潘大夫,汪渤.一種基于外部輪廓的數(shù)字驗證碼識別方法[J].微計算機信息,2007,23(9):256-258.
[4]樂曉蓉,王正群,郭亞琴,王向東.基于模糊聚類算法的神經網(wǎng)絡集成[J].計算機工程,2007,33(5):180-181.
[5]劉勇,趙斌,梁夷龍,夏紹瑋.改進徑向基函數(shù)神經網(wǎng)及其在手寫體字符識別中的應用[J].計算機學報,2000,23(1):96-101.
[6]丁杰,楊靜宇.一種基于AP的仿生模式識別方法[J].計算機科學,2011,38(5):224-226.
[7]殷光,陶亮.一種SVM驗證碼識別算法[J].計算機工程與應用,2011,47(18):188-190.
[8]左保河,石曉愛,謝芳勇,章拓.基于神經網(wǎng)絡的網(wǎng)絡驗證碼識別研究[J].計算機工程與科學,2009,31(12):20-22.