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

?

基于Python和CNN的數(shù)字驗(yàn)證碼識(shí)別

2020-08-13 12:33張國(guó)榮劉炳君付成麗
關(guān)鍵詞:池化灰度卷積

張國(guó)榮,劉炳君,付成麗

(忻州師范學(xué)院 計(jì)算機(jī)系,山西 忻州 034000)

0 引言

在當(dāng)前網(wǎng)絡(luò)環(huán)境中,驗(yàn)證碼本身是用來(lái)區(qū)分人機(jī)的一種全自動(dòng)驗(yàn)證程序,在一定程度上提高了網(wǎng)絡(luò)防御力,又被稱為“反向圖靈測(cè)試”.目前,多數(shù)網(wǎng)站在用戶注冊(cè)、登錄、下載甚至發(fā)表評(píng)論等情況下都用驗(yàn)證碼進(jìn)行驗(yàn)證,從而保證合法有效的用戶權(quán)益.一般要求人類的識(shí)別率達(dá)到90%以上,機(jī)器的識(shí)別率低于0.01%[1].驗(yàn)證碼的分類有滑塊驗(yàn)證碼、文本驗(yàn)證碼、圖像驗(yàn)證碼、拼圖驗(yàn)證碼等,本文主要研究由四位數(shù)字組成的圖片驗(yàn)證碼.

深度學(xué)習(xí)中應(yīng)用最為廣泛的卷積神經(jīng)網(wǎng)絡(luò)CNN,在原來(lái)多層神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,加入了特征學(xué)習(xí)部分,用來(lái)模仿人腦對(duì)信號(hào)處理,成為了圖像識(shí)別方向最熱門的技術(shù),在圖像特征提取與識(shí)別中優(yōu)勢(shì)明顯.鑒于CNN有很好的特征提取能力,因此本文采用CNN對(duì)驗(yàn)證碼進(jìn)行識(shí)別.

1 相關(guān)研究工作

隨著驗(yàn)證碼在人工智能領(lǐng)域的突出作用,國(guó)內(nèi)外學(xué)者在驗(yàn)證碼的識(shí)別方法上有著廣泛的探索與研究.文獻(xiàn)[2]和文獻(xiàn)[3]分別利用殘差設(shè)計(jì)和調(diào)整卷積分組數(shù)量對(duì)圖像驗(yàn)證碼進(jìn)行識(shí)別[2,3].文獻(xiàn)[4]提出對(duì)驗(yàn)證碼無(wú)須預(yù)分割的端對(duì)端的識(shí)別方法[4].文獻(xiàn)[5]提出改進(jìn)識(shí)別空心驗(yàn)證碼的方法[5].

目前,對(duì)于CNN的研究及應(yīng)用更為廣泛.Hinton等人在2006年提出深度置信網(wǎng)絡(luò)(DBN)用于處理特征降維以加快訓(xùn)練深度網(wǎng)絡(luò)[6].2012年繼Alex Krizhevsky提出比較有利于網(wǎng)絡(luò)優(yōu)化和訓(xùn)練的AlexNet[7]后,更多更深的神經(jīng)網(wǎng)絡(luò)被提出,如著名的VGGNet就是在AlexNet的基礎(chǔ)上加深并用小卷積(3*3)提高了在ImageNet數(shù)據(jù)集上的精度.2015年,何愷明等人提出了殘差網(wǎng)絡(luò)(DRN),因有殘差連接使得隨著網(wǎng)絡(luò)深度的顯著提升,誤差卻不斷下降[8].如今,CNN被應(yīng)用在多個(gè)領(lǐng)域.文獻(xiàn)[9]提出端到端的單步進(jìn)行文本驗(yàn)證碼識(shí)別的通用算法[9].文獻(xiàn)[10]提出了改進(jìn)LeNet-7系統(tǒng)以提高紅外圖像行人檢測(cè)率[10].文獻(xiàn)[11]采用 CNN進(jìn)行語(yǔ)音模型訓(xùn)練,以處理語(yǔ)音中信號(hào)多樣性的問(wèn)題[11].文獻(xiàn)[12]提出SA-CNN以提升視覺(jué)情感分析的效果[12].

