一.前言
基于前面我发的贴子

土味程序员:一个简单的零基础的机器学习教程,Pytorch搭建Faster R-CNN目标检测平台​zhuanlan.zhihu.com

一个非常震撼的目标检测的例子。上个帖子从环境安装到调试代码再到图片检测视频检测一个详细的教程,今天我来讲一下正真的实战经历吧。完全不需要深度相关的知识。
这个项目就是《Python3 反爬虫原理与绕过实战》里面的例子,

asyncins/captcha_cnn​github.com

基础环境与我上一个深度学习教程的基础环境一摸一样,拿过来基本不用改就可以用了。书里面的讲了一下原理,还不错,通俗易懂,但是没讲太深,意犹未尽,毕竟是一本爬虫书啊
整个项目训练速度非常快,因为专门为验证码检测设计的,自己的显卡还不错,每次训练就几分钟的样子,测试了一下,最终我把原项目的单次训练的样本数量调大了8倍,原先是32的,4分钟不到3w张图片。setting.py里面我看到,检测的内容都限制了,26个字母和10个数字,所有的图片格式大小都规定了。

二.开始训练
运行环境看我的上一个深度学习的教程

土味程序员:一个简单的零基础的机器学习教程,Pytorch搭建Faster R-CNN目标检测平台​zhuanlan.zhihu.com

完全一样。
下载代码和相关资源
下载GitHub代码,下载图片数据集。相关资源最后会放出来,原项目的代码导入图片目录的时候有点问题。貌似原项目是在ubuntu系统上面运行的,我改了一下setting里面的参数如下图。
把下载images的图片放到项目目录下面如图,images里面的数据集图片的文件名就是图片正确的识别结果,要做自己的数据集要注意哦,train文件夹下面的图片就是我们训练时候的图片集,test文件夹下面的图片是用来训练时验证我们的训练效果的图片集,predict文件夹下面的图片就是我们训练好之后要预测的图片集。

接下来打开setting.py根据自己显卡的算力设置BATCH_SIZE,我的显卡是2070S,最终设置成了256,CPU和GPU都快到100%了。然后打开train.py运行等待就行了,训练完成会生成result.pkl文件。

验证的代码在verifies.py里面,直接运行,它会先载入模型,遍历验证集图片正确的验证码与预测结果对比,算出成功比例。

验证码的图片就是下图,26个字母和10个数字的混合,长度固定,6位。有干扰线和干扰点,没有倾斜变形。

三.最后说明
这个项目代码量非常的少,文章的篇幅也很短,项目的结构简单可以一步步的详细分析所有代码的用处,特别是model.py里面进行了三次卷积和池化操作。loader.py对图片的灰度化处理和数字化处理。虽然这些东西很抽象,但是只要不要本能的去拒绝它们,还是能够慢慢的理解的。
关注我,给我动力继续研究更多有意思的有关python的东西哦。

Github地址​github.com

cnn 验证集 参与训练吗_一个简单的零基础的机器学习教程之二,字母数字验证码识别...相关推荐

  1. 数据集的划分,验证集参与训练了吗?

    数据集的划分,验证集参与训练了吗? 文章目录 数据集的划分,验证集参与训练了吗? 前言 一.验证集怎么用? 验证集参与训练了吗? 二.为什么需要测试集? 三.数据集的划分比例 前言 在周志华老师的&l ...

  2. 麻瓜回归!零代码,零基础,全网最傻瓜式的滑块验证码识别训练框架

    最新更新 07/31/22 修复了系统用户名和路径名包含中文时授权失败的情况 新增了pytorch环境完整性检查(不少用户首次启动安装环境过慢就以为卡死关掉了导致torch运行时不完整) 近几年,滑块 ...

  3. 利用训练数据建立一个简单的分类器

    利用训练数据建立一个简单的分类器 在机器学习领域中,分类指的是利用数据的特性将其分成若干类型的过程.分类器则可以是实现分类功能的任意算法,最简单的分类器就是简单的数字函数.在真实世界中,分类器可以是非 ...

  4. python实现支持向量机实例_一个简单的案例带你了解支持向量机算法(Python代码)...

    介绍 掌握机器学习算法并不是一个不可能完成的事情.大多数的初学者都是从学习回归开始的.是因为回归易于学习和使用,但这能够解决我们全部的问题吗?当然不行!因为,你要学习的机器学习算法不仅仅只有回归! 把 ...

  5. java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...

    折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...

  6. socket通信 _ 一个简单的群聊系统

    群聊系统要用到通信socket协议,在java中要用到两个类java.net.ServerSocket和 Java.net.Socket.ServerSocket用于创建服务器,而Socket用于创建 ...

  7. hosts多个ip对应一个主机名_一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端...

    WebSSH 一个简单的Web应用程序,用作连接到ssh服务器的ssh客户端.它是用Python编写的,基于tornado,paramiko和xterm.js. 特征 支持SSH密码验证,包括空密码. ...

  8. python训练手势分类器_机器学习零基础?手把手教你用TensorFlow搭建图像分类器|干货...

    编者按:Pete Warden是TensorFlow移动团队的技术负责人.曾在Jetpac担任首次技术官.Jetpac的深度学习技术经过优化,可在移动和嵌入式设备上运行.该公司已于2014年被谷歌收购 ...

  9. 波形包络提取与峰值提取_一个简单的波形包络提取算法

    与<一个简单的波形包络提取算法>相关的范文 2008年第03期,第41卷 通 信 技 术 Vol.41,No.03,2008 总第195期 Communications Technolog ...

最新文章

  1. Java面向对象:覆写与重载
  2. 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
  3. 基于tcp的网络程序_【CVPR 2020 Tutorial】基于神经网络的符号化视觉推理和程序合成(2)...
  4. 为什么人们常说“十个创业九个死”?
  5. 当子查询内存在ORDER BY 字句时查询会报错
  6. Open3d之表面重建
  7. 按键显示按键编码 keycode
  8. ElasticSearch 全文检索— ElasticSearch 基本操作
  9. Makefile 教程
  10. 高等代数--线性方程组
  11. MAC中生成SSH key
  12. excel VBA会说话的工作表
  13. linux 切换ked桌面,manjaro更换桌面环境
  14. Delphi TStringList DBRichEdit 删除尾部多余换页符
  15. WinRAR 破解注册
  16. WireGuard组建大内网
  17. 传统防火墙与Web应用程序防火墙(WAF)的区别
  18. web服务器端预约系统,Web场馆预约管理系统
  19. 支付宝:支付宝里面国际驾照认证件的申请领取步骤
  20. LINUXUNIX 中文著名网站

热门文章

  1. TP类库解析和使用系列[Input类]
  2. PCI_Express规范第七章解读-Software Initialization and configuration
  3. 匹配嵌套的构造(较复杂)
  4. ssm实训报告心得_Java开发学习心得(一):SSM环境搭建
  5. python django flask介绍_django和flask哪个值得研究学习
  6. 如何使用JavaScript删除CSS属性?
  7. math 计算float_Java Math类静态float min(float f1,float f2)与示例
  8. datasnap xe连接池_DataSnap 连接池
  9. 富士施乐2022网络扫描设置_富士施乐(FUJI XEROX)全系列复印机产品介绍
  10. 计算机选配 注意事项,选择鼠标注意事项有哪些