卷积神经网络的网络结构——Inception V3

《Rethinking the Inception Architecture for Computer Vision》
  • 2015,Google,Inception V3

1.基于大滤波器尺寸分解卷积
GoogLeNet性能优异很大程度在于使用了降维。降维可以看做卷积网络的因式分解。例如1x1卷积层后跟着3x3卷积层。在网络角度看,激活层的输出是高相关的;因此在聚合前进行降维,可以得到类似的局部表示性能。
这里,考虑计算性能,我们探索其他形式的卷积因式分解。因为Inception结构是全卷积,每一个激活值对应的每一个权重,都对应一个乘法运算。因此减小计算量意味着减少参数。所以通过解耦和参数,可以加快训练。利用节省下来的计算和内存增加filter-bank大小,来提升网络性能。

1.1分解到更小的卷积
具有较大空间滤波器(例如5×5或7×7)的卷积在计算方面往往不成比例地昂贵。例如,具有n个滤波器的5×5卷积在具有m个滤波器的网格上比具有相同数量的滤波器的3×3卷积的计算量高25/9=2.78倍。当然,5×5滤波器在更前面的层可以捕获更远的单元激活之间、信号之间的依赖关系,因此滤波器几何尺寸的减小带来了很大的表现力。然而,我们可以询问5×5卷积是否可以被具有相同输入尺寸和输出深度的参数较小的多层网络所取代。如果我们放大5×5卷积的计算图,我们看到每个输出看起来像一个小的完全连接的网络,在其输入上滑过5×5的块(见图1)。由于我们正在构建视觉网络,所以通过两层的卷积结构再次利用平移不变性来代替全连接的组件似乎是很自然的:第一层是3×3卷积,第二层是在第一层的3×3输出网格之上的一个全连接层(见图1)。通过在输入激活网格上滑动这个小网络,用两层3×3卷积来替换5×5卷积(比较图2)。
图1.Mini网络替换5×5卷积
图1.Mini网络替换5×5卷积
图2.Inception模块中每个5×5卷积由两个3×3卷积替换
图2.Inception模块中每个5×5卷积由两个3×3卷积替换
对于分解的卷积层,使用线性激活还是非线性激活,实验表明,非线性激活性能更好。

1.2. 空间分解为不对称卷积
上述结果表明,大于3×3的卷积滤波器可能不是通常有用的,因为它们总是可以简化为3×3卷积层序列。我们仍然可以问这个问题,是否应该把它们分解成更小的,例如2×2的卷积。然而,通过使用非对称卷积,可以做出甚至比2×2更好的效果,即n×1。例如使用3×1卷积后接一个1×3卷积,相当于以与3×3卷积相同的感受野滑动两层网络(图3)。如果输入和输出滤波器的数量相等,那么对于相同数量的输出滤波器,两层解决方案便宜33%。相比之下,将3×3卷积分解为两个2×2卷积表示仅节省了11%的计算量。
图3.将一个3*3的卷积拆成1*3卷积和3*1卷积
图3.将一个3*3的卷积拆成1*3卷积和3*1卷积
在理论上,我们可以进一步论证,可以通过1×n卷积和后面接一个n×1卷积替换任何n×n卷积,并且随着n增长,计算成本节省显著增加(图4)。实际上,我们发现,采用这种分解在前面的层次上不能很好地工作,但是对于中等网格尺寸(在m×m特征图上,其中m范围在12到20之间),其给出了非常好的结果。在这个水平上,通过使用1×7卷积,然后是7×1卷积可以获得非常好的结果。
这里写图片描述
图4.n×n卷积分解后的Inception模块。
在我们提出的架构中,对17×17的网格我们选择n=7。

2. 利用辅助分类器
Inception V1引入了辅助分类器的概念,以改善非常深的网络的收敛。最初的动机是将有用的梯度推向较低层,使其立即有用,并通过抵抗非常深的网络中的消失梯度问题来提高训练过程中的收敛。有趣的是,我们发现辅助分类器在训练早期并没有导致改善收敛:在两个模型达到高精度之前,有无侧边网络的训练进度看起来几乎相同。接近训练结束,辅助分支网络开始超越没有任何分支的网络的准确性,达到了更高的稳定水平。
另外,Inception V1在网络的不同阶段使用了两个侧分支。移除更下面的辅助分支对网络的最终质量没有任何不利影响。再加上前一段的观察结果,这意味着这些分支有助于演变低级特征很可能是不适当的。相反,我们认为辅助分类器起着正则化项的作用。这是由于如果侧分支是批标准化的(BN)或具有丢弃层(Dropout),则网络的主分类器性能更好。这也为推测BN作为正则化项给出了一个弱支持证据。

