MobileNet

MobileNets: V1:《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 》2017

MobileNet V2:《MobileNetV2:Inverted Residuals and Linear Bottlenecks》

MobileNet V3:《searching For MobileNet V3》

MobileNet V3

2016年6月,谷歌提出了MobileNetV1,由于各种原因当时没有挂上arxiv,一直到2017年4月才提交。好巧不巧,谷歌的另一团队,同时提出了Xception。所有才有了两个结构都是基于深度可分离卷积的相似争论

谷歌在2019年5月份推出了最新的MobileNetV3

https://zhuanlan.zhihu.com/p/70703846

摘要

有更小的体积,更少的计算量,更高的精度。在轻量级神经网络中拥有极大的优势。

创新点

MobileNet V1

  • MobileNetV1就是把VGG中的标准卷积层换成深度可分离卷积depthwise separable convolution就可以了。
  • 深度可分离卷积 = 深度卷积+逐点卷积
  • 引入ReLU6替代ReLU,在大于6时候取6。ReLU6作为非线性激活函数,在低精度计算下具有更强的鲁棒性

MobileNet V2

  • 有人在实际使用的时候, 发现深度卷积部分的卷积核比较容易训废掉:训完之后发现深度卷积训出来的卷积核有不少是空的。作者认为这是ReLU这个激活函数的锅。
  • 虽然V2的层数比V1的要多很多,但是FLOPs,参数以及CPU耗时都是比V1要好的。但是实验发现不匝地
  • 把ReLU变成线性激活函数,把最后的那个ReLU6换成Linear
  • 提出Expansion layer,在深度卷积之前先用逐点卷积升通道纬度:深度卷积本身没有改变通道的能力,只能在低维度上工作,这样效果并不会很好,所以在DW深度卷积之前使用PW1*1卷积进行升维,再在一个更高维的空间中进行卷积操作来提取特征
  • 学resnet加入shortcut
  • resnet的bottleneck结构是先降维 (0.25倍)、卷积、再升维。MobileNetV2 则是 先升维 (6倍)、卷积、再降维。作者将其命名为Inverted residuals
  • image-20250602143715288

MobileNet V3

  • 用神经结构搜索NAS,不看了

  • 0.网络的架构基于NAS实现的MnasNet(效果比MobileNetV2好)

    1.引入MobileNetV1的深度可分离卷积

    2.引入MobileNetV2的具有线性瓶颈的倒残差结构

    3.引入基于squeeze and excitation结构的轻量级注意力模型(SE)

    4.使用了一种新的激活函数h-swish(x)

    5.网络结构搜索中,结合两种技术:资源受限的NAS(platform-aware NAS)与NetAdapt

    6.修改了MobileNetV2网络端部最后阶段

创新点讲解

深度可分离卷积

  • 可分离卷积主要有两种类型:空间可分离卷积深度可分离卷积。空间可分离就是将一个大的卷积核变成两个小的卷积核,比如将一个3×3的核分成一个3×1和一个1×3的核

深度卷积

image-20250602142812248

image-20250602142823747

  • image-20250602141856953
  • 标准卷积:一个卷积核对w*h*c每个c做卷积再相加,一个核生成一个w*h的特征图,n个核生成n个通道的特征
  • 深度卷积:c个卷积核对w*h*c做卷积,第i个对第i个通道做卷积,一一对应,这样最后还是w*h*c,输入通道是多少个,卷积核就有几个,输出通道还是多少个

逐点卷积

  • 通道数太少,特征图的维度太少,不能获取到足够的有效信息,所以需要对特征图升维。逐点卷积就是1×1卷积
  • 在深度卷积的过程中,我们得到了8×8×3的输出特征图,我们用256个1×1×3的卷积核对输入特征图进行卷积操作,输出的特征图和标准的卷积操作一样都是8×8×256了。

ReLU6

作者认为ReLU6作为非线性激活函数,在低精度计算下具有更强的鲁棒性

image-20250602143031205

网络架构

MobileNet V1

MobileNet V2

MobileNet V3

网络架构