在實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲的過程中,驗(yàn)證碼的出現(xiàn)總是會(huì)阻礙爬蟲的工作。本期介紹一種利用深度神經(jīng)網(wǎng)絡(luò)來實(shí)現(xiàn)的端到端的驗(yàn)證碼識(shí)別方法。通過本方法,可以在不切割圖片、不做模板匹配的情況下實(shí)現(xiàn)精度超過90%的識(shí)別結(jié)果。
本文分為兩個(gè)部分,第一個(gè)部分介紹如何利用深度神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)驗(yàn)證碼的訓(xùn)練和識(shí)別,第二個(gè)部分介紹在實(shí)現(xiàn)過程中需要克服的工程問題。
一. 基于深度神經(jīng)網(wǎng)絡(luò)的驗(yàn)證碼識(shí)別
驗(yàn)證碼的識(shí)別是從圖片到文字的過程。傳統(tǒng)的算法如OCR正是為了解決此類問題而設(shè)計(jì)的。然而,在真實(shí)情形中,驗(yàn)證碼通常并不以規(guī)則的文字出現(xiàn),即文字通常會(huì)有不同程度的變形,圖像本身也通常會(huì)被添加或多或少的噪聲。這些干擾的出現(xiàn),使得文字分割、模板匹配不再有效,進(jìn)而OCR算法也很難解析出結(jié)果。
近年來,深度神經(jīng)網(wǎng)絡(luò)(DNN)在圖像識(shí)別領(lǐng)域已經(jīng)被證明了強(qiáng)大的識(shí)別能力。單個(gè)文字的識(shí)別是典型的分類問題。通常的做法為訓(xùn)練一個(gè)深度神經(jīng)網(wǎng)絡(luò),網(wǎng)絡(luò)的最后一層分為N種類別,代表字符的數(shù)目。比如對(duì)于英文字母,最后一層的分類器便是26個(gè)。比如經(jīng)典的LeNet(http://yann.lecun.com/exdb/lenet/)即為解決單個(gè)文字識(shí)別的網(wǎng)絡(luò):
然而驗(yàn)證碼通常包含多個(gè)字符,如何利用現(xiàn)有的網(wǎng)絡(luò)實(shí)現(xiàn)這類分類問題呢?實(shí)際上這個(gè)問題再機(jī)器學(xué)習(xí)中被稱為多標(biāo)簽訓(xùn)練問題。和上述每個(gè)圖片輸入只對(duì)應(yīng)一個(gè)標(biāo)簽類別對(duì)比,這類分類的輸出是多個(gè)標(biāo)簽。我們同樣可以對(duì)傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)稍作改變以適應(yīng)這種情況。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26