| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 轻量级神经网络算法系列文章-MobileNet v3 -> 正文阅读 |
|
[人工智能]轻量级神经网络算法系列文章-MobileNet v3 |
4. 轻量级神经网络算法目录
专栏链接: 本章目录4.18 MobileNet v3论文题目《Searching for MobileNetV3》。 4.18.1 简介把高效的神经网络模型部署到手机端,无需将其数据发送到服务器进行评估,是个人隐私的关键促成因素。神经网络效率的提高不仅通过更高的精度和更低的延迟改善了用户体验,而且通过降低功耗帮助保持电池寿命。因此,本文的目标是开发最佳的移动计算机视觉体系结构,优化移动设备上的准确度权衡。 为此,本文提出了基于互补搜索技术和新架构设计的下一代移动网络模型。通过使用NetAdapt算法结合 神经网络搜索(NAS),然后通过新的 模型结构改进 ,MobileNetV3将直接使用手机CPU。 4.18.2 神经网络搜索网络搜索已证明是发现和优化网络架构的一个非常强大的工具(详见本系列文章NASNet、PNASNet、MnasNet等)。对于MobileNetV3,使用平台感知NAS通过优化每个网络block来搜索全局网络结构。然后,使用NetAdapt算法按层搜索过滤器的数量。这些技术是互补的,对于给定的硬件平台,可以结合起来有效地找到优化模型。 4.18.2.1 用于分块搜索的平台感知NAS和MnasNet类似,本文也采用一种平台感知的神经结构方法来搜索全局网络结构。因为本文使用的基于RNN的控制器和相同的因式分层搜索空间与MnasNet一样,当把目标延迟限制到约80ms时,搜索得到的大型移动模型,与MnasNet的结果类似。因此,本文只需重复使用MnasNet-A1,然后在其上应用NetAdapt和其他优化即可。 但是观察发现,最初的激励设计没有针对小型移动模型进行优化。具体的说就是,MnasNet使用多目标激励机制, A C C ( m ) × [ L A T ( m ) / T A R ] w ACC(m)×[LAT(m)/TAR]^w ACC(m)×[LAT(m)/TAR]w,为了取得近似帕累托最优解,固定目标延迟TAR,平衡每个模型m的模型精度 A C C ( m ) ACC(m) ACC(m)和延迟 L A T ( m ) LAT(m) LAT(m),发现对于小型模型,模型精度随着延迟的变化更为显著;因此,需要更小的权重因子w=?0:15(在MnasNet中w=-0.07)以补偿不同延迟的较大精度变化。通过这个新的权重因子w,从头开始新的架构搜索,以找到初始seed model,然后应用NetAdapt和其他优化,以获得最终的MobileNetV3-Small模型。 4.18.2.2 用于分层搜索的NetAdapt本文应用到架构搜索中的第二个技术点是NetAdapt。此方法是对平台感知NAS的补充:它允许以顺序方式对各个层进行微调,而不是全局的架构。简而言之,该技术执行过程如下:
在Netadapt中,该指标旨在使精度变化最小化。本文对该算法进行了改进,修改为使延迟变化与准确度变化之比最小化。也就是说,对于每个NetAdapt步骤中生成的所有候选项,选择一个最大化: △ A c c ∣ △ l a t e n c y ∣ \frac{\triangle Acc}{|\triangle latency|} ∣△latency∣△Acc?,其中 ∣ △ l a t e n c y ∣ |\triangle latency| ∣△latency∣满足上述步骤2(a)中的约束。从直觉来讲,因为这些候选项是离散的,所以更喜欢那些最大化权衡曲线斜率的候选项。重复此过程,直到延迟达到其目标,然后从头开始重新训练新架构。在MobileNet v2上使用与Netadapt中相同的候选项生成器,具体而言,只使用以下两种类型的候选项:
在本文的实验中,使用T=10000,发现它虽然提高了候选的初始微调精度,但在从头开始训练时,它不会改变最终精度。所以设置δ=0:01|L|,其中L是种子模型的延迟。 4.18.3 网络提升除了网络搜索,本文还在模型中引入了几个新组件,以进一步改进最终模型。 在网络的开始和结束部分重新对那些计算成本较高的层进行了设计。还介绍了一种新的非线性激活函数, h-swish ,它是最近swish非线性激活函数的一种改进版本,计算速度更快,量化更友好。 4.18.3.1 重新设计计算成本较高的层通过架构搜索找到合适的模型后,发现模型的最后一层和前期的层比其他层计算成本高很多,所以在保持准确率不变的情况下对这些层进行修改,以减少成本消耗及延迟。 第一个重写了网络的最后几层。基于MobileNetV2的反向瓶颈结构及其变体的模型使用1x1卷积作为最终层,以扩展到更高维的特征空间。为了具有丰富的预测特征,该层至关重要。然而,代价就是额外的计算成本及延迟。为了减少延迟并保留高维特性,将此层移动到最终的平均池化层之外。最后一组特征现在以1x1卷积计算而不是7x7卷积计算。使用这种设计后,在计算和延迟方面,特征的计算变得几乎无计算成本。如下图所示: 第二个修改了初始层。目前在初始层中大多数的模型倾向于使用32个卷积核的3x3卷积,用于边缘检测的初始滤波器组。这些滤波器通常是彼此的镜像,就是好几个通道之间的信息是重复的。本文尝试减少过滤器的数量,并且使用不同的非线性激活函数以尝试减少冗余。尝试多种激活函数后,决定使用该层的hard-swish非线性激活函数,它的性能更好。将滤波器数量减少到16个,能够同时保持与使用ReLU或swish的32个滤波器相同的精度。 这一修改节省了额外的2毫秒和10M的MAdds。 4.18.3.2 修改非线性激活函数激活函数介绍可以看这篇文章。 swish是ReLU的替代品,大大提高了神经网络的准确性,公式如下:
下图中显示了Sigmoid和swish非线性的soft版本和hard版本的比较如下: 4.18.3.3 加入SE(squeeze-and-excite)模块SE模块介绍详见本系列文章SENet,SE模块示意图如下: 在MnasNet中,SE bottleneck的大小与卷积bottleneck的大小有关,相反,本文将它们全部固定为扩展层中通道数的1/4。实验发现,这样做可以在轻微增加参数数量的情况下提高准确性,并且不会产生明显的延迟成本。 4.18.4 MobileNet V3整体结构MobileNetV3分为两个模型: MobileNetV3-large 和 MobileNetV3-small ,分别针对高和低资源使用情况。这些模型是通过将平台感知NAS和NetAdapt技术应用于网络搜索,并结合对网络改进方法而得到的。有关网络的完整结构,请参见表1和表2。 4.18.5 总结
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:35:35- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |