卷积神经网络基础

 

计算机视觉

计算机视觉中的图像尺寸问题

  计算机视觉包含很多不同类别的问题,比如图像分类、目标检测、图像风格迁移等等,对于这些问题,必然会存在一个图片尺寸大小的问题,之前在我们学习的神经网络中,图片输入的尺寸大多都是大小的,但是在更一般的神经网络应用中,可能我们需要输入的图像的尺寸就不仅仅是这么小的尺寸了(因为实际应用中图像不可能只会这么小的尺寸),比如在神经网络中,当我们输入的图像是大小的尺寸的时候,将会发生什么呢?

  当输入图像的大小是的时候,也就意味着在我们神经网络中其输入的特征向量 的维度将会高达三百万(),同时的维度将会是 ,即在神经网络中需要处理三十亿的参数,在参数如此大量的情况下,将难以获取足够的数据来防止神经网络发生过拟合和竞争需求,并且巨大的内存需要也将让人无法接受。  当发生这种情况时,一般的神经网络将不再适用,而卷积神经网络在这个计算机视觉问题上是一个很好的网络结构。

图像边缘检测

  卷积运算是卷积神经网络的基本组成部分,以边缘检测为例来解释卷积运算,如上图所示,边缘检测主要分为垂直边缘检测(vertical edges)和水平边缘检测(horizontal edges)这两种。

垂直边缘检测

  假设对一个 大小的图片(以数字表示),用一个 大小的filter(卷积核)进行卷积运算,以“*”符号表示,卷积核将不断地在图片中,和其大小相同的部分对应元素做乘法运算并求和,最终得到的数字相当于新图片的一个像素值。

垂直边缘检测原理

  如上图所示,图片经过垂直边缘检测器的一个卷积运算后,其图片中从白到灰之间的过渡线,将会变成一条较宽的白线,即图片中的垂直边缘线被放大为了一条白线,最终达到垂直边缘检测的效果。

垂直边缘检测需要注意的问题

  会产生这种问题的具体数学运算解释如下:

卷积在神经网络中的应用

  通过卷积神经网络,将不再仅仅只是垂直边缘检测或水平边缘检测,在网络中会将滤波器所包含的元素当作9个参数,然后通过反向传播对它们进行学习更新,其目的就是去理解这9个参数,经过这样处理后,将可以检测任意角度的边缘线。并且随着卷积神经网络层数的加深,每一层卷积运算提取到的图像特征将会更加抽象。

Padding
没有Padding的缺点

  如果没有使用Padding,卷积操作将会有如下两个缺点:

  1. 每次做卷积操作,图像都会缩小;

  2. 那些在角落或者边缘区域的像素点,在输出结果中采用较少,这意味着将会丢失图像边缘位置上许多有用的信息。

使用Padding

  为了解决上面的两个缺点,我们在进行卷积运算前为图片加上Padding,在图片角落和边缘像素之外添加数值为0的像素点,最终将图片角落和边缘都包围起来,这样可以使得通过卷积核的卷积运算后,图片大小不变。上图中,若 表示Padding的值,则输入 大小的图片,最终的到的图片大小为 ,其中 表示卷积核的大小 。

Vaild/Same卷积

  Valid: 不加Padding的卷积,其输出结果的尺寸会减小,即

  Same: 加Padding的卷积,输出结果与输入图片的大小相同,即 ,在计算机视觉中,一般来说 的值为奇数

卷积步长

  卷积步长是构建卷积神经网络的一个基本的操作,我们以 表示卷积步长 ,以 表示 的值,卷积核的大小为, 图片大小为  则经过一次卷积运算后图片大小的变化为:

  注意: 不等于1时,若移动的窗口落在图片外面,则不要再进行相乘的操作,丢弃边缘的数值信息,所以输出图片的最终维度向下取整,向下取整可以使用int()

在RGB图像上的卷积

  对于灰度图像,卷积核和图像均是二维的,而应用于彩色图像中时,由于图片中有R、G、B三个颜色通道,此时的卷积核应为三维卷积核,即卷积核的第三个维度需要与进行卷积运算的图片的通道数相同。

多核卷积

  单个卷积核应用于图片时,提取图片一个特定的特征,不同卷积核提取不同的特征,比如两个大小均为 的卷积核分别提取图片的垂直边缘和水平边缘。

单层卷积网络理解

  和全连接神经网络(也就是普通的神经网络),前向传播的过程类似,只不过在卷积神经网络中,权重和输入之间进行的是卷积运算,其数学表示为:

单层卷积的参数个数

  在卷积层中,即使图片很大,其参数却很少,比如使用10个卷积核来提取特征,如垂直边缘、水平边缘和其他特征等,每个卷积核的大小均为 ,那么总共也就280个参数。

卷积层符号总结

简单卷积网络示例

池化层
Max pooling

  最大池化的作用是:如果在过滤器(卷积核)中提取到某个特征,那么保留其最大值,如果没有提取到这个特征,可能在右上限中不存在这个特征,那么其中的最大值也还是很小。  池化结果的数值很大,意味着可能提取到了某些特定特征,比如可能是一个垂直边缘、猫的一只眼睛或者是大家害怕的CAP特征

Average pooling

  平均池化不太常用,不过也有例外,就是对于很深的神经网络,我们可以用平均池化来分解,比如可以将一个 的网络表示层,在整个空间内求平均值,继而得到一个 的网络层。

池化层小结

  在池化层中超参数主要有:过滤器大小 、步长  注意: 在池化过程中,并没有需要学习的参数,即在反向传播中没有参数更新用于池化,只有这些已经设置过的超参数

卷积神经网络例子

  其卷积网络的整个流程为:

卷积网络层的类型
  • 卷积层(Convolution):Conv;

  • 池化层(Pooling):Max pooling、Average pooling;

  • 全连接层(Fully connected):FC。

卷积神经网络注意事项

  注意: 关于如何选择卷积网络中的参数,常规的做法就是,尽量不要自己设置超参数,而是查看文献中别人采用了哪些超参数值,选一个在别人任务中效果很好的值即可。

使用卷积神经网络

参数少的优势

  和只用全连接层相比,卷积层的参数很少,其主要是因为卷积层有其两个优势:参数共享稀疏连接

参数共享和稀疏连接

  1. 参数共享:每个特征检测器以及输出,都可以在输入图片的不同区域使用同样的参数。

    1. 稀疏连接:比如上图中,其输出结果最开始的0,它只依赖于输入中左上角这个 的输入单元格(也就是绿色框里的内容),在比如输出中红色圈内的30仅与输入特征中的9个像素相连接,而其他像素都不会对这个输出产生任何影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值