卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5
卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5cnn模型训练需要有训练集和测试集,这两个数据集,计算机需要知道答案,那么知道答案的数据怎么来?3、只有祭出终极大招了,机器深度学习 卷积神经网络,在入这个坑之前,做了好久好久的心理建设,cnn这么大的坑我爬得出来嘛?经过了一个多星期的学习,跑出了镇楼图的效果,也稳定运行2年时间,可以简单分享一下大致调试过程了。先去网上看看有没有现成的轮子,方法很多,简单的方法能实现,就不用麻烦的。1、先试试谷歌的tesseract、pytesser3,都是一回事,代码极其简洁,两三行就出结果,勉强可以接受吧,规规矩矩的字,识别率还挺高,但稍加变形,结果就驴唇不对马嘴。2、本着一切从简的原则,还是打算依赖pytesser3,给它喂适合的数据,把验证码转灰度图、二值化、滤波降噪、模糊各种手段组合着用,还测试了4位验证码切割成4张小图片,以单字符识别的形式提高它的准确率。不过不论你用什么手段往它身上招呼,识别
- 一、背景介绍
这是一个运行了2年的个人小项目,最近目标网站改为扫码登录,于是公布出来作为技术分享。项目缘起是女神参与的签到活动,坚持了很久,后来嫌麻烦,中途放弃又觉得可惜,问我能不能实现程序自动登录 签到。我打开某网站看了下,python selenium就可以实现,但人家要的是全自动,这就需要把验证码自动识别的难点攻克掉了。懒永远是技术进步的源动力啊,不过我对机器视觉本身也比较感兴趣,那些年小区和单位的门口都是车牌识别了,也想借此机会探究一下这门技术是怎么回事。
先上两张镇楼图,一张是准确率统计,一张是实战截图。其中动图只进行了验证码识别,没有登录操作,仅用于效果展示。本文不会对技术细节及理论原理做太多介绍,只是展示一下听起来高大上的人工智能 机器学习 计算机视觉,个人也有很多场景可以把玩的。如果对这个效果感兴趣,可以接着往下看看:
- 二、分析验证码:
某网站的验证码还是挺复杂的,有四套模版,有的加了干扰线,有的是用点阵构建字母,有的进行的各种扭曲,还渲染上了七彩色。
先去网上看看有没有现成的轮子,方法很多,简单的方法能实现,就不用麻烦的。
1、先试试谷歌的tesseract、pytesser3,都是一回事,代码极其简洁,两三行就出结果,勉强可以接受吧,规规矩矩的字,识别率还挺高,但稍加变形,结果就驴唇不对马嘴。
2、本着一切从简的原则,还是打算依赖pytesser3,给它喂适合的数据,把验证码转灰度图、二值化、滤波降噪、模糊各种手段组合着用,还测试了4位验证码切割成4张小图片,以单字符识别的形式提高它的准确率。不过不论你用什么手段往它身上招呼,识别效果都差得远着呢。
3、只有祭出终极大招了,机器深度学习 卷积神经网络,在入这个坑之前,做了好久好久的心理建设,cnn这么大的坑我爬得出来嘛?经过了一个多星期的学习,跑出了镇楼图的效果,也稳定运行2年时间,可以简单分享一下大致调试过程了。
- 三、开发调试流程
cnn模型训练需要有训练集和测试集,这两个数据集,计算机需要知道答案,那么知道答案的数据怎么来?
1、先写个脚本,采集了200份目标网站的验证码,人工打上标签,把答案作为验证码图片的文件名前4个字符。
2、人肉打标效率太低。花钱打标?不至于吧,自己写个小程序签到玩,还要投资?那就自己生成一批吧。观察目标网站的验证码,扭曲、模糊、加线的手法挺像谷歌开源验证码开发包的,下一个回来,模拟一下。包是java的,在eclipse里略做改动,一顿午饭的时间就生成了50万张带答案的验证码。类似这样,文件名前4个字符就是答案。
3、训练集有了,下面搭建训练和部署环境,基于简便和通用性考虑,这次验证码图片不再切割,整体丢给机器去训练。
- 四、验证效果
到了收获的时候。程序调好,临近下班,把训练集和测试集丢给程序,6W数据CPU要跑一晚上,GPU只用20分钟。我这50W数据,GPU半个晚上也就训练完了。下面是第二天早上,实验环境下的数据,实验环境是指:训练集,测试集,考试集都是用同一套系统生成的。准确率达到97.3%。
那么在实际环境中,效果如何呢?实际环境是指训练集,测试集是通过自己写的代码生成的。而考试集是从目标网站采集回来并人工标识的。
真实环境才85%,有点低了对不对?把错误的地方都找出来查找一下原因: