コンテンツへスキップ

MobileSAM ロゴ

モバイルセグメントなんでも (MobileSAM)

MobileSAM の論文は現在arXivに掲載されている。

CPU 上で動作するMobileSAM デモは、このデモリンクからアクセスできる。Mac i5CPU 実行時間は約3秒です。ハグする顔 Hugging Faceデモでは、インターフェースと性能の低いCPUのために応答が遅くなりますが、引き続き効果的に機能します。



見るんだ: Ultralytics を使ってMobileSAM で推論を実行する方法|ステップ・バイ・ステップ・ガイド🎉。

MobileSAM は、Grounding-SAMAnyLabelingSegment 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 関数を以下に示す:

from ultralytics.data.annotator import auto_annotate

auto_annotate(data="path/to/images", det_model="yolo11x.pt", sam_model="mobile_sam.pt")
議論 タイプ デフォルト 説明
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 、私たちの論文の引用をご検討ください:

@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 、オリジナルの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 への適応」のセクションを参照のこと。

📅作成:1年前 ✏️更新しました 6日前

コメント