这是 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 张数字图像,并在 12000 位图像测试集上实现了 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 |
---|---|---|---|---|
注意:要查看其他神经元响应,您可以检查激活