
Link to this sectionMobile Segment Anything (MobileSAM)#
MobileSAMは、モバイルおよびエッジデバイス向けに特別に構築された、コンパクトで効率的な画像セグメンテーションモデルです。Meta社のSegment Anything Model (SAM) の能力をコンピューティングリソースが限られた環境にもたらすように設計されており、MobileSAMは、オリジナルのSAMパイプラインとの互換性を維持しながら、ほぼ瞬時のセグメンテーションを実現します。リアルタイムアプリケーションや軽量なデプロイメントを開発する場合でも、MobileSAMは以前のモデルと比較して、サイズや速度の要件を大幅に抑えつつ、優れたセグメンテーション結果を提供します。
Watch: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉
MobileSAMは、Grounding-SAM、AnyLabeling、Segment Anything in 3D など、さまざまなプロジェクトで採用されています。
MobileSAMは、単一のGPUを使用して100k枚の画像データセット(元の画像の1%)で1日未満でトレーニングされました。トレーニングコードは将来リリースされる予定です。
Link to this section利用可能なモデル、サポートされているタスク、および動作モード#
以下の表は、利用可能なMobileSAMモデル、その学習済み重み、サポートされているタスク、および Inference、Validation、Training、Export などの異なる動作モードとの互換性を示しています。サポートされているモードは ✅ で、サポートされていないモードは ❌ で示されています。
| モデルタイプ | 事前学習済みウェイト | サポートされるタスク | 推論 | バリデーション | トレーニング | エクスポート |
|---|---|---|---|---|---|---|
| MobileSAM | mobile_sam.pt | インスタンスセグメンテーション | ✅ | ❌ | ❌ | ❌ |
Link to this sectionMobileSAMとYOLOの比較#
以下の比較では、Meta社のSAMバリアント、MobileSAM、および YOLO26n-seg を含むUltralyticsセグメンテーションモデルの違いを強調しています:
| モデル | サイズ (MB) | パラメータ (M) | 速度 (CPU) (ms/im) |
|---|---|---|---|
| Meta SAM-b | 375 | 93.7 | 41703 |
| Meta SAM2-b | 162 | 80.8 | 28867 |
| Meta SAM2-t | 78.1 | 38.9 | 23430 |
| MobileSAM | 40.7 | 10.1 | 23802 |
| YOLOv8 backbone を備えたFastSAM-s | 23.9 | 11.8 | 58.0 |
| Ultralytics YOLOv8n-seg | 7.1 (11.0倍小さい) | 3.4 (11.4倍少ない) | 24.8 (945倍高速) |
| Ultralytics YOLO11n-seg | 6.2 (12.6倍小さい) | 2.9 (13.4倍少ない) | 24.3 (964倍高速) |
| Ultralytics YOLO26n-seg | 6.7 (11.7倍小さい) | 2.7 (14.4倍少ない) | 25.2 (930倍高速) |
この比較は、SAMバリアントとYOLOセグメンテーションモデル間のモデルサイズと速度における実質的な違いを示しています。SAMモデルは独自の自動セグメンテーション機能を提供しますが、YOLOモデル(特に YOLOv8n-seg、YOLO11n-seg、および YOLO26n-seg)は、大幅に小さく、高速で、計算効率に優れています。
SAMの速度はPyTorchで、YOLOの速度はONNX Runtimeで測定されました。テストは、torch==2.10.0、ultralytics==8.4.31、onnxruntime==1.24.4 を使用して、16GB RAMを搭載した2025年版Apple M4 Airで実行されました。これらの結果を再現するには:
from ultralytics import ASSETS, SAM, YOLO, FastSAM
# Profile SAM2-t, SAM2-b, SAM-b, MobileSAM
for file in ["sam_b.pt", "sam2_b.pt", "sam2_t.pt", "mobile_sam.pt"]:
model = SAM(file)
model.info()
model(ASSETS)
# Profile FastSAM-s
model = FastSAM("FastSAM-s.pt")
model.info()
model(ASSETS)
# Profile YOLO models (ONNX)
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt", "yolo26n-seg.pt"]:
model = YOLO(file_name)
model.info()
onnx_path = model.export(format="onnx", dynamic=True)
model = YOLO(onnx_path)
model(ASSETS)Link to this sectionSAMからMobileSAMへの適応#
MobileSAMは、前処理、後処理、およびすべてのインターフェースを含め、オリジナルの SAM と同じパイプラインを維持しています。つまり、ワークフローを最小限に変更するだけでSAMからMobileSAMへ移行できます。
主な違いは画像エンコーダーにあります。MobileSAMは、オリジナルのViT-Hエンコーダー(637Mパラメーター)を、はるかに小さいTiny-ViTエンコーダー(5Mパラメーター)に置き換えています。単一のGPUにおいて、MobileSAMは1画像あたり約12msで処理します(エンコーダーに8ms、マスクデコーダーに4ms)
Link to this sectionViTベースの画像エンコーダー比較#
| 画像エンコーダー | オリジナルのSAM | MobileSAM |
|---|---|---|
| パラメータ | 637M | 5M |
| 速度 | 452ms | 8ms |
Link to this sectionプロンプトガイド付きマスクデコーダー#
| マスクデコーダー | オリジナルのSAM | MobileSAM |
|---|---|---|
| パラメータ | 3.876M | 3.876M |
| 速度 | 4ms | 4ms |
Link to this section全パイプライン比較#
| 全パイプライン (Enc+Dec) | オリジナルのSAM | MobileSAM |
|---|---|---|
| パラメータ | 641M | 9.66M |
| 速度 | 456ms | 12ms |
MobileSAMとオリジナルのSAMのパフォーマンスを、ポイントプロンプトとボックスプロンプトの両方を使用して以下に示します。


