快捷搜索:  汽车  科技

卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5

卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.52、关键字:simgan。认真研究了相关的2篇论文,觉得有搞头啊,决定试一下。1、人肉打出足够多的码,以此为测试集,重新训练。效果应该不错,可是缺点也显而易见,哪有那么多功夫去人肉打码。或者有时间,就是懒,你要用技术去解决啊。这么一说,好像也有办法,Apple 的AI首秀就是治这种懒的,见办法2。后来我进一步思考,还有没有什么办法可以让准确率更高一些呢?实验环境和真实环境差在哪里,有7%的差距呢?目标网站一定是有哪些微调我没有观察到。比如这张:左边六张图是模拟生成的验证码,右边一张图是人肉从目标网站上打来的码。肉眼看上去很像,字体上似乎有微小的差别,导致了实验环境与真实环境7%的准确率误差,要解决这个问题,有两个办法:

卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5(1)

类似这样的错误,是我识别错了,机器给我指出了答案的不正确,让我自愧不如啊。不过这感觉挺美妙的。

卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5(2)

还有这种的,这么明显,怎么可能人肉识别错呢,后来一看键盘,7和U离得太近,一定手滑了。排除这些人工标识出错,真实环境的准确率达到90%。基本能符合自动登录的要求了。

  • 五、如何提高准确率

后来我进一步思考,还有没有什么办法可以让准确率更高一些呢?实验环境和真实环境差在哪里,有7%的差距呢?目标网站一定是有哪些微调我没有观察到。比如这张:

卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5(3)

左边六张图是模拟生成的验证码,右边一张图是人肉从目标网站上打来的码。肉眼看上去很像,字体上似乎有微小的差别,导致了实验环境与真实环境7%的准确率误差,要解决这个问题,有两个办法:

1、人肉打出足够多的码,以此为测试集,重新训练。效果应该不错,可是缺点也显而易见,哪有那么多功夫去人肉打码。或者有时间,就是懒,你要用技术去解决啊。这么一说,好像也有办法,Apple 的AI首秀就是治这种懒的,见办法2。

2、关键字:simgan。认真研究了相关的2篇论文,觉得有搞头啊,决定试一下。

  • 六、提高准确率的进阶实验

又经过十几天的实验(训练一次太久了),对simgan原理有了更深的了解,SimGAN-Captcha的实验也完全复现,然后对其进行扩展,应用到自己的环境中进行样本增强,实验过程按这样的思路:

首先复现SimGAN-Captcha过程。然后改灰度图为RGB,通过无标识的真实数据和有标识的模拟数据,训练SimGAN-Captcha,通过训练好的模型,Refine上面提到的50万 1万模拟的训练数据,通过Refined的数据,重新训练验证码识别模型,统计准确率做对比。可是效果并不好,甚至肉眼放大也无法在像素层面上找到差异,可以说模拟的很逼真,也可以说Refine没效果。甚至让人怀疑,SimGAN-Captcha是否工作了。于是用另一套验证码生成器生成完全不相同的验证码,让SimGAN-Captcha在像素层面对新验证码进行强化,用以证明Refine确实是干活了。

经过了50多小时的训练,SimGAN-Captcha有了明显的增强效果,举个例子:

卷积神经网络cnn算法:实战cnn卷积神经网络识别验证码 准确率99.5(4)

为了方便表述,从左到右我们依次叫它们1号、2号、3号、4号。1号是用完全不同的算法X生成的验证码,灰头土脸的。3号、4号是上文提到的目标网站的真实的不同形式的验证码。以算法X生成的类1号验证码为Synthetic数据集,以类似3号、类似4号验证码为real数据集,refine出来的合成验证码为2号。仔细观察2号,已经有了很多3、4号的特征,比如:1、不再灰头土脸,变得鲜艳了,P K H色彩对比都比较明显;2、干扰线有了彩色断点,这个特征很好的模拟了类3号样本;3、字母P与E有了类4号的点阵效果,模拟点阵应该是SimGAN的拿手好戏,如果让它把干扰线变扭曲就难为它了。

看来SimGAN的确有效果,它能在像素层面上,把模拟样本尽量向着真实样本的方向改造,不过,即使改造的“像一些”了,好像对准确率的提高也没多大帮助。用谷歌的captcha生成的验证码做Synthetic数据集,目标网站验证码做real数据集,进行训练,然后用这样的模型生成cnn的训练集与测试集,再对目标网站的验证码进行测试,准确率提高不到0.5%。用上面提到的算法X生成的验证码做Synthetic数据集,目标网站验证码做real数据集进行训练,然后用这样的模型生成cnn的训练集与测试集训练cnn,与直接用X算法生成的训练集与测试训练出的cnn模型,在正确率的对比上,只提高0.1%。把上面的过程用语言描述出来,都已经很绕了,实际训练时,尽量安排在晚上或周末,累计在训练上花了4、5百小时,花了这么大的时间成本,取得这么小的进步,确有不值。而当我走了一大圈,回到起点,试着把cnn的训练加强,对它提高要求,不以准确率达到99%为中止条件,要准确率达到200%才停止训练(类似while 1 循环),只用了一顿午饭的时间,准确率就有了2.2%的提升。用同样的600份实验数据做对比,上篇文章中准确率是97.33%,这次提高到99.5%,如镇楼图。对于验证码识别来说,在正确的道路上努力训练才是王道,SimGAN并没有那么好的效果。

SimGAN应该是有自己擅长的领域的,验证码增强不行,图像增强会不会效果不错?前文提到的苹果AI首秀的那篇论文,对眼球控制的图像进行样本增强,似乎效果显著啊,我也完成了复现,效果非常好,有机会再分享吧。

猜您喜欢: