GoogeNet:Going Deeper with Convolutions

提出一种Inception的网络结构,该有提高神经网络的计算资源利用率,可以在计算资源固定的情况下,使网络变得更深、更广。这种结构的提出是基于赫布理论和多尺度处理直觉。其中GoogleLeNet,是Inception网络结构的一个特例。

在目标检测的前沿,最大的收获不是简单的深层、更宽的神经网络的应用,而是深层结构与经典计算机视觉的协同作用,就例如R-CNN。
算法的性能非常重要,特别是能耗与内存的使用,他们决定了该算法是否能真实应用于网络中。
论文提出Inception网络结构是一种高效的计算机视觉深度神经网络结构,是一种模块结构。

最近神经网络大致趋势是,增加网络深度,增加网络层宽度,利用dropout解决过拟合问题。 

Inception结构大量使用了1x1卷积层,主要原因是:它可以通过降维来解决计算的瓶颈,同时也可以加深网络的深度,或者是宽度。
R-CNN是当前较好的目标检测网络,它将整个问题分解成两个子问题。1、利用低层次特征,如纹理和颜色,对目标进行区域定位。2、通过CNN网络对这些位置上分类。

数学原理

神经网络性能最直观的提升方法是增加网络深度与宽度。但是这样的做法主要有两个缺点。一、参数更多,意味着容易出现过拟合。二、是占用更多的计算资源,假如网络体积很大,但是很多权重接近于0,这是没用的,完全是浪费资源。
解决上述两个缺点的方法是引入稀疏性和用稀疏连接替代全连接层。引入稀疏性是指用一个复杂的结构近似局部最优稀疏,以接近生物神经系统(这是Inception的核心)。生物上的稀疏性实质与这里讲述的优点区别。生物上的稀疏不只是是指神经元之间的稀疏连接与结构上的稀疏,更多是激发阈值引起。用稀疏连接替代全连接层则是通过卷积操作来构建稀疏性,这是当前网络常用的操作。
然而对于非均匀稀疏数据的计算效率是非常低的,这里非均匀稀疏数据是指某层神经元的输出情况,即加入经过卷积或某些特定结构后,某层的神经元输出矩阵是稀疏的,这会影响计算的效率。在稀疏矩阵中计算效率受‘查询’与‘缓存丢失’限制。

这引出中间步骤的问题:能否通过一个结构实现类似滤波器的稀疏性?更有研究表明,将稀疏的矩阵聚类为相对密集矩阵会有更佳的性能。所以这作者提出用一个复杂的结构来近似局部最优稀疏结构。
这就是论文提出Inception的根据。从论文图可以看出,Inception结构中包含一堆卷积核,卷积的连接是稀疏的。直观上说Inception结构的提出是试图通过一个复杂的结构(虽然是复杂结构,但带有稀疏性,可以看做将稀疏矩阵聚类为密集矩阵)来近视表示生物视觉系统的稀疏结构。同时被证明在定位上下文和目标检测中尤为有用。

Inception的结构考虑的是将卷积神经网络近视成一个最优的局部稀疏结构,并将输出转为密集矩阵。
论文中提及‘我们假设来自较早层的每个单元对应于输入图像的某个区域,并且这些单元被filter bank’。在较低层(接近输入层),相关单元将关注局部区域的信息。之后这些局部的信息又可以通过1x1的卷积和传递到下一层。同时我们也可以通过使用更大的卷积来减少cluters(应该是卷积后输出矩阵的大小)。
为了避免patch-alignment问题,Inception结构采用的卷积核尺寸限制在1x1,3x3和5x5,经过上述卷积核,所有输出将会叠加到一个矩阵上。同时,pooling结构是当前卷积网络成功的关键,所以在增加一个并行的pooling结够。
论文中同时提出了,随着Inception结构的叠加,他们的相关输出统计会发生变化,在层次较深的地方,捕获到的更抽象特征,他们的空间集中度会降低,所以要采用更大的卷积核,所以建议在高层次中增加使用3x3,5x5的卷积核。
上面Inception结构存在一个重要的问题—‘计算量’,在深层的卷积网络中,适度数量的5x5卷积操作是被禁止的。一旦加入了pooling操作,这个问题就尤为突出。将pooling与卷积结构合并输出,将会大大增加输出数量。
为了解决这个问题,提出‘降维’的想法。论文中提出使用1x1的卷积核进行降维。1x1的卷积核不仅可以降维,同时还有修正线性特性。

 

不过这虽然稀疏了,但输入到输出的几个阶段里还是会计算爆炸。想到要降维,降维的话就使用1x1卷积,还有relu激活。

Inception网络是指由Inception模块堆积而成的网络,偶尔在Inception模块之间使用步长为2的max-pooling对网络进行采用。由于技术原因,在高层次中使用Inception模块,在底层仍使用传统的卷积网络效果更好。
这个结构一个有用的地方是:他可以显著的增加每个阶段的神经元数量,但又不会造成下个阶段非常大的计算复杂度。他是通过在大型卷积前使用1x1卷积核进行降维实现。
此外,该设计遵循的实际直觉是,视觉信息应该在不同的尺度上进行处理,然后进行聚类,以便下一阶段能够同时从不同的尺度中提取特征。
因为网络比较深,考虑到梯度反向传播的问题,在中间层增加的辅助分类器,在训练阶段,辅助分类器的误差以0.3的权重加到主网络的误差上面。在测试时候去掉辅助分类器。

我们的结果证明可以用易于获得的密集结构来逼近预期的最优稀疏结构,以此来提升计算机视觉神经网络的性能。这种方法的主要优点是,与较浅和较窄的结构相比,在计算需求略有增加的情况下,能显著提升网络的性能。我们的对象检测工作很有竞争力,尽管没有使用上下文,也没有执行边框回归,这表明了Inception体系结构的优势。未来的工作应该要创建更稀疏更精细的结构,同时将Inception用于更多的领域。

原文地址:https://www.cnblogs.com/ziwh666/p/12481845.html