這是 CNN 在 Python 3、Keras 和 TensorFlow 上的現實實作。我們使用Preprocess.py
分 2 個主要步驟進行工作,它創建無偽影的數位影像,隨後將其饋送到train.py
訓練並保存 CNN 模型。
此驗證碼解算器開發用於並且目前正在 metu-NTE-scraper 中使用,以繞過 METU 的學生入口網站驗證碼保護以進行課程容量檢查 https://student.metu.edu.tr/。但是您可以透過簡單的步驟在您的應用程式中使用它,這些步驟在如何使用它?部分。
我使用 TensorFlow 訓練了一個 CNN,對數位提取後的驗證碼數位影像進行分類。模型由 2 個卷積層和池化層組成,後面為全連接層。我在 10000 張驗證碼影像的資料集上訓練模型,然後將其分為 60000 張數位影像,並在 12,000 位元影像測試集上實現了 99.94% 的測試準確率。
模型的訓練和測試精度為:
注意:激活神經元響應的一些影像可以在 4 個預處理步驟下方看到
predict.py
導入到您的 python 程式中: Import predict
predict_captcha
函數 filepath="pathtocaptchaimage"
prediction=predict.predict_captcha(filepath)
為了幫助您理解數位擷取器和模型,我們為您展示了可視化的步驟
Preprocess.py
分 4 個步驟創建數位影像,如下所示,最後是模型激活
第一步,我們清除使用SampleCollecter.py
收集的驗證碼影像的偽影
原始影像 | 去除偽影後 |
---|---|
隨後,對無偽影影像進行剪裁以限制驗證碼的數字
去除偽影後 | 剪裁的 |
---|---|
然後使用加權 K 均值來找出每個數字的中心
剪裁的 | 質心 |
---|---|
最後,我們使用從 k 均值找到的質心創建數位影像
質心 | 數位 |
---|---|
提取數字後。 CNN 模型用於預測驗證碼影像。以下是為 CNN 最後一個卷積層產生的活化神經元。這些影像是透過提取最後一個卷積層的輸出並將其視覺化為影像來創建的。下面的啟動影像顯示了 2 位元影像最後一個卷積層中一些濾波器的反應。
提取的數字 | 激活10 | 激活 18 | 激活 26 | 激活 29 |
---|---|---|---|---|
注意:要查看其他神經元響應,您可以檢查激活