专栏名称: 创宇前端
目录
相关文章推荐
新幸福朝鲜  ·  残废少年踏上大地 ·  6 小时前  
新幸福朝鲜  ·  残废少年踏上大地 ·  6 小时前  
前端之巅  ·  为什么2025/05/28和2025-05- ... ·  2 天前  
前端早读课  ·  【第3522期】扩展 React 服务端渲染的能力 ·  昨天  
前端早读课  ·  【招聘】抖音生活服务商品团队招前端实习生 ·  昨天  
前端早读课  ·  【第3521期】如何在 React 中构建一个库 ·  2 天前  
51好读  ›  专栏  ›  创宇前端

用“活着的”CNN进行验证码识别

创宇前端  · 掘金  · 前端  · 2018-11-01 03:47

正文

请到「今天看啥」查看全文


阅读 37

用“活着的”CNN进行验证码识别

1 验证码介绍

验证码( CAPTCHA )是一种区分用户是计算机或人的公共全自动程序。在 CAPTCHA 测试中,作为服务器的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答 CAPTCHA 的问题,所以回答出问题的用户就可以被认为是人类。

2 CNN 验证码识别介绍

传统的方法是通过两个不相关的步骤来进行文字识别:1)将图片中的文字的位置进行定位,然后通过“小框”来切分,将图片中的文字剪切下来 2)再进行识别。但是在现今的验证码识别中,当要识别的图片中的文字变成手写体互相重叠,这种“切分”法就难以排上用场。因此卷积神经网络(CNN)就被用来识别这些无从下手的手写体。这种CNN 是通过一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成来对图像识别。CNN 训练模型需要大量的人工标注的图片来训练,但是本文方法就是自主产生随机的字符并产生相应的图片来在运行过程中调整参数。 本文关注具有 4 个字符的的验证码图片。每个字符在输出层被表现为 62 个神经元。我们可以假设一个映射函数

x \in 
\lbrace 0’...'9','A'...'Z','a'...'z'\rbrace

来对应

l \in \lbrace0...61\rbrace

即:

\Theta(x)=\begin{cases}0...9 &  x ='0'...'9'\\10...35 &  x = 'A'...'Z'\\36...61 &  x = 'a'...'z'
\end{cases}

将前 62 个神经元分配给序列中的第一个字符,第二批 62 个神经元分配给序列中的第二个字符。因此,对于字符xi

所对应的神经元的索引为

n = i * 62 + \Theta(x_i) 
i \in \lbrace 0...3 \rbrace

输出层一共有 4*62=128 个。如果第一个预测字符的索引为 c0=52,因此可以反推预测的字符为

x = \Theta^-1(c0) =q

3 实现步骤

1 验证码生成

1 验证码中的字符

number = ['0'






请到「今天看啥」查看全文


推荐文章
新幸福朝鲜  ·  残废少年踏上大地
6 小时前
新幸福朝鲜  ·  残废少年踏上大地
6 小时前
前端早读课  ·  【第3521期】如何在 React 中构建一个库
2 天前
爱手工  ·  最全的刺绣玫瑰针法,这里都有
8 年前
ppt设计学堂  ·  只有5秒,如何让人记住你?
8 年前
笔吧评测室  ·  华硕推曲面电竞显示器:144Hz/350美元
7 年前