MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications - 中文验证版
英文原文卡片:mobilenet_2017.md
状态:已翻译。
元数据
- Slug:
mobilenet_2017 - 年份: 2017
- 会议: arXiv
- 作者: Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam
- 阅读状态: read complete
- 计算范式: 高效推理与边缘部署 (
efficient_edge_inference) - 主要来源: PDF、抽取文本
计算设置
论文明确面向移动和嵌入式视觉应用,包括机器人、自动驾驶汽车、增强现实和设备端智能。抽取文本中未报告实测手机、CPU、GPU 或加速器硬件。训练描述为使用 RMSprop 和类似 Inception V3 的异步梯度下降的 TensorFlow 训练,但未列出训练设备数量或加速器 SKU。按项目规则,训练设置推断为 Google 2017 TensorFlow 加速器/GPU 基础设施,而预期部署设置为移动和嵌入式推理。
论文陈述的计算规模以乘加次数和参数数量而非 wall-clock 延迟表示。基线 MobileNet-224 具有 569M 乘加次和 4.2M 参数。论文反复使用这些计数作为设备预算代理,并引入宽度乘子和分辨率乘子,使开发者可以将模型适配到延迟和尺寸约束。
瓶颈
瓶颈是移动推理成本,而不仅是模型大小。标准卷积同时过滤空间邻域和混合通道,因此其成本随核面积、输入通道、输出通道和特征图面积增长。在受限设备上这造成高延迟和能耗。模型也可以小而慢,如果它依赖不能良好映射到密集 kernel 的稀疏或不规则操作。
MobileNet 的计算分析对架构论文而言异常硬件感知。它警告非结构化稀疏矩阵操作通常在稀疏度非常高之前不会比密集操作更快。设计反而将几乎所有计算保持在密集 1×1 卷积中。论文指出 1×1 卷积可直接用 GEMM 实现,不需要通常用于将较大卷积映射到 GEMM 的内存重排(im2col)。
方法适配
核心适配是深度可分离卷积。标准卷积被分解为深度空间卷积(每个输入通道一个滤波器),然后是混合通道的 1×1 逐点卷积。对 3×3 核,论文陈述这比标准卷积使用约 8-9x 更少计算,仅伴随小幅准确率损失。
该分解配合两个全局预算旋钮。宽度乘子 alpha 均匀减薄通道,对逐点卷积为主的各层,计算和参数大致按 alpha 平方减少。典型 alpha 值为 1、0.75、0.5 和 0.25。分辨率乘子 rho 减少输入和内部空间分辨率,大致按 rho 平方减少计算,而参数数量基本不变。这些旋钮暴露了一条连续硬件尺寸曲线,而非要求为每台设备设计新架构。
架构也为密集 kernel 效率设计。除第一层外所有层均为深度可分离;批归一化和 ReLU 跟随深度和逐点层;下采样使用带步长的深度卷积和第一层。论文报告 MobileNet 将约 95% 计算时间花在 1×1 卷积上,约 75% 参数在此,而 3×3 深度卷积占约 3% 乘加次和约 1% 参数。这意味着密集逐点 kernel 的速度在很大程度上决定运行时间。
证据
直接全卷积比较十分鲜明。全卷积 MobileNet 达到 71.7% ImageNet 准确率,使用 4,866M 乘加次和 29.3M 参数。深度可分离 MobileNet 达到 70.6%,使用 569M 乘加次和 4.2M 参数。因此大部分计算和参数节省来自改变卷积原语,在此比较中仅有 1.1 点准确率下降。
alpha 和分辨率扫描量化了部署权衡。在 224 分辨率下宽度乘子结果为:alpha 1.0 给出 70.6% 准确率、569M 乘加次、4.2M 参数;alpha 0.75 给出 68.4%、325M、2.6M;alpha 0.5 给出 63.7%、149M、1.3M;alpha 0.25 给出 50.6%、41M、0.5M。alpha 1.0 下分辨率结果为:224 输入 70.6% 和 569M 乘加次;192 输入 69.1% 和 418M;160 输入 67.2% 和 290M;128 输入 64.4% 和 186M。
论文将 MobileNet 与常见 backbone 比较。MobileNet-224 接近 VGG16 准确率,70.6% 对 71.5%,但使用 569M 乘加次和 4.2M 参数,而非 15,300M 和 138M。对 GoogleNet,它略准确,70.6% 对 69.8%,乘加次和参数更少。较小的 0.50 MobileNet-160 达到 60.2%,使用 76M 乘加次和 1.32M 参数,对比 AlexNet 的 57.2%、720M 和 60M,以及 SqueezeNet 的 57.5%、1,700M 和 1.25M。
应用证据显示相同资源框架。在 Stanford Dogs 上,MobileNet-224 达到 83.3% top-1,使用 569M 乘加次和 3.3M 参数,对比 Inception V3 的 84% 和 5,000M 及 23.2M。对人脸属性,激进的 MobileNet 变体在保持平均 AP 接近基线的同时使用远少乘加次。
历史影响
MobileNet 使深度可分离卷积成为主流移动 CNN 原语。其历史角色不仅是"小模型"设计;它提供了一条产品工程师可以通过宽度和输入分辨率调节的简单资源曲线。它还强调密集、实现友好的操作,帮助将架构搜索连接到实际移动 kernel 行为。
局限
论文更强调乘加次数和参数数量而非实测设备延迟,且未指明任何时延测量所使用的移动处理器。实际延迟取决于 kernel 库、内存布局、缓存行为、batch size 和硬件对深度卷积的支持。准确率/资源曲线以 ImageNet 为中心,不应视为对每个下游任务或设备普适。
链接
- 计算范式:efficient edge inference
- 方法索引:cnn、quantization
- Ledger 更新:compute bottlenecks