本文介绍的是著名的网络结构GoogLeNet,,目的是试图领会其中结构设计思想。
1.此网络架构的主要特点就是提升了对网络内部计算资源的利用。
2.增加了网络的深度和宽度,网络深度达到22层(不包括池化层和输入层),但没有增加计算代价。
3.参数比2012年冠军队的网络少了12倍,但是更加准确。
4.对象检测得益于深度架构和传统的计算机视觉算法(R-CNN)。
基于赫布原理和多尺度处理。
赫布原理:突触前神经元向突触后神经元的持续重复的刺激可以导致突触传递效能的增加。赫布理论有下列的特性:
1.知觉获知是在神经系统中的表征是一群而不是一个细胞,因此这是一个较为分散的表征系统。表征不同的心智活动,并不完全系于细胞的独特身分,因为一个细胞可同时参与几个细胞集团。
2.在细胞集合中,无论是组成分子或是联络通路,均有相当程度的余裕性,所以容许神经系统有部分的破坏,依然能执行所负担的功能。同时这些平行通路可容许由不同的部位到达兴奋全体的目的。
3.细胞集合的成立虽然依赖连结,但连结的成果并非使刺激直通于反应,而是在中枢建立一个有缓冲作用(使刺激的影响能盘桓较久)的回路。
4.人的大脑神经元运作的方式的确和原子内粒子的运作方式类似,人类的大脑的确是所有神经网络的总和。每个神经元本身并不重要,重要的是这些神经元怎么联合起来,联合起来可以做些什么事,这才是的细胞集合的核心。
提高网络性能最直接的方法就是增加网络的尺寸(深度和宽度)这样会带来两个问题:
图(a)是传统的多通道卷积操作,图(b)是GoogLeNet中使用的Inception模块,两者的区别在于:
第一点不同的原因是:Inception的主要思想就是如何找出最优的局部稀疏结构并将其覆盖为近似的稠密组件,这里就是将不同的局部结构组合到了一起。
第二点不同的原因是:原始的卷积是广义线性模型GLM(generalized linear model),GLM的抽象等级较低,无法很好的表达非线性特征,这种1×1的卷积操作将高相关性的节点聚集在一起。什么是高相关性节点呢?两张特征图中相同位置的节点就是相关性高的节点。假设当前层的输入大小是28×28×256,卷积核大小为1×1×256,卷积得到的输出大小为28×28×1。可以看出这种操作一方面将原来的线性模型变成了非线性模型,将高相关性节点组合到了一起,具有更强的表达能力,另一方面减少了参数个数。举个例子:
假设将Inception(4a)换成传统的3×3卷积,那么转换前后的参数个数对比如下:
3×3卷积的参数个数是512×3×3×480=2211840,Inception的参数个数是192×1×1×480 + 96×1×1×480 + 208×3×3×96 + 16×1×1×480 + 48×5×5×16 + 64×1×1×480 = 536064。Inception结构的参数个数明显比普通卷积结构的少了很多。
第三点不同体现在:卷积核与接受域对齐方式不同。图3左是普通卷积过程,其对齐方式是让卷积核的左上角和接受域的左上角对齐,这种对齐方式卷积核始终在接受域的内部,不会跑到接受域的外部。图3右是GoogLeNet使用的卷积过程,其对齐方式是让卷积核的中心和接受域的左上角对齐,这种对齐方式卷积核可能会跑到接受域的外部,此时接受域外部和卷积核重合的部分采取补0的措施。GoogLeNet卷积方式使得步长是1的卷积得到的输出大小和输入大小一致。
根据实验数据,发现神经网络的中间层也具有很强的识别能力,为了利用中间层抽象的特征,在某些中间层中添加含有多层的分类器。如下图所示,红色边框内部代表添加的辅助分类器。
第一幅图是GoogLeNet基本结构,第二幅图是添加了辅助分类器的结构。
GoogLeNet神经网络中,使用了前两节提到的Inception模块和辅助分类器,而且由于全连接网络参数多,计算量大,容易过拟合,所以GoogLeNet没有采用AlexNet(2012年ImageNet冠军队使用的网络结构,前五层是卷积层,后三层是全连接层)中的全连接结构,直接在Inception模块之后使用Average Pool和Dropout方法,不仅起到降维作用,还在一定程度上防止过拟合。
在Dropout层之前添加了一个7×7的Average Pool,一方面是降维,另一方面也是对低层特征的组合。我们希望网络在高层可以抽象出图像全局的特征,那么应该在网络的高层增加卷积核的大小或者增加池化区域的大小,GoogLeNet将这种操作放到了最后的池化过程,前面的Inception模块中卷积核大小都是固定的,而且比较小,主要是为了卷积时的计算方便。
第二幅图中蓝色部分是卷积块,每个卷积块后都会跟一个ReLU(受限线性单元)层作为激活函数(包括Inception内部的卷积块)
检测方法使用SelectiveSearch+MultiBox (Google),主要是为了获取可能含有对象的候选区域,分类方法使用上述提到的GoogLeNet神经网络。
将超像素尺寸改为原来的2倍,这样生成的候选框减少一半。此处并非严格的将超像素尺寸扩大1倍,而是在超像素合并过程中删除掉一半被合并的像素。
第一幅图是SelectiveSearch的合并效果图,第二幅图是SelectiveSearch合并算法伪代码。
假设R初始时有k个区域,合并两个区域时删除被合并的两个区域,直到R中只有k/2个区域时,执行正常的合并操作,不再删除候选区域。这样生成的候选框比原始SelectiveSearch算法生成的候选框数量少一半。
通过MultiBox和SelectiveSearch方法得到一系列的候选框,将这些候选框输入到GoogLeNet神经网络中进行分类,得到最终的结果。
检测分类的性能:
1.单个模型性能:
2. 综合性能
GoogLeNet单个模型的分类性能比Deep Insight差2个百分点,6个模型放在一起平均之后的性能比Deep Insight高了3个百分点。