apple-aiml-research/ml-mobileone

This repository contains the official implementation of the research paper, "An Improved One millisecond Mobile Backbone" CVPR 2023.

What is MobileOne?

MobileOne は、モバイルデバイス向けに設計された超高速画像分類バックボーンのファミリーです。論文 "An Improved One millisecond Mobile Backbone" (arXiv 2206.04040) に記載されたモデルの PyTorch 実装に加え、事前学習済み重みと、実際の遅延を測定するための小さな iOS アプリを提供しています。


Key points

Goal iPhone 12 Pro で 1 ms 以内で実行できる高精度の画像分類器を提供する。
Models 5 種類のバリエーション – MobileOne-S0 … S4 – ImageNet での Top-1 精度(71.4% → 79.4%)と遅延(0.79 ms → 1.86 ms)のトレードオフを実現。
How it works 学習時には並列な「ブランチ」畳み込み層を含み、最適化を改善します。推論時には 再パラメータ化 ステップでこれらのブランチを1つの標準畳み込み層に統合し、シンプルなネットワークの速度を実現します。
Artifacts • PyTorch チェックポイント(統合済み・未統合)
• iOS 向け CoreML モデル
• 実機での遅延を検証するための小さな iOS ベンチマークアプリ(ModelBench)
Typical use-cases • カスタム画像データセットでの微調整(モバイルデプロイ用)。
• CoreML を通じた直接的なデバイス内推論。
• 高速 CNN アーキテクチャに関する研究。

Getting started (code snippet from the 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'))
# 推論を実行可能

Where to find the models

Variant Top-1 Acc. Latency* (iPhone 12 Pro) PyTorch checkpoint CoreML model
S0 71.4% 0.79 ms download (fused) / unfused mlmodel
S1 75.9% 0.89 ms
S2 77.4% 1.18 ms
S3 78.1% 1.53 ms
S4 79.4% 1.86 ms

*Latency measured on an iPhone 12 Pro.


iOS benchmark app (ModelBench)

ModelBench フォルダには、MobileOne モデルの CoreML バージョンをロードし、デバイス上で実際の推論時間を報告する最小限の Xcode プロジェクトが含まれています。そのフォルダ内の README に、アプリのビルドと実行方法が説明されています。


Citing the work

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}
}

TL;DR

MobileOne は、最新の iPhone で1画像あたり1ミリ秒未満の遅延で、最先端の ImageNet 精度を達成する、モバイルに最適化された CNN の即時利用可能な PyTorch ベースのツールキットです。学習コード、事前学習済み重み(推論用に統合済み、さらなる学習用に未統合)、CoreML エクスポート、および小さな iOS ベンチマークアプリを同梱しています。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト