第八章 MobileNetv3网络详解

MobileNetV3是一个针对移动设备优化的轻量级卷积神经网络结构,通过硬件感知的神经架构搜索和NetAdapt算法进行设计,以提高速度和准确性。文章介绍了模型的创新模块,包括轻量级深度可分离卷积、倒残差模块、Squeeze-and-Excitation以及硬Swish激活函数。MobileNetV3分为Large和Small两个版本,适用于不同的资源限制。实验结果显示,新模型在ImageNet分类、目标检测和语义分割任务上实现了高性能与低延迟的平衡。

系列文章目录

第一章 AlexNet网络详解

第二章 VGG网络详解

第三章 GoogLeNet网络详解 

第四章 ResNet网络详解 

第五章 ResNeXt网络详解 

第六章 MobileNetv1网络详解 

第七章 MobileNetv2网络详解 

第八章 MobileNetv3网络详解 

第九章 ShuffleNetv1网络详解 

第十章 ShuffleNetv2网络详解 

第十一章 EfficientNetv1网络详解 

第十二章 EfficientNetv2网络详解 

第十三章 Transformer注意力机制

第十四章 Vision Transformer网络详解 

第十五章 Swin-Transformer网络详解 

第十六章 ConvNeXt网络详解 

第十七章 RepVGG网络详解 

第十八章 MobileViT网络详解 


文章目录

  •  MobileNetv3网络详解
  • 0. 前言
  • 1. 摘要
  • 2.   MobileNetv3网络详解网络架构
    • 1.  MobileNetv3_Model.py(pytorch实现)
    • 2.
  • 总结


0、前言


1、摘要

      本文介绍了基于互补的搜索技术和新颖的架构设计的MobileNets的下一代。MobileNetV3通过硬件感知网络架构搜索(NAS)和NetAdapt算法相结合,针对移动电话CPU进行优化,随后通过新颖的架构改进技术进行了进一步提高。本文开始探索自动化搜索算法和网络设计如何相互协作,以利用互补的方法改进整体技术水平。通过此过程,我们创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用情况。然后将这些模型应用于物体检测和语义分割任务。对于语义分割任务(或任何密集像素预测),我们提出了一种新的高效分割解码器Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASPP)。在移动分类、检测和分割方面,我们取得了新的技术水平。MobileNetV3-Large在ImageNet分类上的准确性提高了3.2%,同时将延迟降低了20%,相比MobileNetV2。MobileNetV3-Small的准确性比具有可比延迟的MobileNetV2模型提高了6.6%。MobileNetV3-Large的检测速度比COCO检测上的MobileNetV2快25%左右,准确率大致相同。MobileNetV3-Large LR ASPP在Cityscapes分割上的速度比MobileNetV2 R-ASPP快34%,准确性相似。

2、MobileNetv3网络结构

MobileNetV3是由Google在2019年提出的一种轻量级卷积神经网络结构,旨在提高在移动设备上的速度和准确性。它的网络结构主要包括以下几个部分:

1.基础卷积模块:该模块使用轻量级深度可分离卷积(depthwise separable convolution),将一个标准卷积操作分解成两个步骤:先进行通道的分离,再通过逐通道卷积实现。这样做能够显著减少计算和参数数量。

2.倒残差模块:这是MobileNetV3中的一个新模块,它可以增加网络的深度和非线性,同时保持计算代价不变。该模块通过将两个基础卷积模块连接起来,再使用shortcut进行跨层连接,实现信息的跨层传递。

3.Squeeze-and-Excitation模块:该模块通过引入一个全局平均池化层,进一步降低计算复杂度,并使用一对全连接层来对通道的重要性进行建模,从而增强了网络对重要特征的感知能力。

4.Hard-swish激活函数:这是一个快速轻量级的激活函数,它是在ReLU激活函数的基础上进行改进的,通过增加一定的非线性特性和使用更少的计算代价来提高模型的表现。

通过以上四个模块的组合,MobileNetV3实现了很好的权衡:同时保持了网络轻量和准确,是非常适合移动端部署的一种卷积神经网络结构。

