Rethinking the Inception Architecture for Computer Vision(2015)论文综述

Rethinking the Inception Architecture for Computer Vision论文综述
摘要:一般来说模型越大,参数越多,计算量越大,检测效果越好。但是计算量太大的话对于算力有限的情况下不能使用了,如移动终端。本文主要研究通过对大size卷积进行分解成小size的卷积的方式来拓展网络模型,这种方法会增加一部分计算量,但是减小了参数量,配合着正则化,能够充分拓展网络模型。

1引言
AlexNet有6千万个参数,VGGNet是其3倍,即1.8亿参数,GooLeNet是其1/12,即5百万参数量。
也有一些其他的方法来解决参数量过大的问题,但是这些方法在Inception结构上不适用。
本文提出一些新的方法来解决提高Inception计算效率的问题。

注:深度学习中的representation和representation learning是什么意思?
representation就是对数据的一种表现形式,比如cnn的输入图片可以用三通道(rgb)的张量表示,这个张量就是对张图片的representation,也可以是这个张量经过卷积操作之后的输出,也可以是卷积操作之后又经过relu激活之后的输出,因为这些输出都代表了对这张图片的表示,只不过不同的层所表示的信息的抽象程度不一样。针对cnn,一个好的表示是指更有利于最后的目的(即分类回归)的对图片的表现形式。
representation learning是以怎样方式得到一个更有利于做最后的分类和回归的表示。具体来说就是用的什么样的网络结构,以得到一个更准确的输出。

2.通用设计原则
这些网络结构设计原则是作者做实验得的,结论带有推断性质,需要更多的实验来验证这些结论的正确性。
1)慎用瓶颈模块。如果处于分类精度考虑,还是要慎用瓶颈模块(bottleneck),尤其不要在网络的早期用。作者认为CNN模型本质上是个有向无环图,其上信息自底向上流动,而每一个bottleneck的使用都会损失一部分信息,因此当我们处于计算和存储节省而使用bottleneck时一定要下手轻些(不要一下子使用11conv缩减过多的fm的通道数,如果一定要用reduction模块也要在模型的较靠后的几层使用)。
2)层宽些还是有好处的。增加卷积网络中每一块的激活值数目,会产生更多的(解耦合)不相关的特征。撇开计算与内存开销增加的负面因素不谈,每个Conv层的kernels数目增加对于模型处理局部信息,进而更有效的表达还是有好处的,毕竟多些参数就可使得每层获得多些的表达能力,可以使模型收敛的更快(当然是指整体所需的迭代次数减少,而非整体训练下来所需的全部时间)。
3)更深的较底层(size亦小)可以使劲压。对于网络后面的fm可以使用bottleneck那样的模块,对其进行通道数缩减,再进行3
3卷积这样的较大的计算。1*1的卷积不仅不影响模型的精度,反而还能使其收敛速度加快。给出的猜测性解释是,后期较小size的fm之上的相邻units(即channels)之间具有更大的关联性(即冗余信息更少),因此可以折腾的厉害些(使输出的通道变少)而不担心信息丢失(反而信息被梳理的更清晰、有效。)

4)平衡网络的深度和宽度以得到一个更好的性能。宽度和深度都增大一般会使网络性能变好,但是会导致计算量大大增加。

3 分解大的卷积核
inception V1中将输入图片resize操作在某种程度上也算是一种降维操作。还有先用11的卷积核降维,然后跟着33的卷积层,这样的结构也算是一种降维操作。
3.1 分解成更小的卷积核
55的卷积核77的卷积计算量都很大。
同样数目的55卷积核计算量是33卷积核的25/9=2.78倍??(我觉得计算量增大, 但是存储变小了)
于是想办法把一个55的卷积用两个连续的33的卷积取代。
在这里插入图片描述

3.2 将对称的卷积分解成非对称的卷积计算
这一次是把33的卷积分解成了两个分别为13和31的卷积核(当然也可以替换成几个22的卷积层,但是可证节省的计算开销并不大)。这样同样可以只使用约(13+31)/(33)=67%的计算开销。下图是此替换的有效性,类推,一个nn的卷积也可通过两个连续的1n和n1卷积来节省计算与内存。
在这里插入图片描述
4 利用辅助分类器
在inception v1中认为辅助分类器的作用是解决深度模型在反向传播时的梯度小时的问题,现在才发现当时错了,因为辅助分类器只在最后训练的最后阶段才发挥作用。现在(2015)认为辅助分类器的真正作用是正则化,为此他们在辅助分类器中加入了BN和dropout层,果然发现分类结果好了些。

5 更高效的下采样
深度CNN网络中一般会不断使用Pool层来减少feature maps size。这必然意味着传递信息的不断丢失。一般为了减少信息的过度丢失,在加入Pool层减少feature maps size的同时都会同比例扩大它的channels数目(此一思想与做法可在VGG网络中明显看到,亦已被所有的CNN网络设计所遵循)。
真正实行可以有两个办法,其一先将channels数目扩大(一般使用1x1 conv),然后再使用pool层来减少feature map size,不过其中1x1 conv的计算显然会有非常大的计算开销;其二则是先做Pooling减少feature map size,然后再使用1x1 conv对其channels数目放大,不过显然首先使用Pooling的话会造成信息硬性丢失的不可避免,在此之后再使用1x1 conv去增加channels数目的做法已经有些亡羊补牢之嫌了。下左图反映了这两种较为传统的做法。
在这里插入图片描述
6 Inception -V2网络架构
在这里插入图片描述
7 通过平滑标签来正则化
作者认为softmax loss过于注重使模型学习分类出正确的类别(label),而过于地试着偏离其它的非正确labels。。如此的话可能使得训练得到的模型在新的数据集上扩展性不好(即易陷入overfitting的困局)。为此他们认为有必要使用label的先验分布信息对其loss进行校正。如下为他们最终使用的loss。
在这里插入图片描述
8 训练方法
9 在地分辨率输入上的表现
10 实验结果
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值