3.降低特征图大小
传统上,卷积网络使用一些池化操作来缩减特征图的网格大小。为了避免表示瓶颈,在应用最大池化或平均池化之前,需要扩展网络滤波器的激活维度。例如,开始有一个带有k个滤波器的d×d网格,如果我们想要达到一个带有2k个滤波器的网格,我们首先需要用2k个滤波器计算步长为1的卷积,然后应用一个额外的池化步骤。这意味着总体计算成本由在较大的网格上使用次运算的昂贵卷积支配。一种可能性是转换为带有卷积的池化,因此导致次运算,将计算成本降低为原来的四分之一。然而,由于表示的整体维度下降到,会导致表示能力较弱的网络(图5),这会产生一个表示瓶颈。我们建议另一种变体,其甚至进一步降低了计算成本,同时消除了表示瓶颈(图6),而不是这样做。我们可以使用两个平行的步长为2的块:P和C。P是一个池化层(平均池化或最大池化)的激活,两者都是步长为2,其滤波器组连接如图6所示。
图5.减少网格尺寸的两种替代方式
图5.减少网格尺寸的两种替代方式。
左边的解决方案违反了不引入表示瓶颈的原则,右边的计算量昂贵3倍。
图6.缩减网格尺寸的同时扩展滤波器组的Inception模块
图6.缩减网格尺寸的同时扩展滤波器组的Inception模块。
它不仅廉价并且避免了原则1中提出的表示瓶颈。右侧的图表示相同的解决方案,但是从网格大小而不是运算的角度来看。

Inception-V3模型:
这里写图片描述
把7x7卷积替换为3个3x3卷积。包含3个Inception部分。第一部分是35x35x288,使用了2个3x3卷积代替了传统的5x5;第二部分减小了feature map,增多了filters,为17x17x768,使用了nx1->1xn结构;第三部分增多了filter,使用了卷积池化并行结构。网络有42层,但是计算量只有GoogLeNet的2.5倍。
5,6,7分别对应下面三种结构:
Inception V3中三种结构的Inception Module
Inception V3中三种结构的Inception Module
Inception V3中三种结构的Inception Module
Inception V3中三种结构的Inception Module
应用在17*17层之上的辅助分类器:
这里写图片描述

析:因此问题依然存在:如果计算量保持不变,更高的输入分辨率会有多少帮助?
普遍的看法是,使用更高分辨率感受野的模型倾向于导致显著改进的识别性能。
为了这个目的我们进行了以下三个实验:
1)步长为2,大小为299×299的感受野和最大池化。
2)步长为1,大小为151×151的感受野和最大池化。
3)步长为1,大小为79×79的感受野和第一层之后没有池化。
所有三个网络具有几乎相同的计算成本。虽然第三个网络稍微便宜一些,但是池化层的成本是无足轻重的(在总成本的1%以内)。在每种情况下,网络都进行了训练,直到收敛,并在ImageNet ILSVRC 2012分类基准数据集的验证集上衡量其质量。结果如表所示。虽然分辨率较低的网络需要更长时间去训练,但最终结果却与较高分辨率网络的质量相当接近。
Inception V3中三种结构的Inception Module
当感受野尺寸变化时,识别性能的比较,但计算代价是不变的。
但是,如果只是单纯地按照输入分辨率减少网络尺寸,那么网络的性能就会差得多。

总结:
Inception V3网络主要有两方面的改造:一是引入了Factorization into small convolutions的思想,将一个较大的二维卷积拆成两个较小的一维卷积,比如将7*7卷积拆成1*7卷积和7*1卷积,或者将3*3卷积拆成1*3卷积核3*1卷积。一方面节约了大量参数,加快运算并减轻过拟合,同时增加了一层非线性扩展模型表达能力。论文中指出,这种非对称的卷积结构拆分,其结果比对称地拆分为几个相同的小卷积核效果更明显,可以处理更多、更丰富的空间特征,增加特征多样性。
另一方面,Inception V3优化了Inception Module的结构,现在Inception Module有35*35、17*17和8*8三种不同结构。这些Inception Module只在网络的后部出现,前面还是普通的卷积层。并且Inception V3除了在Inception Module中使用分支,还在分支中使用了分支(8*8的结构中,可以说是Network In Network In Network。


注:博众家之所长,集群英之荟萃。

猜你喜欢

转载自blog.csdn.net/u013841196/article/details/80659132
今日推荐