高效神经网络正在移动应用程序中变得普遍,可以实现全新的设备体验。它们也是个人隐私的关键,用户可以获得神经网络的好处,而无需将其数据发送到服务器进行评估。神经网络效率的提高不仅可以通过更高的准确性和更低的延迟改善用户体验,还可以通过降低功耗来延长电池寿命。本文描述了我们采取的方法,以开发MobileNetV3大型和小型模型,为实现动作视觉驱动下一代高准确性的高效神经网络模型提供支持。新的网络推动了最前沿的技术并展示了如何结合自动化搜索和新的架构进步来构建有效的模型。本文的目标是在移动设备上优化准确性和延迟的权衡,以开发最佳移动动作视觉构架。为此,我们引入了(1)补充搜索技术,(2)适用于移动设置的新非线性版本,(3)新的高效网络设计,(4)新的有效分割解码器。我们展示了广泛的实验,评估了不同用例和移动电话上每种技术的功效和价值。本文的组织如下。我们从第2节讨论相关工作开始。第3节回顾了用于移动模型的高效构建块。第4节回顾了建构搜索和MnasNet和NetAdapt算法的互补性。第5节描述了新的架构设计,改善了通过联合搜索找到的模型的效率。第6节介绍了广泛的分类、检测和分割实验,以展示功效并了解不同元素的贡献。第7节包含结论和未来工作。

在近年来,为了在准确性和效率之间寻找最优平衡的深度神经网络架构设计一直是一个活跃的研究领域。新颖的手工结构和算法神经网络架构搜索都在推进这一领域方面发挥了重要作用。SqueezeNet[22]广泛使用1x1的卷积与挤压和扩展模块,主要侧重于减少参数数量。更近期的工作则将注意力从减少参数数量转移到了减少操作数量(MAdds)和实际测量延迟。MobileNetV1[19]采用深度可分离卷积显著提高了计算效率。MobileNetV2[39]在此基础上引入了一种资源高效的块,即倒置残差和线性瓶颈。ShuffleNet[49]利用分组卷积和通道混洗操作进一步减少MAdds。CondenseNet[21]在训练阶段学习组卷积以保持层之间的有用密集连接以供特征复用。ShiftNet[46]提出了移动操作与点卷积交替使用以替换昂贵的空间卷积。为了自动化架构设计过程,强化学习(RL)首先被引入以搜索具有竞争性准确性的高效架构[53,54,3,27,35]。可完全配置的搜索空间可能会增长成指数级,难以处理。因此,早期的架构搜索工作主要集中在单元级结构搜索,并且相同的单元在所有层中都会被重用。最近,[43]探索了块级分层搜索空间,允许在网络的不同分辨率块中使用不同的层结构。为了减少搜索的计算成本,[28,5,45]使用了可微分的架构搜索框架进行梯度优化。重点关注将现有网络适应于受限移动平台的[48,15,12]提出了更高效的自动化网络简化算法。量化[23,25,47,41,51,52,37]是另一个重要的辅助实现高效计算的技术。

移动端机型的建模越来越高效。MobileNetV1 通过深度可分离卷积有效替代传统卷积层,将空间过滤与特征生成机制分离。深度可分离卷积由两个分离的层构成:轻量级深度卷积层用于空间过滤,较重的 1x1 点卷积层用于特征生成。MobileNetV2 引入了线性瓶颈和反转残差结构,利用低秩性质设计更高效的层结构,即由 1x1 扩张卷积、深度卷积和 1x1 投影层构成,仅在输入输出通道一致时才进行残差连接,从而在输入和输出端维持紧凑表示,内部则通过扩展到高维特征空间来增加非线性分通道变换表达能力。MnasNet 在 MobileNetV2 结构上引入基于压缩和激励的轻量级注意力模块,并将其放置在扩张中的深度卷积层后面,以便在最大表示上应用注意力。MobileNetV3 则将这些层组合作为构建最有效模型的基本块,同时使用修改后的 Swish 非线性性提升层的效果。值得注意的是,注意力和 Swish 非线性性均使用 Sigmoid,这在计算效率和固定点算术方面都存在挑战,也可能影响准确性。

网络搜索已经证明是一种非常强大的工具,可以用于发现和优化网络架构。对于MobileNetV3,我们使用平台感知型NAS来搜索全局网络结构,通过优化每个网络块。接着,我们使用NetAdapt算法来搜索每层的滤波器数量。这些技术是互补的,可以结合使用,有效地找到给定硬件平台的优化模型。

与[43]类似,我们采用平台感知的神经架构方法来寻找全局网络结构。由于我们使用相同的基于 RNN 的控制器和分解的分层搜索空间,因此对于目标延迟约为80ms的大型移动模型,我们得到了类似于[43]的结果。因此,我们简单地重用同样的MnasNet-A1 [43]作为我们的初始大型移动模型,然后在其基础上应用NetAdapt [48]和其他优化措施。但是,我们观察到原始奖励设计并非针对小型移动模型进行优化。具体来说,它使用一种多目标奖励ACC(m)×[LAT(m)=TAR]w来近似帕累托最优解,通过在基于目标延迟TAR的每个模型m的模型准确性ACC(m)和延迟LAT(m)之间平衡来平衡。我们观察到,对于小模型,准确性的变化随延迟的变化更加剧烈。因此,我们需要一个更小的权重因子w=-0.15(与[43]中原始w=-0.07相比),以补偿不同延迟下更大的准确性变化。增强了这个新的权重因子w,我们从零开始进行新的架构搜索,找到初始种子模型,然后应用NetAdapt和其他优化措施,以获得最终的MobileNetV3-Small模型。

我们在架构搜索中使用的第二种技术是NetAdapt [48]。该方法与平台感知NAS相互补充:它允许依次微调每个层,而不是试图推断粗糙但全局的架构。具体细节请参阅原始论文。简而言之,技术的步骤如下:

1.从平台感知NAS找到一个种子网络架构。

2.每个步骤如下:

(a)生成一组新的建议。每个建议都代表一个架构的修改,相对于先前的步骤至少产生了δ减少的延迟。

(b)对于每个建议,我们使用前一步的预训练模型,填充新的建议架构,截断和随机初始化适当的缺失权重。对每个建议进行T步的微调,以获取粗略的准确度估计。

(c)根据某个指标选择最佳建议。

3.重复上一步,直到达到目标延迟。在[48]中,这个度量是最小化准确度变化。我们修改了这个算法,并最小化延迟变化和准确变化之间的比率。也就是说,在每个NetAdapt步骤生成的所有建议中,我们会选择一个最大化斜率的建议。这个过程会重复,直到延迟达到目标,然后我们从头开始重新训练新的架构。我们在MobilenetV2中使用了与[48]相同的建议生成器。具体而言,我们允许以下两种类型的建议:1.减少任何扩展层的大小;2.在所有共享瓶颈大小的块中减少瓶颈-以维持残差连接。在我们的实验中,我们使用了T = 10000,发现虽然它增加了建议的初始微调的准确度,但在从头训练时,它并不改变最终的准确度。我们将δ设置为0.01|L|

除了网络搜索外,我们还引入了几个新组成部分来进一步改进最终模型。我们重新设计了网络的计算密集层,包括开头和结尾。我们还引入了一种新的非线性函数h-swish,这是最近swish非线性函数的修改版本,它的计算速度更快,更适合量化。

一旦通过架构搜索找到模型,我们观察到一些最后一层和一些早期层比其他层更昂贵。我们提出一些修改架构的方法,以减少这些低速层的延迟,同时保持准确性。这些修改不在当前搜索空间的范围内。第一种修改重新设计了网络的最后几层的交互方式,以更高效地生成最终特征。基于MobileNetV2的倒置瓶颈结构和变种的当前模型使用1x1卷积作为最后一层,以扩展到更高维度的特征空间。这一层对于预测具有丰富的特征至关重要。然而,这是会带来额外的延迟的。为了减少延迟并保留高维度的特征,我们把这一层放在最终平均池化之后。现在,这一组最终特征的计算是在1x1的空间分辨率上完成的,而不是7x7的空间分辨率。这种设计选择的结果是,在计算和延迟方面,特征计算变得几乎是免费的。一旦减轻了这个特征生成层的代价,先前的瓶颈投影层就不再需要用来减少计算。这一观察结果使我们能够削减先前瓶颈层中的投影和过滤层,进一步减少计算复杂度。图5中可以看到原始和优化的最后阶段。高效的最后阶段将延迟降低了7毫秒,这相当于运行时间的11%,并将操作数量减少了3000万,而几乎不损失准确性。另一个昂贵的层是初始的过滤器集。当前的移动模型往往使用32个过滤器进行完整的3x3卷积,以构建用于边缘检测的初始过滤器组。这些过滤器通常是彼此的镜像。我们尝试减少过滤器的数量。