MobileSAMはFastSAMよりも約7倍小さく、5倍高速です。詳細については、MobileSAMプロジェクトページ をご覧ください。
Link to this sectionUltralyticsでのMobileSAMのテスト#
オリジナルの SAM と同様に、UltralyticsはMobileSAMをテストするためのシンプルなインターフェースを提供しており、ポイントプロンプトとボックスプロンプトの両方をサポートしています。
Link to this sectionモデルのダウンロード#
MobileSAMの学習済み重みを Ultralyticsアセット からダウンロードしてください。
Link to this sectionポイントプロンプト#
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])
# Predict multiple segments based on multiple points prompt
model.predict("ultralytics/assets/zidane.jpg", points=[[400, 370], [900, 370]], labels=[1, 1])
# Predict a segment based on multiple points prompt per object
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 1]])
# Predict a segment using both positive and negative prompts.
model.predict("ultralytics/assets/zidane.jpg", points=[[[400, 370], [900, 370]]], labels=[[1, 0]])Link to this sectionボックスプロンプト#
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a single box prompt
model.predict("ultralytics/assets/zidane.jpg", bboxes=[439, 437, 524, 709])
# Predict multiple segments based on multiple box prompts
model.predict("ultralytics/assets/zidane.jpg", bboxes=[[439, 437, 524, 709], [114, 196, 313, 708]])MobileSAM と SAM は同じAPIを共有しています。使用方法の詳細については、SAMのドキュメント を参照してください。
Link to this section検出モデルを使用してセグメンテーションデータセットを自動的に構築する#
Ultralyticsフレームワークで データセットを自動アノテーション するには、以下のように auto_annotate 関数を使用します:
from ultralytics.data.annotator import auto_annotate
auto_annotate(data="path/to/images", det_model="yolo26x.pt", sam_model="mobile_sam.pt")| 引数 | タイプ | デフォルト | 説明 |
|---|---|---|---|
data | str | 必須 | アノテーションまたはセグメンテーション対象の画像が含まれるディレクトリへのパス。 |
det_model | str | 'yolo26x.pt' | 初期の物体検出を行うためのYOLO検出モデルのパス。 |
sam_model | str | 'sam_b.pt' | セグメンテーション用のSAMモデルパス(SAM、SAM 2、MobileSAM、SAM 3のウェイトをサポート)。 |
device | str | '' | 計算デバイス(例: 'cuda:0'、'cpu'、または空文字で自動デバイス検出)。 |
conf | float | 0.25 | 弱い検出結果をフィルタリングするためのYOLO検出信頼度閾値です。 |
iou | float | 0.45 | 重複するボックスをフィルタリングするためのNon-Maximum Suppression(NMS)用IoU閾値です。 |
imgsz | int | 640 | 画像のリサイズに使用する入力サイズ(32の倍数である必要があります)。 |
max_det | int | 300 | メモリ効率のために、画像1枚あたりの最大検出数です。 |
classes | list[int] | None | 検出するクラスインデックスのリスト(例:人物と自転車を検出する場合は [0, 1])。 |
output_dir | str | None | アノテーションを保存するディレクトリ(デフォルトは <data>_auto_annotate_labels の兄弟ディレクトリ)。 |
Link to this section引用と謝辞#
MobileSAMが研究や開発に役立った場合は、以下の論文を引用することを検討してください。
@article{mobile_sam,
title={Faster Segment Anything: Towards Lightweight SAM for Mobile Applications},
author={Zhang, Chaoning and Han, Dongshen and Qiao, Yu and Kim, Jung Uk and Bae, Sung Ho and Lee, Seungkyu and Hong, Choong Seon},
journal={arXiv preprint arXiv:2306.14289},
year={2023}
}完全な MobileSAM論文 (arXiv) を読む。
Link to this sectionよくある質問 (FAQ)#
Link to this sectionMobileSAMとは何か、またオリジナルのSAMモデルとどう違うのか?#
MobileSAMは、モバイルおよびエッジアプリケーション向けに最適化された軽量かつ高速な画像セグメンテーションモデルです。オリジナルのSAMと同じパイプラインを維持しつつ、巨大なViT-Hエンコーダー(637Mパラメーター)をコンパクトなTiny-ViTエンコーダー(5Mパラメーター)に置き換えています。その結果、MobileSAMはオリジナルのSAMと比較してサイズが約5分の1、速度が約7倍となり、SAMの456msに対して1画像あたり約12msで動作します。MobileSAMの実装に関する詳細はMobileSAM GitHubリポジトリをご覧ください。
Link to this sectionUltralyticsを使用してMobileSAMをテストするにはどうすればよいですか?#
UltralyticsでMobileSAMをテストするのは簡単です。ポイントプロンプトとボックスプロンプトを使用してセグメントを予測できます。例えば、ポイントプロンプトを使用する場合:
from ultralytics import SAM
# Load the model
model = SAM("mobile_sam.pt")
# Predict a segment based on a point prompt
model.predict("ultralytics/assets/zidane.jpg", points=[900, 370], labels=[1])詳細については、UltralyticsでMobileSAMをテストする セクションを参照してください。
Link to this sectionモバイルアプリケーションでMobileSAMを使用すべき理由は何ですか?#
MobileSAMは軽量な設計と高速な推論速度のため、モバイルおよびエッジアプリケーションに最適です。オリジナルのSAMと比較して約5倍小型で7倍高速であり、計算リソースが限られたデバイスでのリアルタイム・セグメンテーションに適しています。その効率性により、モバイルデバイスは大きな遅延なしに リアルタイム画像セグメンテーション を実行できます。さらに、MobileSAMはモバイル性能に最適化された 推論モード をサポートしています。
Link to this sectionMobileSAMはどのように学習されましたか、また学習コードは公開されていますか?#
MobileSAMは、100k枚の画像データセット(オリジナルの画像の1%)を使用して、単一のGPUで1日以内に学習されました。学習コードは将来的に公開される予定ですが、現在は MobileSAM GitHubリポジトリ から事前学習済みウェイトと実装の詳細にアクセスできます。
Link to this sectionMobileSAMの主なユースケースは何ですか?#
MobileSAMは、モバイルおよびエッジ環境における高速で効率的な画像セグメンテーションのために設計されています。主なユースケースには以下が含まれます:
- モバイルアプリ向けのリアルタイム 物体検出およびセグメンテーション
- 計算リソースが限られたデバイスでの低遅延画像処理
- 拡張現実 (AR)、分析などのAI搭載モバイルアプリへの統合
ユースケースとパフォーマンスの詳細については、SAMからMobileSAMへの適応 および MobileSAMアプリケーションに関するUltralyticsブログ を参照してください。