从验证码破解谈卷积神经网络

大家先别急着看,我还没有写完,抱歉今天很忙,后面一定会更新。

卷积神经网络(CNN)是一种在计算机视觉领域应用非常广的深度学习框架,我前前后后大概花了一个礼拜的时间,基本上搞懂了CNN的原理,在这里做个记录,也算是分享一下自己的见解。

一 基础知识

1 关于图像

这里说的验证码指的是验证码所在的图片,计算机中的图片都是由一个一个的像素点构成,可以

把像素点看成是组成图片的最小单位,右键windows中的图片,选择属性->详细信息,就可以看到图片的像素信息:

 比如这张图片是600x402个像素点构成,每一个像素点有三个具体的值,值的范围是0到255,值越大该点越亮,三个值指的是红绿蓝三个维度,比如某个像素点值是(255,0,0)表示该点是纯红色。通过公式Rx0.299+Gx0.587+BX0.114可以把三个值映射到一个值,这样构成的图片是灰度图,就是黑白电视机呈现的图片。

三个颜色维度又叫做三通道(channel),为了简便,下面所有内容基于灰度图,即单通道。

2 卷积

卷积是CNN的核心部分。

上图中黄圈内的像素值如下(矩阵M1)

025500
255000
255000
255000

注意到255集中在一个区域,构成的形状和黄色圈中的形状相似。再看一个矩阵M2:

0100
1000
1000
1000

把M1和M2做一个矩阵乘法,得到的结果是M3:

255000
025500
025500
025500

M2和M1非常相似,M2被称为卷积核(或者滤波器),如果M1不是图中黄色圈内的像素,很可能M1乘以M2的结果非常小。也就是说,卷积核只有和自己非常相似的矩阵相乘,才能得到一个有很多大数字的矩阵,这就是所谓的特征提取。试想一下,把上面的图片分割成很多4x4的像素矩阵,然后分别与M2相乘,只有那些长得和黄色圈内相似的像素矩阵,得到的结果才会是很多大的数字,这样,我们就提取除了所有和黄色圈内图形相同的区域。注意这里,我们用的词还是矩阵相乘,那么什么是卷积呢?

上面是矩阵M3,我们把视角移到这个矩阵的左上角的4x4的子矩阵M4。所谓的卷积,就是把M4和M2(卷积核)相乘,把得到的结果矩阵中的所有元素累加,最终得到一个数字a1。第二步,把M4右边的子矩阵M5和M2相乘,和上面一样处理得到数字a2,后面的步骤就是把这个子矩阵的边框不断右移,然后下移,最终得到的结果矩阵是M6:

a1a2a3
a4a5a6
a7a8a9

我们把整个的过程叫做卷积,即M3和M2卷积得到了矩阵M6,其中的每一次矩阵乘法的区域(M4和M5)又叫做感受野,而卷积的结果M6叫做feature map。

先更新到这里。

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值