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 基準測試應用程式。
相關
- 專案
- 專案
- 專案
- 專案