首页 > 解决方案 > 如何生成验证码以使用 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()  

标签: pythoncaptcha

解决方案


如果在线上没有类似的验证码数据集,我将通过以下方式解决此问题:

  1. 获取 MNIST 数据集
  2. 拿一个图像示例并在 gimp 或 Open CV 之类的图像转换库中使用它,以获得与您的验证码示例相似的外观。
  3. 以您认为合适的方式转换 MNIST 示例(一些随机噪声,以及黑色像素上的随机颜色等)
  4. 在这些增强示例上训练模型

现在对于实际使用,它取决于您正在实施什么样的模型。如果您有一个可以检测和分类图像上所有数字的模型,那么您就完成了。但是,如果您希望有一个简单的模型,它只对带有单个数字的图像进行分类,那么您可以在您的验证码图像上移动一个滑动窗口,并且只收集窗口的输出,因为该模型有足够的信心相信有一些数字紧贴在窗口中。


推荐阅读