2 驗(yàn)證碼獲取及預(yù)處理

2.1 驗(yàn)證碼訓(xùn)練集與測(cè)試集

本文采用在Python 3編程環(huán)境下使用深度學(xué)習(xí)框架Keras進(jìn)行網(wǎng)絡(luò)模型搭建,利用 PIL( Python Imaging Library)圖像處理庫(kù)批量生成各項(xiàng)參數(shù)可調(diào)的數(shù)字驗(yàn)證碼圖片,包括圖片大小、格式、干擾點(diǎn)等,自動(dòng)生成3 000張4位數(shù)字圖片驗(yàn)證碼,默認(rèn)圖片大小為60×160,RGB格式,包含少量的干擾點(diǎn)、線條及扭曲.本文使用其中的2 400張圖片作為訓(xùn)練集訓(xùn)練網(wǎng)絡(luò)參數(shù),600張圖片作為測(cè)試集測(cè)試網(wǎng)絡(luò)識(shí)別的效果.訓(xùn)練集與測(cè)試集無(wú)交叉重疊.部分驗(yàn)證碼樣本示例圖如圖1所示.

圖1 驗(yàn)證碼樣本

2.2 驗(yàn)證碼圖片預(yù)處理

2.2.1 灰度化處理

對(duì)于自動(dòng)生成的RGB格式圖片驗(yàn)證碼,從圖1中可以看出會(huì)有噪點(diǎn)、線條及相互連接等一定的干擾來(lái)模擬網(wǎng)絡(luò)環(huán)境中的驗(yàn)證碼.由于灰度圖像的像素點(diǎn)變化范圍較RGB格式的圖像像素點(diǎn)小得多,因而在進(jìn)行圖像處理時(shí),會(huì)首先進(jìn)行灰度化圖像.灰度化方法一般有分量法、平均值法、最大值法、加權(quán)平均法.本文采用加權(quán)平均法提取灰度圖,將原RGB圖像三個(gè)分量的像素值以不同的權(quán)重進(jìn)行加權(quán)平均后得到的像素值作為灰度值,其常用的計(jì)算公式如下:

Gray=0.298 9R+0.578 0G+0.114 0B

其中,Gray表示所求坐標(biāo)(i,j)位置處的像素值,R,G,B分別為三個(gè)分量的坐標(biāo)(i,j)位置的像素值.

2.2.2 二值化處理

圖像的二值化處理,是指將灰度圖像像素點(diǎn)的灰度值由某個(gè)閾值劃分為兩部分,使圖像顯示出明顯的黑色及白色效果,便于對(duì)圖像進(jìn)一步處理,使圖像計(jì)算更為簡(jiǎn)單,且有利于凸顯出關(guān)注目標(biāo)的輪廓.

二值化操作的關(guān)鍵在于閾值的選取.本文中閾值設(shè)為200,預(yù)處理前的圖片與預(yù)處理后的圖片對(duì)比如圖2與圖3所示.

3 網(wǎng)絡(luò)模型設(shè)計(jì)

3.1 卷積神經(jīng)網(wǎng)絡(luò)概念

CNN以二維矩陣數(shù)據(jù)形式輸入,與傳統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)的不同在于其隱藏層的神經(jīng)元僅與局部區(qū)域(即局部感受野)輸入層的神經(jīng)元相連.在結(jié)構(gòu)上,它主要由多個(gè)卷積層和池化組合而成.

卷積層采用卷積來(lái)代替?zhèn)鹘y(tǒng)DNN的全連接,卷積層的每一個(gè)神經(jīng)元只和前一層的一個(gè)局部窗口即感受野的神經(jīng)元相連,構(gòu)成卷積核.卷積核在卷積操作時(shí)對(duì)應(yīng)的權(quán)值和偏移值共享,使得CNN的訓(xùn)練簡(jiǎn)單化,提高了迭代效率.

池化,目的是降維,能夠簡(jiǎn)化卷積層的輸出參數(shù),提高所提取特征的魯棒性.特征圖像經(jīng)過(guò)池化操作后通道數(shù)不會(huì)改變.下采樣尺度為2*2的池化,應(yīng)用頻率非常高,其效果相當(dāng)于高度和寬度縮減一半,大大降低了模型參數(shù).

