apple-aiml-research/ml-mobileone
This repository contains the official implementation of the research paper, "An Improved One millisecond Mobile Backbone" CVPR 2023.
什么是 MobileOne?
MobileOne 是专为移动设备设计的一系列超高速图像分类骨干网络。该仓库提供了论文《An Improved One millisecond Mobile Backbone》(arXiv 2206.04040)中描述的模型的 PyTorch 实现,以及预训练权重和一个用于测量实际延迟的小型 iOS 应用程序。
关键点
| 目标 | 提供在手机(iPhone 12 Pro)上运行时间 ≤ 1 毫秒的高精度图像分类器。 |
| 模型 | 五个变体 – MobileOne-S0 … S4 – 在 ImageNet 上的 Top-1 准确率(71.4% → 79.4%)与延迟(0.79 毫秒 → 1.86 毫秒)之间进行权衡。 |
| 工作原理 | 训练期间网络包含并行的“分支”卷积以改善优化。推理时通过 重参数化 步骤将这些分支融合为单一标准卷积,从而获得普通网络的速度。 |
| 产出物 | • PyTorch 检查点(融合与未融合) |
| • 用于 iOS 的 CoreML 模型 | |
| • 用于在真实硬件上验证延迟的小型 iOS 基准测试应用(ModelBench) | |
| 典型用例 | • 在自定义图像数据集上进行微调,用于移动部署。 |
| • 通过 CoreML 直接在设备上进行推理。 | |
| • 快速 CNN 架构的研究。 |
快速开始(来自 README 的代码片段)
import torch
from mobileone import mobileone, reparameterize_model
# 1️⃣ 构建模型(选择一个变体)
model = mobileone(variant='s0') # 或 's1' … 's4'
# 2️⃣ 从头训练或微调 …
# model = … (your training loop)
# 3️⃣ 加载预训练检查点以继续训练
ckpt = torch.load('/path/to/unfused_checkpoint.pth.tar')
model.load_state_dict(ckpt)
# 4️⃣ 准备快速推理
model.eval()
model_eval = reparameterize_model(model) # 融合分支
# → 使用 `model_eval` 进行验证或部署
对于纯评估,可以通过直接加载 融合 检查点来跳过重参数化步骤:
model = mobileone(variant='s0', inference_mode=True)
model.load_state_dict(torch.load('/path/to/checkpoint.pth.tar'))
# 可直接运行推理
模型获取位置
| 变体 | Top-1 准确率 | 延迟*(iPhone 12 Pro) | PyTorch 检查点 | CoreML 模型 |
|---|---|---|---|---|
| S0 | 71.4% | 0.79 毫秒 | 下载(融合) / 未融合 | mlmodel |
| S1 | 75.9% | 0.89 毫秒 | … | … |
| S2 | 77.4% | 1.18 毫秒 | … | … |
| S3 | 78.1% | 1.53 毫秒 | … | … |
| S4 | 79.4% | 1.86 毫秒 | … | … |
*延迟在 iPhone 12 Pro 上测量。
iOS 基准测试应用(ModelBench)
ModelBench 文件夹包含一个最小的 Xcode 项目,可加载 MobileOne 模型的 CoreML 版本并在设备上报告实际推理时间。该文件夹内的 README 说明了如何构建和运行该应用。
引用本工作
如果在研究或产品中使用 MobileOne,请引用原始论文:
@article{mobileone2022,
title={An Improved One millisecond Mobile Backbone},
author={Vasu, Pavan Kumar Anasosalu and Gabriel, James and Zhu, Jeff and Tuzel, Oncel and Ranjan, Anurag},
journal={arXiv preprint arXiv:2206.04040},
year={2022}
}
概要
MobileOne 是一个即用型、基于 PyTorch 的移动友好 CNN 工具包,可在现代 iPhone 上实现每张图像低于 1 毫秒的延迟,同时达到最先进的 ImageNet 准确率。该仓库包含训练代码、预训练权重(用于推理的融合版本和用于进一步训练的未融合版本)、CoreML 导出以及一个小型 iOS 基准测试应用。
相关
- 项目
- 项目
- 项目
- 项目