GoogLeNet论文笔记

Going Deeper with Convolutions

CVPR2015

Christian Szegedy, Wei Liu, Yangqing Jia

(不增加计算负载的情况下实现更大的网络)

0. 概述

文章发表之前,那时候大多数提升深度网络性能的方法是增大网络的规模(深度和宽度),而不是通过新的思想、算法和改善网络结构。这样的方法会有两个缺点:

  1. 更大的规模意味着更多的参数,意味着容易增加网络的过拟合,特别是训练集的标签数据有限的情况下;
  2. 计算资源显著增加,在网络的后面一些层中会出现计算量爆炸的问题。

那么作者提出了一个方法来解决这个问题:引进稀疏连接的结构来替代全连接的结构

实现稀疏连接有两种方法:

  • 利用卷积的空间上的稀疏性,即应该是只对输入图像的某一部分patch进行卷积,而不是对整个图像进行卷积
  • 在特征维度使用随机的稀疏连接。
    • 这是通过Inception这个结构实现的,我理解是在多个尺寸上进行卷积再汇集起来,多个尺寸的卷积可以把相关性强的特征聚集到一起,再最后汇集连接,(这也是Hebiian原理),实现特征维度的稀疏连接
    • 此外,使用了一系列不同尺寸的卷积核来处理多尺度问题,是受灵长类视觉皮层神经科学模型的启发,也遵循了一种直觉。

因此,基于Hebbian原理和多尺度处理,作者提出了Inception这个结构,该结构通过密集的、容易获得的组件覆盖了上述的最优局部稀疏连接。

而整体的GoogLeNet网络是对Inception模块的堆叠,并且为了能有效地进行梯度的反向传播,还在中间层引入了辅助分类器。

文章的最后把网络应用在分类和检测两个问题中,通过实验对网络的性能进行了评估。

1. Inception结构

作者提出Inception结构的主要思想是如何让已有的稠密组件逼近与覆盖卷积视觉网络中的最佳局部稀疏结构

文章基于Hebbian原理和多尺度处理(这种多尺度的处理也是遵循一种视觉信息应该在不同尺度上处理并汇总的直觉),对输入做了4个分支,通过不同尺度的卷积或池化,将特征聚集成具有高相关性的单元组,最后汇总串联成单个输出向量形成下一阶段的输入。 

GoogLeNet论文笔记

如上图所示,Inception的结构限制在1x1、3x3、5x5的卷积之上,这主要是基于便捷性,另外作者认为pooling也能起到提取特征的作用,所以有一个分支使用了max pooling。

然而,这只是最初的设计,这样的结构会出现一个很大的问题——计算量爆炸,我的理解是随着层数的加深,filter数量的增加,再加上池化操作,5x5的filter计算开销非常大,另外,池化层输出与卷积层输出的合并增加了输出值的数量,就造成计算量爆炸的后果,使得整个网络非常低效。

因此作者在这之上做了一些改进之后提出了第二种设计,我认为基本思想大概就是使用1x1卷积实现降维

GoogLeNet论文笔记

可以看到,作者在昂贵的3x3和5x5之前使用了1x1卷积来降维,大大降低了计算复杂度。

1x1卷积还有另外一个作用——提取更丰富特征,我觉得大概可以这样理解,该结构每个卷积后面都跟着非线性**函数,将两个卷积串联,就能组合出更多的非线性特征

那么,有了上面的这种结构形式,就可以实现显著增加每个阶段的单元数量而不会在后面阶段出现计算量爆炸的问题,即在不增加计算负载的条件下实现了更大的网络

2. 整体的GoogLeNet结构

GoogLeNet的整体网络包含了以下特点:

  1. 网络是由Inception模块堆叠而成,包含22个带参数的层;
  2. 所有卷积都使用了修正线性单元(ReLU);
  3. 由于其中间节点的分类效果也很好,在中间层添加了辅助分类器,并按一定的权重加到最终分类结果中,这是提供正则化的同时缓解了网络较深时反向传播的梯度消失的问题

3. 实验

在本文中,作者做了两个主要的实验,即把GoogLeNet应用在分类与目标检测两个问题上。

ILSVRC 2014分类挑战赛

作者独立训练了7个版本的相同的GoogLeNet模型,仅在采样方法和随机输入图像顺序方面不同。在测试中,对图像进行了一些预处理,即使用了裁剪方法,对数据进行增强。最终提交在验证集和测试集上得到了top-5 6.67%的错误率,而当时最好的VGG仅得到了7.32%的效果。

ILSVRC 2014检测挑战赛

检测任务的标准是检测出来的bounding box与groundtruth的交叠比大于50%且是正确的,采用的评价指标是mAP,最终的效果达到了当时最好的成绩,mAP为43.9%,比2013年的结果高了一倍。

这两个实验都说明了GoogLeNet结构在分类与检测问题上的有效性,并且在不增加计算资源的条件下,实现了更宽更深的网络,而且准确率更高。

总的来说,GoogLeNet的总体思想就是围绕两个思路进行的,在不增加计算资源的前提下,一方面通过近似稀疏化结构来增加网络的宽度,另一方面通过1x1的卷积来降维,并且在中间层增加额外的辅助分类器解决网络过深的梯度消失的问题,从而实现增加网络的深度。