Lesson4(CNN)--week2--经典文章解读

这周主要讲解了CNN领域中的几种经典网络架构。

经典网络架构

按照时间先后顺序,依次讲解了LeNet,AlexNet,VGG,Inception,ResNet。

NN number of parameters layer year
LeNet 6万 shallow 1998
AlexNet 6000万 5个卷积层,3个全连接层 2012
AGG 1.38亿 19层 2014
Inception 500万 22层 2014
ResNet 152层 2015

1*1的卷积网络有什么作用?
对于通道数比较多的输入信号,使用1*1大小的卷积核x相当于在网络中构建了一个小型的全连接层:
这里写图片描述
当1*1filter的个数小于输入的通道个数时,还能实现有效的通道压缩。信号与1*1的卷积核作用之后,高和宽不变,通道数为卷积核的个数。1*1卷积核又被称为“网络中的网络”。

AlexNet

主要使用到的新技术点如下:
1)成功使用Relu作为CNN的激活函数,并验证其效果在较深的网络超过了sigmoid,成功解决了sigmoid在网络较深时的梯度弥散问题、虽然RELU激活函数在很久之前就被提出,但是直到AlexNet的出现才将其发扬光大;
2)训练时使用Dropout随机忽略一部分神经元,以避免过拟合;
3)overlapping maxpooling重叠的最大池化。此前CNN普遍使用平均池化,最大池化避免了平均池化的模糊效果,并且步长小于池化核尺寸时,池化的输出之间会有重叠和覆盖,提升了特征的丰富性
4)提出LRN层,对局部神经元的活动创建了竞争机制,使得其中相应比较大的值变得相对更大,并抑制其他反馈较小的神经元,增加了模型的泛化能力;
5)数据增强:随机截取,翻转;对RGB数据做PCA处理,并对主成分做一个标准差为0.1的高斯扰动,增加噪声。

VGG

VGG探索了卷积神经网络的深度与其性能之间的关系,通过反复堆叠3×3的小型卷积核和2×2的最大池化层,VGG成功地构筑了16~19层深的卷积神经网络。
AGG的贡献:
1)每次卷积使用同样大小的卷积核,两个3×3的卷积层串联相当于一个5×5的卷积层,即一个像素会跟周围 5×5的像素产生关联,3个3×3的卷积层串联的效果则相当于1个7×7的卷积层。这样主要有两个好处:1. 3个3×3的卷积层拥有比1个7×7的卷积层更多的非线性变换(前者可以使用三次Relu激活函数,而后者只有一次);2.前者使用的参数比后者少:3*3*3/(7*7)=55%.
2)使用了1*1的卷积核,它的意义在于加入了整流函数的非线性变换;
3)在训练时先训练级别A的简单网络,再复用A网络的权重来初始化后面的几个复杂模型,这样训练收敛的速度更快;
4)使用multi-scale的方法做数据增强,将原始图像所放到不同尺寸,再随机剪裁224*224的图片;
5)虽然VGG的模型参数比AlexNet多,但反而只需要较少的迭代次数就可以收敛,主要原因是更深的网络和更小的卷积核带来的隐式的正则化效果。
6)VGG的模型参数虽然比Alexnet多,但反而值需要较少的迭代次数就可以收敛,主要原因是更深的网络和更小的卷积核带来的隐式的正则化效果。
VGG网络测试11~19层的神经网络,结果得到:
1)LRN没有多大的作用;
2)越深的网络效果越好;
3)1×1的卷积是有效的,但是没有3×3的卷积好,大一些的卷积核可以学习更大的空间特征。

NIN(Network In Network)

NIN的核心贡献是:MLP卷积层和全局平均池化层
1.MLP卷积层使用mlpconv代替传统的卷积层。
传统的卷积层要提升表达能力,主要依靠增加通道数量,但副作用是计算量增大和过拟合。每一个输出通道对应一个滤波器,同一个滤波器共享参数,只能提取一类特征,因此一个输出通道只能做一个特征处理,而NIN的mlpconv则拥有更强大的能力,允许在输出通道之间组合信息,因此效果明显。在跨通道情况下,mlpconv等价于卷积层+1×1卷积层,1*1的卷积层可以实现多个feature map的线性组合,实现跨通道的信息整合。
这里写图片描述

2.全局平均池化:在最后一层mlpconv层为每个分类类别产生一个特征图,对每个特征图取均值输入到softmax层。
好处是:
1.使特征图与类别之间建立关联;2.减少了参数;3.对输入变换更加鲁棒。
这里写图片描述

Inception

参考:https://blog.csdn.net/shuzfan/article/details/50738394
直接提升深度卷积网络性能的方法是从深度与宽度两方面增加尺寸,但大尺寸的网络需要更多参数,容易导致过拟合,尤其是数据集不够大的时候,直接增加尺寸的另一个弊端是需要大量计算资源。根本的解决办法是将全连接层变为稀疏链接层,而非均匀稀疏网络的弊端是计算效率不高,可以采用将多个稀疏矩阵合并成 相关的稠密子矩阵的方法来解决。
Inception Net的主要目标就是找到最优的稀疏结构单元。

Inception 比AlexNet层数深,可是参数却只有它的1/12,并且在准确度上远胜于AlexNet。Inception降低参数表现在:1.使用全局平均池化层取代全连接层,这借鉴了NIN;2.使用Inception Module提高了参数的利用效率,Inception module本身如同大网络中的小网络,其结构可以反复堆叠在一起形成大网络,这其中利用了多次1×1的卷积核.
1×1的卷积是一个非常优秀的结构,它可以跨通道组织信息,提高网络的表达能力,同时可以对输出通道升维和降维,相比于其他的卷积核(3×3),它能实现一种更低成本的跨通道特征变换。

Resnet

残差网络只要将权重迫为0值就可以达到恒等变换,那么深度加深不会降低网络的性能。虽然在很多情况下,恒等变换并不是需要学习的最优函数,但是让网络去学习一个恒等变换的扰动比学习一个新的函数更加容易些。
这里写图片描述
y = F ( x , W i ) + x , F = W 2 σ ( W 1 x ) .式子表示的是残差网络为2层的情况,它同样可以设置为多层或者1层,当只有一层时, y = W 1 x + x .
实现:基于VGG的架构。
数据增强:随机剪裁,颜色增强
BN
SGD
从仿真结果来看,VGG在34层的效果不如18层的效果,这是因为训练时的梯度消失问题,而在Resnet中,网络越深效果越好,残差网络可以使信号直接跳过多层。

迁移学习

很多经典框架都可以在GitHub上找到开源代码,使用开源代码能够加快我们的项目进程,因此是十分值得学习的。
当我们拥有较少的训练集时,我们可以下载神经网络的开源代码和训练后的权重,固定前面的权重,只训练softmax层的权重;当我们拥有较多的训练集时,我们可以冻结较少的浅层卷积层,训练后面的深层神经网络。训练集的数量越多,冻结的层数可以越少。
当你拥有的数据量非常大时,你可以不冻结任何层,而只是将别人得到的训练后后的权重作为初始值来进行学习,这样可以加快学习速度。
计算机视觉领域是经常需要使用迁移学习的一个领域。

扫描二维码关注公众号,回复: 2664121 查看本文章

数据增强

垂直对称;随机剪裁;旋转,变形
color shifting色彩转换:使用PCA
这里写图片描述
数据增强和训练使用多线程并行处理。

计算机视觉的现状

这里写图片描述

猜你喜欢

转载自blog.csdn.net/zhouhong0284/article/details/80320739
今日推荐