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에서 ≤ 1ms 내에 실행되는 고정확도 이미지 분류기를 제공합니다.
Models 다섯 가지 변형 – MobileOne-S0 … S4 – ImageNet에서 Top-1 정확도(71.4% → 79.4%)와 지연 시간(0.79ms → 1.86ms) 사이의 트레이드오프를 제공합니다.
How it works 학습 중에는 최적화를 향상시키기 위해 병렬 "브랜치" 컨볼루션을 포함합니다. 추론 시에는 재패러미터화(re-parameterization) 단계를 통해 이러한 브랜치를 단일 표준 컨볼루션으로 융합하여 일반 네트워크의 속도를 제공합니다.
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밀리초 미만의 지연 시간으로 최첨단 ImageNet 정확도를 달성하는, 모바일 친화적인 CNN의 즉시 사용 가능한 PyTorch 기반 세트입니다. 학습 코드, 사전 학습된 가중치(추론용 융합 및 추가 학습용 비융합), CoreML 내보내기, 그리고 작은 iOS 벤치마크 앱이 함께 제공됩니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트