激活函數(shù)的作用是為了增加神經(jīng)網(wǎng)絡(luò)模型的非線性,從而提升神經(jīng)網(wǎng)絡(luò)模型表達(dá)能力,解決線性模型所不能解決的問(wèn)題.不同的激活函數(shù)帶來(lái)的效果有一定的差異,從計(jì)算量、梯度消失、反向傳播求誤差等多方面考慮,sigmoid函數(shù)在BP神經(jīng)網(wǎng)絡(luò)中用得較多,目前ReLu函數(shù)及其改進(jìn)函數(shù)在CNN中用得較多.

損失函數(shù),是用來(lái)衡量模型的預(yù)測(cè)值與真實(shí)值不一致的程度,從而評(píng)估模型的好壞.神經(jīng)網(wǎng)絡(luò)優(yōu)化的過(guò)程實(shí)質(zhì)就是最小化損失函數(shù)的過(guò)程,損失函數(shù)越小,說(shuō)明模型的預(yù)測(cè)值愈接近真實(shí)值,模型的健壯性也就越好.

3.2 網(wǎng)絡(luò)模型的設(shè)計(jì)與實(shí)現(xiàn)

本次實(shí)驗(yàn)中,采用的神經(jīng)網(wǎng)絡(luò)模型共四層,前三層每層進(jìn)行兩次卷積操作和一次池化操作,第四層為全連接層,結(jié)構(gòu)如圖4所示.

圖4 網(wǎng)絡(luò)結(jié)構(gòu)

具體定義代碼如圖5所示.

圖5 定義CNN結(jié)構(gòu)的代碼

4 實(shí)驗(yàn)過(guò)程與分析

本文選擇Adam梯度下降算法作為模型優(yōu)化器,輸出1×40的向量表示識(shí)別結(jié)果,損失函數(shù)采用binary_crossentropy.

在該模型訓(xùn)練中發(fā)現(xiàn),batch_size的設(shè)置值也極為重要,若設(shè)置得太小會(huì)增加訓(xùn)練時(shí)間且不利于損失函數(shù)的收斂,設(shè)置得太大容易陷入局部最小值.通過(guò)比較訓(xùn)練效果,最終在本次實(shí)驗(yàn)中選取batch_size為32,epochs為10,在測(cè)試集上的驗(yàn)證碼識(shí)別率達(dá)到98.8%.

訓(xùn)練情況和測(cè)試結(jié)果分別如圖6和圖7所示.

5 總結(jié)

本文針對(duì)網(wǎng)站中常見(jiàn)的數(shù)字驗(yàn)證碼利用4層卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型并進(jìn)行識(shí)別,取得了不錯(cuò)的識(shí)別率,對(duì)于驗(yàn)證碼識(shí)別相關(guān)領(lǐng)域的研究及應(yīng)用具有一定的借鑒意義.當(dāng)然,也有不足之處,通過(guò)在神經(jīng)網(wǎng)絡(luò)中每層進(jìn)行兩次卷積操作時(shí),雖然能夠提取出到更多的圖像特征和減少很多參數(shù),使得神經(jīng)網(wǎng)絡(luò)在較少的訓(xùn)練次數(shù)下得到更好的訓(xùn)練結(jié)果,但也在一定程序上增加了過(guò)擬合的風(fēng)險(xiǎn).

猜你喜歡
池化灰度卷積
基于高斯函數(shù)的池化算法
采用改進(jìn)導(dǎo)重法的拓?fù)浣Y(jié)構(gòu)灰度單元過(guò)濾技術(shù)
卷積神經(jīng)網(wǎng)絡(luò)中的自適應(yīng)加權(quán)池化
基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
Bp-MRI灰度直方圖在鑒別移行帶前列腺癌與良性前列腺增生中的應(yīng)用價(jià)值
Arduino小車巡線程序的灰度閾值優(yōu)化方案
卷積神經(jīng)網(wǎng)絡(luò)的分析與設(shè)計(jì)
從濾波器理解卷積
基于卷積神經(jīng)網(wǎng)絡(luò)和池化算法的表情識(shí)別研究
用于手寫漢字識(shí)別的文本分割方法