计算机视觉中的深度学习7: 卷积神经网络
Posted SuPhoebe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机视觉中的深度学习7: 卷积神经网络相关的知识,希望对你有一定的参考价值。
Slides:百度云 提取码: gs3n
之前说了全连接神经网络,说了线性分类,这些东西全都没有保留图片原本的2D特性,全都是将图片转化为1D的数组。
而今天说的CNN,则是能更好地保留图片的2D特性,在CV中有着更广泛地运用。
卷积层
对于一个32x32x3的一个图片,全连接层将它平摊成一个3072x1的数组
对于同样的图片,卷积层则是这么做的
它通过一个和输入图片同样高的filter,让filter与输入图片进行卷积,得出了一个28x28x1的新的图片
同时,我们可以有多个filter,从而产生多个输出图片
那么这儿共有6个filter,输出则是6组图像,你可以将这6组图像当做一个6x28x28的三维新图片
将其串联起来就是如下的结构
输入输出的大小关系
我们可以明显得看出来
- 关于高度
- 输出的高度与输入的高度无关,只与filter的个数有关
- filter的高度和输入的高度一致
- 关于长宽
- 输入的长W,filter长K,输出则为 W − K + 1 W-K+1 W−K+1
- 同理宽
我们可以看到经过多轮卷积层的处理,图片会越来越小,每次特征图片的处理都会损失更一些大小。这样可能会造成,对于一个太深的神经网络,处理到后期,图片就变成1x1的大小而无法被处理了。
Padding
在图片周围加入一些0
- 关于长宽的计算
- 输入的长W,filter长K,padding大小P,输出则为 W − K + 1 + 2 P W-K+1+2P W−K+1+2P
- 同理宽
一般来说,将其设置为 P = ( K − 1 ) / 2 P=(K-1)/2 P=(K−1)/2,这样输入和输出的大小就会一样。
将周围填充为0,并不是对图片特征提取完全没有帮助,它能够更好地处理图片边缘的情况,且明确地告诉网络,这个图片的每个特征处于图片的什么位置。
感受域
对于内核大小为K的卷积层,输出中的每个元素取决于输入中的K x K感受域
每次连续的卷积都会使感受域大小增加K – 1,对于L层,感受域大小为1 + L *(K – 1)。
这样的好处显而易见,它能让底层的图片特征能够全盘感受这张图片,例如,在左上角和右下角的区域,要通过多层卷积处理使得他们产生联系。
那么这样的问题也更显而易见,对于一些特别巨大的图片,往往需要很多很多层卷积才能让神经网络最终看到整张图片。
跳步卷积
对于之前的卷积,我们都是将filter一格一格移动的,但是这次我们是跳步进行的。假设步长为2,则我们将filter每一次卷积之后都要横向移动两位。
- 关于长宽的计算
- 输入的长W,filter长K,padding大小P,跳步大小为S
- 输出则为 ( W − K + 2 P ) / S + 1 (W-K+2P)/S+1 (W−K+2P)/S+1
- 同理宽
- 输入的长W,filter长K,padding大小P,跳步大小为S
这样我们就能更快地获得图片的全貌
总结
池层(Pooling Layers)
- Pooling层是一种能更快提取特征的方式
- 它能够将不变性引入一小块区域
- 它没有可以训练的参数
- 它能够通过非线性的方式提取特征
如下图所示,这就是一个2x2的max pooling
我想这是一个很好找规律的东西
常用的pooling还有average pooling等
LeNet-5
批量归一化
想法:“归一化”层的输出,以便它们的均值和单位方差为零
原因:能够极大提高收敛效率,论文《Ioffe and Szegedy, “Batch normalization: Accelerating deep network training by reducing internal covariate shift”, ICML 2015》
做法:
对于一个批量的输入,我们可以这样
输入
x
:
N
×
D
x: N\\times D
x:N×D
可以学习的参数
γ
,
β
:
D
\\gamma, \\beta:D
γ,β:D
对于
γ
,
β
\\gamma, \\beta
γ,β,他们与x的函数如下
你可以发现,这会是一个线性的变化。
Test的情况下
我们会发现,在test的情况下,我们并没有批量的输入,所以我们也没法维持 μ \\mu μ和 σ \\sigma σ。那么这将会使得我们的归一化失败。
于是,我们就应该将 μ t e s t \\mu_test μtest和 σ t e s t \\sigma_test σtest设置成为,在训练时的 μ \\mu μ和 σ \\sigma σ的平均数。
在测试期间,批量归一化成为线性运算!可以与先前的全连接层或转换层融合
好处
- 使深层网络更容易训练!
- 允许更高的学习率,更快的收敛
- 网络对初始化变得更加健壮(robust)
- 在训练期间充当正则化
- 测试时零开销:可以与卷积层完美融合!
以上是关于计算机视觉中的深度学习7: 卷积神经网络的主要内容,如果未能解决你的问题,请参考以下文章
CV学习资料《卷积神经网络与视觉计算》+《深度学习实践计算机视觉》+《视觉SLAM十四讲从理论到实践》电子资料代码分析