TensorFlow識別字母扭曲干擾型驗證碼-開放源碼與98%模型
02-02
本項目源碼及訓練完成的模型均開源當前識別率98%。
轉載請附:博文網址: urlteam ,github 網址:tensorflow_cnn
新開一個專門存儲TensorFlow項目的倉庫逐步更新歡迎star :tensorflow
主流驗證碼偏向於用扭曲,傾斜,干擾例如下圖:
因為字元距離近,沒法採用先切割為單個字元然後進行局部識別的方式,so。
使用TensorFlow+cnn。進行卷積識別,該方法無需切割驗證碼,最終結果為訓練4天(單台i5機器)達到98準確率
項目綜述:
使用深度學習+訓練數據+大量計算力,我們可以在幾天內訓練一個可以破解驗證碼的模型,不需要分割驗證碼,而是把驗證碼做為一個整體進行識別。
自己做一個驗證碼生成器,然後訓練CNN模型破解自己做的驗證碼生成器。感覺的字元驗證碼機制可以廢了,單純的增加驗證碼難度只會讓人更難識別,使用CNN+RNN,機器的識別準確率不比人差。Google已經意識到了這一點,他們現在使用機器學習技術檢測異常流量。
CNN需要大量的樣本進行訓練。如果使用數字+大小寫字母CNN網路有4*62個輸出,只使用數字CNN網路有4*10個輸出。因此需要一個腳本自動生成訓練集。
成功率(可能波動,均親身實踐):
- 達到50%成功率需要2000個批次,總計20w張圖片。
- 達到70%成功率需要4000個批次,總計40w張圖片。
- 達到94%成功率需要40000個批次,總計400w張圖片。
- 達到98%成功率需要100000個批次,總計1000w張圖片。
loss曲線為:
成功率曲線為:
實踐流程:
- TensorFlow環境搭建:官網下查看安裝教程
- 測試批量驗證碼生成訓練集: github
- TensorFlow—cnn 批量生成驗證碼並用cnn訓練: github
- 將訓練模型存放於同一目錄下,測試結果:github
- 98%準確率模型下載:鏈接: https://pan.baidu.com/s/1cs0LCM 密碼: sngx
運行截圖:
測試訓練圖片生成:
模型訓練中:
測試模型:
資源簡介:
- 本項目由urlteam維護,歡迎star
- 相關的驗證碼破解系列可以在這裡找到:github
- 逐步更新TensorFlow系列項目:github
- 博客主頁:The world we move forward together
相關論文:
- Multi-digit Number Recognition from Street View Imagery using Deep CNN
- CAPTCHA Recognition with Active Deep Learning
- Number plate recognition with Tensorflow
- 最初cnn學習自此
推薦閱讀:
※量化策略系列教程:08空中花園策略(SkyPark)
※PyQt5系列教程(12):構建我們自己的密碼輸入框
※OSX 10.9.4 如何安裝 Python 2.7?
※為什麼python缺少一個msbuild,從2008年到2014年一直不加上?
TAG:机器学习 | Python | TensorFlow |