论文阅读:Rethinking the Inception Architecture for Computer Vision

论文探讨了Inception架构的改进,提出了避免特征瓶颈、分解卷积、使用辅助分类器等原则,以提高计算效率和模型性能。Inception-v2和Inception-v3在ILSVRC2012分类任务上展现出优越性能,同时研究了低分辨率输入对模型的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

论文阅读:Rethinking the Inception Architecture for Computer Vision

这篇论文是Inception 结构的一次改进,作者Christian Szegedy基于Inception提出了进一步提升卷积网络性能的几点原则,并结合实验对所提出的几点原则进行论证,进而提出了Inception-v2以及Inception-v3

摘要

作者提到虽然扩大模型,增加计算能力可以在数据集充分的情况下提升卷积网络模型的性能,但是对于移动端的视觉任务以及大数据的任务场景来说,降低参数数量、提高计算效率依然是值得探讨的因素。

作这在这篇文章中探讨了通过因子卷积(Factorized Convlution)以及进一步的正则化(aggressive regularization)来保证增加的算力的计算效率,从而进一步括大模型的方法。

作者基于上诉方法进行对比实验,选择ILSVRC2012 classification作为benchmark,获得了更好的性能

1、引言

作者提到,自从AlexNet出现以来,卷积神经网络迅速成为视觉任务的主流方法,在相当多的领域有广泛的应用。提升网络性能的方法常常是构造更深、更宽的架构。此外,作者还发现,在分类任务上的性能提升常常可以促进其他任务领域的提升。

相比起VGG及其改进版本,Inception结构要求的计算量低,更适合于大数据场景。然而Inception结构本身的复杂性使得它很难在网络中做出改变。单纯地增加Inception结构的规模会使得计算效率下降。例如,若仅仅将Inception结构中的卷积核的数量变为原来的两倍,那么计算的代价和参数数量都将变为原来的4倍,这在实际的大数据场景下是没有意义的,尤其是在模型性能提升很小的情况下。

故此,作者提出了一些被证明有用的、用于扩展网络结构的一般性准则和优化方法。作者也提到,虽然提出的一般性准则以及优化方法并不仅限于在Inception结构中使用,但是由于Inception本身的降维、并行架构特点,Inception结构对于架构中相邻的组件之间的变化敏感度不高,故此这些准则或优化方法的效果能够在Inception结构中更容易观察到。

2、通用的设计原则

作者基于大量的实验提出了设计卷积网络架构的几点通用准则。

  1. 避免特征表达瓶颈,特别是在网络的前几层。通俗来说,从输入层到输出层应该避免特征的极度压缩,各层的特征表示应该缓慢减小。
  2. 高维的特征表示更容易在网络中局部处理。增加每个卷积块的激活有利于更多解耦特征,这样能够加快网络的训练;
  3. 在低维特征中进行空间聚合嵌入不会对模型的特征表达构成大的影响,例如在进行3x3卷积之前可以使用1x1卷积进行降维(空间聚合),这样做可以降低计算量却不会对特征表达造成影响。关于这一点,作者的推断是相邻神经元之间的强相关性可以使得执行降维操作时信息丢失较少。
  4. 平衡网络的深度和宽度。同时增大网络的深度和宽度可以提高模型的性能,但是会带来计算的复杂性。

上述的一般性准则从理论上是可行的,但对于具体的模型架构来说需要进行进一步的实验论证。

3、大滤波器的分解卷积

从卷积的特征输出来看,相邻的激活之间代表了较高的相关性,因此在聚合之前进行空间降维也近似于压缩局部特征。在这篇文章中,作者探究了不同设置下的分解卷积。通过分解卷积在减少参数数量的同时可以得到更多的解耦特征,加快网络的训练。同时,节省下来的空间、计算资源可以用于进一步增加卷积核的尺寸,以达到代价基本不变下的更高性能。

3.1 分解成更小的卷积

