HuggingFace镜像/mobilenetv2
模型介绍文件和版本分析
下载使用量0

MobileNetV2

MobileNetV2: 倒残差与线性瓶颈

简介

该模型是一种全新的神经网络架构,专门为移动设备和资源受限环境量身设计。它推动了移动定制计算机视觉模型的技术发展,在保持同等精度的同时,大幅减少了所需的运算量和内存消耗。

该模型的主要创新点在于提出了一种新的层模块:带线性瓶颈的倒残差结构。该模块以低维压缩表示作为输入,首先将其扩展到高维,然后通过轻量级深度卷积进行滤波。接着使用线性卷积将特征投影回低维表示。[1]

图 1. MobileNetV2 的架构 [1]

结果

我们在 ImageNet-1K 上复现的模型性能如下表所示。

模型训练环境Top-1 (%)Top-5 (%)参数量 (M)配置文件下载链接
mobilenet_v2_075D910x8-G69.9889.322.66yamlweights
mobilenet_v2_100D910x8-G72.2790.723.54yamlweights
mobilenet_v2_140D910x8-G75.5692.566.15yamlweights

说明

  • 训练环境:训练环境表示为 {设备}x{数量}-{MindSpore 模式},其中 MindSpore 模式可以是 G(图模式)或 F(带 ms function 的动态图模式)。例如,D910x8-G 表示使用 8 张 Ascend 910 NPU 以图模式进行训练。
  • Top-1 和 Top-5:在 ImageNet-1K 验证集上报告的准确率。

快速入门

准备工作

安装

请参考 MindCV 中的安装说明。

数据集准备

请下载ImageNet-1K数据集用于模型训练和验证。

训练

  • 分布式训练

使用预定义的训练方案可以轻松复现报告中的结果。若要在多Ascend 910设备上进行分布式训练,请运行

# distributed training on multiple GPU/Ascend devices
mpirun -n 8 python train.py --config configs/mobilenetv2/mobilenet_v2_0.75_ascend.yaml --data_dir /path/to/imagenet

如果脚本由 root 用户执行,则必须在 mpirun 中添加 --allow-run-as-root 参数。

同样,您可以使用上述 mpirun 命令在多个 GPU 设备上训练模型。

有关所有超参数的详细说明,请参阅 config.py。

注意: 由于全局批次大小(batch_size × num_devices)是一个重要的超参数,因此建议在复现实验时保持全局批次大小不变,或者根据新的全局批次大小对学习率进行线性调整。

  • 单机训练

如果您希望在不进行分布式训练的情况下,在较小的数据集上训练或微调模型,请运行:

# standalone training on a CPU/GPU/Ascend device
python train.py --config configs/mobilenetv2/mobilenet_v2_0.75_ascend.yaml --data_dir /path/to/dataset --distribute False

验证

为验证训练模型的准确性,您可以使用 validate.py 并通过 --ckpt_path 参数解析检查点路径。

python validate.py -c configs/mobilenetv2/mobilenet_v2_0.75_ascend.yaml --data_dir /path/to/imagenet --ckpt_path /path/to/ckpt

部署

请参考 MindCV 中的部署教程。

参考文献

[1] Sandler M, Howard A, Zhu M, et al. Mobilenetv2: Inverted residuals and linear bottlenecks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 4510-4520.