本文介绍了一种非线性函数Swish,在神经网络中用于ReLU的替代品,可以显著提高准确性。Swish函数定义为Swish(x)= x·σ(x)。然而,由于移动设备上计算sigmoid函数很昂贵,因此我们采用两种方法来解决此问题。

第一,我们将sigmoid函数替换为其分段线性硬模拟函数:ReLU6(6 x + 3),这与以前的工作类似。Swish函数的硬版本称为h-swish [x] = xReLU6(x + 3)。我们发现,这些函数的硬版本在精度上与其软版本没有明显区别,但在部署方面具有多种优势。其次,优化的ReLU6实现在几乎所有软件和硬件框架上都可用。

第二,在实践中,h-swish可以实现为分段函数,以减少驱动延迟成本的内存访问次数。其次,我们发现,随着网​​络的深入,应用非线性函数的成本会降低,因为每个层激活内存通常会在分辨率下降时减半。因此,在我们的架构中,我们只在模型的后半部分使用h-swish。即使进行了这些优化,h-swish仍会引入一些延迟成本。但是,正如我们所展示的,这个成本是可以接受的,因为它仍然提供了更高的准确性。具体的布局请参见表1和表2。

在[43]中, squeeze-and-excite 瓶颈的大小相对于卷积瓶颈的大小是相关的。相反,我们将它们都替换为固定的,即为扩张层中通道数量的1/4。我们发现这样做可以在适度增加参数数量和没有明显的延迟成本的情况下增加精度。

MobileNetV3定义为两个模型:MobileNetV3-Large和MobileNetV3-Small。这些模型分别针对高和低资源使用情况。模型是通过应用平台感知NAS和NetAdapt进行网络搜索,并结合本节定义的网络改进来创建的。完整的网络规格请参见表1和2。

我们展示了实验结果,以证明新的MobileNetV3模型的有效性。我们报告了分类、检测和分割的结果,并报告了各种消融研究,以阐明各种设计决策的影响。

按照惯例,我们在所有分类实验中使用ImageNet[38],并比较准确度与各种资源使用指标,例如延迟和乘法加(MAdds)等。

(图1. 像素1延迟和top-1 ImageNet准确度之间的权衡。所有模型均使用输入分辨率为224。V3大型和V3小型使用乘数0.75、1和1.25来显示最佳前沿。所有延迟都是在使用 TFLite[1] 的同一设备的单个大核上测量得出的。MobileNetV3-Small和Large是我们提出的下一代移动模型。)

 

(图2. MAdds和top-1准确度之间的权衡。这允许比较针对不同硬件或软件框架的模型。所有MobileNetV3适用于输入分辨率224,并使用乘数0.35、0.5、0.75、1和1.25。其他分辨率请参见第6节。最好用彩色查看。) 

 (图3显示了MobileNetV2 [39]层(倒置残差和线性瓶颈)。每个块由窄输入和输出(bottleneck)组成,它们没有非线性,在扩展到一个更高维度空间和投影到输出之前,在瓶颈处连接残差(而不是扩展))

 (图4展示了MobileNetV2和Squeeze-and-Excite的结合,与[20]不同的是,我们在残差层应用squeeze and excite。我们根据每一层使用不同的非线性函数,具体请参见第5.2节)

(图5. 原始最后一层与高效最后一层比较。这种更高效的最后一层能够在不影响准确性的情况下去掉网络结构末尾的三个昂贵的层。)

 (图6. 逻辑和swish非线性函数及其“硬”对应函数。)

 (图7.不同乘数和分辨率下MobileNetV3的表现。在我们的实验中,我们使用了乘数为0.35, 0.5, 0.75, 1.0和1.25,固定分辨率为224,以及分辨率为96、128、160、192、224和256,乘数为1.0。最佳效果在彩色下查看,ImageNet的Top-1精度,延迟以毫秒表示。)

