深度学习论文: An Improved One millisecond Mobile Backbone及其PyTorch实现 An Improved One millisecond Mobile Backbone PDF: https://arxiv.org/pdf/2206.04040.pdf PyTorch代码: https://github.com/shanglianlm0525/CvPytorch PyTorch代码: https://github.com/shanglianlm0525/PyTorch-Networks
1 概述
MobileOne(≈MobileNetV1+RepVGG+训练Trick)是由Apple公司提出的一种基于iPhone12优化的超轻量型架构,在ImageNet数据集上以<1ms的速度取得了75.9%的Top1精度。
2 MobileOne
高效率网络具有更强的实用价值,但学术界的研究往往聚焦于FLOPs或者参数量的降低,而这两者与推理效率之间并不存在严格的一致性。比如,FLOPs并未考虑访存消耗与计算并行度,像无参操作(如跳过连接导致的Add、Concat等)会带来显著的访存消耗,导致更长推理耗时。
2-1 Metric Correlations
从上图可以看出,延迟的快慢与模型的参数量或者FLOPs的相关性较弱,在CPU端相关性更弱。
2-2 Key Bottlenecks
本文对影响模型性能的两个"瓶颈"进行分析,并提出相应方案; Activation Functions: 从下表可以看出,尽管具有相同的架构,但不同激活函数导致的延迟差异极大。本文默认选择ReLU激活函数。 Architectural Blocks: 从下表可以看出,当采用单分支结构时,模型具有更快的速度。为改善效率,本文在大模型配置方面有限的采用了SE模块。
2-3 MobileOne Block
MobileOne的核心模块基于MobileNetV1而设计,同时吸收了重参数思想,得到下图所示的结构。
2-4 Architecture
在Model Scaling方面类似MobileNetV2,下表给出了MobileOne不同配置的参数信息。
3 Experiments
|