python人脸识别项目之学习笔记(五):卷积神经网络

1. 卷积神经网络

卷积神经网络(Convolutional Neural Network)简称CNN,CNN是所有深度学
习课程、书籍必教的模型,CNN在影像识别方面的为例特别强大,许多影像识别
的模型也都是以CNN的架构为基础去做延伸。另外值得一提的是CNN模型也是
少数参考人的大脑视觉组织来建立的深度学习模型,学会CNN之后,对于学习其
他深度学习的模型也很有帮助,通过一个例子来讲解CNN的原理以及使用CNN
来达成99%正确度的手写字体识别。
在这里插入图片描述
在这里插入图片描述
从上面三张图片我们可以看出,CNN架构简单来说就是:图片经过各两次的
Convolution, Pooling, Fully Connected就是CNN的架构了,因此只要搞懂Convolution,
Pooling, Fully Connected三个部分的内容就可以完全掌握了CNN!

CNN在图像识别的案例:

假设给定一张图(可能是字母X或者字母O),通过CNN即可识别出是X还是O,
如下图所示,那怎么做到的呢
在这里插入图片描述
提取特征
如果字母X、字母O是固定不变的,那么最简单的方式就是图像之间的像素一一
比对就行,但在现实生活中,字体都有着各个形态上的变化(例如手写文字识
别),例如平移、缩放、旋转、微变形等等,如下图所示
在这里插入图片描述
我们的目标是对于各种形态变化的X和O,都能通过CNN准确地识别出来,这就涉
及到应该如何有效地提取特征,作为识别的关键因子。

对于CNN来说,它是一小块一小块地来进行比对,在两幅图像中大致相同的位置找到一些粗糙的特征(小块图像)进行匹配,相比起传统的整幅图逐一比对的方式,CNN的这种小块匹配方式能够更好的比较两幅图像之间的相似性。如下图:
在这里插入图片描述
以字母X为例,可以提取出三个重要特征(两个交叉线、一个对角线),
如下图所示:
在这里插入图片描述

假如以像素值"1"代表白色,像素值"-1"代表黑色,则字母X的三个重要特征如下:在这里插入图片描述

卷积

当给定一张新图时,CNN并不能准确地知道这些特征到底要匹配原图的哪些部分,所以它会在原图
中把每一个可能的位置都进行尝试,相当于把这个feature(特征)变成了一个过滤器。这个用来匹
配的过程就被称为卷积操作,这也是卷积神经网络名字的由来。
在这里插入图片描述
在本案例中,要计算一个feature(特征)和其在原图上对应的某一小块的结果,只需将两个
小块内对应位置的像素值进行乘法运算,然后将整个小块内乘法运算的结果累加起来,最后
再除以小块内像素点总个数即可(注:也可不除以总个数的)。

如果两个像素点都是白色(值均为1),那么1 * 1 = 1,如果均为黑色 ,那么 (-1)*(-1) = 1,也就是说,每一对能够匹配上的像素,其相乘结果为1。类似地,任何不匹配的像素相乘结果为-1。具体过程如下(第一个、第二个……、最后一个像素的匹配结果):
在这里插入图片描述

根据卷积的计算方式,第一块特征匹配后的卷积计算如下,结果为1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值