本程序作为一个基础版的CNN使用教程,以识别简单的英文验证码作为目标完成一个简单的实例。在这个实例中,我们会涉及到以下三步,并通过这三部曲来带大家体验深度学习的魅力。
仅2分,可直接运行的程序:https://download.csdn.net/download/qq_32791307/10651274
1. 对数据的基本读取、处理并生成batch
2. 搭建简单的CNN模型
3. 训练并得出结果
一 . 数据处理
1. 首先我们需要先生成一批验证码,代码如下,十分简单。生成效果如图。名字为0B73.jpg
我们可以用程序生成大量的验证码作为样本。可以更改代码中for i in range(数字) 的数字来生成不同数量的样本。大小170*80
#coding=utf-8
from captcha.image import ImageCaptcha
import matplotlib.pyplot as plt
import numpy as np
import random
from scipy.misc import imread,imresize,imsave
import string
#用于生成不同长度的训练集(3..6)/验证集
characters=string.digits+string.ascii_uppercase+string.ascii_lowercase
width,height,n_len,n_class=170,80,6,len(characters)
generater=ImageCaptcha(width=width,height=height)
dir=".\\train"
for i in range(8000):
#生成3,6位
random_str="".join([random.choice(characters) for j in range(0,random.choice(range(3,6)))])
#生成4位
# random_str="".join([random.choice(characters) for j in range(0,4)])
image=generater.generate_image(random_str)
imsave(dir+"/"+random_str+".jpg",image)
2. 其次有了样本之后,我们需要对样本进行以下的操作。
第一步:获取图片和图片名称的代码,非常简单,注释如下。
def get_image_name():
#获得目录下所有图片
all_image = os.listdir('D:/tensorflow3_captcha/train/')
#打散训练集
random_file = random.randint(0,8000)
#拓展名获取, eg: 123.txt 分为[0] 123 ,[1] txt
base = os.path.basename('D:/tensorflow_captcha/train/' + all_image[random_file])
name = os.path.splitext(base)[0]
#读取图片并转为灰度图
image = cv2.imread('D:/tensorflow_cap