MobileNet系列到现在2024年,已经出到了第四个版本,分别如下:
2017年MobileNetv1——>2018年MobileNetv2——>2019年MobileNetv3——>2024年MobileNetv4,下面简要概述一下几个版本的改进部分。
介绍之前先上一张MobileNet系列各个版本汇总的对比情况,如下,表中数据均来自论文。
1、MobileNetv1
论文地址:MobileNetv1
MobileNetv1 是一种轻量级的卷积神经网络架构,由 Google 团队在 2017 年提出。作者设计初衷就是为了模型能部署在移动端和嵌入式设备实现高速推理任务。MobilenetV1的主要创新点是提出了深度可分离卷积(Depthwise Separable Convolution)。
深度可分离卷积将常规卷积(上图(a))拆分成Depthwise卷积(上图(b))和1x1卷积核组成的Pointwise卷积(上图©)。在保证精度的条件下大大减小了参数量。具体来说,可解释为:
Depthwise卷积是对输入特征图按每个通道(channel)分别进行卷积操作,等效于group数量等于input channel的group卷积。这一操作用于提取输入特征图的空间信息的同时大大减小了参数量。
Pointwise卷积可看作常规卷积操作,不同点是它的卷积核空间尺寸是1x1大小,用1x1大小的卷积核对上一步得到的特征图进行逐点卷积,从而恢复输入特征图的通道数量。这一步主要用于融合通道之间的有用信息。
常规的卷积+bn+ReLU模块,替换成深度可分离卷积后,变成如下图所示的模块:
下表中展示了MobileNet采用深度可分离卷积和采用常规卷积的对比情况:
可以看到准确率只下降了1.1%,但是计算量和参数量都大大减小。
标准的MobileNet和小版本的MobileNet与当前流行的网络结构再ImageNet数据集上的表现情况如下表:
2、MobileNetv2
论文地址:MobileNetv2
MobileNetV2是MobileNet系列的第二个版本,由谷歌团队在2018年提出,它在v1的基础上进一步改进网络结构,提升了网络结构运算效率与识别精度。创新点如下:
- Inverted residuals,按照之前残差结构的通常用法,都是先经过一个1x1的卷积操作将特征图通道数减少,再做3x3卷积,最后再通过1x1卷积操作升维,将特征图通道扩充回到想要的数量,这样将通道先“压缩后扩张”的方式可以减少参数量。但是MobileNetv2的做法是反着来的,即“先扩张后压缩”。
- Linear bottlenecks,为了避免ReLU激活函数对特征的破坏,在residual block的Eltwise sum之前的那个 1*1 Conv 不再采用ReLU。
其中mobilenetv1和mobilenetv2在卷积模块中的不同点如下:
Mobilenetv2相对于v1版本主要改进点是,在做Depthwise卷积操作前,先用Pointwise卷积将通道数扩张,且在模块最后没有用非线性激活函数。
同时,MobileNetv2也借鉴ResNet结构,设计了残差结构,和Resnet中标注的卷积不同,mobilenetv2中采用Depthwise卷积,两者对比如下:
可见,和Resnet最大的不同是一个采用标准卷积一个采用Depthwise卷积,这个不同点,直接促使mobilenetv2在做Depthwise卷积之前可以将通道数量扩张而不是压缩,因为depthwise卷积的参数量本来就大大减少了。
相较于目前的轻量级网络,mobilenetv2在imagenet分类数据集上的表现如下表所示:
可以看到,相较于v1版本,参数量和复杂度都减小了,但准确率提升了1.4%,并且推理速度更快。
3、MobileNetv3
论文地址:MobileNetv3
Mobilenetv3是谷歌团队在2019年提出的,论文标题全名叫“Searching for Mobilenetv3”,从名字中可以看出,该版本的网络结构是结合了自动搜索方式得到的。该版本针对高资源设备和低资源设备分别提出了MobileNetv3-large和MobileNetv3-small两个版本的网络结构。
回顾:
MobileNetv1提出深度可分离卷积在保持精度基本不变的情况下,大大减小参数量;
MobileNetv2引入线性瓶颈层和反转残差结构来构建更有效的网络结构;
MnasNet在MobileNetv2基础上引入轻量化的注意力模块,该注意力模块由SE(squeeze and excitation)子模块组成,该模块放置在扩展中的DW Conv操作之后,以便将注意力集中在最大的表示上。
而MobileNetv3,为了构建最有效的模型,使用这些层的组合作为构建块,激活函数替换成了h-swish,在残差层中应用SE模块,并且在不同的层中应用不同的非线性激活函数。
MobileNetv3网络结构的改变
1、网络结构尾部的优化
针对224x224的输入,当前基于MobileNetv2的倒置瓶颈结构和变体使用1x1卷积作为最后一层,以便扩展到更高维度的特征空间。这一层对于拥有准确的预测特征是至关重要的。然而,这是以额外的延迟为代价的。为了减少延迟并保留高维特征,作者将升维这一动作移到最终的平均池化之后。如下图所示,高效的最后阶段将延迟减少了7毫秒,占运行时间的11%,并在几乎没有准确性损失的情况下将操作次数减少了3000万次。
2、头部卷积核个数减半
当前的MobilenetV2开始使用32个3x3的卷积核,作者发现使用h-swish激活函数相比于使用ReLU或者swish函数,可以在保持精度不减的情况下,将卷积核降低到16个,并且提速2ms、减少了1000万次加法运算。
可以看到MobileNetv2和Mobilenetv3-small的结构,后者在第一层特征图的通道设置为了16。
3、非线性激活函数
Swish激活函数作为ReLU的替待形式,可以显著提升模型的准确性,但为了在移动设备上移植更友好,作者参考ReLU-6提出了h-swish激活函数,公式如下:
4、在残差模块中加入SE模块
这个注意力子模块来自SENet,它通过对前一层特征图(N个channel)按通道在空间尺度上做avg pooling,得到和输入通道相同的N个值,然后经过两个FC层,两个FC层都有非线性激活,一个是ReLU,一个是h-sigmoid,最后得到N个非线性变换后的值,将这N个值与原有的N个输入通道做乘积将得到N个通道的重要程度加权,也就是加了通道注意力。
下表展示了MobileNetv3与其他轻量级模型在ImageNet数据集上的表现情况:
在同级别上,MobileNetv3相对于v2版本表现出了较大优势。
4、MobileNetv4
论文地址:MobileNetv4
在2024年,MobileNet迎来了第4个版本更新,名为MobileNetv4(MNv4),也是应用神经网络架构搜索(NAS)方式搜索得到的,其核心部分在于提出了通用倒置瓶颈块(Universal Inverted Bottlenecks, UIB),它是一个统一且灵活多变的结构,包含了倒置瓶颈(IB),ConvNext,前馈神经网络(FFN)以及一种新的额外深度可分 (ExtraDW) 变体的各种组合。同时,作者还提出了Mobile MQA,这是一个专为移动加速器设计的注意力块,能带来显著的39%速度提升。
回顾:优化模型的准确率和效率是长期深入研究的问题。可分为如下几个方面:
移动卷积网络(Mobile Convolutional Networks): 如MobileNetv1利用深度可分离卷积提升效率,MobileNetv2引入线性瓶颈和倒置残差模块,MnasNet在瓶颈模块中引入轻量级注意力模块,MobileOne在推理时在倒置瓶颈中重参数化线性分支。
高效混合网络(Efficient Hybrid Networks): 这个方向整合了卷积和注意力机制,主要是transformer,
比如MobileViT通过全局注意力块将CNN与ViT组合,MobileFormer并行结合MobileNet和transformer的特征,FastViT 在最后一个阶段加入注意力,并使用大的卷积核作为早期阶段自注意力机制的替代。
高效注意力: 最近的研究者集中提升MHSA(Multi Head Self-Attention)的高效实现。EfficientViT和MobileViTv2提出了自注意力近似方法,在保证准确率的条件下,使得注意力头达到线性复杂度。EfficientFormer-V2为了提高效率而对Q、K、V进行下采样,而CMT和NextViT仅对K和V进行下采样。
硬件感知神经架构搜索(NAS): 另一种常见的技术是使用硬件感知神经架构搜索(NAS)来自动化模型设计过程。NetAdapt 使用经验延迟表来在目标延迟约束下优化模型的准确性。MnasNet同样使用延迟表,但它应用强化学习来进行硬件感知的NAS。FBNet 通过可微分的NAS加速了多任务硬件感知搜索。MobileNetV3 通过结合硬件感知NAS、NetAdapt算法和架构改进,针对手机CPU进行调优。MobileNetMultiHardware 为多个硬件目标优化单一模型。Once-for-all 为提高效率,将训练和搜索分离。
下面简要介绍两个主要的创新点UIB和Mobile MQA:
Universal Inverted Bottlenecks
UIB的结构如下图所示,这是一个适用于高效网络设计的可变构建块,它具有灵活适应各种优化目标的能力,不会使得搜索复杂度爆炸性增长。
UIB中两个可选深度卷积有4种组合方式,这能导致不同的精度与速度之间的权衡;
倒置瓶颈(IB),在扩展的特征激活上进行空间混合,以增加成本为代价提供更大的模型容量。
ConvNext通过在扩展之前执行空间混合,实现了使用更大核尺寸进行更廉价的空间混合。
ExtraDW是本文提出的一种新变体,它允许廉价地增加网络的深度和感受野。
FFN是由两个1x1的点卷积(PW)堆叠而成,并在它们之间加入激活和标准化层。PW是最受加速器友好的操作之一,但最好与其他模块一起使用。
由上面可知,在网络的每个阶段,UIB提供了以下优势:达成一个即时的空间和通道混合的权衡;按需扩大感受野;最大化计算利用率。
Mobile MQA
在近期视觉模型的研究中,他们大多致力于减少算术运算(MACs)以提高效率。然而,在移动加速器上性能的真正瓶颈往往不是计算而是内存访问。这是因为加速器提供的计算能力远大于内存带宽。因此,仅仅最小化MACs可能并不会导致更好的性能。这里作者考虑操作强度,即算术运算与内存访问的比率。作者通过使用Multi-Query Attention (MQA) 通过在所有头之间使用共享的键和值简化了内存访问次数,从而实现提速39%的显著效果。MQA主要用于混合结构网络的加速。
MobileNetv4在ImageNet数据集上的表现如下: