《Rethinking the Inception Architecture for Computer Vision》笔记
来源:互联网 发布:淘宝网上台湾是台湾省 编辑:程序博客网 时间:2024/04/29 15:34
- 介绍
- 通用设计原则
- 分解大的卷积核
- 分解为更小的卷积
- 空间上分解为非对称卷积
- 使用辅助分类器
- 降低特征图大小
- Inception-V2
- 通过平滑标签正则化模型
- 训练方法
- 低分辨率图像的识别
- 实验结果
介绍
深度学习在计算机视觉方面取得了很大突破。在2014ILSVRC分类比赛中中,VGG和GoogLeNet取得了优异成绩。卷积网络架构上的改进可以提升计算机视觉各类任务的性能。
VGG以很朴素的方式描述了特征,但有很大的计算量。GoogLeNet中的Inception结构设计的目的就是减少计算量和内存。GoogLeNet中只有5百万参数,是AlexNet的1/12(6千万参数),VGG参数是AlexNet的3倍多。
Inception的计算量小,性能优异。可以把它应用到对计算和显存有严格要求的一些场景中。但是Inception结构的复杂性使得网络难改进。如果只是单纯放大网络,计算量的增加带来的增益会立刻消失。GoogLeNet的论文没有描述清楚决定其多样性设计的因素,使得它难以拓展到新的用例上。如果增大Inception类型模型的容量,如果只是double滤波器组的数量,参数量和计算量将会增大4倍;在许多场景中,不允许这样设计。
下面讲解几个增大卷积网络的原则和优化方法。
通用设计原则
这些原则只是原理性的,基于实验结果。
1、避免表示瓶颈,尤其是在网络的前面。前向传播网络可以看做一个有向无环图,从输入到输出。一般来说,representation size从输入到输出特征应该缓慢减小。理论上来说,不能仅仅通过维度得到信息,因为它已经丢弃了许多重要特征例如相关结构,维度只能代表信息的粗略估计。
2、高维度特征在网络局部处理更加容易。在卷积网络中增加非线性可以解耦合特征,训练更快。
3、空间聚合可以以低纬度嵌入进行,这样不会影响representational power。例如,在进行大尺度卷积(3x3)时,在空间聚合前,先对输入进行降维,这样不会带来严重影响。我们猜测原因为:如果输出是为了空间聚合,那么临近单元的强相关性在降维过程中信息损失会很少。考虑到这些信号容易压缩,降维会加速学习过程。
4、平衡宽度和深度。增加宽度或深度都会带来性能上的提升,两者同时增加带了并行提升,但是要考虑计算资源的合理分配。
分解大的卷积核
GoogLeNet性能优异很大程度在于使用了降维。降维可以看做卷积网络的因式分解。例如1x1卷积层后跟着3x3卷积层。在网络角度看,激活层的输出是高相关的;因此在聚合前进行降维,可以得到类似的局部表示性能。
这里,考虑计算性能,我们探索其他形式的卷积因式分解。因为Inception结构是全卷积,每一个激活值对应的每一个权重,都对应一个乘法运算。因此减小计算量意味着减少参数。所以通过解耦和参数,可以加快训练。利用节省下来的计算和内存增加filter-bank大小,来提升网络性能。
分解为更小的卷积
大的卷积计算量更大,例如filter相同情况下,5x5卷积核比3x3卷积核计算量大25/9=2.78倍。5x5卷积核相比3x3卷积核有广阔“视野”,可以捕捉到更多信息,单纯减小卷积核大小会造成信息损失。是否可以通过多层网络替代5x5卷积。把5x5网络看做全卷积,每个输出是卷积核在输入上滑动;可以通过2层的3x3的全卷积网络替换。如下图:
原来的Inception结构:
使用2个3x3替换5x5后的Inception结构:
对于分解的卷积层,使用线性激活还是非线性激活,实验表明,非线性激活性能更好。
空间上分解为非对称卷积
大于3x3的卷积层,都可以分解为连续的3x3的卷积层,那么是不是可以分解为更小的卷积核呢?实际上分解为非对称的更好。例如一个3x1卷积,后面跟一个1x3卷积,相当于3x3的卷积。如下图:
两层结构计算量减少33%;而2x2卷积代替的话计算量仅仅减少11%。
理论上,nxn卷积可以通过1xn->nx1卷积代替,随着n增大,能减少更多计算量。在实践中,在网络前几层这样的分解效果并不好;但是在中等网络中,有这不错的性能(mxm大的feature map,m介于12到20)。在这等尺寸下,1x7->7x1有着非常好的卷积效果。
使用辅助分类器
GoogLeNet引入了附加分类器,其目的是想把有效梯度传递回去,从而加快训练。我们发现辅助分类器扮演着regularizer的角色;因为当辅助分类器使用了batch-normalized或dropout时,主分类器效果会更好。
降低特征图大小
pooling层用来减小feature map大小。为了避免出现representational bottleneck,在使用pooling前常常增加feature map个数。例如k个dxd的feature map,pooling后为k个
Inception-V2
我们提出Inception-V2模型。结构图下图所示:
把7x7卷积替换为3个3x3卷积。包含3个Inception部分。第一部分是35x35x288,使用了2个3x3卷积代替了传统的5x5;第二部分减小了feature map,增多了filters,为17x17x768,使用了nx1->1xn结构;第三部分增多了filter,使用了卷积池化并行结构。网络有42层,但是计算量只有GoogLeNet的2.5倍。
通过平滑标签正则化模型
输入
假设真实分布为
最小化交叉熵等价最大化似然函数。交叉熵函数对逻辑输出求导
假设
为了避免模型过于自信,引入一个独立于样本分布的变量
实验中使用均匀分布代替
训练方法
batch-size=32,epoch=100。SGD+momentum,momentum=0.9。使用RMSProp,decay=0.9,
低分辨率图像的识别
对于低分辨有图像,使用“高分辨率”receptive field。实践中:1、减小前2个卷积层的stride,2、去掉第一个pooling层。
实验结果
单模型,single crop得到的结果
- rethinking the inception architecture for computer vision
- Rethinking the Inception Architecture for Computer Vision
- Rethinking the Inception Architecture for Computer Vision 笔记
- 论文笔记 | Rethinking the Inception Architecture for Computer Vision
- 《Rethinking the Inception Architecture for Computer Vision》笔记
- Inception-v3:"Rethinking the Inception Architecture for Computer Vision"
- Inception V3(Rethinking the Inception Architecture for Computer Vision)
- READING NOTE: Rethinking the Inception Architecture for Computer Vision
- [深度学习论文笔记][Image Classification] Rethinking the Inception Architecture for Computer Vision
- 网络模型 Inception V2/V3-Rethinking the Inception Architecture for Computer Vision
- googLeNet--Inception四部曲三Rethinking the Inception Architecture for Computer Vision
- Inception系列2_Rethinking the Inception Architecture for Computer Vision
- computer vision笔记
- Flexible Models for Computer Vision
- Datasets for Computer Vision Research
- ISP Pipeline for Computer Vision
- The Middlebury Computer Vision Pages
- computer vision笔记(二)
- hibernate.hql是对类进行查询的
- 闭包 && 综合题
- Java基础(8):面向对象—抽象类和接口的区别和各自特点
- JAVA求学之路第八天(集合)
- TED如何掌控你的时间(第二天)
- 《Rethinking the Inception Architecture for Computer Vision》笔记
- 元素出现次数统计
- JS基础总结
- 【C】sizeof 和 strlen 的区别
- JAVA求学之路第九天
- Mysql添加数据时失败 Cannot add or update a child row: a foreign key constraint fails
- HDU 1724 Ellipse 【自适应Simpson积分】
- org.springframework.beans.factory.BeanDefinitionStoreException: IOException
- 初谈学习前的复习与回顾