《利用機器學習在15分鍾內破解驗證碼》一文的實踐


看了《深度學習世界深度學習世界深度學習世界深度學習世界》2017-12-21 的文章“驗證碼,再見!利用機器學習在15分鍾內破解驗證碼”,覺得簡單易行,對於深度學習新手來說動手實踐的可行性很強。遂決定親手實踐一下,體驗深度學習在解決實際問題方面的威力。

 

1,安裝Python環境

  • 本機的配置是64位windows7操作系統。安裝python 3.5.2版。這也是目前windows操作系統下能夠使用tensorflow的版本。
  • 要安裝的依賴庫為numpy、imutils、sklearn、keras。使用pip直接聯網安裝很容易。
  • 在powershell中使用命令 pip install tensorflow,安裝tensorflow。

2,安裝OpenCV 環境

安裝OpenCV3. 具體過程略。

3,運行深度學習識別代碼

3.1 下載源代碼並解壓

https://s3-us-west-2.amazonaws.com/mlif-example-code/solving_captchas_code_examples.zip

 

源代碼目錄solving_captchas_code_examples下的子目錄generated_captcha_images下原有9955個圖片

 

 

 

子目錄extracted_letter_images中是空的。

3.2 從 CAPTCHA 圖片中分割單字母圖片

運行命令:

python extract_single_letters_from_captchas.py

 

運行完成后,\extracted_letter_images下產生32個目錄。存放切割出來的單字母圖片。如:

3.3 訓練神經網絡識別單個字母

python train_model.py

 

PS F:\test\solving_captchas_code_examples> python train_model.py

Using TensorFlow backend.

Train on 29058 samples, validate on 9686 samples

Epoch 1/10

29058/29058 [==============================] - 97s - loss: 0.2419 - acc: 0.9395 - val_loss: 0.0233 - val_acc: 0.9937

Epoch 2/10

29058/29058 [==============================] - 96s - loss: 0.0150 - acc: 0.9966 - val_loss: 0.0109 - val_acc: 0.9966

Epoch 3/10

29058/29058 [==============================] - 98s - loss: 0.0102 - acc: 0.9970 - val_loss: 0.0132 - val_acc: 0.9962

Epoch 4/10

29058/29058 [==============================] - 97s - loss: 0.0057 - acc: 0.9986 - val_loss: 0.0140 - val_acc: 0.9968

Epoch 5/10

29058/29058 [==============================] - 100s - loss: 0.0042 - acc: 0.9987 - val_loss: 0.0099 - val_acc: 0.9971

Epoch 6/10

29058/29058 [==============================] - 96s - loss: 0.0080 - acc: 0.9980 - val_loss: 0.0120 - val_acc: 0.9975

Epoch 7/10

29058/29058 [==============================] - 96s - loss: 0.0028 - acc: 0.9991 - val_loss: 0.0086 - val_acc: 0.9976

Epoch 8/10

29058/29058 [==============================] - 95s - loss: 0.0028 - acc: 0.9992 - val_loss: 0.0073 - val_acc: 0.9981

Epoch 9/10

29058/29058 [==============================] - 96s - loss: 0.0050 - acc: 0.9987 - val_loss: 0.0100 - val_acc: 0.9974

Epoch 10/10

29058/29058 [==============================] - 97s - loss: 0.0052 - acc: 0.9990 - val_loss: 0.0084 - val_acc: 0.9980

 

3.4 測試識別效果

 

python3 solve_captchas_with_model.py

CAPTCHA text is: PQDR

CAPTCHA text is: T324

CAPTCHA text is: FPV3

CAPTCHA text is: H72Z

CAPTCHA text is: FCBP

CAPTCHA text is: 29LY

CAPTCHA text is: 36YG

CAPTCHA text is: M3C5

CAPTCHA text is: 32Y7

CAPTCHA text is: 6GQ6

 

可以看到,由於是從訓練數據中隨機抽取驗證碼圖片進行識別,識別率全部正確。

 

從下圖看出,即使字符粘連,也能正確識別。說明字符切割和單字符的訓練算法是有效的。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM