驗證碼分析和處理
網上搜索驗證碼識別能夠得到很多教程, 但大部分都是將驗證碼切割成單個字元訓練, 有時候 驗證碼字元大小不一或者發生重疊,
在這裡我們選擇模擬學習這樣的驗證碼:
該驗證碼來源於這裡(正如sci-hub網站所言"to remove all barriers in the way of science", 知識就該如此)。
該驗證碼只由六位元小寫字母、噪點和干擾線組成,
分析後發現, 只要將圖片二值化只保留字母, 就能得到不錯的輸入圖片:
實現代碼如下:
然後點擊+按鈕, 輸入tensorflow, install package。
接下來定義一個函數,
接下來定義兩個函數, 將名字轉變成向量, 將向量轉變成名字。
生成一個訓練batch,也就是採樣的大小,默認一次採集64張驗證碼作為一次訓練,需要注意通過get_name_and_image()函數獲得的image是一個含布林值的矩陣,在這裡通過1*(image.flatten())函數轉變成隻含0和1的1行114*450列的矩陣。
接下來定義卷積神經網路結構,我們採用3個卷積層加1個全連接層的結構,在每個卷積層中都選用2*2的最大池化層和dropout層,卷積核尺寸選擇5*5。需要注意的是在全連接層中,我們的圖片114*450已經經過了3層池化層,也就是長寬都壓縮了8倍,得到15*57大小。
訓練完成後,你應該會得到如下幾個檔。在這裡我花了將近9個小時跑了1800步,達到99.5%的準確率。輸出檔的詳細介紹參考這裡。
預測結果如下:
希望大家以後在tensorflow的學習道路中少點阻礙!!!
如有侵權請聯繫小編刪除!
生成一個訓練batch,也就是採樣的大小,默認一次採集64張驗證碼作為一次訓練,需要注意通過get_name_and_image()函數獲得的image是一個含布林值的矩陣,在這裡通過1*(image.flatten())函數轉變成隻含0和1的1行114*450列的矩陣。
接下來定義卷積神經網路結構,我們採用3個卷積層加1個全連接層的結構,在每個卷積層中都選用2*2的最大池化層和dropout層,卷積核尺寸選擇5*5。需要注意的是在全連接層中,我們的圖片114*450已經經過了3層池化層,也就是長寬都壓縮了8倍,得到15*57大小。
訓練完成後,你應該會得到如下幾個檔。在這裡我花了將近9個小時跑了1800步,達到99.5%的準確率。輸出檔的詳細介紹參考這裡。
預測結果如下:
希望大家以後在tensorflow的學習道路中少點阻礙!!!
如有侵權請聯繫小編刪除!