这是一个有颜色的卷积神经网络验证码识别

好吧,隔了两个月才更新文章,之前一直在做各种大数据竞赛.最近休赛期,所以把之前一些好的idea实现一下.

之前有人问我能不能用深度学习做一个验证码识别,我觉得现在网络上很多验证码识别,直接照搬就好了.深入了解之后,发现需求不是那么简单的,这次的验证码并不像一些网站,需要全部识别数字或者字母,而是从一张验证码图片中识别指定颜色的数字(还有一种四则运算验证码,原理差不多,后面会简单概括),就例如下图这种:

这个是为了做验证码识别本地生成的验证码,接下来会讲到如何生成验证码

根据需求,需要识别出验证码中的红色或者蓝色或者绿色的数字,就如上图,红色为'0','0','0',蓝色为'8','2',绿色为'4',接下来分成两个部分讲如何实现验证码识别.

1.验证码生成

既然要做卷积神经网络模型...那当然就需要很多很多很多很多很多数据做训练集,验证码这种东西,不可能去爬去成千上万张吧,太浪费时间了,因为我决定一天之内就把它做出来.所以想到了一个比较方便快捷的方法:自己做验证码!!!!!!

这里主要用到了一个强大的图像处理库PIL,关键代码如下

from PILimport Image,ImageFont,ImageDraw

#创建的验证码长宽

width =200

height =100

创建画布


初始化一个画布之后,需要我们往画布上写东西,根据需求,红绿蓝0-9的数字

随机生成红绿蓝三种颜色,每张图片都是红绿蓝三通道根据不同亮度组合而成,每个通道的数值代表了该通道上的亮度,取值范围为0-255,当取值255时亮度最高.所以生成红绿蓝中的一种颜色只需要保持三个通道中的一个亮度为最高的255,另外两个通道亮度为0.

这三种颜色可以数值化表示为:    红色:(255, 0, 0)  绿色:(0, 255, 0)  蓝色:(0, 0, 255)

随机生成红绿蓝三种颜色中的一种


随机生成0-9数字中的一个



接下来利用text方法,在刚刚创建好的draw画布中,画上我们随机生成的有颜色数字

这边是6位的验证码,所以循环6次,最终出来的验证码是这样的:


生成的验证码

emmmmmmmmm这样的验证码是没有灵魂的.......应该没有谁家的验证码长这个样吧,所以接下来要利用PIL和Augmentor工具对图像进行'改造'.主要目的是让验证码变得更丑更难辨认.

首先加一些简单的干扰因素,划线或者画点之类的


画点,每张图片画1000个点


画线,每张图随机画1-10条线
效果图

感觉还是缺了点什么..........所以使用了强大的图像处理库Augmentor独有的图像'扭曲'功能,


Augmentor图片扭曲代码
Augmentor效果

好了,看起来舒服多了.....这样加个for循环就可以批量输出这种验证码了,最终我利用了10000张图片作为验证码,其中有50%是经过Augmentor图片扭曲处理,剩下的没有使用Augmentor处理,那么训练集构造完毕.

2.数据预处理

图像数据,进行数据预处理,这里我的思路是将图像的数字一个一个切分下来,单独识别.前面提到每个图像的像素为(100*200*3),宽度是200,一共6个数字,所以每个图像我们取200/6=33,所以我们切分出来的图形是(100*33*3).

主要代码如下:

对每张图片进行截取,然后加入jpg_list列表中

同时,要保存对应颜色和数字,这里将他们两转换one-hot变量

这里一共有10000张图片,每张图片单独切分成6个数字,所以最终的训练集是6*10000=6w条数据


3.模型训练

这一部分神经网络模型借鉴了杨培文大神的验证码识别github开源,在他的基础上根据我们自己的需求进行了一下更改.我们使用的模型是


神经网络模型

最后的输出层,第一个Dense是输出颜色,第二各Dense输出的是number,激活函数都是softmax,相比杨培文大神的神经网络,我们的神经网络要简单一些.

keras简单粗暴

最后对训练集进行归一化处理,将刚刚one-hot处理好的color和number,合并到一个列表中:label = [color,number],作为输出的label

开始训练......epoch设置为2,但是验证集正确率已经很高了,达到了99%.....validation是从原数据20%划分,   其中48000做训练,12000做验证.



训练过程
最终验证结果

四则运算也是同样原理,在指定位置返回四则远算符和数字就行了,过几天做了在更新文章

一天之内做到这样,还没投入真正使用,只是对自己随机生成的验证码进行测试,后面找一些网站上的试试效果,再更新

好吧,就这样,代码有需要的再找我要吧,转载的注明出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容