tensorflow实现验证码识别(一)

效果

先来看下成品是什么样子吧,成品的话,用随机生成的5W张验证码做训练,训练个40多个epoch,用随机生成的2W张做验证码做验证准确率在98%的样子。带简陋的UI的话是这么个样子:
tensorflow实现验证码识别(一)_第1张图片

tensorflow实现验证码识别(一)_第2张图片

想要完整代码的话可以进入传送门:https://github.com/aolingwen/fuck_verifycode

生成验证码

要识别验证码,当然首先就是要弄到验证码数据啦~~,验证码数据的话可以自己写爬虫去抓,但是抓下来之后还要自己去给验证码打label,烦的一批。不想这么麻烦的话可以去找找有没有现成的已经label好了的验证码数据,或者自己生成label好的验证码数据。在这里呢,我选择自己生成。所以下面就是验证码生成的代码。简单的一批。就是用ImageCaptcha来随机生成。

#生成验证码图片,gen_dir是验证码要落地的目录,total_size是总共要生成多少个验证码,chars_set是验证码的字符集,chars_num是一个验证码中有多少个字符
def gen_verifycode_img(gen_dir, total_size, chars_set, chars_num, img_height, img_width, font_sizes):
    if not os.path.exists(gen_dir):
        os.makedirs(gen_dir)
    image = ImageCaptcha(width=img_width, height=img_height, font_sizes=font_sizes)
    for i in range(total_size):
        label = ''.join(random.sample(chars_set, chars_num))
        image.write(label, os.path.join(gen_dir, label+'_num'+str(i)+'.png'))

生成好的验证码呢,大概是这个样子,文件名的前5个字符就是验证码的label:
tensorflow实现验证码识别(一)_第3张图片

现在有了验证码之后呢,接下来就要考虑怎么把数据喂给tensorflow了,由于数据比较大5W个图,所以我用的tfrecord的IO方式,下一篇就写写tfrecode怎么玩的。

你可能感兴趣的:(ML历险记)