Inception v4&Inception-ResNet
Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning
主要工作是把inception模型加宽加深,resnet版本的加残差
文章点到不用残差连接也能训练深模型(Inception-v4)
残差连接优化:
用1*1卷积降维减少计算量
Inception v4
架构方面比v3模块数量更多,替换了abc模块,修改了stem
Inception-Resnet-v1&v2
inception-resnet-v2和inceptionv4的stem一样(上图)v1不同。V代表不适用padding,无V代表same padding,输入输出大小一样。
详细的每个版本的模块见下文
Inception v4模块
比v3模块数量更多,A、B模块里pooling和1* 1卷积换了位置,C模块拆了3* 3卷积为不对称卷积。
Inception-Resnet-v1模块
和跳跃连接相加之前1*1卷积没有激活函数,作用是升维
BN只在没有inception的地方用,因为之后多模型融合每个BN都要保存mean和var,当时的显存带不动
相比v4加了残差连接,A模块删了pooling,B模块删了pooling和一个大感受野支路,C模块删了pooling和大感受野支路。
Inception-Resnet-v2模块
和跳跃连接相加之前1*1卷积没有激活函数,作用是升维
BN只在没有inception的地方用,因为之后多模型融合每个BN都要保存mean和var,当时的显存带不动
1*1卷积数量比Inception-Resnet-v1高,结构都一样。
下采样a模块
Inception-Resnet-v1&v2,Inception-v4一样的下采样模块,和Inception-v3一样
下采样b模块
Inception-v4 only:
inception-resnet-v1
inception-resnet-v2
这里我怀疑这里不是同一个人写的,前文指明了这个就是v2的下采样b模块但图注释写的是v1?
stem1
inception-resnet-v2和inceptionv4的stem一样(见上文inceptionv4架构图右侧),新的stem加了并行的支路。
stem2
就是inceptionv3的stem (一模一样维度都不带变的)
Scaling of the Residuals
原因:
卷积核数量超过1000出现不稳定现象在早期训练时网络就g了,即在最后avg pooling之前,训练一小会,最后的feature map里有很多0
解决:
跳跃连接之前对残差分支的结果乘以很小的系数0.1-0.3,越深乘的数越小(缓慢变化?)
Training
复制体数量变成20,momentum0.9,其他和v3一模一样
Experiments
- Top-5错误率v3和inception-resnet-v1差不多,但是inception-resnet-v1收敛更快。V4和inception-resnet-v2均比前面两个好,top5错误率也差不多,但是resnet版的收敛更快。
- TOP1错误率I-R-v2比v4稍微好一点。
- 10/12裁剪-单模型:top1v4v2一样最好18.7%,v2top5低0.1%为4.1%,均比resnet151好
- 144裁剪:top1v4v2一样最好17.8%,v2top5低0.1%为3.7%,均比resnet151好,说明114更能提高模型表现
下面是模型融合的实验: