国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

中文圖片驗證碼識別方法的研究

2018-08-28 02:46航,蔡
關鍵詞:字符閾值卷積

楊 航,蔡 浩

(汕頭大學工學院,廣東 汕頭 515063)

0 前言

驗證碼測試是一種為了區(qū)分人類和機器的測試.一般是人類可以測試通過,但是機器不能測試通過的,這樣就達到了圖靈測試的目的.因而,驗證碼測試被廣泛應用于網(wǎng)絡安全中,例如:賬號注冊,賬號登陸等.最開始提到有關“機器圖靈測試”的問題出現(xiàn)在Moni Naor[1]的一篇論文中.而第一個自動圖靈測試系統(tǒng)是由Altavista[2]開發(fā)的,是為了阻止機器人自動識別注冊網(wǎng)頁.而最近兩年基于人工智能的分類算法是學術上研究的熱點,在這種前提和背景下,本文研究了基于OCR的中文驗證碼識別方法、模板匹配法、基于卷積神經(jīng)網(wǎng)絡的分類算法以及相關改進方法在中文驗證碼識別上的表現(xiàn),來探究這幾種方法在識別精度,樣本需求量,識別時長上的表現(xiàn),并著重對基于卷積神經(jīng)網(wǎng)絡的方法進行了改進,最后對三者的適用性做了簡單的總結.

1 研究目的簡述

目前利用已有中文字符OCR對中文字符的識別成功率不到10%(從文獻[3]中可以知道),文章新加了兩種方法對中文圖片驗證碼進行了識別研究.對比研究這三種驗證碼識別技術,結合驗證碼的特點,進而探究這類驗證碼中存在的安全隱患,從而構建更加安全的防護機制.只有深入了解機器識別驗證碼的機制,我們才能組合出更不利于機器識別的驗證模式,從而使驗證碼這種機制更加安全.

2 研究方法

字符型驗證碼的識別可分為基于分割的識別和不基于分割的識別.不基于分割的方法有,尹龍等[4]用到一種基于密集尺度不變特征變換(DENSE SIFT)和隨機抽樣一致性算法(RANSAC)的識別方法,該方法的普適性較好,但算法設計較為復雜.基于分割的方法,一般分割之后再用機器學習的方法進行分類,殷光等[5]采用基于SVM分類器的識別方法,王璐[6]采用了分割后基于卷積神經(jīng)網(wǎng)絡的方法,張亮等[7]采用了LSTM型RNN的方法,都取得了不錯的識別效果.當然這些方法都是針對阿拉伯數(shù)字和英文字母,和中文比較起來,中文具有字型更復雜,符號數(shù)量更多的特點.目前還沒有文獻介紹用卷積神經(jīng)網(wǎng)絡識別中文字符驗證碼的.本文提出了基于點矩陣的模板匹配法和基于卷積神經(jīng)網(wǎng)絡的識別方法對該問題進行實驗研究.基于點矩陣的模板匹配法是比較尋找所要識別圖片與事先建好字庫中圖片相似度最大的圖片,這里的相似度可以采用點矩陣重合率和點矩陣余弦相似度,最后判定相似度最大的字符值為所要識別字符的值.基于卷積神經(jīng)網(wǎng)絡的方法則采用了現(xiàn)在在圖像分類問題上處理比較常用的方法,先進行人工標記樣本圖片,然后將圖片分為訓練集和測試集,再建立神經(jīng)網(wǎng)絡模型,讓模型在訓練集上訓練,不斷調(diào)整模型參數(shù),最后讓訓練好的模型在測試集上測試得到模型表現(xiàn)結果.本文選用一類代表性比較強的中文驗證碼作為實驗對象,驗證碼中字符有平移,旋轉,并且有大量的噪點和干擾線.本文是基于先分割再識別的思路去研究中文驗證碼識別問題的,選用了基于OCR的識別方法和基于卷積神經(jīng)網(wǎng)絡的識別方法,以及基于點矩陣的模板匹配法,并對所研究方法進行改進和實驗對比.

3 實例分析

3.1 圖片預處理

下面介紹的是實驗的具體操作步驟,首先介紹兩種方法的公共部分,即圖片的預處理部分,分為圖片的灰度化,圖片的二值化,圖片去噪,圖片切塊,圖片的人工分類標記.

