李宏毅2020机器学习课程笔记--CNN

为什么用CNN来处理影像

当我们直接用一般的fully connected feedforward network来做图像处理的时候,往往会需要太多的参数。

CNN做的事情其实是,来简化这个neural network的架构,我们根据自己的知识和对图像处理的理解,一开始就把某些实际上用不到的参数给过滤掉。

在图像分类上,按照一般的思维,我们分辨一个图像里是什么,就根据有辨识度的特征来对这个物种进行判断。例如:鸟嘴,车轮胎等等,也就是说图片上的特征并不是都有用,我们只选出那些有用的进行操作即可。在此基础上,以下面这三个方面引出了CNN

在这里插入图片描述
当你处理的数据,符合能有共同的特征,且这些特征可以处在图像中的不同区域,最后在图像中任意的删减(下采样),不会影响分类结果这三个属性时,你完全可以用CNN来减少参数,提高效率。

CNN的结构

在这里插入图片描述
根据上述的三个特性,也就构成我们CNN的核心部分Convolution和 Max pooling。其中Convolution主要解决前两个属性,Max pooling解决第三个属性。

Convolution部分

在这里插入图片描述
卷积层中会定义一堆Filter来提取图像中我们想要的特征,非常方便的是这些特征都是机器自己学来的,也就是说,机器自己学了一堆Fileter(特征)来说明你的数据集。

在这里插入图片描述
利用上图中的Filter 1来对这个6*6的图像进行卷积可得到图像右侧的Matrix,可以看到和Filter 1符合的特征就是蓝色框圈住得部分,并且其值是所有数值里边最大的值,这就是Filter 想要找到的特征。

多个Filter 卷积之后的结果就是多个额上图这样Matrix的合集,我们称这个集合为 Feature Map。
在这里插入图片描述
还需要特别注意的是,在处理一张有颜色的图片时,图像的数据被处理为三个通道上的数据,也就是一个立体形状的数据集,对应的,我们的Filter 也就是一个立体形状的。
在这里插入图片描述
视觉到网络的映射关系(没有全部连接),每个“neuron”只检测image的部分区域,“neuron”之间共享参数

在这里插入图片描述
对于convolution layer来说,首先它是对image的一部分做detection。因此它的neuron只需要连接到image的部分pixel上,对应连线所需要的weight参数就会减少;其次由于是用同一个filter去检测不同位置的pattern,所以这对convolution layer来说,其实是同一件事情,因此不同的neuron,虽然连接到的pixel对象各不相同,但是在“做同一件事情”的前提下,也就是用同一个filter的前提下,这些neuron所使用的weight参数都是相同的,通过这样一张weight share的方式,再次减少network所需要用到的weight参数。

Max pooling部分

在这里插入图片描述

根据filter 1,我们得到一个4*4的matrix,根据filter 2,你得到另外一个4*4的matrix,接下来,我们要做什么事呢?

我们把output四个分为一组,每一组里面通过选取平均值或最大值的方式,把原来4个value合成一个 value,这件事情相当于在image每相邻的四块区域内都挑出一块来检测,这种subsampling的方式就可以让你的image缩小!

CNN的核心部分就是卷积层和上采样层
在这里插入图片描述
在具体的训练过程中,可以随意添加这个basic的个数。

Flatten

这个操作就是把我们采样之后的结果展开形成一维的原始“数据集”来扔给一个Fully connected forward network继续进行处理。

例如:

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值