Inception-v3、v4

经典分类网络(传送门):目录索引LeNetAlexNetVGGResNetInceptionDenseNetSeNet

相关文章:Inception-v1Inception-v2

1、Inception总览

Inception v1网络多尺度特征利用,增加网络宽度。将1x1、3x3、5x5的conv和3x3的pooling,stack在一起,一方面增加了网络的width,另一方面增加了网络对尺度的适应性;

Inception v2在v1的基础上,一方面了加入了BN层,另外一方面学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算

Inception v3一个最重要的是改进卷积分解(Factorization),将7x7分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),这样的好处,既可以加速计算(多余的计算能力可以用来加深网络),又可以将1个conv拆成2个conv,使得网络深度进一步增加,增加了网络的非线性,还有值得注意的地方是网络输入从224x224变为了299x299,更加精细设计了Inception的模块(v4认为这样设计过于精细,决定抛弃之前那个设计原则,对不同尺度的网格都采用统一的inception模块);

Inception v4研究了Inception模块结合Residual Connection。发现ResNet的结构可以极大地加速训练,同时性能也有提升,得到一个Inception-ResNet v2网络,同时还设计了一个更深更优化的Inception v4模型,能达到与Inception-ResNet v2相媲美的性能。

Paper列表及指标:

[v1] Going Deeper with Convolutions, 6.67% test error, http://arxiv.org/abs/1409.4842

[v2] Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift, 4.8% test error, http://arxiv.org/abs/1502.03167

[v3] Rethinking the Inception Architecture for Computer Vision, 3.5% test error,  http://arxiv.org/abs/1512.00567

[v4] Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning, 3.08% test error, http://arxiv.org/abs/1602.07261

2、Inception v3

2.1、Inception结构的重新思考

在这里,探索扩展网络的方法,通过分解卷积核有效的正则化来尽可能有效的利用额外的计算。对卷积分解带来的参数下降进行计算、分析

2.2、对大的卷积核尺寸降维

使用全卷积,每个权值对应一个位置。通过适当的因式分解,可以减少更多参数。

1)分解成更小的卷积核

大卷积核计算比较复杂,把一个5*5的卷积核替换成两个3*3的卷积核级联,参数下降了1-(3*3+3*3)/(5*5)=28%,且感受野不变。

 

2)空间多尺度分解为非对称卷积

n*1的卷积核效果比2*2效果更好。如3*1卷积核连接1*3卷积核的感受野等价于3*3卷积核。

参数减少1-(3*1+1*3)/(3*3)=0.34。理论上,一个n*n卷积核可以分解成1*n卷积核与n*1卷积核级联,随着卷积核大小增加,参数减少越明显。

2.3、网络结构

有效的减少网格大小:

2.4、辅助监督loss的使用

使用辅助监督loss,使top1准确率提高0.4%。

3、Inception v4

Inception v4研究了Inception模块结合Residual Connection。在该论文中,姑且将ResNet的核心模块称为residual connections,实验结果表明,residual connections可以提高Inception网络的准确率,并且不会提高计算量。这似乎是理所当然的。采用3个带有residual connection的Inception模型和1个Inception v4模型,ImageNet上的top 5错误率已经可以刷到3.08%。

本文认为residual connection并不是训练very deep network的必要条件,但可以显著的加快训练的速度。Inception-v4模型设计的可以更简洁,计算量也更小。具体的模型如下图:

其中的Inception-A模块是这样的:

接下来将介绍重头戏,Inception-ResNet-A,其中的一个典型模块是这样的:

其中的+就是residual connection了。通过20个类似的模块组合,Inception-ResNet构建如下:

基于Inception-v3和Inception-v4,文中分别得到了Inception-ResNet-v1和Inception-ResNet-v2两个模型。另外,文中还提到当卷积核超过1000个的大网络训练时,将残差(residuals)缩小有助于训练的稳定性。这个做法同原始ResNet论文中的two-phase training的效果类似。

实验结果:

关于减少显存:

在Inception-ResNet结构中,只在传统层的上面使用BN层,而不在合并层上使用BN,虽然处处使用BN是有好处,不过更希望能够将一个完整的组件放入单独的GPU中。因为具有大量激活单元的层会占用过多的显存,所以希望这些地方丢弃BN,从而总体增加Inception模块的数量。使得不需要去解决计算资源和模块什么的权衡问题。

上一篇:Inception-v2,下一篇:DenseNet,传送门:分类网络目录索引


版权声明:本文为weixin_34910922原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。