樣本選用的是某個具有一定代表性的公開網(wǎng)站,我們提前下載好一批驗證碼圖片,這里的樣本圖片如圖1所示.

圖1 原始未處理圖

可以看出圖片中的漢字的位置變化很大,噪點和干擾線較多,字符之間存在不同程度的粘連.

3.1.1 灰度化與二值化

灰度化是去掉圖片中與字符無關的色彩信息,簡化計算,更有利于識別圖片中的字符.這是適用于字符類驗證碼識別的預處理.具體可采用平均值法或者參考文獻[8]中的自適應算法.為了之后的問題處理方便,要把圖像二值化成黑白圖像,即去掉中間的灰度.在處理像素點時,用0表示白色像素,用1表示黑色像素.二值化圖像的方法有很多,有固定閾值二值化法和自適應閾值二值化法.自適應閾值二值化需要統(tǒng)計整幅圖像像素特征,自動計算出閾值,然后根據(jù)該閾值進行二值化.確定好閾值后,二者的后續(xù)操作是一樣的.如果用threshold表示閾值,則偽代碼如下(其中color表示當前像素點的像素值):

3.1.2 去噪

一般采用中值濾波或均值濾波的方法去除圖像中的噪音,本文圖片分類對去噪能力依賴性不大,故采用相鄰點數(shù)的閾值去噪方法,具體步驟:設定閾值,統(tǒng)計相鄰點為黑色的數(shù)值,如果統(tǒng)計的黑色點個數(shù)小于閾值,則判定該點為噪點,去除該點,否則保留.算法的偽代碼如下(其中threshold為設定的閾值,number表示統(tǒng)計相鄰點為黑色的數(shù)值):

3.1.3 切塊

這里為了獲得更好的切塊效果也可以用文獻[9]中提出的基于結構特征點的字符切割方法,切割準確度要比投影分析方法、連通域提取方法、傳統(tǒng)滴水方法、骨架形態(tài)分析方法等要好.

3.1.4 分類貼標簽及預處理效果

經(jīng)過以上幾個步驟操作之后,最后的效果圖如圖2,可以看到獲得的預處理效果還是相當不錯的,雖然字體有些歪斜,噪聲也并不是完全清楚干凈,但是肉眼可以明顯辨認出圖2中字符所代表的中文字,這就有了后續(xù)識別的基礎.

圖2 預處理后效果圖

3.2 識別方法

3.2.1 相似度模板匹配方法

3.2.1.1 人工建立模板庫 對每個字符隨機挑選出50-100張切割好的圖片作為特定字符的模板庫,每個模板庫中模板的數(shù)量保持一致.原因有兩點,一個是為了程序編寫方便,一個是為了匹配時不會產(chǎn)生計算偏倚,即不會偏重匹配成功某個模板較多的字符.

3.2.1.2 圖片模板庫轉文本模板庫壓縮存儲 可以利用將圖片信息轉化為文本信息來完成壓縮存儲,這樣就可以減少計算機打開圖片解碼圖片等步驟,而且可以減小模板庫的存儲空間,使用起來更便利.

3.2.1.3 效果展示 最后統(tǒng)計圖片中總的點數(shù),統(tǒng)計重合點數(shù),則最后的相似率計算可以用重合點數(shù)比上總過的點數(shù),pic對應的識別標簽值.最后的效果展示圖如圖3所示.

圖3 識別效果展示圖

3.2.1.4 其他注意事項及技巧 可以看到圖1原始未處理圖中,字符是有旋轉的,有粘連,并且有噪點和干擾線,對于特定的一類驗證碼我們需要人為的建立一類對應的模板庫,這樣的識別才會更精準.可以看到初始圖片集中,是有成語類的驗證碼的,而計算類驗證碼字符是只有十三個的,所以如果能區(qū)分成語類和計算類,然后再進行識別的話,所需要的模板字符就變少了.因為計算類的圖片中,會出現(xiàn)“等于”字樣,我們可以建立一個“于”字庫,用于對比切割之后原始圖片中的最后一個字符來確定當前驗證碼的類別,這個技巧可以發(fā)散,對于特定一類驗證碼,利用其本身的特點來驗證可以事半功倍.如果一類驗證碼中沒有明顯區(qū)分這種類別時,則需要建立更多字符的模板庫.

