陳振昂,黃星期,秦中元
〔1.東南大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,江蘇南京 211189;2.網(wǎng)絡(luò)空間國際治理研究基地(東南大學(xué)),江蘇南京211189〕
驗(yàn)證碼技術(shù)的全稱是“全自動區(qū)分計(jì)算機(jī)和人類的圖靈測試”(Completely Automated Public Test to tell Computer and Humans Apart,CAPTCHA),基本思想:根據(jù)預(yù)先人為制定的規(guī)則,由計(jì)算機(jī)系統(tǒng)自動生成一個(gè)用戶可以很容易解決但是計(jì)算機(jī)系統(tǒng)卻很難或者根本無法解決的問題。其中文本驗(yàn)證碼是使用最廣泛的驗(yàn)證碼技術(shù)之一,目前對于它的識別研究已經(jīng)成為了一個(gè)比較熱門的領(lǐng)域[1]。
George D等人[2]根據(jù)神經(jīng)科學(xué)基礎(chǔ)—人體記憶物體時(shí)總是同時(shí)記憶該物體的輪廓和表面特征,提出了遞歸皮層網(wǎng)絡(luò)(Recursive Cortical Network,RCN),將驗(yàn)證碼的識別過程分為表征、推理和學(xué)習(xí)三個(gè)步驟。盡管該方案能獲得較好的識別準(zhǔn)確率,對訓(xùn)練集樣本數(shù)量要求要較低,但計(jì)算量龐大,需要較好的硬件設(shè)備。Dazhen Lin等人[3]針對基于漢字的驗(yàn)證碼提出了新的卷積神經(jīng)網(wǎng)絡(luò)模型,對混合干擾的驗(yàn)證碼進(jìn)行測試,識別準(zhǔn)確率均達(dá)到85%以上。但實(shí)驗(yàn)樣本字符間有明顯間隔,且反分割手段較差。Xing Wu等人[4]對帶有噪聲的可變長的基于漢字的文本驗(yàn)證碼進(jìn)行了研究,實(shí)驗(yàn)結(jié)果表明,所提出的方法能夠有效地識別出帶有噪聲的可變長漢字驗(yàn)證碼。但該方法受數(shù)據(jù)集影響明顯,并且字符分割方案不適用于具有復(fù)雜反分割手段的驗(yàn)證碼。
基于國內(nèi)外學(xué)者的研究,本文提出了一種基于圖像處理和卷積神經(jīng)網(wǎng)絡(luò)的文本驗(yàn)證碼識別方案,本文設(shè)計(jì)的圖像分割算法具有較好的通用性,能夠有效提取出字符并且識別具有較高的準(zhǔn)確率。
原始驗(yàn)證碼圖片一般為RGB彩色圖片,并且?guī)в性肼暬【€等干擾。預(yù)處理階段的主要目的是去除驗(yàn)證碼圖片中的冗余信息(如背景顏色、噪聲弧線等)。此階段的流程如圖1所示。其中,二值化過程采用最大類間方差法,采用3×3的中值濾波去除噪聲。經(jīng)過預(yù)處理的圖像如圖2所示。
圖1 預(yù)處理流程圖
圖2 預(yù)處理效果圖
形態(tài)學(xué)腐蝕[5]可以細(xì)化字符,從而進(jìn)一步減少噪聲,并去除毛刺,腐蝕后的效果圖如圖3所示。
顏色填充算法(Color Filling Segmentation,CFS)[6]是一種連通域分割算法,其基本思想是以某一像素點(diǎn)為起始點(diǎn)遍歷其所在的連通域。但是此方法的缺陷在于無法將斷裂的字符識別為同一連通域,因此本文將對其改進(jìn)。
圖3 形態(tài)學(xué)腐蝕效果圖
滴水算法是一種用于分割手寫粘連字符的算法,它模擬水滴的滾動,通過水滴的滾動路徑來分割字符,可以解決直線切割造成的過分分割問題。但該方法無法處理圖中的水平線條遇到邊界導(dǎo)致算法異常結(jié)束,因此本文將對其改進(jìn)。
本文研究方案對顏色填充算法做三個(gè)方面的修改:
(1)去除像素個(gè)數(shù)小于6的連通域;
(2)合并邊界重合率達(dá)到70%以上的連通域;
(3)計(jì)算保留連通域的平均像素個(gè)數(shù),設(shè)為T,去除像素個(gè)數(shù)小于T的四分之一的連通域。
值得說明的是,邊界重合率是兩個(gè)不同連通域的位置重合程度指標(biāo)。設(shè)連通域1的橫坐標(biāo)范圍為[a,b],連通域2的橫坐標(biāo)范圍為[c,d](其中a 算法效果如圖4所示。 圖4 改進(jìn)顏色填充算法效果 為更好分割字符,本文對滴水算法做出的修改為: (1)水滴水平滾動時(shí),記錄其左右邊界,當(dāng)邊界距離超過8像素或再次到達(dá)邊界時(shí),取中心位置為下一滴落點(diǎn); (2)水滴到達(dá)底部時(shí),若距離其左側(cè)邊界過近(小于右側(cè)三分之一)或過遠(yuǎn)(大于右側(cè)的3倍),則將水滴起始位置分別向右或向左移動1像素,重新開始算法,校正次數(shù)超過8次,便判定為分割失敗。 滴水算法效果圖如圖5所示。 圖5 改進(jìn)的滴水算法效果圖 對于已經(jīng)預(yù)處理完畢的圖片,如果顏色填充算法所得連通域個(gè)數(shù)正好等于實(shí)際字符個(gè)數(shù),則直接使用連通域分割,否則,使用滴水算法分割。 如圖6所示為提取的字符效果圖,為降低后續(xù)計(jì)算量,將其壓縮到32×32。 圖6 提取字符效果圖 本文利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)構(gòu)建了一個(gè)模型,并使用字符信息對其進(jìn)行訓(xùn)練。 本文設(shè)計(jì)的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)包含三個(gè)卷積層、三個(gè)池化層、兩個(gè)全連接層等,具體架構(gòu)參數(shù)如表1所示。 表1 CNN模型架構(gòu)參數(shù)列表 中心損失(Center Loss)函數(shù)是由Wen Y等人[7]針對人臉識別任務(wù)提出的一種可以增強(qiáng)深度學(xué)習(xí)模型判別力的損失函數(shù)。中心損失會學(xué)習(xí)每個(gè)類的深層特征從而得到一個(gè)類中心,并懲罰每個(gè)深層特征與其對應(yīng)類中心的距離,即更關(guān)注類內(nèi)差異。 具體實(shí)現(xiàn)過程可概括為: (1)初始化類中心、學(xué)習(xí)率等參數(shù); 表2 實(shí)驗(yàn)數(shù)據(jù)集 (2)如果已收斂,則結(jié)束;否則根據(jù)每批次輸入數(shù)據(jù)計(jì)算中心損失,根據(jù)梯度計(jì)算反向傳播誤差,再更新每個(gè)類的中心。 在本文設(shè)計(jì)的方案中,類深度特征中心的學(xué)習(xí)率η與誤差反向傳播的學(xué)習(xí)率相同,中心損失占總損失的權(quán)重λ為0.01。 本文數(shù)據(jù)集均來自生成和網(wǎng)絡(luò)采集,具體如表2所示。 本文設(shè)計(jì)并實(shí)現(xiàn)的字符分割算法,聯(lián)合投影分析、顏色填充算法等多種技術(shù)進(jìn)行字符預(yù)分割操作,根據(jù)每張驗(yàn)證碼圖片中字符間的實(shí)際情況決定采用連通域分割或者修改的滴水算法分割,從而提取出獨(dú)立字符。本文對于表2中的實(shí)驗(yàn)數(shù)據(jù)集進(jìn)行了試驗(yàn)評估,各數(shù)據(jù)集的字符分割成功率如表3所示。可以看出,本文的方法在各數(shù)據(jù)集上的效果都很好。 為了進(jìn)一步評估本文提出的文本驗(yàn)證碼識別算法,本文還將實(shí)驗(yàn)結(jié)果與相關(guān)研究進(jìn)行了比較。本文復(fù)現(xiàn)了引言中提到的各方案,在各數(shù)據(jù)集上識別準(zhǔn)確率的比較如表4所示,可以看出本文提出的方案在各實(shí)驗(yàn)數(shù)據(jù)集上均能表現(xiàn)出一定優(yōu)勢,僅在實(shí)驗(yàn)數(shù)據(jù)集F和H略遜于RCN和FRN,這是由于本文使用了CNN作為識別網(wǎng)絡(luò),該網(wǎng)絡(luò)需要較龐大的訓(xùn)練數(shù)據(jù)集,而實(shí)驗(yàn)數(shù)據(jù)集F和H卻偏小,造成了一定的過擬合,但在實(shí)驗(yàn)數(shù)據(jù)集G和I(分別是對數(shù)據(jù)集F和H的擴(kuò)充)上,本文方案識別準(zhǔn)確率取得了明顯的提升,可以超過使用RCN和FRN的方案。值得說明的是,表4中存在一些空缺項(xiàng),空缺原因是該算法不適用于對應(yīng)的數(shù)據(jù)集。 總體來看,本文提出的文本驗(yàn)證碼識別方案對于字符獨(dú)立和存在字符粘連、噪聲塊與噪聲線等反分割設(shè)計(jì)的文本驗(yàn)證碼均能表現(xiàn)出更好的識別性能,當(dāng)字符訓(xùn)練數(shù)據(jù)集較小時(shí)也能通過擴(kuò)充的方式提高識別準(zhǔn)確率。 驗(yàn)證碼是互聯(lián)網(wǎng)業(yè)務(wù)的安全基礎(chǔ)設(shè)施之一,也是目前保障電子商務(wù)業(yè)務(wù)安全的重要環(huán)節(jié)之一。本文提出了一種通用的文本驗(yàn)證碼識別方案,即先進(jìn)行預(yù)處理,再使用改進(jìn)的顏色填充算法和滴水算法進(jìn)行字符分割,最后進(jìn)行字符識別。此外,本文構(gòu)建了一個(gè)具有三個(gè)卷積層、三個(gè)池化層、兩個(gè)全連接層的卷積神經(jīng)網(wǎng)絡(luò),并引入了中心損失來最小化類內(nèi)差異。實(shí)驗(yàn)部分,本文復(fù)現(xiàn)了四種典型的文本驗(yàn)證碼方法,通過準(zhǔn)確率的比較發(fā)現(xiàn),本文提出的方案在各實(shí)驗(yàn)數(shù)據(jù)集上均能表現(xiàn)出一定優(yōu)勢。雖然在數(shù)據(jù)集F和H上不如RCN和FRN,但是在擴(kuò)充數(shù)據(jù)集G和I上,解決了過擬合現(xiàn)象后,實(shí)現(xiàn)了準(zhǔn)確率的明顯提升。實(shí)驗(yàn)結(jié)果表明,本文提出的方法能夠有效提取出驗(yàn)證碼字符,并且能獲得更高的識別準(zhǔn)確率。3.2 改進(jìn)的滴水算法
3.3 提取字符
4 字符識別
4.1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
4.2 中心損失
5 實(shí)驗(yàn)結(jié)果
5.1 實(shí)驗(yàn)數(shù)據(jù)集
5.2 字符分割算法評估
5.3 模型評估
6 結(jié)束語