Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tensorflow搭建CNN实现验证码识别

Tensorflow搭建CNN实现验证码识别

作者头像
Awesome_Tang
发布于 2019-01-28 07:29:32
发布于 2019-01-28 07:29:32
87000
代码可运行
举报
文章被收录于专栏:FSocietyFSociety
运行总次数:0
代码可运行

完整代码:GitHub 我的简书:Awesome_Tang的简书

整个项目代码分为三部分:

  • Generrate_Captcha:
    • 生成验证码图片(训练集,验证集和测试集);
    • 读取图片数据和标签(标签即为图片文件名);
  • cnn_model:卷积神经网络
  • driver:模型训练及评估。
Generate Captcha
配置项
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Config(object):
    width = 160  # 验证码图片的宽
    height = 60  # 验证码图片的高
    char_num = 4  # 验证码字符个数
    characters = range(10)  # 数字[0,9]
    test_folder = 'test'    # 测试集文件夹,下同
    train_folder = 'train'
    validation_folder = 'validation'
    tensorboard_folder = 'tensorboard'  # tensorboard的log路径
    generate_num = (5000, 500, 500)  # 训练集,验证集和测试集数量
    alpha = 1e-3  # 学习率
    Epoch = 100  # 训练轮次
    batch_size = 64     # 批次数量
    keep_prob = 0.5     # dropout比例
    print_per_batch = 20    # 每多少次输出结果
    save_per_batch = 20     # 每多少次写入tensorboard
生成验证码(class Generate
  • 验证码图片示例:

0478

  • check_path():检查文件夹是否存在,如不存在则创建。
  • gen_captcha():生成验证码方法,写入之前检查是否以存在,如存在重新生成。
读取数据(classs ReadData
  • read_data():返回图片数组(numpy.array格式)和标签(即文件名);
  • label2vec():将文件名转为向量;
    • 例: label = '1327' label_vec = [0,1,0,0,0,0,0,0,0,0, 0,0,0,1,0,0,0,0,0,0, 0,0,1,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,1,0,0]
  • load_data():加载文件夹下所有图片,返回图片数组,标签和图片数量。
定义模型(cnn_model

采用三层卷积,filter_size均为5,为避免过拟合,每层卷积后面均接dropout操作,最终将

的图像转为

的矩阵。

  • 大致结构如下:

模型结构

训练&评估
  • next_batch():迭代器,分批次返还数据;
  • feed_data():给模型“喂”数据;
    • x:图像数组;
    • y图像标签
    • keep_prob:dropout比例;
  • evaluate():模型评估,用于验证集和测试集。
  • run_model():训练&评估
目前效果

目前经过4000次迭代训练集准确率可达99%以上,测试集准确率93%,还是存在一点过拟合,不过现在模型是基于CPU训练的,完成一次训练耗费时间大约4个小时左右,后续调整了再进行更新。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Images for train :10000, for validation : 1000, for test : 1000
Epoch : 1
Step     0, train_acc:   7.42%, train_loss:  1.43, val_acc:   9.85%, val_loss:  1.40, improved:*  
Step    20, train_acc:  12.50%, train_loss:  0.46, val_acc:  10.35%, val_loss:  0.46, improved:*  
Step    40, train_acc:   9.38%, train_loss:  0.37, val_acc:  10.10%, val_loss:  0.37, improved:   
Step    60, train_acc:   7.42%, train_loss:  0.34, val_acc:  10.25%, val_loss:  0.34, improved:   
Step    80, train_acc:   7.81%, train_loss:  0.33, val_acc:   9.82%, val_loss:  0.33, improved:   
Step   100, train_acc:  12.11%, train_loss:  0.33, val_acc:  10.00%, val_loss:  0.33, improved:   
Step   120, train_acc:   9.77%, train_loss:  0.33, val_acc:  10.07%, val_loss:  0.33, improved:   
Step   140, train_acc:   8.98%, train_loss:  0.33, val_acc:  10.40%, val_loss:  0.33, improved:*  
Epoch : 2
Step   160, train_acc:   8.20%, train_loss:  0.33, val_acc:  10.52%, val_loss:  0.33, improved:*  
...
Epoch : 51
Step  7860, train_acc: 100.00%, train_loss:  0.01, val_acc:  92.37%, val_loss:  0.08, improved:   
Step  7880, train_acc:  99.61%, train_loss:  0.01, val_acc:  92.28%, val_loss:  0.08, improved:   
Step  7900, train_acc: 100.00%, train_loss:  0.01, val_acc:  92.42%, val_loss:  0.08, improved:   
Step  7920, train_acc: 100.00%, train_loss:  0.00, val_acc:  92.83%, val_loss:  0.08, improved:   
Step  7940, train_acc: 100.00%, train_loss:  0.01, val_acc:  92.77%, val_loss:  0.08, improved:   
Step  7960, train_acc: 100.00%, train_loss:  0.01, val_acc:  92.68%, val_loss:  0.08, improved:   
Step  7980, train_acc: 100.00%, train_loss:  0.00, val_acc:  92.63%, val_loss:  0.09, improved:   
No improvement for over 1000 steps, auto-stopping....
Test accuracy:  93.00%, loss:  0.08
  • Tensorboard 每次训练之前将Tensorboard路径下的文件删除,不然趋势图上会凌乱。
    • Accurracy
    • loss
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.01.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
我深度学习0基础,还训练出一个识别验证码模型!
最近一直没出文,是因为最近在写一个爬虫项目,这个项目里面,碰到了一个比较棘手的事情,那就是验证码。各种方法用尽,最后我还是决定去训练自己的模型,但是,有一个问题---我深度学习可以说是0基础,这可咋弄?想来想去,我只能靠着百度&谷歌两位大佬来写了。
Python进击者
2019/07/11
1.2K0
我深度学习0基础,还训练出一个识别验证码模型!
CNN训练与测试人脸图片分类(TensorFlow)
实验需要判断人脸是否戴了眼镜,所以参考网上的文章弄了个简单的CNN图片分类器来做戴眼镜与否的判定。
Cloudox
2021/11/23
9520
CNN训练与测试人脸图片分类(TensorFlow)
TensorFlow2.0(9):神器级可视化工具TensorBoard
TensorBoard是TensorFlow中的又一神器级工具,想用户提供了模型可视化的功能。我们都知道,在构建神经网络模型时,只要模型开始训练,很多细节对外界来说都是不可见的,参数如何变化,准确率怎么样了,loss还在减小吗,这些问题都很难弄明白。但是,TensorBoard通过结合web应用为我们提供了这一功能,它将模型训练过程的细节以图表的形式通过浏览器可视化得展现在我们眼前,通过这种方式我们可以清晰感知weight、bias、accuracy的变化,把握训练的趋势。
Ai学习的老章
2019/12/25
3.7K0
TensorFlow验证码识别
本节我们来用 TensorFlow 来实现一个深度学习模型,用来实现验证码识别的过程,这里我们识别的验证码是图形验证码,首先我们会用标注好的数据来训练一个模型,然后再用模型来实现这个验证码的识别。 验证码 首先我们来看下验证码是怎样的,这里我们使用 Python 的 captcha 库来生成即可,这个库默认是没有安装的,所以这里我们需要先安装这个库,另外我们还需要安装 pillow 库,使用 pip3 即可: pip3 install captcha pillow 安装好之后,我们就可以用如下代码来生成一个
崔庆才
2018/04/04
3K1
TensorFlow验证码识别
[TensorFlow深度学习深入]实战二·使用CNN网络识别破解数字验证码
参考博客。 在此基础上做了小修改。 其中CNN网络部分仿照我们入门实战六的内容,如果不太清楚CNN可以再去回顾一下。 本博文数据集。
小宋是呢
2019/06/27
4860
Tensorflow实战:Discuz验证码识别
本文将使用深度学习框架 Tensorflow 训练出一个用于破解 Discuz 验证码的模型。
机器学习算法工程师
2018/03/06
9.7K11
Tensorflow实战:Discuz验证码识别
一文带你搞懂图神经网络GNN
先说一下今天用到的数据集,虽然之前有文章讲过,但是这次可以讲的更透彻一些,温故而知新嘛:
Tom2Code
2024/07/19
2990
一文带你搞懂图神经网络GNN
AlexNet代码详解
AlexNet由Hinton和他的学生Alex Krizhevsky设计,模型名字来源于论文第一作者的姓名Alex。该模型以很大的优势获得了2012年ISLVRC竞赛的冠军网络,分类准确率由传统的 70%+提升到 80%+,自那年之后,深度学习开始迅速发展。
OliverHan
2023/04/23
8640
教你使用TensorFlow2对识别验证码
验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册、灌水、发垃圾广告等等 。
润森
2022/08/18
4710
教你使用TensorFlow2对识别验证码
Tensorflow Keras:mnist分类demo
tf2集成的keras非常好用,对一些简单的模型可以快速搭建,下面以经典mnist数据集为例,做一个demo,展示一些常用的方法
Mirza Zhao
2023/06/26
5820
深度学习:CNN之验证码识别
当想要训练处理图像的深度学习模型时,遇到了大尺寸图像,如果我们直接使用全连接层来无脑叠加,那会造成以下几个问题:
CodeGoat24
2022/04/24
1.5K4
深度学习:CNN之验证码识别
30分钟吃掉CRNN-CTC验证码识别
项目参考:https://github.com/ypwhs/captcha_break
lyhue1991
2023/09/05
3520
30分钟吃掉CRNN-CTC验证码识别
多任务验证码识别
使用Alexnet网络进行训练,多任务学习:验证码是根据随机字符生成一幅图片,然后在图片中加入干扰象素,用户必须手动填入,防止有人利用机器人自动批量注册、灌水、发垃圾广告等等 。 Tensorflow
瓜大三哥
2018/02/26
1.6K0
多任务验证码识别
深度学习之卷积神经网络(CNN)的应用-验证码的生成与识别
本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/10755361.html
用户7225427
2020/09/03
7400
深度学习之卷积神经网络(CNN)的应用-验证码的生成与识别
100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
前文我们用keras的Sequential 模型实现mnist手写数字识别,准确率0.9713。今天我们完成day40-42的课程,实现猫、狗的识别。
Ai学习的老章
2019/08/09
8120
100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
图像学习-验证码识别
这是去年博主心血来潮实现的一个小模型,现在把它总结一下。由于楼主比较懒,网上许多方法都需要切割图片,但是楼主思索了一下感觉让模型有多个输出就可以了呀,没必要一定要切割的吧?切不好还需要损失信息啊!本文
用户1332428
2018/03/09
1.6K0
图像学习-验证码识别
Tensorflow2——卷积神经网络的搭建
***** 以下有关代码全是在jupyter notebook 里面调试完后曾,如果直接复制粘贴到pycharm可能不太行,自己得改改
Albert_xiong
2021/06/21
1.3K0
Tensorflow2——卷积神经网络的搭建
利用CNN进行中文文本分类(数据集是复旦中文语料)
上一节我们利用了RNN(GRU)对中文文本进行了分类,本节我们将继续使用CNN对中文文本进行分类。
西西嘛呦
2020/10/28
1.8K0
python2.7搬运--->TensorFlow - 深度学习破解验证码
谷歌的开源深度学习工具 --py 简介 验证码主要用于防刷,传统的验证码识别算法一般需要把验证码分割为单个字符,然后逐个识别,如果字符之间相互重叠,传统的算法就然并卵了,本文采用cnn对验证码进行整体识别。通过本文的学习,大家可以学到几点:1.captcha库生成验证码;2.如何将验证码识别问题转化为分类问题;3.可以训练自己的验证码识别模型。 安装 captcha 库 sudo pip install captcha 生成验证码训练数据 所有的模型训练,数据是王道,本文采用 captcha 库生成验证码,
98k
2018/04/11
1.2K0
强智教务系统验证码识别 Tensorflow CNN
首先需要手打码,自动获取验证码,并在powershell手动输入验证码,注意目录中的文件夹需要手动建立 引入Convert是为了处理图片,二值化并降噪 手工打200多张验证码,然后开始训练,设置的停止条件低一些,ACC到50%就停止训练 获取一定准确率的模型后再自动获取训练集,再训练,重复过程提高准确率 我重复上述过程三次,最后一次吃了个饭,得到了大约3000张图片的训练集
WindRunnerMax
2020/08/27
5390
强智教务系统验证码识别 Tensorflow CNN
相关推荐
我深度学习0基础,还训练出一个识别验证码模型!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验