3.2.1.5 模板匹配法優(yōu)缺點 簡單總結一下,模板匹配法操作簡單,容易實現(xiàn),所需樣本少,但是其識別精度還不夠高,當識別字符較多時,需要建立更多字符的模板庫,匹配計算量會變得很大,識別時間會很長.

3.2.2 基于卷積神經(jīng)網(wǎng)絡的識別

原始的模型參考LeNet-5[10]的結構搭建卷積神經(jīng)網(wǎng)絡,本文采用的網(wǎng)絡結構一共有6層,第一層和第三層是卷積層,卷積核均為5×5的,第二層和第四層是池化層,但是第二層步長設置為2,而第四層設置的是1,第五層和第六層為全連接層,連接數(shù)為512,輸入和輸出在模型的兩端,輸入為25×25的圖片,顏色通道數(shù)為3,最后的輸出為13類中的一類,模型示意圖如圖4所示:

圖4 卷積網(wǎng)絡模型示意圖

3.2.3 基于卷積神經(jīng)網(wǎng)絡識別方法的改進

改進1:加入圖片增強技術.文獻[11]中進行圖片編碼處理時,對圖像進行了大小調(diào)整、裁剪、翻轉等處理,這樣訓練出的神經(jīng)網(wǎng)絡模型實用性更好.類似的,我們可以將這種思想運用到中文驗證碼識別問題中.對于該問題驗證碼獲取成本較高,并且網(wǎng)站經(jīng)常禁止訪問,所以不可能獲得太大數(shù)量的原始樣本.為了獲得更多有效的樣本,對切割好的圖片,可以采用人工制造噪點干擾線,圖片適當旋轉平移等方式,來增強圖片的表示,并獲得更多有效的樣本.

改進 2:模型改進.在模型中引入 ReLU激活層[12]、Dropout層[13]以及 Batch Normalization層[14].ReLU激活層是一個非線性的激活層,可以更好的模擬神經(jīng)網(wǎng)絡的作用,實踐證明其表現(xiàn)是優(yōu)于Sigmoid線性激活層的.在池化層的后面添加Dropout層來防止過擬合,其主要工作原理是按照一定的概率將神經(jīng)網(wǎng)絡單元從網(wǎng)絡中丟棄.文獻[14]對Dropout層的作用有詳細的解釋.引入Batch Normalization的目的是,讓訓練的過程更快,精準度更高.基本原理是在每次SGD時,通過mini-batch來對相應的activation做規(guī)范操作,使得輸出信號各個維度的均值為0,方差為1.最后使用了scale and shift操作,保證了模型的容納能力.

改進3:用模板匹配法粗分字符集.我們可以先建立極小數(shù)量的字符模板庫,然后利用建好的模板庫,對未處理的收集樣本進行切割粗分,減少人工操作,當然最后需要人工檢查是否分割正確,這樣可以大大降低人工干預和工作量.

4 結果分析

4.1 實驗平臺及數(shù)據(jù)量描述

4.1.1 硬件描述

處理器:Intel(R)Core(TM)i7-6700HQ CPU@2.60GHZ 2.60GHZ

內(nèi)存(RAM):8.00GB

系統(tǒng)類型:64位操作系統(tǒng)(WIN10),基于x64的處理器

4.1.2 軟件描述

編程語言為python(3.5.2版),安裝包主要有numpy(1.13.3版),Pillow(4.2.1版),Keras(2.0.8版),tensorflow(1.4.0版),pyocr(0.4.7版).算法的實現(xiàn)主要是基于google的tensorflow深度學習開源框架.

4.1.3 實驗數(shù)據(jù)量描述

實驗分類字符為13類,3種方法的數(shù)據(jù)量是不同的,這主要受限于當前方法本身,中文模板匹配法總的圖片數(shù)據(jù)1 300張,每一類100張;未改進的卷積神經(jīng)網(wǎng)絡方法總的數(shù)據(jù)量為26 000張,每一類2 000張;改進的卷積神經(jīng)網(wǎng)絡方法總的數(shù)據(jù)量為3 900張,每一類300張.3種方法最后測試的數(shù)據(jù)圖片量為1 000張.

4.2 3種方法結果對比

我們設定幾個指標來比較衡量這些方法.設定指標如下:

識別精度:即識別正確率(在測試集上的).

樣本需求量:方法對樣本數(shù)量多少的依賴.

識別時長:識別程序開發(fā)好后,識別一張圖片所用時間.

這些方法的指標對比見表1.

表1 3種方法對比結果

經(jīng)過實踐證明,基于OCR的方法對于此類中文驗證碼的識別基本無效.通過表1可以看出,從開發(fā)周期和樣本需求量上看,相較于模板匹配法,基于卷積神經(jīng)網(wǎng)絡的方法需要更多的樣本和時間去開發(fā).但是識別效果提升明顯,尤其是改進之后的卷積神經(jīng)網(wǎng)絡方法,不僅樣本需求量更小,識別精度也有很大提高,優(yōu)于文獻[3-7]中的實驗結果.從普適性上分析,改進后的卷積神經(jīng)網(wǎng)絡方法更適用于圖像分類問題.

5 研究結論

經(jīng)過上面的實驗,可以得出如下結論:

模板匹配法簡單可行,開發(fā)周期短,所需樣本數(shù)量非常少,但正確率較低,字符較多時,比較的計算時間會很長.相對的,基于卷積神經(jīng)網(wǎng)絡的方法則需要更多的樣本和開發(fā)訓練時間,以及模型調(diào)整時間,但是模型的準確性很高,而且識別所需時間更短,速度很快.二者各有所長,模板匹配簡單易行,而卷積神經(jīng)網(wǎng)絡分類準確率高.經(jīng)過改進之后的卷積神經(jīng)網(wǎng)絡方法則表現(xiàn)出了更好的普適性和更優(yōu)越的性能.

中文圖片驗證碼問題的研究能給防止機器識別的研究啟示,例如可以研究如何改變驗證碼生成策略和驗證策略來提高驗證碼的安全性.再一個衍生的研究課題是,如何利用現(xiàn)有的卷積神經(jīng)網(wǎng)絡,以及深度學習網(wǎng)絡來提升OCR中文識別技術.

6 小結

通過實驗對比研究了文中提到的幾種方法在中文驗證碼識別上的表現(xiàn),并進行相應的改進與提升.最后改進的卷積神經(jīng)網(wǎng)絡獲得了99.8%的識別精度,并且對樣本的依賴性降低,模型更適用于中文字符的識別.現(xiàn)實生活中我們經(jīng)常會遇到類似的圖像分類問題,而且很多時候無法在短時間里得到一個很好的模型,我們可以先從簡單的模型出發(fā),后期再對模型進行調(diào)整和優(yōu)化.對于圖片分類問題,卷積神經(jīng)網(wǎng)絡表現(xiàn)出的優(yōu)越性很明顯,并且相當適用,是處理這類問題一個不錯的選擇.

猜你喜歡
字符閾值卷積
基于3D-Winograd的快速卷積算法設計及FPGA實現(xiàn)
采用紅細胞沉降率和C-反應蛋白作為假體周圍感染的閾值
論高級用字階段漢字系統(tǒng)選擇字符的幾個原則
卷積神經(jīng)網(wǎng)絡的分析與設計
字符代表幾
一種USB接口字符液晶控制器設計
圖片輕松變身ASCⅡ藝術畫
小波閾值去噪在深小孔鉆削聲發(fā)射信號處理中的應用
從濾波器理解卷積
基于傅里葉域卷積表示的目標跟蹤算法
徐州市| 久治县| 遂溪县| 错那县| 济南市| 精河县| 襄樊市| 宁武县| 泾川县| 安阳县| 两当县| 德安县| 屏东市| 唐山市| 兴化市| 永新县| 湛江市| 马山县| 蒙自县| 油尖旺区| 黄山市| 高安市| 射阳县| 开鲁县| 河南省| 崇阳县| 海阳市| 锡林浩特市| 习水县| 洱源县| 镇赉县| 岚皋县| 海阳市| 武威市| 鹿邑县| 中卫市| 泰顺县| 惠州市| 商丘市| 璧山县| 夹江县|