Skip to content

基于tensorflow2.x卷积神经网络字符型验证码识别

Notifications You must be signed in to change notification settings

startzm/captcha_cnn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#基于tensorflow2.x卷积神经网络字符型验证码识别

环境说明

主要执行环境为
python3.6.8 tensorflow-gpu=2.2.0 tensorboard=2.2.2

模型说明

项目中模型由4层卷积神经网络+2层全连接层构成,代码位于core/model.py。

训练集说明

将所有标注好的验证码图片放在一个目录下,并将图片名改为"验证码_任意字符.格式",如"abcd_1602342151.png"。
_前的为标签(验证码字符),_后的主要是为了防止图片重复,是什么值无所谓。
然后将验证码图片路径添加到config.json配置文件中。

预测

目前写了两种预测方式:

  1. 原始图片二进制流
  2. 本地图片路径
    代码位于predict.py。

配置说明

为方便使用,把一些通用配置提到了config.json中, 配置字段说明如下:

train_img_dir: 验证码图片所在文件夹,项目运行时会自动划分90%为训练集,10%为测试集。 model_save_dir: 模型保存位置,默认为项目根目录下model文件夹
image_width: 图片的宽,像素值
image_height: 图片的高,像素值
max_length: 验证码的位数
image_suffix: 图片的格式(png、jpg等)
char_set: 验证码中包含的字符,如果是数字就改为0123456789,依此类推

train_batch_size: 每批训练的图片数,默认为128。可按自己实际情况修改,一般显卡128都没什么问题。
test_batch_size: 每批测试的图片数,同上。

acc_stop: 提前停止的准确率,训练集字符准确率达到多少后停止
loss_stop: 提前停止的loss值,该值为训练100轮,loss值降低量低于该值则提前停止(一般用不到)
cycle_save: 每训练多少轮自动保存一次模型
max_epochs: 最大训练周期数,随意,一般都需要观察训练情况手动停止或自动停止

实验结果

实测6万张验证码样本,batch_size为128,可以在400轮训练中使训练集达到90%以上的字符准确率,1000轮左右可达到99%字符准确率停止训练。

对样本数2-3万以上的情况下效果稍好一些,样本数不够容易出现过拟合。改进方法持续探索中。。。

深度学习小白,还需要时间慢慢优化项目,有不足之处还请各位大大指出。代码供参考。

About

基于tensorflow2.x卷积神经网络字符型验证码识别

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages