[paper] Inception v2/v3

Inception v2/v3

论文题目 Rethinking the Inception Architecture for Computer Vision

Abstract

模型的尺寸的增加和计算能力的提升让CNN可以解决很多问题

但是模型尺寸增加需要硬件有更好的计算能力,这在手机等小型设备上仍然是很难做到的

这篇文章的目的就是减少计算代价

Introduction

从2014年开始,网络性能通过增加尺寸(宽度或者深度)有了很大的提升。

VGG的结构简单但是它需要一个高昂的计算花销,而GoogLetNet需要的计算花销相对小。例如,GoogLNet有5百万参数,而AlexNet是他的12倍,有6000万参数,VGG的参数量是AlexNet的3倍

Inception不仅计算花销小,而且表现的结果更加优秀。这让Inception在大数据场景下的应用有了可能

目前Inception的问题是结构复杂导致很难对网络做改变,在General Design Principles部分会详细将如何对网络进行修改,修改的准则是什么

General Design Principles

规则1: 要防止出现特征描述的瓶颈(representational bottleneck)。所谓特征描述的瓶颈就是中间某层对特征在空间维度进行较大比例的压缩(比如使用pooling时),导致很多特征丢失。虽然Pooling是CNN结构中必须的功能,但我们可以通过一些优化方法来减少Pooling造成的损失。

规则2: 特征的数目越多收敛的越快。相互独立的特征越多,输入的信息就被分解的越彻底,分解的子特征间相关性低,子特征内部相关性高,把相关性强的聚集在了一起会更容易收敛。这点就是Hebbin原理:fire together, wire together。规则2和规则1可以组合在一起理解,特征越多能加快收敛速度,但是无法弥补Pooling造成的特征损失,Pooling造成的representational bottleneck要靠其他方法来解决。

规则3: 可以压缩特征维度数,来减少计算量。inception-v1中提出的用1x1卷积先降维再作特征提取就是利用这点。不同维度的信息有相关性,降维可以理解成一种无损或低损压缩,即使维度降低了,仍然可以利用相关性恢复出原有的信息。

规则4: 平衡网络的宽度和深度。要等比例的增加网路宽度和深度,这样才能增加网络性能。

Factorizing Convolutions with Large Filter Size

这一节主要讲述了如何分解大Filter

Factorization into smaller convolutions 将大卷积分解成小卷积

通常大卷积的计算代价更大。例如,使用5*5的卷积核的代价是3*3卷积核代价的5*5/9=2.78

在CNN的早期使用稍大的卷积核可以提取浅层特征,而这样计算量又会很大,所有考虑用多个小卷积串联代替大卷积

例如将一个5*5的卷积核分解成两个3*3的卷积核串联。如下图所示,两个3*3的卷积核的覆盖范围就是5*5。而计算量是之前的(3*3+3*3)/5*5=18/25
[paper] Inception v2/v3_第1张图片

但是随之有两个问题

  • 这种转换是否会带来loss of expressiveness(表现力的损失)
  • 如果我们的主要目标是对计算的线性部分进行分解,是否需要在第一个3*3卷积核后加非线性激活

A1: 文中说Since we are constructing a vision network, it seems natural to exploit translation invariance again and replace the fully connected component by a two layer convolutional architecture
因为我们构造了一个视觉网络,因此再次利用平移不变性并通过两层卷积结构替换完全连通的组件似乎很自然

A2: 我们进行了一个实验
[paper] Inception v2/v3_第2张图片
蓝色曲线是:将大卷积核分解成小卷积核并在两个卷积核后面加一个Relu层
红色曲线是:将大卷积核分解成小卷积核并分别在两个卷核后面加Relu层
效果是:在蓝色曲线的准确率76.2%,红色曲线的准确率77.2%

所以将大卷积分解成小卷积并分别在这两个卷积核后面加Relu层效果好

Spatial Factorization into Asymmetric Convolutions 空间分解非对称卷积

在上一节,我们将大卷积核分解成了两个3*3的卷积核,那么对于3*3的卷积核是否可以分解的更小

例如下图,对于一个3*3的卷积核先用一个3*1的卷积核进行卷积,再用1*3的卷积核进行卷积。可以将计算量减少至之前的33%

[paper] Inception v2/v3_第3张图片

