Inception-v1 Going Deeper with Convolutions

本文用于记录自己的学习过程,以及以前重点总结,若有错误,希望指出。

对卷积更深入的认识

0.摘要部分:

Inception结构的主要特点在网络内部提高计算机资源的利用率。

在增加网络宽度和深度的同时保持网络的预计的计算资源消耗不变,即控制运算成本

为了优化结构,架构是基于Hebbian principle 和multi-scale processing的。

GoogleNet 中运用了这个结构。

 

Inception是什么?为什么要研究Inception结构?

Inception是一种深层卷积神经网络结构。

主流的网络结构突破大致是网络更深(层数),但是纯粹的增大网络的缺点:1.参数太多,容易过拟合,若训练数据集有限;2.网络越大计算复杂度越大,难以应用;3.网络越深,梯度越往后穿越容易消失(梯度弥散),难以优化模型。Inception就是在这样的情况下应运而生。

 

Hebbian principle

对于一个稀疏网络(卷积层是一个稀疏连接),我们可以通过分析某些激活值得相关性,将相关度高的神经元聚合,从而得到一个稀疏表示。精确表达就是如果两个神经元常常同时产生动作电位,或者说同时激动(fire),这两个神经元之间的连接就会变强,反之则变弱

 

multi-scale processing(多尺度处理):

图往往是不能确定大小的(这个大小,也可以理解为相同大小时候,图像的模糊程度),需要做的就是在图像不同大小时,算法都能有效的提出相同的关键点。

为了保证对不同尺度的图像,都能检测出相同特征,使用了一系列不同大小的Gabor滤波器。

 

1.介绍部分:

GoogLeNet模型的参数量只是两年前该项赛事的冠军Krizhevsky参数量的1/12,大大降低了网络的复杂度,甚至还达到了比Krizhevsky更高的精度。

目标检测的最大收获是深度架构和经典计算机视觉的协同运用而不是越来越大的神经网络的简单应用。

另一个值得注意的因素是,随着移动和嵌入式计算的不断发展,我们算法的效率——尤其是它们的能力和内存使用——变得越来越重要。本文的深度结构设计考虑包括上面的两个因素,而不是仅仅关注精度。

模型设计时保持15亿次的乘法-加法计算的计算成本,是为了模型不是仅仅用于学术研究,还能以合理的成本在现实中得到应用。

在文中的例子中,deep这个词有两种不同的含义:首先,从某种意义上讲,我们以Inception模块的形式引入了一种新的组织层次,同时也从更直接的意义上增加了网络的深度。

 

2.相关工作

         从LeNet-5开始,卷积神经网络通常有一个标准的结构就是,在堆叠卷积层(选择性加对比度归一化和池化)后面跟着一个或多个全连接层。这种设计的变体普遍存在,且在MNIST,CIFAR和很多图像分类挑战中取得了迄今为止最好的成绩。对于图片大数据集,最近的趋势是增加层数和扩大每一层的大小,然后运用dropout正则化项去解决过拟合问题。

         尽管担心最大池化会导致精确地空间信息的丢失,但卷积神经网络结构还是被成功的运用于定位,目标检测和人体姿态估计上。

         受到灵长类动物大脑皮层视觉神经科学模型的启发,Serre等人使用一系列不同大小固定大小的Gabor滤波器处理多个不同的尺度。使用相同的策略,不同的是,Inception结构中所有的滤波器都要这样学习。GoogLeNet是一个22层的深度模型,重复使用了很多次Inception结构。

         在我们的结构中用到了很多类似NIN模型加入1*1 卷积层(即NIN模型中MLPconv中的全连接层)的方法,增加这样的卷积层,有两个目的:1.用来降低维度,消除计算瓶颈。2.在对性能不产生严重影响的情况下,增加网络的宽度和深度。

       R-CNN将整个目标检测问题分为2个子问题:

  1. 利用低阶特征(颜色、纹理)以分类无关的方式生成对象位置建议
  2. 在建议的位置进行识别对象类型

采用了类似的方法,但都进行了改进,例如对于更高的目标边界框召回使用多盒[5]预测,并融合了更好的边界框候选区域分类方法。

 

NIN模型中的MLPconv(Network-in-Network的MLPconv):

上图为一层MLPconv,可以把它分为3层,假设步长为1

输入(大小2*4*4,4个2*2的卷积核)第一层就是卷积层,进行卷积操作,得到大小为4*3*3的输出

第一层的输出(大小4*3*3,3个1*1的卷积核)第二层是一个MLP,全连接,可以看成卷积核大小为1*1的卷积操作,得到3*3*3的输出

第二层的输出(大小3*3*3,2个1*1的卷积核)第三层和第二层一样,也为MLP层

 

3.动机和高层次的考虑

         改进深度神经网络性能最直接的方式是增加它们的大小,这包括增加它的深度-神经网络的层数-以及它的宽度:每一层单位的数量。这是一种简单且安全的训练高质量模型的方法,特别是在有大量标记训练数据的情况下。这样的解决方案有两个缺点

1.更大尺寸的网络意味着更多参数,这会使得扩大的网络更容易过拟合,特别是训练集中标记的例子数量有限的情况下。

2. 计算资源的使用量急剧增加。由于计算资源的预算是有限的,我们要优先分配有效的方法,而不是随意增加规模。

解决这两个问题的根本方法是引入稀疏性,用稀疏的全连接层替换完全连接层(甚至是卷积层)。

除了模拟生物系统之外,由于Arora等人开创性的工作,这还将具有更坚实的理论基础。他们的主要结果是:如果数据集的概率分布可以用一个大型稀疏的深度神经网络来表示,那么最优的网络拓扑结构可以通过分析前一层激活的相关统计量和聚类高度相关的神经元来一层层构建。

