Searching for MobileNetV3

研究人员用神经架构搜索方法得到MobileNetV3网络,包含两个版本。该网络在计算延迟和精度上优于前两版。文中对比其性能与精度,介绍搜索模型基础模块、搜索方式,阐述网络改进,如重新设计网络层、引入新激活函数swish等,最后给出实验结果获取方式。

研究人员利用神经架构搜索的方法得到了MobileNetV3网络。MobileNetV3包含两个版本MobileNetV3-Small与MobileNetV3-Large,别对应性能和存储量不同的场景。该网络相较于MobileNet前两个版本无论在计算延迟性上还是在计算精度上,都有较为明显的优势。

论文地址:
https://arxiv.org/abs/1905.02244

MobileNetV3性能与精度对比

MobileNetV3与之前网络性能对比
Pixel 1手机上测试延迟与top-1 ImageNet准确度之间的权衡。所有模型都使用输入分辨率224。V3 large和V3 small使用乘数0.75,1和1.25来显示最佳边界。MobileNetV3优势明显。
MobileNetV3与之前网络准确率度对比
MAdds和top-1准确度之间的权衡。这允许比较针对不同硬件或软件框架的模型。所有MobileNetV3都用于输入分辨率224并使用0.35,0.5,0.75,1和1.25倍系数。MobileNetV3优势明显。

搜索模型基础模块

MobileNetV3是在从多个模块搜索而来的,这些模块源自于多个网络结构。作者使用这些模块来组合构建网络结构,以便构建最有效的模型。
1、从MobileNetV1引入深度可分离卷积(Depthwise separable convolutions),深度可分离卷积通过将空间滤波与特征生成机制分离来有效地分解传统卷积。
2、从MobileNetV2引入线性瓶颈(linear bottleneck)和倒置残差结构(inverted residual structure)。以通过利用问题的低秩性质来制造更高效的层结构。
3、从MnasNet引入基于挤压和激发的轻量级注意模块到瓶颈结构中来。该模块放置在扩展中的深度滤波器之后,以便放大注意力特征。

搜索方式

网络搜索已经证明它是发现和优化网络架构的一个非常强大的工具。对于MobileNetV3,作者使用platform-aware NAS通过优化每个网络块来搜索全局网络结构。然后,作者使用NetAdapt算法在每层中搜索过滤器的数量。前者是整体搜索,后者是局部搜索。它们是互补的,可以组合起来有效地找到给定硬件平台的优化模型。

网络改进

重新设计网络层。如下图所示,优化了网络后端的部分,这样能够在不损失精度的前提下节省计算成本。
改进的网络结构
作者引入一种新的激活函数swish作为ReLU的替代品,该激活函数可以显著提升神经网络的准确性。该公式定义为:

虽然这种非线性提高了准确性,但它在嵌入式环境中具很高的成本,因为在移动设备上计算S形函数要消耗大量资源。作者以两种方式处理这个问题:
1、作者用它的分段线性硬模拟代替sigmoid函数。细微差别是作者使用ReLU6而不是自定义剪切常量。同样,swish的hard版本也变成了:

Hard版本的损失函数与原函数在外形上比较接近:
使用Hard版本的激活函数后形状没有太大改变
经测试,改进的激活函数很有效。
2、随着作者深入探究网络,应用非线性激活函数的成本会降低,因为每次分辨率下降时,每层激活内存通常会减半。作者发现只有在更深层次使用它们才能实现大部分益处。因此,在架构中,作者只在模型的后半部分使用h-swish。即使使用这些优化,h-swish仍然会引入一些延迟成本。然而,对准确性和延迟的影响是积极的,它为进一步的软件优化提供了一个场所:一旦平滑的sigmoid被分段线性函数取代,大部分开销都在内存访问中,这可能是通过将非线性与前一层融合来消除。

实验结果

MobileNetV3与MobileNetV2的准确率对比
在ImageNet训练集上分类精度、计算量、参数量的比较
性能比较
使用DLite目标检测算法在MS COCO数据集上比较



扫码识别关注,获取更多论文解读

### MobileNetV3 模型介绍 MobileNetV3 是一种轻量级深度学习模型,专为移动设备和嵌入式设备设计,以实现高效的图像识别任务。它通过应用平台感知的神经架构搜索(NAS)和 NetAdapt 算法来优化网络结构,并结合了新的改进技术,如 Squeeze-and-Excite 模块和 Hard-Swish 激活函数,从而在保持低计算成本的同时提高了模型性能。 该模型分为两个版本:**MobileNetV3-Large** 和 **MobileNetV3-Small**,分别适用于高资源需求和低资源需求的场景[^1]。这两个版本在 ImageNet 数据集上的表现优于前代模型 MobileNetV2,尽管实际部署中 MobileNetV2 仍然较为常见[^2]。 #### 主要特性 - **轻量化设计**:采用深度可分离卷积(Depthwise Separable Convolution),大幅减少参数数量和计算量。 - **Squeeze-and-Excite 模块**:引入通道注意力机制,提升特征表达能力。 - **Hard-Swish 激活函数**:相比传统 ReLU,提供更平滑的非线性变换,有助于提高模型精度。 - **平台感知 NAS 搜索**:利用自动化网络搜索技术优化模型结构,使其在特定硬件平台上达到最佳性能。 ### 应用指南 #### 图像分类 MobileNetV3 可用于图像分类任务,尤其适合在计算资源受限的设备上运行。以下是一个使用 TensorFlow/Keras 加载预训练 MobileNetV3-Small 模型并进行图像分类的示例: ```python import tensorflow as tf from tensorflow.keras.applications.mobilenet_v3 import MobileNetV3Small, preprocess_input, decode_predictions from tensorflow.keras.preprocessing import image import numpy as np # 加载预训练的小型模型 model = MobileNetV3Small(weights='imagenet') # 加载并预处理输入图像 img_path = 'path_to_your_image.jpg' img = image.load_img(img_path, target_size=(224, 224)) x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) # 进行预测 preds = model.predict(x) print('Predicted:', decode_predictions(preds, top=3)[0]) ``` #### 目标检测与语义分割 MobileNetV3 也可作为特征提取器应用于目标检测(如 SSD、YOLO)或语义分割(如 DeepLab)等任务中。通常会将 MobileNetV3 的主干网络替换原有特征提取模块,以获得更高的推理效率。 #### 部署建议 - 在移动端部署时,推荐使用 **MobileNetV3-Small** 版本,以节省内存和计算资源。 - 若需更高精度且对资源要求不敏感,可选择 **MobileNetV3-Large**。 - 利用 TensorFlow Lite 或 ONNX Runtime 等工具进行模型压缩和加速,以便更好地适应边缘设备。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值