卷积神经网络 实现验证码识别 ---- 识别率 99%!

本文介绍了如何构建数据集并利用卷积神经网络(CNN)训练一个验证码识别模型,训练过程包括数据预处理、网络架构设计、训练优化及模型评估。在训练5000步后,模型的图片准确率达到了99%,实现了高精度的验证码识别。
摘要由CSDN通过智能技术生成

1. 创建自己的数据集,利用数字1-10 和 26个小写字母生成我们的训练数据集。

from captcha.image import ImageCaptcha
import random
 
CHAR_SET = ['1', '2', '3', '4', '5','6', '7', '8', '9', '0','a','b','c','d','e','f','g','h','i','j','k','l','m','n']
CHAR_LEN = len(CHAR_SET)
 
CAPTCHA_LEN = 4
for i in range(CHAR_LEN):
    for j in range(CHAR_LEN):
        for k in range(CHAR_LEN):
            for m in range(CHAR_LEN):
                captcha_text = CHAR_SET[i] + CHAR_SET[j] + CHAR_SET[k] + CHAR_SET[m]
                image = ImageCaptcha()
                image.write(captcha_text, './tmp/mydata/'+ captcha_text + '.jpg')

得到的数据集样本如下图所示:

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

 

2. 设计网络架构,进行训练

    def model(self):
        x = tf.reshape(self.X, shape=[-1, self.image_height, self.image_width, 1], name="input_x")
        print(">>> input x: {}".format(x))
 
        # 卷积层1
 
        wc1 = tf.get_variable(name='wc1', shape=[3, 3, 1, 32], dtype=tf.float32,
                              initializer=tf.contrib.layers.xavier_initializer())
        bc1 = tf.Variable(self.b_alpha * tf.random_normal([32]), name="bc1")
        conv1 = tf.nn.relu(tf.nn.bias_add(tf.nn.conv2d(x, wc1, strides=[1, 1, 1, 1], padding='SAME'), bc1), name="conv1")
        print("conv1.shape-----", conv1.shape)
        conv1 = tf.nn.max_pool(conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME', name="max_pool1")
        print("conv1.shape-----", conv1.shape)
        conv1 = tf.nn.dropout(conv1, self.keep_prob, name="dropout1")
        print("conv1.shape-----", conv1.shape)
        '''
 
        conv1 = slim.conv2d(x, 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值