Inception v3:Rethinking the Inception Architecture for Computer Vision
摘要:
\quad    \; 卷积网络是大多数计算机视觉任务的 state of the art 模型采用的方法。自从2014年,VGG开始变为主流,在各种基准测试中有显著的性能提升。只要有足够的带标签数据,模型size和计算量的增加在大多数任务下能够提高性能,但计算的高效利用和更少的参数量使得在移动和大数据场景下的使用变得可能(模型size增加能带来性能提高,但计算量也会提高,所以计算量的高效利用和更少的参数成为了本文的研究目的)。在本文,作者通过分解卷积和aggressive正则 来探索能高效利用 随模型的增加而增加的计算量的模型scale方法(这句话有点绕)。作者在ILSVRRC 2012分类赛验证集上测试了新方法,并取得了取得了state of art(性能有了显著提高):top-1: 21.2%,top-5: 5.6%的错误率for single frame evaluation。新方法每个inference的计算量为5 billion次乘-加运算,模型参数量不到25 million。4个模型进行集成并且进行multi-crop evaluation,新方法取得了top-1: 3.5%,top-5: 17.3%的错误率。
关键点:factorized convolution、aggressive regularization
1.简介
\quad    \; AlexNet使得深度学习开始被应用到各种任务。
\quad $;$2014年后,模型size的增大成为提高模型性能的主要研究方法(VGG、GoogLeNet)。尽管VGG取得了很好的性能,但它的计算量太大;GoogLeNet的Inception架构能够在strict constraints on memory and computational budget的情况下,取得很好的性能。另外GoogLeNet仅有5 million参数(1/12 AlexNet参数量)。VGG的参数量为AlexNet的3倍。
\quad    \; Inception的计算量比VGG少,但有更高性能。这使得能在大数据(inference时间要少)或移动环境(内存、计算力有限)的情景下使用Inception。
2.通用设计准则
- 1.避免representation瓶颈,尤其是网络前面的层。representation就是activations,activations的size应该是逐渐减减小的。
- 2.更高维的representation更容易处理,更容易训练(收敛)。
- 3.低维嵌入空间上的空间聚合(Spatial aggregation)几乎不会影响representation能力。这个的解释是相连神经元之间具有很强的相关性,信息有冗余。
- 4.网络宽度和深度的平衡。两者的平衡能带来更好的性能。
3.分解大filter size的卷积
\quad    \; GoogLeNet性能很大程度上来自于降维的广泛使用。例如,一个1x1卷积followed一个3x3卷积。在视觉任务中,我们希望临近的activations是高度相关的,所以,我们在aggregation之前降维。
\quad    \; 将大filter卷积分解为多个小filter卷积。这种分解能对参数进行解离。因此,训练速度会更快(with suitable factorization, we can end up with more disentangled parameters and therefore with faster training)。
3.1 分解为更小的卷积
\quad    \; 将5x5分解为两个3x3,分解前和分解后的感受野是一样的。两个3x3卷积的串联比一个5x5卷积的representation能力更强。另外,分解后多使用了一个激活函数,增加了分线性能力(图2)。 两个3x3卷积和一个5x5卷积的参数量的比为 9 + 9 25 \frac{9+9}{25} 259+9,分解减少了28%的参数。同时计算量也减少了28%。
\quad    \; 分解需要有两个需要注意的地方:1.分解是否会削弱representation能力;2.是否有必要在分解后的第一层后使用激活函数。
\quad    \; 分解不会降低representation能力,第一层后使用激活函数能增强非线性能力(图2)。分解是十分有好处的。所以原始的Inception模块(图4)就可以变为图5。
3.2 空间卷积分解为不对称卷积(Spatial Factorization into Asymmetric Convolutions)
\quad    \; 上一小节说明大filter的卷积层可以分解为一系列的3x3filter的卷积层。是否我们可以进一步分解为更小的filter的卷积层。事实上,通过卷积的非对称分解可以将3x3卷积分解为1x3和3x1卷积。在输入输出filters数目一定的时候,卷积的非对称分解可以将计算量减少33%。然而,如果将3x3卷积分解为两个2x2卷积只能减少11%的计算量。
\quad    \; 理论上,**我们可以用1xn和nx1卷积的串联来代替nxn卷积,计算量可以可以降低为1/n。**实践中,非对称分解not work well on early layers,but it gives very good results on medium grid-sizes (On m x m mxm mxm feature maps, 这里的 m m m的范围为12到20)。在这种层面,very good results can be achieved by using 1x7 conv followed 7x1 conv。
\quad    \; 根据设计准确2,高维表示更容易处理,更有利于训练,所以进行了图7的改造。
4. 辅助分类器的作用
\quad    \; Inception v1引进辅助的分类器去提高非常深的网络的收敛。引进辅助分类器的原始动机是加大梯度向更前层的流动(缓解梯度vanishing),从而加速训练过程中的收敛。Lee等人认为辅助分类器有助于更稳定的训练和better收敛。
\quad    \; 有趣的是,作者发现辅助分类器并不能加速训练过程的早期收敛:辅助分类器并没有加速网络的早期收敛。在训练末期,有辅助分类器的网络开始超越没有辅助分类器的模型的准确率。
\quad    \; Inception v1使用了两个辅助分类器。去掉低层辅助分类器并不会对网络的最终效果产生负面影响。结合上一段,这意味着Inception v1关于辅助分类器的假设(辅助分类器有助于低层特征的evolving)是错误的。取而代之,我们认为辅助分类器的作用是一个regularizer。作者关于上一句话的解释:如果辅助分类器进行BN或Dropout,网络的主分类器的性能会更好。这也间接说明(weak supporting evidence)了BN作为一个regularizer的推测。
\quad    \; 通过上图,可以看出Inception v3的辅助分类器的配置。辅助分类器里的BN可以带来top-1: 0.4%的性能提升。
5. feature map的size的高效减小(Efficient Grid Size Reduction)
\quad    \; 一般来说,卷积神经网络使用一些pooling操作来减少grid size of the feature maps。为了避免representation瓶颈,在应用maximum或者average pooling之前需要将activation的维度进行增加。 例如,有一个 k k k通道的 d × d d \times d d×d的feature maps,如果我们想要得到一个 2 k 2k 2k通道的 d 2 × d 2 \frac{d}{2} \times \frac{d}{2} 2d×2dfeature maps,我们首先需要去进行一个stride为1的 2 k 2k 2k个通道的卷积,然后另外应用一个pooling。
\quad    \; 左图缺点:带来了一个representation瓶颈
\quad    \; 右图缺点:计算量增加三倍
\quad    \; 右图是作者新提出的降低feature map的size的方法:用一个并行(conv + pooling两个path的stride都为2)来实现。它很cheap并且避免了representation瓶颈。从grid size而不是op的视角来看,右图represents the same solution。
6. Inception v2(这里作者其实指的是Inception v3)
\quad    \; 新Inception网络的配置如表1。
\quad    \; 注意,和Inception v2不同的是,作者将7x7卷积分解成了三个3x3卷积(这个分解在3.1节进行了描述)。网络中有三个Inception模组,三个模组的结构分别采用 图5、6、7三种结构。inception模块中的gird size reduction方法采用的是图10结构。
\quad    \; 我们可以看到,网络的质量与第二节说的准则有很大关系。尽管我们的网络深达42层,但我们的计算量仅仅是GoogLeNet的2.5倍,并且,它比VGG更高效。
7. Label Smoothing模型正则(Model Regularization via Label Smoothing)
\quad    \; 作者提出了一个正则分类器的机制:消除训练过程中label-dropout的边缘效应。
\quad    \; 对于每一个训练example x x x,模型计算每个label k ∈ { 1... K } k \in \{1...K\} k∈{ 1...K}的概率: p ( k ∣ x ) = e x p ( z k ) ∑ i = 1 K e x p ( z i ) p(k|x)=\frac{exp(z_{k})}{\sum_{i=1}^{K}{exp(z_{i})}} p(k∣x)=∑i=1Kexp(zi)exp(zk),其中 z i z_{i} zi是logits或未归一化的对数概率。
\quad    \; 训练集上单个example标签的实际概率分布(ground-truth distribution)经过归一化后: ∑ k q ( k ∣ x ) = 1 \sum_{k}{q(k|x)}=1 ∑