モバイルセグメントなんでも (MobileSAM)
MobileSAM の論文は現在arXivに掲載されている。
CPU 上で動作するMobileSAM デモは、このデモリンクからアクセスできる。Mac i5CPU 実行時間は約3秒です。ハグする顔 Hugging Faceデモでは、インターフェースと性能の低いCPUのために応答が遅くなりますが、引き続き効果的に機能します。
見るんだ: Ultralytics を使ってMobileSAM で推論を実行する方法|ステップ・バイ・ステップ・ガイド🎉。
MobileSAM は、Grounding-SAM 、AnyLabeling、Segment Anything in 3D を含む様々なプロジェクトで実装されている。
MobileSAM は、100kのデータセット(元画像の1%)を用いて、GPU 、1日足らずで学習される。このトレーニングのコードは将来公開される予定である。
利用可能なモデル、サポートされるタスク、および動作モード
この表は、利用可能なモデルを、特定の事前訓練された重み、サポートするタスク、および推論、検証、トレーニング、エクスポートなどのさまざまな操作モードとの互換性を示します。
モデルタイプ | 事前に訓練されたウェイト | 対応タスク | 推論 | バリデーション | トレーニング | 輸出 |
---|---|---|---|---|---|---|
MobileSAM | モバイルサム | インスタンスのセグメンテーション | ✅ | ❌ | ❌ | ❌ |
MobileSAM YOLO比較
ここでは、MobileSAM含むMetaのSAM バリエーションと、Ultralytics 最小セグメンテーションモデルであるYOLO11n-segを比較する:
モデル | サイズ (MB) | パラメータ (M) | スピードCPU)(ms/im) |
---|---|---|---|
メタSAM-b | 375 | 93.7 | 49401 |
メタSAM2-b | 162 | 80.8 | 31901 |
メタSAM2-t | 78.1 | 38.9 | 25997 |
MobileSAM | 40.7 | 10.1 | 25381 |
YOLOv8 バックボーンのFastSAM | 23.7 | 11.8 | 55.9 |
Ultralytics YOLOv8n | 6.7(11.7倍小さい) | 3.4倍(11.4倍減) | 24.5(1061倍速) |
Ultralytics YOLO11n-seg | 5.9(13.2倍小さい) | 2.9(13.4倍減) | 30.1(864倍速) |
この比較は、SAM 亜種とYOLO セグメンテーションモデルとの間に、モデルのサイズと速度に大きな違いがあることを示している。SAM ユニークな自動セグメンテーション機能を提供するが、YOLO モデル、特にYOLOv8nYOLO11n-segは、大幅に小さく、速く、計算効率が高い。
テストは、24GBのRAMを搭載した2025年製のApple M4 Proで実行された。 torch==2.6.0
そして ultralytics==8.3.90
.このテストを再現する:
例
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
for file_name in ["yolov8n-seg.pt", "yolo11n-seg.pt"]:
model = YOLO(file_name)
model.info()
model(ASSETS)
SAM からMobileSAM
MobileSAM はオリジナルのSAM と同じパイプラインを保持しているため、オリジナルの前処理、後処理、その他すべてのインターフェイスを組み込んでいる。その結果、現在オリジナルのSAM を使用している人は、最小限の労力でMobileSAM に移行することができる。
MobileSAM はオリジナルのSAM と同等の性能を持ち、画像エンコーダの変更以外は同じパイプラインを維持しています。具体的には、オリジナルのヘビー級のViT-Hエンコーダー(632M)を、より小型のTiny-ViT(5M)に置き換えています。シングルGPU 、MobileSAM は画像あたり約12msで動作する:画像エンコーダーで8ms、マスク・デコーダーで4msである。
次の表は、ViTベースの画像エンコーダの比較である:
画像エンコーダー | オリジナルSAM | MobileSAM |
---|---|---|
パラメータ | 611M | 5M |
スピード | 452ミリ秒 | 8ms |
オリジナルのSAM 、MobileSAM 、どちらも同じプロンプトガイド付きマスクデコーダーを利用している:
マスク・デコーダー | オリジナルSAM | MobileSAM |
---|---|---|
パラメータ | 3.876M | 3.876M |
スピード | 4ms | 4ms |
パイプライン全体の比較である:
パイプライン全体(Enc+Dec) | オリジナルSAM | MobileSAM |
---|---|---|
パラメータ | 615M | 9.66M |
スピード | 456ms | 12ms |
点と箱の両方をプロンプトとして使用し、MobileSAM とオリジナルのSAM のパフォーマンスを示す。
その優れた性能により、MobileSAM は、現行のFastSAM よりも約5倍小さく、7倍高速である。詳細はMobileSAM プロジェクトのページでご覧いただけます。
テストMobileSAM Ultralytics
オリジナルのように SAMUltralytics、ポイントプロンプトとボックスプロンプトの両方のモードを含む、わかりやすいテスト方法を提供しています。
モデルダウンロード
MobileSAM 事前学習済み重みは、ultralytics からダウンロードできるultralytics
ポイント・プロンプト
例
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]])
ボックス・プロンプト
例
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]])
を実施した。 MobileSAM
そして SAM
同じAPIを使用しています。詳しい使用法については SAM ページ.
検出モデルを活用したセグメンテーション・データセットの自動構築
Ultralytics フレームワークを使用してデータセットに自動的にアノテーションを付けるには、次のようにします。 auto_annotate
関数を以下に示す:
例
議論 | タイプ | デフォルト | 説明 |
---|---|---|---|
data |
str |
必須 | アノテーションまたはセグメンテーションの対象画像を含むディレクトリへのパス。 |
det_model |
str |
'yolo11x.pt' |
YOLO 初期物体検出のための検出モデルパス。 |
sam_model |
str |
'sam_b.pt' |
セグメンテーション用のSAM モデルパス (SAM、SAM2 バリアント、mobile_sam モデルをサポート)。 |
device |
str |
'' |
計算デバイス(例えば、'cuda:0'、'cpu'、または自動デバイス検出のための'')。 |
conf |
float |
0.25 |
YOLO 弱い検出をフィルタリングするための検出信頼度のしきい値。 |
iou |
float |
0.45 |
重複するボックスをフィルタリングするための非最大抑制のIoUしきい値。 |
imgsz |
int |
640 |
画像のサイズを変更するための入力サイズ(32の倍数でなければならない)。 |
max_det |
int |
300 |
メモリ効率のため、画像あたりの最大検出数。 |
classes |
list[int] |
None |
検出するクラス・インデックスのリスト(例. [0, 1] 人と自転車用)。 |
output_dir |
str |
None |
注釈を保存するディレクトリ(デフォルトはデータパスからの相対パス './labels' )。 |
引用と謝辞
もし、あなたの研究や開発業務にMobileSAM 、私たちの論文の引用をご検討ください:
よくあるご質問
MobileSAM 、オリジナルのSAM モデルとの違いは?
MobileSAM は、モバイルアプリケーション用に設計された、軽量で高速な画像セグメンテーションモデルである。オリジナルのSAM 同じパイプラインを踏襲しているが、重量級のViT-Hエンコーダー(632Mパラメーター)を、より小型のTiny-ViTエンコーダー(5Mパラメーター)に置き換えている。この変更により、MobileSAM オリジナルのSAM約5倍小さく、7倍速くなった。例えば、オリジナルのSAM1画像あたり456msであるのに対し、MobileSAM 約12msで動作する。様々なプロジェクトにおけるMobileSAM 実装については、MobileSAM GitHubリポジトリで詳しく知ることができる。
Ultralytics を使ってMobileSAM をテストするには?
Ultralytics のMobileSAM のテストは、簡単な方法で行うことができます。Point プロンプトと Box プロンプトを使ってセグメントを予測することができる。以下は Point プロンプトを使った例です:
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])
詳細については、 MobileSAM の テストセクションも参照してください。
なぜモバイル・アプリケーションにMobileSAM 。
MobileSAM は、軽量なアーキテクチャと高速な推論速度により、モバイル・アプリケーションに最適である。オリジナルのSAM と比較して、MobileSAM は約 5 倍小さく、7 倍高速であるため、計算リソースが限られている環境に適している。この効率性により、モバイルデバイスは大きな待ち時間なしにリアルタイムの画像セグメンテーションを実行できる。さらに、MobileSAM の推論などのモデルは、モバイル性能に最適化されている。
MobileSAM 、どのようにトレーニングされたのですか?トレーニングコードは入手可能ですか?
MobileSAM は、元画像の1%に相当する100kのデータセットを使って、GPU 、1日もかからずに学習された。学習コードは将来公開される予定だが、現在、MobileSAM GitHubリポジトリで MobileSAM の他の側面を調べることができる。このリポジトリには、事前に訓練された重みと様々なアプリケーションの実装の詳細が含まれている。
MobileSAM の主な使用例は?
MobileSAM は、モバイル環境での高速かつ効率的な画像分割のために設計されている。主な使用例
- モバイルアプリケーションのためのリアルタイム物体検出とセグメンテーション。
- 計算資源が限られた機器における低遅延画像処理。
- 拡張現実(AR)やリアルタイム分析などのタスクのためのAI駆動型モバイルアプリへの統合。
より詳細な使用例と性能比較については、「SAM からMobileSAM への適応」のセクションを参照のこと。