广东福彩网

基于特征匹配與CNN的浮動驗證碼識別研究

作者:未知

  摘 要:為有效識別浮動驗證碼,提出一種基于特征匹配與卷積神經網絡的識別方法。首先使用特征匹配的方法得到匹配特征點,結合交叉匹配算法與K近鄰匹配算法濾除錯誤匹配;然后對特征點進行聚類及投票分析,得到待識別字符區域,將其分割得到單個字符;最后在mnist手寫數字數據集的基礎上加入英文字符,構建卷積神經網絡模型,將數據集送入模型進行訓練。對10 000張浮動驗證碼進行測試,結果表明,該方法對浮動驗證碼的識別準確率達95%,且構建的訓練集具有可擴展性,可進一步應用到其它類型的字符識別中。
  關鍵詞:特征匹配;卷積神經網絡;交叉匹配算法;K近鄰匹配算法
  DOI:10. 11907/rjdk. 191914 開放科學(資源服務)標識碼(OSID):
  中圖分類號:TP301 文獻標識碼:A 文章編號:1672-7800(2020)005-0037-05
  0 引言
  隨著信息服務產業的不斷發展,網絡信息安全面臨日益嚴峻的挑戰。利用機器人程序自動注冊網站、發送大量垃圾郵件、惡意破解用戶密碼等行為降低了網絡信息服務安全性和實用性,驗證碼技術應運而生。驗證碼是一種用來區分人類和計算機的全自動圖靈測試,該測試隨機生成一個驗證碼,要求用戶在文本框中輸入看到的內容,只有驗證通過才能訪問接下來的網站內容。一個好的驗證碼系統既要考慮計算機安全問題,也要考慮人性化問題。對驗證碼識別技術的研究可用于檢驗網站驗證碼技術保證網站安全的有效性,及時發現驗證碼漏洞,促進驗證碼設計系統的發展。
  近年來國內外眾多學者對驗證碼識別技術進行了研究,以完善驗證碼生成技術,促進網絡信息安全技術發展。于志良[1]使用模板匹配法對簡單類型的驗證碼進行識別,該方法是從待識別圖像中提取若干特征向量與模板對應的特征向量進行比較,計算圖像與模板特征向量之間的距離,用最小距離法判定所屬類別。該方法易于實現,但是準確率不高,缺乏系統性且不易移植;殷光等[2]提出基于支持向量機的驗證碼識別算法,該算法利用核函數特征空間有效訓練線性學習器,同時還考慮了泛化性理論,其分類性能優良,具有統計學理論支撐,取得了較好的識別效果,使用該方法的識別率達到80%以上;田懷川[3]在驗證碼分類和識別階段,建立了神經網絡模型,通過對分割后驗證碼圖片進行學習和測試,大幅提高了驗證碼識別效率和準確性;張濤[4]針對數字字母組合驗證碼識別問題,先對驗證碼進行去噪和分割,然后再利用卷積神經網絡模型對普通驗證碼進行訓練識別,取得比利用傳統神經網絡方法和支持向量機更高的識別率,達到90%;Lin等[5]提出一種基于卷積神經網絡的中文驗證碼識別方法,使用卷積神經網絡學習漢字字符筆畫、部首和字符特征,該方法大幅提高了有失真、旋轉和背景噪聲的漢字驗證碼識別精度,實驗結果表明,該方法對單個漢字的識別率達到95%以上;Bostik等[6]比較了幾種常用的驗證碼識別機器學習分類算法,包括神經網絡、K近鄰算法、支持向量機和決策樹算法。實驗在MATLAB計算機環境下進行,最終實驗結果表明基于以上算法識別驗證碼的正確率超過89%,同時指出,算法結果差異主要體現在學習時間上。因此,識別任務應針對不同的識別需求選取合適的算法。
  本文針對浮動驗證碼進行識別,如圖1所示,其待識別主體為“US5T1”,其余字符均為干擾。干擾由字母和數字組成,與待辨認的驗證碼主體類似,同時這兩種類型的字符處于不斷運動中,增加了機器識別難度。
  本文方法主要分為兩部分:第一部分將動態待識別字符與干擾字符分割開來。在分割階段,首先對驗證碼圖片進行特征檢測,使用交叉匹配算法與K近鄰匹配算法[7]濾除錯誤的匹配。為將干擾字符與待識別字符的特征點區分開來,使用投票算法及聚類算法[8]得到待識別字符特征點,再經過以投影為基礎的分割算法處理得到待識別字符圖片;第二部分是識別,在識別階段使用深度學習方法構建卷積神經網絡模型以獲得較高的識別率。
  1 特征檢測算法
  1.1 SIFT算法
  尺度不變特征轉換(Scale Invariant Feature Transform,SIFT)[9]是一種用計算機視覺技術檢測與描述圖像局部特征的算法。它在尺度空間中尋找極值點,對圖像尺度縮放、平移、旋轉、亮度變化、目標遮擋和噪聲等具有良好的不變性,對視覺變化、仿射變換也可保持一定程度的穩定性。該算法由David?Lowe在1999年提出,于2004年得到完善,算法將圖像數據轉換為相對于局部特征尺度的不變坐標。該方法在圖像整個尺度和位置范圍內可產生大量特征點,這些特征點可密集地覆蓋圖像,因其特征點信息量豐富,適用于在海量特征數據庫中進行快速、準確的匹配。
  在進行特征匹配和識別時,首先選取一張參考圖片和一張待匹配、識別的圖片。從參考圖片中提取SIFT特征并將其存儲于數據庫中,再將待識別圖像中的每個特征與數據庫中的特征進行比較。根據特征向量的歐氏距離得到候選匹配特征以匹配待識別圖像。具體可以分為3個步驟:①生成高斯差分金字塔[10],構建尺度空間;②SIFT特征檢測;③特征點匹配,計算兩組特征點128維的關鍵點歐式距離,歐式距離越小,則相似度越高,當歐式距離小于設定的閾值時,可判定為匹配成功。
  其中SIFT特征檢測過程主要包含4個步驟:①尺度空間極值點檢測。在尺度空間中先初步搜索所有尺度上的圖像位置,通過高斯微分函數[11]識別具有尺度和旋轉不變性的潛在興趣點;②特征點定位。在每個候選位置上,通過一個精確的模型確定其位置和尺度,特征點選取主要依據是候選興趣點的穩定程度,即濾除低對比度與不穩定的邊緣響應點,得到最終穩定的特征點;③方向分配。根據局部圖像梯度方向,為每個關鍵點分配一個或多個方向。后續對圖像進行方向、尺度、旋轉變換,從而提供針對這些變換具有健壯性的特征點;④特征點描述。在每個特征點周圍鄰域內,在選定的尺度上測量圖像梯度。這些梯度被轉換成一種在局部形狀失真和光照變化的代表。   1.2 SURF算法
  加速穩健特征(Speeded Up Robust Features,SURF)算法[12]是一種穩健的局部特征點檢測和描述算法。SURF算法是對SIFT算法的改進,提升了算法執行效率。SURF算法基本步驟與SIFT算法相同,其特點是特征穩定,具體指對各種旋轉、尺度、噪聲、亮度的變換保持穩定性。SURF算法在繼承這些優點的基礎上使用黑塞(Hessian)矩陣[13]和降維的特征描述子,完成了特征點提取和特征點描述,在執行效率上有大幅提升。
  SURF算法具體實現流程為:
  (1)構建黑塞(Hessian)矩陣,生成所有興趣點用于特征提取。構建黑塞矩陣生成圖像穩定的邊緣點,為后續特征提取打好基礎。這個過程對應于SIFT算法的高斯卷積過程。黑塞矩陣是由一個多元函數二階偏導數構成的方陣,描述函數局部曲率,在圖像I中取一個點x = (x, y),其在尺度空間[σ]下的黑塞矩陣定義為:
  (3)興趣點定位。為了對圖像中的興趣點進行定位,在3*3*3鄰域內采用非最大抑制,使用由Neubeck & Van Gool[14]提出的快速變體方法;然后用Brown等[15]提出的方法在尺度和圖像空間內插入黑塞矩陣行列式的最大值,將經過黑塞矩陣處理的每個像素點與二維圖像空間和尺度空間鄰域內的26個點進行比較,初步定位出關鍵點;再濾除能量比較弱的關鍵點及定位錯誤的關鍵點,最終篩選出穩定的特征點。
  (4)定向分配。在SURF算法,采用的是統計特征點圓形鄰域內的harr小波特征[16]。即在特征點圓形鄰域內,統計60°扇形內所有點的水平、垂直harr小波特征總和,然后對扇形以0.2弧度大小的間隔進行旋轉并再次統計該區域內harr小波特征值,最后將值最大的扇形方向作為該特征點主方向。
  (5)生成特征描述子。SIFT算法取特征點周圍4*4個區域塊,統計每小塊內8個梯度方向,用4*4*8=128維向量作為SIFT特征描述子。SURF算法也是在特征點周圍取一個4*4的矩形區域塊,但是所取得矩形區域方向是沿著特征點的主方向。每個子區域統計25個像素水平方向和垂直方向的haar小波特征,水平和垂直方向均相對主方向而言。該haar小波特征為水平方向值之和、垂直方向值之和、水平方向絕對值之和及垂直方向絕對值之和4個方向。把這4個值作為每個子塊區域的特征向量,所以一共有4*4*4=64維向量作為SURF特征描述子,比SIFT特征描述子減少了一半。
  2 特征匹配
  特征匹配[17]是針對特征描述子進行的,特征描述子通常是一個向量,兩個特征描述子之間的距離可反映其相似程度,距離越小,相似度越高。根據描述子不同,選擇不同的距離度量。對于浮點類型的描述子,使用歐式距離;對于二進制的描述子,使用漢明距離。特征匹配即在特征點集合中尋找與目標特征點最相似的特征點,主要有4種方法。
  2.1 暴力匹配方法
  暴力匹配法首先需得到一個特征點描述子,然后計算與其它所有特征點描述子的距離,將得到的距離進行排序,距離最近的特征點記為匹配點。該方法簡單、易實施,且得到的匹配點也顯而易見。但是這種暴力匹配方法會產生很多錯誤匹配,因此后續出現了很多改進機制以過濾一些錯誤匹配。
  2.2 最小距離法
  在使用暴力匹配法得到一些匹配點之后,設置一個距離,當已經匹配的點間距離不大于該距離時,則認為是一個正確的匹配,否則視為錯誤的匹配。該方法非常簡單,對比暴力匹配方法,利用該方法進行過濾后的匹配效果大幅改善。
  2.3 交叉匹配法
  針對暴力匹配法,可以使用交叉匹配的方法過濾錯誤匹配。交叉過濾的思想是在暴力匹配的基礎上再進行一次匹配,即利用被匹配到的點進行匹配,如果匹配到的仍然是第一次匹配點,則認為這是一個正確的匹配。例如,M圖中的特征點記為a、b、c,N圖中的特征點記為A、B、C,在N圖中使用暴力匹配算法找出特征點a的匹配點為A,然后在M圖中尋找A點的匹配點,若該匹配點為a,則記為正確匹配,否則視為錯誤匹配被過濾掉。使用交叉匹配算法可大幅提高特征點匹配正確率,過濾掉錯誤匹配,減小后續工作計算量。
  2.4 K近鄰匹配法
  K近鄰匹配法是在匹配時選擇K個與特征點距離最近的點,如果這K個點之間的距離足夠大(相似度低),則選擇與特征點距離最小的點作為匹配點,通常情況下,K取值為2。即對每個匹配返回兩個最近的匹配,如果這兩個最近的匹配特征描述子比率足夠大(比率閾值通常設置在2左右),則認為是正確匹配。
  3 卷積神經網絡模型
  3.1 卷積神級網絡模型
  卷積神經網絡是將圖像進行分類的模型構架[18],它由多個卷積層加池化層構成,每個卷積層后接池化層,最后一個卷積層后接密集層,密集層可能有多個,其作用是執行分類任務,該層輸出節點個數應與類別數對應。之后應用Softmax激活函數[19]將輸出節點的值轉化為0~1之間的值,該值即可作為輸入圖像可能屬于某個類別的概率。
  本文使用交叉熵[20]函數刻畫實際輸出概率和期望輸出概率分布之間的距離,交叉熵值越小,兩個概率分布越接近,識別準確率越高。假設概率分布[p]為期望輸出概率分布,[q]為實際輸出概率分布,[H(p,q)]為交叉熵,則交叉熵函數為:
  3.2 數據集擴展
  本文構建的數據集包括0-9的數字及英文字母A-Z共計36個字符類別。其類別較多,工作量龐大,因此本文選用一種效率較高的方法構建數據集。現有mnist數據集包含0-9數字字符,本文將nist數據庫中的英文字符圖片格式修改成與mnist數據集圖片格式一致,并添加到mnist數字數據集中,構建一個完整的驗證碼識別數據集。
  訓練數據集合由兩個文件組成,一個是訓練圖像文件,里面存放所有訓練圖片,另一個是圖像標簽文件,記錄每個訓練圖片最終標記類型。訓練圖像文件的前16個字節分為4個整型數據,每個4字節,分別代表:數據信息、圖像數目,圖像行數、圖像列數,第5到第8字節保存的是整個訓練數據集的圖片數目,從第9個字節開始存放訓練圖像,每個圖像占用784個字節,每個字節代表一個灰度值。   向訓練圖片集中添加圖片的步驟包括:①將圖片處理成28像素×28像素的灰度圖;②新建一個一維數組暫存該圖各點像素值,將該數組以uint8的數據類型格式寫進一個空白矩陣中,最后將這個28×28的矩陣轉換成1×784的矩陣;③以二進制格式打開mnist訓練圖片集,將一維矩陣添加到訓練集末尾;④修改訓練圖片集圖片數目。
  訓練標簽文件第4~8個字節記錄的是標簽數目信息,第8個字節后記錄的是標簽信息,修改標簽數目信息并添加標簽信息。至此,可構建一個完整的數據集。
  4 實驗分析與結果
  從一張浮動驗證碼中截取9張圖,如圖3所示;使用SIFT、SURF特征檢測算法,找到圖3(a)、(b)中的特征點;對得到的特征點使用暴力匹配法,如圖6所示,可得到大量匹配結果,其中包含一些錯誤的匹配點;結合交叉匹配法與最近鄰匹配法,濾除錯誤匹配點,篩選后的匹配結果如圖7所示。
  如圖3所示,隨著干擾字符的不斷運動,干擾字符可能消失在驗證碼圖片中,而待識別字符一直在驗證碼圖片中。根據該特點,對圖3(a)與圖3(c)、(d)、(e)、(f)、(g)、(i)分別重復上述步驟,進行特征匹配,得到匹配的特征點。使用投票算法,將特征點按重復出現的次數排序,保留出現次數前20位的特征點,濾除出現次數較少的特征點。經過對干擾字符特征點的濾除操作,可以將干擾字符的特征點與待識別字符的特征點有效區分開來。
  給所有保留類的特征點作最小矩形框,將驗證碼圖片盡可能地縮小識別范圍,如圖9所示。利用Huang等[21]提出的分割算法處理圖9,得到的分割字符如圖10所示。
  利用上述方法創建一個包含數字和字母的訓練集。訓練集圖片共計138 000張,包含0-9字符,每類分別有  6 000張訓練圖片,英文字母(A-Z)每類有3 000張訓練圖片,訓練集由單一字符構成(見圖11)。同時采集10 000張浮動驗證碼圖片作為測試集,如圖12所示。由此構建了一個完整的浮動驗證碼數據集。
  構建卷積神經網絡模型,將數據集輸入訓練模型,根據交叉熵的計算結果得到正確率,并據此結果不斷調整訓練模型參數以獲得較高的識別準確率。在數據集訓練階段,訓練步數趨于20 000步時,訓練準確率逐漸穩定,訓練完成后保存模型,在識別驗證碼字符時直接調用。
  調用保存的模型,輸入字符進行識別。如圖11所示,雖然分割后的待識別字符存在部分干擾,但卷積神經網絡分類器仍能將其正確識別出來。經驗證,本文方法最終在測試集10 000張動圖上的測試準確率達95%。
  5 結語
  隨著驗證碼技術的不斷成熟,驗證碼識別研究備受關注,但是浮動驗證碼相關研究較少。本文針對浮動驗證碼,構建了一個識別模型。通過對浮動字符進行特征匹配,得到字符特征點,使用聚類算法初步提取出待識別字符,再進行分割得到單個待識別字符,最終在mnist數據集的基礎上擴充英文字符,使用深度學習方法構建模型,提高了識別率。下一步工作將在分割階段根據兩種類型字符傾斜與完整程度進行分割,以進一步提高識別率。
  參考文獻:
  [1] 于志良. 簡單驗證碼的模板匹配實現[J]. 電腦知識與技術,2011,7(26):6375-6376.
  [2] 殷光,陶亮. 一種SVM驗證碼識別算法[J]. 計算機工程與應用,2011,47(18):188-190,194.
  [3] 田懷川. 基于神經網絡的圖形驗證碼識別及防識別的研究與應用[D]. 哈爾濱:哈爾濱工業大學,2010.
  [4] 張濤,張樂樂. 基于卷積神經網絡的圖片驗證碼識別[J]. 電子測量技術,2018,41(14):83-87.
  [5] LIN D,LIN F,LV Y P,et al. Chinese character CAPTCHA recognition and performance estimation via deep neural network[J]. Neurocomputing,2018,288:11-19.
  [6] ONDREJ B,JAN K. Recognition of CAPTCHA characters by supervised machine learning algorithms[J]. IFAC Papers Online,2018,51(6):1-6.
  [7] 肖春寶,馮大政. 基于K近鄰一致性的特征匹配內點選擇算法[J]. 計算機科學,2016,43(1):290-293.
  [8] 王千,王成,馮振,等. K-means聚類算法研究綜述[J]. 電子設計工程,2012,20(7):21-24.
  [9] LOWE D G. Distinctive image features from scale-invariant keypoints[J].  International Journal of Computer Vision,2004,60(2):91-110.
  [10] 姜靚,詹永照. 基于高斯金字塔與差分法的多目標檢測和跟蹤算法[J]. 微電子學與計算機,2011,28(11):129-132,136.
  [11] 索春寶,楊東清,劉云鵬.多種角度比較SIFT、SURF、BRISK、ORB、FREAK算法[J]. 北京測繪,2014(4):23-26,22.
  [12] BAY H,ESS A,TUYTELAARS T,et al.Speeded-up robust features (SURF)[J]. Computer Vision and Image Understanding,2007,110(3):346-359.   [13] ERLEBEN K,ANDREWS S. Solving inverse kinematics using exact Hessian matrices[J]. Computers &Graphics,2019,78:1-11.
  [14] NEUBECK A,GOOL V. Efficient non-maximum suppression[C].  Hongkong:The 18th International Conference on Pattern Recognition, 2006.
  [15] BROWN M,LOWE D. Invariant features from interest point groups[C]. Cardiff:The British Machine Vision Conference, 2002.
  [16] 劉悅. 基于Harr特征的運動車輛跟蹤[J]. 廣東公安科技,2019,27(1):45-47,61.
  [17] 賈迪,朱寧丹,楊寧華,等. 圖像匹配方法研究綜述[J]. 中國圖象圖形學報,2019,24(5):677-699.
  [18] RYU S H,NOH J,KIM H. Deep neural network based demand side short term load forecasting[J]. Energies,2016,10(1):1-20.
  [19] 陳翠平. 基于深度信念網絡的文本分類算法[J]. 計算機系統應用,2015(2):121-126.
  [20] 趙宏,郭萬鵬. 深度神經網絡代價函數選擇與性能評測研究[J]. 軟件,2018,39(1):14-20.
  [21] HUANG S Y,LEE Y K,BELL G,e al. An efficient segmentation algorithm for captchas with line cluttering and character warping[J].  Multimedia Tools and Applications,2010,48(2):267-289.
  (責任編輯:江 艷)
广东福彩网 轉載注明來源:http://588tuan.com/8/view-15254773.htm

服務推薦

? 吉林体彩网-Home 吉林福彩网-广东福彩网 湖北体彩网-推荐 湖北福彩网-官网 江西体彩网-欢迎您 江西福彩网-安全购彩 安徽体彩网-Welcome 安徽福彩网-Home 天津体彩网-广东福彩网 天津福彩网-推荐