mobilenet系列论文解读:从v1-v3

本文详述了Mobilenet系列的发展,重点介绍了从V1到V3的核心改进,包括引入深度可分离卷积、线性瓶颈层和SE模块。V1提出深度可分离卷积降低计算量,V2引入线性分类器解决ReLU信息丢失问题,V3结合V1和V2优点并应用NAS搜索优化网络结构。 Mobilenet V3还采用了Hard-Swish激活函数,以适应嵌入式设备。
摘要由CSDN通过智能技术生成

一文看遍mobilenet,毫无疑问,移动端的轻量级网络中mobienet肯定是首当其冲,从v1-v3,有着相当的提升和改进,但究其核心,最主要的还是引入了深度可分离卷积的计算,确实很有代表性,不过在v3中引入了NAS,这就比较玄学了,v3我没有直接复现过,只玩过基于它实现的目标检测网络,v3的yolov3我记得可以在voc上做到74%左右,效果挺好的,v1和v2的目标检测网络,比如mobilenet-ssd、mobilenet-yolo在部署的时候的确相当轻量化,尤其是当年mobilenetv1-ssd结合tensorflow的object-detection api来做,可以同时完成模型缩放和量化,模型大小只有几M,非常轻量化,本文详细解读mobilenetv1-v3的技术要点和变化,但不按照论文的结构和格式来叙述

code:本文不提供code,详见各个框架的backbone

1、mobilenet-v1

    paper:https://arxiv.org/pdf/1704.04861.pdf

    v1中创新式的提出了构建mobilenet的核心层,称之为深度可分离卷积(depthwise  separable filters),为整个mobilenet系列奠定了基础。

    depthwise  separable convolutionds是分解卷积的一种形式,可以将其拆解为深度卷积和点卷积(1*1卷积),如下图所示:

    如上图所示,图a代表着Dk*Dk*M的conv layer,我们将其拆分为图b和图c两个卷积,这样得到的输出维度是一致的,但计算量和模型大小却明显得到减少,具体原理如下:

    一个标准的卷积输入Batch*Df*Df*M的特征图,其中Df是输入特征图的宽度和高度,M是输入通道,假定输出特征图为Batch*Df*Df*N,N为输出通道。那么,对于标准卷积的计算量为:

                                                          Batch*Df*Df*M*N*Dk*Dk

    怎么理解标准卷积计算量?简单说一下,可以理解为Df*Df的特征图与Dk*Dk的卷积进行计算,计算量为Df*Df*Dk*Dk,输入特征图有M个通道,对应卷积核也有M个输入通道,则由M个Df*Df的特征图与Dk*Dk卷积进行计算,则此时计算量为Df*Df*Dk*Dk*M,最后,有N个输出通道,则再将上一步的计算重复N次,最终计算量就变成了Df*Df*M*N*Dk*Dk。

    拆分后,depthwise conv的计算量为:Batch*Df*Df*Dk*Dk*M,这里要注意一下,拆分后,卷积相乘时维度是对不上的,因此其实depthwish卷积是对每个输入通道单独使用1个卷积核来处理,并且结果不累加(常规卷积会累加输入通道的结果变成一个通道输出),那么此时输出特征维度依旧为batch*Df*Df*M。

    进一步的,中间输出特征图再与点卷积相乘,此时的计算量为batch*Df*Df*M*N,输出特征维度为batch*Dk*Dk*N。

   此时,计算量对比如下:

   

    上面为mobilenet v1提出来的depthwise separable 卷积,下面是mobilenet v1的网络结构(注意:深度卷积只是起到了常规卷积的作用,但并不是直接替换常规卷积就能够跟常规卷积一样的效果,同样需要依赖于特定的网络结构,举例:darknet53如果你直接替换为depthwise separable darknet53,网络是不会收敛的!!!!

 

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值