CV领域的几大深度学习架构论文阅读

以下是在我研究Crowd Counting领域之前,阅读的CV领域几大的网络架构的论文。我个人认为,无论是在CV领域做什么方向的研究,在那之前,还是最好先了解CV领域的高级架构,因为后面很多的工作都是在这基础上完成的,了解了这些会让我们后面的学习之路走的更轻松、更远。论文地址我就没给了,因为这几个网络架构十分著名,论文很好找。

 

ImageNet Classification with Deep Convolutional Neural Networks 

这篇文章的网络是在2012年的ImageNet竞赛中取得冠军的一个模型整理后发表的文章。AlexNet网络结构在整体上类似于LeNet,都是先卷积然后在全连接,但是细节上更为复杂。

 

Alex网络结构 

这个图是由上下两部分网络构成,分别对应两个GPU。5卷积层,3全连接层。

第一层:卷积1,输入为 224×224×3的图像,卷积核的数量为96,论文中两片GPU分别计算48个核; kernel_size  = 11×11×3; stride = 4, pad = 0

卷积后的图形大小为:

wide = (224 + 2 * padding - kernel_size) / stride + 1 = 54

height = (224 + 2 * padding - kernel_size) / stride + 1 = 54

dimention = 96,然后进行 (Local Response Normalized), 后面跟着池化pool_size = (3, 3), stride = 2, pad = 0 ,最终获得第一层卷积的feature map

第二层:卷积2, 输入为上一层卷积的feature map, 卷积核的个数为256个,论文中的两个GPU分别有128个卷积核。 kernel_size  = 5×5×48; pad = 2, stride = 1; 然后做 LRN, 最后 max_pooling, pool_size = (3, 3), stride = 2;

第三层:卷积3, 输入为第二层的输出,卷积核个数为384, kernel_size = 3×3×256, padding = 1, 第三层没有做LRN和Pool

第四层:卷积4, 输入为第三层的输出,卷积核个数为384, kernel_size = 3×3, padding = 1, 和第三层一样,没有LRN和Pool

第五层:卷积5, 输入为第四层的输出,卷积核个数为256, kernel_size = 3×3, padding = 1。然后直接进行max_pooling, pool_size = (3, 3), stride = 2;

6,7,8层:全连接层,每一层的神经元的个数为4096,最终输出softmax为1000,因为ImageNet这个比赛的分类个数为1000。全连接层中使用了RELU和Dropout。

 

Alex网络特点

1. 更深的网络结构

2. 使用层叠的卷积层,即卷积层+卷积层+池化层来提取图像的特征

3. 使用Dropout抑制过拟合

4. 使用数据增强Data Augmentation抑制过拟合

5. 使用Relu替换之前的sigmoid的作为激活函数

6. 多GPU训练

 

 

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION 

VGG Net在 ILSVRC 2014 上取得了第二名的成绩,将 Top-5错误率降到7.3%,主要的贡献是展示出网络的depth是算法优良性能的重要部分。几种用的比较多的网络结构有ResNet(152-1000层),GooleNet(22层),VGGNet(19层),大多数模型都是基于这几个模型上改进。

 

VGG Net网络结构 

 

Input是大小为224*224的RGB图像,预处理时计算出三个通道的平均值,在每个像素上减去平均值(处理后迭代更少,更快收敛)。

1. 图像经过一系列卷积层处理,在卷积层中使用了非常小的3*3卷积核,在有些卷积层里则使用了1*1的卷积核。

2. 卷积层stride = 1,3*3卷积层的padding = 1。池化层采用max pooling,共有5层,在一部分卷积层后,max-pooling的窗口是2*2,stride设置为2。

3. 卷积层之后是三个全连接层。前两个全连接层均有4096个通道,第三个全连接层有1000个通道,用来分类。所有网络的全连接层配置相同。

4. 全连接层后是Softmax,用来分类。

5. 所有隐藏层都使用ReLU作为激活函数,并且VGGNet不使用LRN。

 

VGG网络特点 

 

1. 选择采用3*3的卷积核是因为3*3是最小的能够捕捉像素8邻域信息的的尺寸。

2. 使用1*1的卷积核目的是在不影响输入输出的维度情况下,对输入进行形变,再通过ReLU进行非线性处理,提高决策函数的非线性。

3. 2个3*3卷积堆叠等于1个5*5卷积,3个3*3堆叠等于1个7*7卷积,感受野大小不变,而采用更多层、更小的卷积核可以引入更多非线性(更多的隐藏层,从而带来更多非线性函数),提高决策函数判决力,并且带来更少参数。

4. 每个VGG网络都有3个FC层,5个池化层,1个softmax层。

5. 在FC层中间采用dropout层,防止过拟合。

 

存在的问题

 

尽管VGG Net 减少了卷积层参数,但实际上其参数空间比 AlexNet 大,其中绝大多数的参数都是来自于第一个全连接层,耗费更多计算资源。好在随后的 NIN 中发现将这些全连接层替换为全局平均池化,对于性能影响不大,同时显著降低了参数数量。

 

Rethinking the Inception Architecture for Computer Vision 

GoogLeNet做出了更加大胆的网络结构尝试,虽然深度只有22层,但大小却比AlexNet和VGG小很多,GoogleNet参数为500万个,参数只有VGG的1/36.GoogLeNet团队提出了Inception网络结构,就是构造一种“基础神经元”结构,来搭建一个稀疏性、高计算性能的网络结构。

Inception V1 

其中,3x3前、5x5前、max pooling后加上的1x1的卷积核,是为了降低特征图厚度。

 

基于Inception构建了GoogLeNet的网络结构(共22层)

网络结构图太长了,我就不放了。

网络特点如下:

1. GoogLeNet采用了模块化的结构(Inception结构),方便增添和修改;

2. 网络最后采用了average pooling来代替FC,该想法来自NIN,可以将准确率提高0.6%。但是,实际在最后还是加了一个FC,主要是为了方便对输出进行灵活调整;

3. 虽然移除了FC,但是网络中依然使用了Dropout ; 

4. 为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。辅助分类器是将中间某一层的输出用作分类,并按一个较小的权重(0.3)加到最终分类结果中,这样相当于做了模型融合,同时给网络增加了反向传播的梯度信号,也提供了额外的正则化。但是在实际测试的时候,这两个额外的softmax会被去掉。

 

Inception V2

  1. 卷积分解。用2个连续的3x3卷积层组成的小网络来代替单个的5x5卷积层,在保持感受野范围的同时又减少了参数量;任意nxn的卷积都可以通过1xn卷积后接nx1卷积来替代,但是这种分解在中等图上效果才好。
  2. 降低特征图大小。卷积、池化并行执行,再进行合并。 

 

Inception V3

最重要的改进是分解,将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样既可以加速计算,又可以将1个卷积拆成2个卷积,使得网络深度进一步增加,增加了网络的非线性(每增加一层都要进行ReLU)。

 

Inception V4

ResNet结构大大地加深了网络深度,还极大地提升了训练速度,同时性能也有提升。Inception V4结合了ResNet残差结构进行改进。 

 

Deep Residual Learning for Image Recognition 

ResNet在ILSVRC2015比赛中取得冠军,在top5上的错误率为3.57%,同时参数量比VGGNet低。ResNet的推广性也非常好,甚至还可以直接用到InceptionNet网络中。

 

Residual learning 

ResNet的主要思想是在网络中增加了直连通道,即Highway Network的思想。此前的网络结构是性能输入做一个非线性变换,而Highway Network则允许保留之前网络层的一定比例的输出。ResNet的思想和Highway Network的思想也非常类似,允许原始输入信息直接传到后面的层中,如下图所示。这样的话这一层的神经网络可以不用学习整个的输出,而是学习上一个网络输出的残差,因此ResNet又叫做残差网络。

 

ResNetVGG Net的对比以及创新

ResNet提出residual learning的思想。ResNet通过直接将输入信息绕道传到输出,保护信息的完整性,整个网络只需要学习输入、输出差别的那一部分,简化学习目标和难度。RetNet和VGG Net最大的区别在于前者有很多的旁路将输入直接连接到后面的层,这种结构也被称为shortcut。

网络结构

在ResNet网络结构中会用到两种残差模块,一种是以两个3*3的卷积网络串接在一起作为一个残差模块,另外一种是1*1、3*3、1*1的3个卷积网络串接在一起作为一个残差模块。ResNet有不同的网络层数,常用的是50-layer,101-layer,152-layer,他们都是由以下两种残差模块堆叠在一起实现的。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值