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学习资料的小伙伴可以加点击下方链接自行获取
PS:如有需要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, 32, [3,3], 1, padding="SAME", scope= "conv1", biases_initializer=tf.constant_initializer(0.05)) #默认activation_fn=nn.
使用卷积神经网络实现高精度验证码识别

本文介绍了一种使用卷积神经网络(CNN)实现验证码识别的方法,通过创建自定义数据集并训练CNN模型,达到了99%的识别率。训练过程中,运用了Adam优化器和sigmoid交叉熵损失函数,以及模型保存与恢复机制。
最低0.47元/天 解锁文章
1291

被折叠的 条评论
为什么被折叠?



