MobileNet V2

版权声明:本文为博主原创文章,未经博主允许不得转载

论文:Inverted Residuals and Linear Bottlenecks Mobile Networks for Classification, Detection and Segmentation 

链接:https://arxiv.org/abs/1801.04381 

Tensorflow源码:https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet

2018CVPR的文章,提出的MobileNet V2是对MobileNetV1的改进。

 


创新点:

1.Inverted resdual block。传统的Residual block是先经过一个1*1的Conv layer,把feature map的通道数缩减下来,减少3*3Conv layer的计算量,最后在经过1*1扩增并和输入相加。

而现在我们中间的3*3卷积变Depthwise,计算量急剧缩减,提升通道数会使得结果更好,固先通过1*1卷积提升通道数,在Depthwise 3*3Conv,最后经过1*1卷积降低维度并和输入相加(如果dwise 的stride不为1,不采用shoutcut).

2.Linear Bottlenecks。去掉了Elitwise sum之前1*1conv的非线性激活层(relu6,以便于移动端设备低精度的时候),减少了对特征的破环。MobileNet V1是很早之前的工作,一直没有人占坑,google就挂了出去,所以并没有去掉Relu。Xception验证了Depthwise卷积后面加Relu效果会变差,作者猜想可能是Depthwise的输出太浅容易带来信息丢失



论文解析:

Related Work:

先是提到了 manual architecture search 和improvements in training algorithms,接着提到parmaeter optimization、various methods of network pruning、connectivity learning(稀疏连接),最后又提到将遗传算法和强化学习等优化算法引入结构搜素(非常复杂)。

 

Preliminaries, discussion and intuition:

Depthwise Separable Convolution:

 

Linear Bottlenecks:这部分有点难懂,如有错误请指正。

In other words, when we look at all individual d-channel pixels of a deep convolutional layer, the information
encoded in those values actually lie in some manifold,which in turn is embeddable into a low-dimensional subspace

每个通道的值编码着manifold,感兴趣的manifold可以压缩到低维空间。

 

MobileNetV1通过Width multiplier parameter把感兴趣的manifold压缩到低维空间,也就是说压缩了特征信息,然而此时加上非线性激活层,那么就会存在丢失信息。

 

Relu会破环信息,如果层数足够的话,信息可能会保留在其他通道里,我的理解就是层数多的话,信息会冗余,那么Relu破坏的信息可能存在于其他channel。如果信息可以压缩到低维中,Relu在保留信息的同时引入所需的复杂(非线性)。

作者总结了两点:

1. If the manifold of interest remains non-zero volume after ReLU transformation, it corresponds to a linear transformation.

2. ReLU is capable of preserving complete information about the input manifold, but only if the input manifold lies in a low-dimensional subspace of the input space.

如果感兴趣的manifold经过ReLU变换后仍保持非零,则它对应于一个线性变换。

ReLU层可以保留input manifold的信息,但是只有当input manifold是输入空间的一个低维子空间时才有效。这点我不是特别明白,我理解成降维的时候,input manifold如果可以贯穿在低维空间中,那么Relu可能会保留感兴趣的manifold。经验来说,线性操作可以防止非线性破坏太多的信息。

 

Inverted residuals:

大致意思MobileNet V2通过提高Inputdim缓解了dwise后面接非线性激活层带来的影响。

 

 

shoutcut使得网络更深了。

 

Memory efficient inference:

这一块我不是特别明白,就简单讲下,有错误请指正。

看了知乎的一个大神的解释,假设我们把旁路的多个卷积on the fly去做, 那么读写的带宽需求是:eltwise加的时候主路feature读, 以及eltwise 输出写。 v2的特点是eltwise部分channel少, 所以省带宽。

 

 

 

t-way split:看了源码,理解就是split,然后在concat,我认为add比较合适(借鉴ResNeXt)。假设我最后层的通道数为c,c比较小,所以split的各个拓扑在最后输出的时候都为c,那么add 既可以用到所有层的信息,也有了split的效果,高效利用了内存。按照源码,最后各个拓扑输出c/t,t个拓扑concat输出c,这样就会存在输出只跟某部分输入有关,信息交流就差了很多,文章初衷可能是提速。那么为什么传统的ResNet效果对带宽不友好呢?个人认为即使旁路的计算量很小,但eltwise+ 的特征很大,只有bottleneck这块带宽,所以带宽上就比较吃紧。

 


论文总结:

Inverted resdual block

MobileNet V1主要是引入了depthwise separable convolution来实现spatial和channel的解耦,减少了参数量以及运算量,而在网络结构上采用了vgg堆叠的方式。MobileNet V2采用了Resnet,DenseNet等网络结构,复用图像特征,使用concat/eltwise等操作进行融合,提高网络的性价比。

                                       

Depthwise conv确确实实大大降低了计算量,但同时引来了特征退化问题。Group加上Relu的影响,使得神经元很容易输出为0(无法恢复),在文章中,google也解释了特征/神经元退化问题,对特征可视化。

          

Inverted residual block的优点:

复用特征。

缓解了特征退化问题:通过1*1升维提高Inputdim来缓解特征的退化情况。MobileNet v1中提到用width multiplier来缩减模型通道的缩减,这样特征信息更加集中在缩减后的特征通道,经过Relu会有更大的损失,MobileNet V2就是通过提高Inputdim缓解了dwise后面接非线性激活层带来的影响。论文中提到的一个合理解释是:对于Dwise conv,其特征是单channle的,所以非线性有害,可能造成了信息丢失。

提高了网络效率:这一点我没没太看懂。具体就看上面的吧。

 

左边图(a)是关于non-linearity的效果(蓝色曲线),证明了Linear Bottlenecks的有效性.右边图(b)是关于inverted residual(蓝色曲线)和传统residual(绿色曲线)的差别,证明了inverted residual的有效性.

      


MobileNet网络结构:

 

                                                 

 

其中:t表示扩张倍数,c表示输出通道,n表示重复次数,s表示步长。


实验结果:

                                               

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值