不幸的是如今计算基础设施在非均匀稀疏数据结构上的数值计算效率非常低,即使算术运算的数量减少了100倍,查找和缓存丢失的开销还是占主导地位: 切换到稀疏矩阵可能也不能改善。

目前大多数面向视觉的机器学习系统仅仅通过使用卷积来利用空间域上的稀疏性。然而卷积被实现为对上一层块的密集连接的集合卷积神经网络传统上在特征维度上使用随机和稀疏的连接表,这是为了打破对称性,提高学习能力,为了进一步优化并行计算,论文[9]趋向于改回全连接

这就提出了下一个中间步骤是否有希望的问题:一种架构,使得该架构不仅能利用滤波器的稀疏性,但能通过稠密的矩阵计算运用我们的硬件设备。

Inception被证明在定位上下文和目标检测中尤其有用。有趣的是,虽然大多数最初的架构选择已被质疑并分离开进行全面测试,但结果证明它们是局部最优的。

 

4.架构细节

Inception架构的主要想法是考虑怎样近似卷积视觉网络的最优稀疏结构并用容易获得的密集组件进行覆盖。网络以卷积构建块为基础,我们需要做的就是在找到最优的局部构造,然后再网络中重复使用它。在较低层,相关的单元都集中在局部区域,我们下一层可以用1*1的卷积层去覆盖他们。我们可以预期,将会有相对较少的在更大空间上分散的聚类,可以被更大块的卷积所覆盖,在越来越大的区域上,块的数量会下降。为避免 patch-alignment 问题,Inception结构的滤波器尺寸,限制与1*1,3*3,5*5(方便而非必需,这些不同大小的滤波器是用来在不同的尺度上进行特征提取的)。建议在每个阶段都增加一个并行的池化。由于更高的抽象特征被更高的层捕获,它们的空间集中度预计会下降。随着转移到更到层3*3和5*5的卷积会逐步增加。

         在大量滤波器的卷积层上,即使是少量的5*5卷积也是很耗资源的,这个问题在添加池化之后更加明显。池化层和卷积层输出的合并必然会导致输出的不断增加。虽然这种体系结构可能会覆盖最优的稀疏结构,但它的效率非常低,导致计算能力在几个阶段内崩溃。

         改进:在计算量很大的地方进行降维。也就是在进行3*3和5*5卷积之前进行1*1的卷积计算来降维,除此之外,还可以用来修正线性激活。

         出于技术原因(训练过程中的内存效率),在高层开始使用Inception模块而在低层仍保持传统的卷积形式是更优的。

         这个架构有一个好的地方是,可以显著增加每个阶段的单元数量,而不需要担心后面的计算资源消耗大。

 

5.GoogLeNet

      表格数据计算参考:https://blog.csdn.net/qq_22749699/article/details/78526147

         我们发现模型最高层从全连接层变为平均池化,提高了大约top-1 %0.6的准确率,然而即使在去除了全连接层之后,Dropout的使用还是必不可少的。

给定深度相对较大的网络,有效的反向梯度传播通过所有层是一个问题。浅层网络在这一任务上的强大性能表明,网络中间层产生的特征应该具有很强的区分性。通过在中间层添加辅助分类器,可以在分类器的较低阶段进行识别,这被认为在提供正则化的同时,应对梯度消失的问题。这些分类器采用较小卷积网络的形式,放置在Inception (4a)和Inception (4b)模块的输出之上。在训练过程中,他们的损失会增加到网络的总损失中,辅助分类器的损失权重是0.3,之后这些辅助网络将被丢弃。实验表明,辅助网络影响较小(0.5%),只需要一个网络就能达到相似水平。

辅助网络结构:

1. 一个滤波器大小为5×5,步长为3的平均池化层,得到(4a)阶段的输出为4×4×512,(4d)的输出为4×4×528。

2. 具有128个滤波器的1×1卷积,用于降维和修正线性激活。

3.具有1024个单元和修正线性激活功能的全连接层

4.一个dropout层,dropout概率为70%

5.一个带softmax损失的线性分类层,分类与预测的分类相同。在训练完成后,预测过程该层失效。

 

6.训练方法

利用适度的模型和数据并行度,使用DistBelief分布式机器学习系统训练GoogLeNet网络。虽然我们只使用了基于CPU的实现,但粗略的估计表明,GoogLeNet可以在一周内通过使用少量高端GPU进行收敛训练,主要限制是内存的使用。

我们的训练使用了异步随机梯度下降动量为0.9固定的学习率计划(每8次遍历降低4%)。用Polyak averaging 来创建最优模型。

Andrew Howard[8]的photometric distortions有助于对抗训练数据的成像条件的过度拟合。

 

7. ILSVRC 2014分类挑战赛设置和结果

 

8. ILSVRC 2014检测挑战赛设置和结果

 

9.总结

         提供了一个可靠的证据,用密集构建块近似估计最优稀疏结构是一种改进计算机视觉神经网络的可行方法。

         优点:与较浅和较窄的体系结构相比,在适当增加计算需求的情况下,可以显著提高质量。

         目标检测工作很有竞争力,尽管没有上下文,也没有执行边框回归,这进一步证明了Inception架构的优势。对于分类和检测,在相同的广度和深度的情况下,没有Inception结构的网络要和具有Inception的结构的网络相比,达到相同的效果将会花费更多资源。证明迁移到稀疏的体系结构是有用的。可以扩展到别的领域。

 

借助的中文翻译:https://blog.csdn.net/Quincuntial/article/details/76457409?locationNum=7&fps=1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值