理论上我们可以将任意一个n*n的卷积核替换成一个n*1的卷积串联1*n的卷积。但是实际上,这种方法用在CNN的早期效果不好,用在网络中期效果较好(feature map 的尺寸在12 到20 之间比较好)

Utility of Auxiliary Classifiers 引用辅助分类器

在Inception v1中使用了辅助分类器来帮助深度网络的收敛。但是我们现在发现较低层使用辅助分类器没太大意义,而在训练的后部分使用辅助分类器可以达到正规化的作用

Efficient Grid Size Reduction

传统的grid size reduction方法是使用pooling,但是这容易造成representational bottleneck。为了避免representational bottleneck,我们先对feature map进行扩充,再pooling。

在Figure9中,左图违反了规则1,容易造成representational bottleneck。右图的计算量是左图3倍。这两种方法都不太好
[paper] Inception v2/v3_第4张图片

在Figure10中,我们使用两个并联的模块P和C。P是Pooling layer,两者都是stride=2。这既可以避免representational bottleneck,也可以减少计算量。
[paper] Inception v2/v3_第5张图片

Inception V2

Inception V2的结构如下:
[paper] Inception v2/v3_第6张图片
[paper] Inception v2/v3_第7张图片
[paper] Inception v2/v3_第8张图片
[paper] Inception v2/v3_第9张图片

Model Regularization via Label Smoothing

本文的另一大改进是引入了标签平滑正则。原来,每个类别对应一个编号,给的样本只对应一个唯一的ground truth,则对应的target就是1,其它都是0,然后算交叉熵。

现在,作者说,这样的分布( Dirac delta),只在目标点为1,其它地方为0,太hard了,直观上看起来这样的理论target分布也太尖锐了,所以有软标签的概念,把全部的100%的概率给其它标签平均分配一点点,不要让网络太自信了去预测100%就是某一类。软标签如下:

q ′ ( k ) = ( 1 − ϵ ) δ k , y + ϵ K q^{'}(k)=(1-\epsilon)\delta_{k,y}+\frac{\epsilon}{K} q(k)=(1ϵ)δk,y+Kϵ

ϵ \epsilon ϵ是个较小的数,这样ground truth对应的标签有大部分的概率,而其它类别也有一小丢丢的概率。可以避免过拟合,防止网络对于某一个类别预测过于自信。

这样,新的交叉熵损失函数变为:
H ( q ′ , p ) = − ∑ k = 1 K l o g   p ( k ) q ′ ( k ) = ( 1 − ϵ ) H ( q , p ) + ϵ H ( u , p ) H(q',p)=-\sum_{k=1}^{K}log \ p(k)q'(k)=(1-\epsilon)H(q,p)+\epsilon H(u,p) H(q,p)=k=1Klog p(k)q(k)=(1ϵ)H(q,p)+ϵH(u,p)

即每一样本对应分布的交叉熵损失加权求和。

LSR直觉上很make sense,之后在不少的论文里面也看到过他的身影,是一个很有效的改进,作者称——consistent improvement of about 0.2% absolute both for top-1 error and the top-5 error。虽然提升不大,但是始终有效,实际上,把标签平均分配一点置信度给其它类别的做法也不是最好的,能根据类别的相似性、语义上的相似易混淆程度,分配软标签,应该是一个更合理的做法。

Performance on Lower Resolution Input

高分辨率的图片通常会得到更好的准确率,如果输入图片分辨率低怎么办呢?到底分辨率多少合适?

一个策略是:如果输入是低分辨率图片,减少其前两层stride/删除第一个pooling层。

在计算量不变的情况下,不同策略的效果:

  1. 299 × 299 receptive field with stride 2 and maximum pooling after the first layer.
  2. 151 × 151 receptive field with stride 1 and maximum pooling after the first layer.
  3. 79×79 receptive field with stride 1 and without pooling after the first layer.

结果如下:
[paper] Inception v2/v3_第10张图片

Inception V3

[paper] Inception v2/v3_第11张图片

Table3的最后一行就是Inception V3,也是在Inception V2的基础上在辅助分类器上加了BN

Conference

https://zhuanlan.zhihu.com/p/32702113
https://zhuanlan.zhihu.com/p/32850841

你可能感兴趣的:(计算机视觉,paper,计算机视觉)