python - 如何生成验证码以使用 Python 进行训练
问题描述
我想使用深度学习程序来识别使用 keras 和 python 的验证码。
我怎样才能轻松地生成大量验证码以进行训练。
目前,我使用python包验证码
from captcha.image import ImageCaptcha # pip install captcha
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
import random
import os
number = ['0','1','2','3','4','5','6','7','8','9']
MAX_CAPTCHA = 6
WIDTH=100
HEIGHT=30
image = ImageCaptcha(width=WIDTH, height=HEIGHT, font_sizes=[30])
captcha_text = []
for i in range(MAX_CAPTCHA):
c = random.choice(number)
captcha_text.append(c)
#print(captcha_text)
captcha_text = ''.join(captcha_text)
print(captcha_text)
captcha = image.generate(captcha_text)
captcha_image = Image.open(captcha)
captcha_image = np.array(captcha_image)
image.write(captcha_text, str(i)+'_'+captcha_text + '.png')
plt.imshow(captcha_image)
plt.show()
解决方案
如果在线上没有类似的验证码数据集,我将通过以下方式解决此问题:
- 获取 MNIST 数据集
- 拿一个图像示例并在 gimp 或 Open CV 之类的图像转换库中使用它,以获得与您的验证码示例相似的外观。
- 以您认为合适的方式转换 MNIST 示例(一些随机噪声,以及黑色像素上的随机颜色等)
- 在这些增强示例上训练模型
现在对于实际使用,它取决于您正在实施什么样的模型。如果您有一个可以检测和分类图像上所有数字的模型,那么您就完成了。但是,如果您希望有一个简单的模型,它只对带有单个数字的图像进行分类,那么您可以在您的验证码图像上移动一个滑动窗口,并且只收集窗口的输出,因为该模型有足够的信心相信有一些数字紧贴在窗口中。
推荐阅读
- android - 在 UI 线程中完成工作时缺少触摸事件
- excel - Excel:单元格的条件“消隐”
- c# - 如何为 Office 插件创建静默安装程序
- hadoop - 如何使用 Scalamock 模拟 Hadoop FileStatus 类?
- google-apps-script - 如何通过谷歌脚本将文本填充设置为谷歌幻灯片形状?
- sql - 我需要支持 sql 查询
- angular - IONIC 4 + Angular7:ERROR 错误:未捕获(承诺):TypeError:无法读取未定义的属性“then”
- tfs - 你可以只使用查询字符串的 TFS API 吗?尝试从 Slack 排队构建
- excel - Excel 不计算公式
- java - 通过多个休息调用“共享”反应流的一部分