浅谈 Mobilenet V1-V3

一:复杂网络模型移植问题

移植难点:

  • 很多嵌入式,手机端无法使用庞大的网络结构
  • 一个几百M的模型难以随便移植
  • 复杂网络的参数和计算量庞大,难以DIY后强加训练,预期效果不尽人意

那么一个简洁时效的网络结构该如何设计呢,答案就是模型的剪枝策略。其实,剪枝和策略是两种侧重点不同的方法前者是对较为冗长的网络结构进行训练后的删减简化,而后者则是直接设计出轻巧、高移植性的网络架构。本文针对Mobilenet重点讲解网络设计策略。

二:模型剪枝策略

1.剪枝

有关剪枝的具体细节可以参考本人另一篇文章
在这里插入图片描述
在这里插入图片描述

2.网络设计策略

几种常见的策略:

  • Feature map的channels聚类
    在这里插入图片描述
    对特征图每个通道的γ权重值聚类,如上图聚成四个簇。接着用每一个簇中心的权重值代替特征图,达到剪值效果。

  • ensembling networks Learning

    借鉴类似随机森林的集成思想,首先用大量数据训练出N个网络集成的大型网络,将训练出的标签结果作为small net的目标标签(先验值),学起来的话会更容易,而且不易过拟合,可以理解为一群学长将自己几年的学习经验先分享给了你,那么直接对着他们的话学起来,自然就轻松许多,也会少走很多弯路(不易过拟合)

  • 类似SVD的网络分解法
    在这里插入图片描述
    一种类似与奇异值分解的思想,如上图举例,在长度N和M层之间插入一个长度k的线性层,那么原本的param由M×N变成了M×K+N×K,肉眼可见的参数量减少。


上述几种老早提出的模型架构设计方法,效果都不尽人意,接下来我们的主角登场了。

三:Mobilenet v1的横空出世

在这里插入图片描述
上图是YOLO_v3目标检测模型在手机端的运行结果,时效性和准确度都达到了预期要求。那么为什么相对庞大的检测算法能如此轻易地移植到手机端呢?正是因为他们将YOLO_v3中的backbone替换成了Mobilenet_v1,替代了常用的Resnet和VGG作为backbone,降低了模型的复杂度,参数量和计算量大大减少。

下面我来讲讲Mobilenet_v1的思想,首先从经典卷积计算讲起:
在这里插入图片描述
在这里插入图片描述

传统的卷积就是一个filter对特征图的每个通道都进行卷积,虽然能融合不同通道的信息,却增加了计算量,拿下面的模型举例:
在这里插入图片描述
可见经典卷积所需计算量巨大,所以Mobilenet_v1提出了Depthwise卷积概念每一个filler只对一层channel卷积计算,所以说input的通道数等于output的通道数,如下图所示:
在这里插入图片描述
那么输出和输入是对应的,怎么能扩展通道数呢,这里Mobilenet_v1又提出了Pointwise卷积概念实际上就是通过Conv 1*1卷积,扩大了通道数,没什么特殊的,如下图所示:
在这里插入图片描述
综上所述,Mobilenet_v1实际上就是depthwise卷积 + Pointwise卷积 的组合,作者又将他们整合成一个叫Depthwise Seperable卷积,整个Mobilenet_v1的核心步骤可用下图表示出:
在这里插入图片描述
Mobilenet_v1中其实还提出了一种新的激励函数ReLU6,当x超过6后y不再改变,增加了非线性与泛化能力,同时降低了梯度爆炸的风险。如下图:
在这里插入图片描述

最后,我们来看看参数量和计算量到底减少了多少,空口无凭,上图!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四:Mobilenet v2大杂烩

延用Mobilenet_v1中的可分离卷积,v2版本主要对架构进行了修改,主要是如下两点:

  • 整体网络架构改变,借鉴Resnet思想,设计了反残差网络,也就是Shotcut模块
  • Relu激活函数改变,用线性替代

通过研究发现,ReLU对低维数据影响很大,部分数据会丢失,但对于高维数据,则没太大影响。
在这里插入图片描述
所以作者改变了v1中先depthwise后1×1卷积扩通道的架构,而是选择先1×1卷积扩大维度,后depthwise的架构,实验表明各效果相对于v1都有所提升。如下图所示:
在这里插入图片描述
其实这种架构,就是类似于将Resnet中的bottleneck思想反过来运用,先窄后宽— >先宽后窄Shotcut模块如下图所示:
在这里插入图片描述
在这里插入图片描述
下面贴上Mobilenet_v2的整体结构框图,供大家参考学习:
在这里插入图片描述
在这里插入图片描述
对比实验结果:
在这里插入图片描述

五:Mobilenet v3完全体

借鉴Mobilenet_v2中的Shotcut结构的思想,v3版本又提出了SE结构,主要是如下两点:

  • 引入Squeeze-Excitation结构
  • 非线性变换改变,h-swish替代swish

SE-net其实就是将注意力机制引入到了特征图通道中来先是S操作得到各channel的上下文全局信息,而后E操作,得到各通道权重,最后Fuse加权到特征图中。具体操作不再赘述,如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SE-net可以和很多经典模型融合,如下图所示:
在这里插入图片描述
至于hard-swish并不是那么重要,直接贴图:
在这里插入图片描述
在这里插入图片描述
至此,v1-v3的结构全部讲完,最后贴上我们的Mobilenet_v3完全体的网络结构
(exp size:bneck模块中neck的宽度,NL:非线性方法ReLU或hard-Swish)

在这里插入图片描述
效果分析:
在这里插入图片描述


  至此我对Mobilenet模型v1-v3版本,进行了简单讲解,希望对大家有所帮助,有不懂的地方或者建议,欢迎大家在下方留言评论。

我是努力在CV泥潭中摸爬滚打的江南咸鱼,我们一起努力,不留遗憾!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MobileNet是一种轻量级的卷积神经网络,主要用于在移动设备和嵌入式系统上进行实时图像分类和对象检测。MobileNet系列共有三个版本,分别为MobileNet v1、MobileNet v2和MobileNet v3,下面简述一下它们的特点和区别: 1. MobileNet v1:MobileNet v1是第一个版本的MobileNet,它采用了深度可分离卷积(Depthwise Separable Convolution)的结构,将标准卷积拆分为深度卷积和逐点卷积两个步骤,从而大大减少了参数量和计算量。MobileNet v1在ImageNet数据集上取得了不错的分类精度和较快的推理速度,但是仍然存在一些性能瓶颈,如计算效率和模型精度之间的平衡。 2. MobileNet v2:MobileNet v2是MobileNet系列的第二个版本,它在MobileNet v1的基础上进行了改进,引入了Inverted Residual Block和Linear Bottleneck结构。Inverted Residual Block是一种新的残差块,它通过将扩张卷积和逐点卷积结合起来,提高了网络的非线性表达能力;Linear Bottleneck则是一种线性瓶颈结构,可以有效地降低模型的计算量。MobileNet v2在保持模型轻量化的同时,进一步提升了模型的精度和计算效率。 3. MobileNet v3:MobileNet v3是MobileNet系列的最新版本,主要在两个方面进行了改进,即网络结构和训练策略。MobileNet v3引入了多种新的操作,如Squeeze-and-Excitation模块、Hard-swish激活函数和可分离卷积等,从而进一步提高了网络的精度和计算效率。此外,MobileNet v3还采用了自适应计算时间的训练策略,可以根据不同的硬件环境自动调整网络的计算量,从而适应不同的应用场景。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值