MobileNet V1 V2网络及Pytorch实现

2017年Google团队提出MobileNetV1,2018年Google团队提出MobileNetV2,论文地址MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications, MobileNetV2: Inverted Residuals and Linear Bottlenecks

专注于移动端或嵌入式设备中的轻量级CNN网络,相比于传统CNN,在准确率小幅度降低的前提下大大减小模型参数与运算量。(相比VGG16准确率减少了0.9%,模型参数只有1/32)。

MobileNetV1:

网络的亮点:深度可分离卷积(Depthwise Separable Convolution)
在这里插入图片描述

图24 传统卷积

卷积核channel=输入特征矩阵channel
输出特征矩阵channel=卷积核个数
在这里插入图片描述

图25 DW卷积

卷积核channel=1
输入特征矩阵channel=卷积核个数=输出特征矩阵channel

每个卷积核只负责与输入中的一个channel进行运算
在这里插入图片描述

图26 PW卷积

在这里插入图片描述

图27 卷积参数对比

在训练过程中,Depthwise部分的卷积核容易废掉,即卷积核参数大部分为0,在MobileNetV2中会进行改善。

MobileNetV2:

网络的亮点:

Inverted Residuals倒残差结构
Linear Bottleneck
在这里插入图片描述

图28 倒残差结构

普通残差结构:1×1conv降维,3×3conv,1×1conv升维
倒残差结构:1×1conv升维,3×3DW,1×1PW降维

针对倒残差结构的最后一个1×1卷积层,使用线性激活函数而不是ReLU,因为ReLU激活函数对低维特征信息造成大量损失,而倒残差结构中间大两边小,最后一个1×1卷积后是低维的,则使用线性激活函数来替代ReLU,来避免信息损失。
在这里插入图片描述

图29 Bottleneck residual block

在这里插入图片描述

图30 MobileNetV2网络结构

其中,t是图29中的扩展因子,c是输出特征矩阵深度,n为bottleneck重复次数,s为步距(针对第一层,其他为1)

pytorch实现

在pytorch实现时,在bottleneck的conv运算中,加入了groups,分解卷积。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值