在原始的Inception结构中,作者将5x5卷积使用两层串联的3x3卷积进行替代,在相同的感受野下节省了计算复杂性,并进一步增加了非线性。作者对分解卷积进行了进一步地论证,提出了两个关键的问题:

  1. 分解卷积是否会造成特征表达的损失?
  2. 如果主要目标是对计算的线性部分进行分解,是否建议在第一层保持线性激活?

作者针对这两个问题进行了控制实验,在进行对比的两个Inception架构中,一个使用分解卷积的两层激活函数分别是linear + Relu, 另一个两层都使用Relu,对比结果如下:

pic01
实验结果表明,使用两层Relu激活的分解卷积性能更好,作者将这种提升归因于网络可学习的空间增强了。

3.2 非对称分解卷积

以上所进行的卷积分解都是对称的,作者进一步探讨了非对称的分解卷积方法。做法就是将nxn的卷积变成nx1和1xn串联来代替。例如,3x3的卷积可以被3x1、1x3的卷积替代:

pic02

一个3x3的patch经过3x1的卷积以后得到1x3的特征输出,再经过1x3的卷积得到1x1的特征输出,这样相当于直接进行3x3的卷积。通过这样的方式,节省了33%的参数。通用的Inception非对称分解卷积示意如下:

pic03

4、使用辅助分类器

在GoogleNet中,作者为了减缓梯度消失,加快模型收敛,在两层Inception输出后使用了两个辅助分类器,详细可参考(论文阅读: Going deeper with convolutions)。作者发现,使用辅助分类器时对训练的初期并没有促进收敛的作用,直到训练后期,使用辅助分类器的效果才凸显出来。

另一方面,作者在实验中移除了较低层次的辅助分类器后,在模型性能上并没有负面影响。这两点表明,使用辅助分类器并不能对低级特征的演化有促进作用。作者在实验中还发现,把辅助分类器的分支改成批量归一化(Batch Normalization)或者加上dropout,可以提升主分类器的性能,因此作者更倾向于将辅助分类器看成是正则化。

5、高效下降特征图尺寸

作者提到,一般来说在CNN中常常会使用一些pooling操作来降低特征图的尺寸,但是为了避免特征表达瓶颈,一般会在pooling前增加卷积核的个数进行stride为1的卷积(其实就是拓展通道数),然而这样做会导致计算量增加。另外一种可能的做法是带卷积的pooling,就是先卷积,再经过卷积拓展通道数。

pic04

作者给出了两种降低特征图尺寸的方法,左边的方法计算量低,但是违背了原则(1)不能引入特征表达瓶颈,右边的方法计算上更加复杂。(其实我并不是很理解这个特征瓶颈,在我看来表达能力与计算量实在是鱼和熊掌。。。)

随后作者提出了两个模块并行的思路,一个卷积模块C,一个降维模块P,stride都为2,将两个模块同时应用于特征图,再将输出再通道上进行连接。这样相当于将原始的Inception结构内的Pooling(stride 2)改成了右边的并行方案。

pic05

6、Inception-v2

作者基于以上的分析与所提出的通用性准则提出了改进后的Inception-v2架构:

pic06

相比起Inception-v1结构,这里将开始的7x7卷积使用3个3x3卷积替代,在后面的Inception模块中分别使用了三种不同的模式:

  • 第一部分输入的特征图尺寸为35x35x288,采用了图5中的架构,将5x5以两个3x3代替。
    pic07

  • 第二部分输入特征图尺寸为17x17x768,采用了图6中nx1 + 1xn的结构

  • 第三部分输入特征图尺寸为8x8x1280, 采用了图7中所示的并行模块的结构

pic08

Inception-v2架构上为42层,计算量只是Inception的2.5倍。

7、通过标签平滑进行模型正则化

作者提出了一种通过向真实数据标签分布加入噪声的方式来进行正则化,抑制过拟合问题。一般地,数据标签都是以One-hot形式编码,正确类别标记为1,错误标签标记为0,使用交叉熵损失函数时,其损失函数为:
l o s s = − ∑ k = 0 K log ⁡ ( p ( k ) ) q ( k ) loss = -\sum^{K}_{k = 0}{\log(p(k))q(k)} l

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值