(图8.使用深度乘法器对优化和非优化h-swish的延迟影响。曲线显示了深度乘法器的边界。请注意,在所有具有80个或更多通道(V3)的层中放置h-swish提供了最佳的优化和非优化h-swish的权衡。Top-1准确度在ImageNet中,延迟以毫秒为单位。) 

(图9. 移动网络V3发展中各个组件的影响。通过向上和向左移动来衡量进展。)

 (图10。基于MobileNetV3,提出了分割头Lite R-ASPP,可以在混合多个分辨率的特征的同时,快速提供语义分割结果。)

亮点:

1.更新Block(bneck)
2.使用NAS搜索参数(Neural Architecture Search)
3.重新设计耗时层结构

更新Block(bneck)
1.加入SE模块
2.更新了激活函数ReLU6

   

NAS(Neural Architecture Search)是一种自动化机器学习领域的技术,用于自动搜索最优的神经网络结构。它使用强化学习、遗传算法或其他优化算法,探索可能的神经网络结构,并选择性能最好的结构。搜索参数是NAS中的一个重要步骤,它决定了搜索空间的大小和可行性。下面详细介绍NAS搜索参数的具体操作方法和过程。

1.定义搜索空间

首先,需要定义搜索空间,即神经网络结构的可变参数。搜索空间应包括网络层数、每个层的神经元数量、激活函数、池化方式、卷积核大小等可能影响神经网络性能的参数。例如,定义搜索空间如下:

(1)神经网络层数:从1到10层;

(2)每层神经元数量:从16到1024个;

(3)激活函数:ReLU、sigmoid等;

(4)池化方式:最大池化、平均池化等;

(5)卷积核大小:3x3、5x5、7x7等。

2.设计搜索算法

设计一个搜索算法,包括两大类方法:贪心算法和进化算法。其中,贪心算法是从空间里选用表现最优的结构,并在最优结构附近继续搜索;进化算法则是通过基因重组来产生新的结构,并评估其表现。

3.定义评估度量

评估度量是为了度量神经网络结构的性能,评估度量应能准确衡量网络的精度、时间和资源消耗等指标。例如,评估度量可以是模型精度、模型大小、模型训练时间、验证集的损失函数等。

4.搜索最优结构

启动搜索算法,对于所定义的搜索空间中的每个结构,都使用评估度量对其进行评估。搜索过程中,会生成许多随机的结构,并尝试对每个结构进行评估。评估过程通常会花费大量时间和资源。5.调整结构

在搜索过程中,可能会遇到一些结构无法达到预期性能的情况。此时,可以尝试对结构进行调整,例如增加或减少网络层数、减少或增加每层神经元数量等,并重复上述步骤,以期获得最佳性能。6.导出最终模型

在搜索过程结束后,NAS会将最终的的最优结构导出为模型,进行训练和部署,以获得所需的预测结果。模型可以利用深度学习框架重新实现,如Tensorflow、Keras和PyTorch等。

以上就是NAS搜索参数的具体操作方法和过程。NAS近几年来迅速发展,具有很大的潜力和应用前景。


重新设计耗时层结构


1.减少第一个卷积层的卷积核个数(32->16)
2.精简Last Stage

表1. MobileNetV3-Large规格表。SE表示该块中是否有Squeeze-And-Excite。NL表示使用的非线性类型。这里,HS表示h-swish,RE表示ReLU。NBN表示无批量归一化。s表示步长。

Table 1.Specification for MobileNetV3-Large.SE denotes whether there is a Squeeze-And-Excite in that block.NL denotes the type of nonlinearity used.Here,HS denotes h-swish and RE denotes ReLU.NBN denotes no batch normalization.s denotes stride.

输入

操作

扩展层的输出通道数

输出通道数

注意力机制

非线性激活函数

步长

224×224×3

conv2d

-

16

-

HS

2

112×112×16

bneck,3×3

16

16

-

RE

1

112×112×16

bneck,3×3

64

24

-

RE

2

56×56×24

bneck,3×3

72

24

-

RE

1

56×56×24

bneck,5×5

72

40

RE

2

28×28×40

bneck,5×5

120

40

RE

1

28×28×40

bneck,5×5

120

40

RE

1

28×28×40

bneck,3×3

240

80

-

HS

2

14×14×80

bneck,3×3

200

80

-

HS

1

14×14×80

bneck,3×3

184

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值