mobilenet-v1和mobilenet-v2详解

最近efficientnet和efficientdet在分类和检测方向达到了很好的效果,他们都是根据Google之前的工作,mobilenet利用nas搜索出来的结构。之前也写过《轻量级深度学习网络概览》,里面提到过mobilenetv1和mobilenetv2的一些思想。下面基于slim mobilenet的实现版本来具体讲讲他们的结构

一、mobilenet-v1

mobilenet-v1创新部分
mobilenet-v1整体结构类似与VGG那种直通的结构,没有什么像resnet那样的残差结构,和之前大多数网络不一样的主要有两点:

  1. 采用了depthwise separable convolution来提高网络的计算速度,depthwise separate convolution包含了depthwise convolution和pointwise convolution
  2. 采用了Width Multiplier,Width Multiplier简单来说就是引入一个新的超参数来调节卷积输出的通道数从而更方便的平衡了网络的计算速度和精度。

其实文章还有引入了一个参数Resolution Multiplier ρ \rho ρ,这个参数来控制卷积层输入的分辨率大小,该参数用来减小网络的计算量,代码实现好像没有这个参数,之所以提一下是因为在efficientnet的设计中也有这个参数。

稍微再多说一嘴,depthwise convolution指的是对于输入的feature,每个通道都有一个单独对应的卷积与其进行计算。pointwise convolution可以理解为正常的conv,只是conv的大小为 1 × 1 1\times 1 1×1。正常的卷积和本文新提出的两种卷积形式如下图所示:
在这里插入图片描述

计算量对比
对于输入feature大小为 D F × D F × M D_F \times D_F\times M DF×DF×M,输出为 D F × D F × N D_F \times D_F\times N DF×DF×N的情况(其中 D F D_F DF为feature分辨率,M和N分别表示输入输出的通道数),对于大小为 D K × D K D_K\times D_K DK×DK的标准卷积的计算量为
D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F D_K \cdot D_K \cdot M\cdot N\cdot D_F\cdot D_F DKDKMNDFDF
对于大小为 D K × D K D_K\times D_K DK×DK的depthwise convolution,整个depthwise separable convolution的计算量为
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F D_K \cdot D_K \cdot M\cdot D_F\cdot D_F+M\cdot N\cdot D_F\cdot D_F DKDKMDFDF+MNDFDF

mobilenet-v1的结构如下表所示
在这里插入图片描述

需要说明的是本文的所有卷积后面都跟一个bn和relu,不管是标准卷积还是depthwise separable convolution,如下图所示,还有一个需要注意的是所有的depthwise convolution没有参加或者以较小的权重参加l2正则计算。
在这里插入图片描述

二、mobilenet-v2

首先v2还是继承了v1的思想,即仍然采用了depthwise separable convolution。
其次文章提出两点结论:

  1. 感兴趣的特征在ReLU之后保持非零,近似认为是线性变换。(这一点说明的就是为了保证信息完整,我们可以使用线性卷积代替relu这种映射)
  2. ReLU能够保持输入信息的完整性,但仅限于输入特征位于输入空间的低维子空间中。(这一点表达的是,如果不满足这种条件的特征就经过relu后就会造成信息的丢失)

通过上述两点结论,文章认为可以在v1的基础上优化卷积结构,即在depthwise separable convolution后再加一个线性卷积(就是一个标准的 1 × 1 1\times1 1×1的卷积,并且该卷积后面只跟一个bn不跟relu6),而且对于输入进relu6的特征,难免会造成一些信息的丢失,为了减少这种信息丢失,在输入relu6前,先使用expansion ratio,将特征的通道扩大,来减少特征的丢失。
简单理解就是,对于relu输出的低纬度空间,为了减少特征损耗采用线性卷积来提取特征。对于有relu的层,为了防止特征损耗太多,先将特征通道数增加。

最后参考resnet结构,也加入了shortcuts连接方式,目的是为了减缓BP时造成的梯度弥散。

最终得到的Bottleneck residual block如下所示
在这里插入图片描述

上面中的k是输入通道数,k’是输出通道数,s代表stride,t代表expansion ratio。上面省略了bn设置,其实每个卷积后面都跟了个bn。

mobilenet-v2的结构如下表所示
在这里插入图片描述

上表中,每一层重复层中,都是第一层stride为s,其它都为1.

欢迎加入Object Detection交流,群聊号码:910457072

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值