深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3

Rethinking the Inception Architecture for Computer Vision

简述:

虽然增加的模型大小和计算成本能够提高网络的性能(如:VGG等),但其计算量过大,无法在对内存或计算资源有限制的场合处理数据。GoogLeNet 在设计之初就考虑了内存和计算资源,本文作者通过适当的分解卷积和积极的正则化来尽可能地有效利用增加的计算。实验证明,设计的网络模型取得了良好的实验效果(3.5% top-5和17.3% top-1)。

问题Or相关工作:

对比AlexNet 和 VGG ,GoogLeNet参数更少,更适合于大数据的处理。由于 Inception 架构的复杂性,使其网络模型难以改变。原来论文也没有清晰的描述其设计准则。本文主要提出了一些设计原理和优化思路。

General Design Principles:

  1. 避免特征表示瓶颈,尤其是在网络的前面。怎么知道有瓶颈?前馈网络可以通过一个无环图来表示,该图定义的是从输入层到分类器或回归器的信息流动。图论有一个cut的概念,对于分开输入输出的一个cut,我们可以评估有多少信息经过这个cut。我们应避免严重压缩导致的瓶颈。
  2. 更高维度的表示在网络中更容易局部处理。在卷积网络中逐步增加非线性激活响应可以解耦合更多的特征,那么网络就会训练的更快。
  3. 空间聚合可以在较低维度嵌入上完成,而不会在表示能力上造成许多或任何损失。
  4. 平衡网络的宽度和深度。

模型:

GoogLeNet 网络优异的性能主要源于大量使用降维处理。这种降维处理可以看做通过分解卷积来加快计算速度的手段。在一个计算机视觉网络中,相邻激活响应的输出是高度相关的,所以在聚合前降低这些激活影响数目不会降低局部表示能力。

分解为更小的卷积:

大尺寸滤波器的卷积(如55,77)引入的计算量很大。例如一个 55 的卷积比一个33卷积滤波器多25/9=2.78倍计算量。受到NIN的启发,用两层3×3卷积来替换5×5卷积(比较图4和5)。第一层是3×3卷积,第二层是在第一层的3×3输出网格之上的一个全连接层(如下图)。
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第1张图片
即原始GoogLeNet网络结构(上)和现在网络结构(下),如下:
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第2张图片深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第3张图片
上面这个分解大致可以降低(9+9)/25=28%的计算量。这么做会不会降低网络的表达能力了?作者实验证明这么做不会引入太大问题。两层都用非线性激活响应要好于第一层使用线性响应。
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第4张图片

空间分解为不对称卷积(n×1,1×n代替n×n):

是否应该把它们分解成更小的,例如2×2的卷积。然而,通过使用非对称卷积,可以做出甚至比2×2更好的效果,即n×1。例如使用3×1卷积后接一个1×3卷积,相当于以与3×3卷积相同的感受野滑动两层网络(如下图)。
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第5张图片
这一步可以节省 33%的计算量。
理论上我们可以将任意一个 nn滤波器分解为 n1 和 1n 两个滤波器。但是当n变大,节省的计算量越来越少。我们发现在网络前面基层使用这种分解效果不太好。对于中等尺寸的特征图,效果很好。对于nn的特征图,n一般从12到20。对于这种尺寸,71和17卷积得到的效果很好。

辅助分类器:

引入了辅助分类器,其目的是从而加快收敛。辅助分类器其实起着着regularizer的作用。当辅助分类器使用了batch-normalized或dropout时,主分类器效果会更好。

有效的网格尺寸减少:

通常卷积网络都会使用某种池化操作来降低特征图的尺寸。为了避免表示能力瓶颈,在进行最大或平均池化之前我们,我们先对网络滤波器个激活响应维数进行扩大。例如,对于 d×d 尺寸特征图,有 k 个滤波器,如果我们希望达到
d/2 * d/2 尺寸 2k个滤波器这个结果,我们首先进行步长为1的2k个滤波器卷积,然后进行额外的尺寸操作。那么总体计算量就是 2ddkk。如果我们将池化和卷积交换一下顺序,那么总计算量就是 2(dd/4)kk。这样就降低四分之一的计算量。但是这么做导致表示瓶颈,因为总体表示维度降低了。于是我们换了一种方法来更多的降低计算量,还避免了表示瓶颈。我们使用两个并行的步长为2的模块, P 和 C。P是一个池化层,然后将两个模型的响应组合到一起。如下图所示:
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第6张图片深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第7张图片

Inception-v2:

深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第8张图片
把7x7卷积替换为3个3x3卷积。包含3个Inception部分。第一部分是35x35x288,使用了2个3x3卷积代替了传统的5x5;第二部分减小了feature map,增多了filters,为17x17x768,使用了nx1->1xn结构;第三部分增多了filter,使用了卷积池化并行结构。网络有42层,但是计算量只有GoogLeNet的2.5倍。

实验:

对于低分辨有图像,使用“高分辨率”receptive field。简单的办法是减小前2个卷积层的stride,去掉第一个pooling层。做了三个对比实验,实验结果:
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第9张图片

实验结果对比:

深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第10张图片
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第11张图片
深度学习之经典神经网络框架详解(七):GoogLeNet:Inception-v3_第12张图片

结论:

  1. 提供了几个扩大规模的设计原则卷积网络,并在其背景下进行了研究初始架构。这个指导可以导致很高的性能视觉网络有一个相对较小的计算成本比较简单,更单一架构。参数有效减小,计算量降低。
  2. 表明,输入分辨率79×79仍可以达到高达高质量结果。这可能有助于检测较小物体的系统。
  3. 较低参数计数和附加正则化与批量归一化辅助分类器和标签平滑的组合允许在相对适度的训练集上训练高质量网络。

你可能感兴趣的:(经典神经网络)