コンテンツへスキップ

MobileSAM ロゴ

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

MobileSAM 、モバイルおよびエッジデバイス用に作られた、コンパクトで効率的な画像セグメンテーションモデルです。MetaのSegment Anything Model (SAM)のパワーを限られたコンピュート環境にもたらすために設計されたMobileSAM 、オリジナルのSAM パイプラインとの互換性を維持しながら、ほぼ瞬時のセグメンテーションを実現する。MobileSAM 、リアルタイムアプリケーションの開発であろうと、軽量なデプロイメントであろうと、従来のものと比べてわずかなサイズとスピードの要件で、印象的なセグメンテーション結果を提供する。



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

MobileSAM 、SAM-SAMAnyLabelingSegment Anything in 3D など、さまざまなプロジェクトで採用されている。

MobileSAM 、10万枚の画像データセット(オリジナル画像の1%)を使って、GPU 1台で1日以内にトレーニングされた。トレーニングコードは今後公開される予定だ。

利用可能なモデル、サポートされるタスク、および動作モード

以下の表は、利用可能なMobileSAM モデル、事前にトレーニングされた重み、サポートされているタスク、および推論検証トレーニングエクスポートなどのさまざまな操作モードとの互換性の概要を示している。サポートされているモードは✅で、サポートされていないモードは❌で示されている。

モデルタイプ 事前に訓練されたウェイト 対応タスク 推論 バリデーション トレーニング 輸出
MobileSAM モバイルサム インスタンスのセグメンテーション

MobileSAM YOLO比較

以下の比較は、MetaのSAM 亜種であるMobileSAM、YOLO11n-segを含むUltralytics最小セグメンテーションモデルの違いを強調している:

モデル サイズ
(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 、オリジナルの SAMMobileSAMは、前処理、後処理、すべてのインターフェースを含む、オリジナルのSAMと同じパイプラインを保持します。つまり、ワークフローに最小限の変更を加えるだけで、SAM MobileSAM 移行できる。

主な違いは画像エンコーダーである:MobileSAM 、オリジナルのViT-Hエンコーダー(632Mパラメーター)を、はるかに小さなTiny-ViTエンコーダー(5Mパラメーター)に置き換えている。シングルGPU、MobileSAM 約12msで画像を処理する(エンコーダーが8ms、マスクデコーダーが4ms)。

ViTベースの画像エンコーダの比較

画像エンコーダー オリジナルSAM MobileSAM
パラメータ 611M 5M
スピード 452ミリ秒 8ms

プロンプト誘導型マスク・デコーダー

マスク・デコーダー オリジナル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 アセットから MobileSAM 事前学習済み重みをダウンロードする。

ポイント・プロンプト

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 論文の全文をarXivで読む。

よくあるご質問

MobileSAM 何か、オリジナルSAM モデルとの違いは何か?

MobileSAM 、モバイルおよびエッジアプリケーション向けに最適化された、軽量で高速な画像セグメンテーションモデルである。オリジナルのSAM 同じパイプラインを維持しながら、大きなViT-Hエンコーダー(632Mパラメーター)をコンパクトなTiny-ViTエンコーダー(5Mパラメーター)に置き換えている。この結果、MobileSAM オリジナルのSAM約5倍小さく、7倍高速になり、1画像あたりの動作速度はSAM456msに対し、およそ12msとなった。MobileSAM実装の詳細については、MobileSAM GitHubリポジトリを参照してください。

Ultralytics MobileSAM テストするには?

Ultralytics MobileSAM テストするのは簡単だ。セグメントを予測するには、ポイントプロンプトとボックスプロンプトを使用できる。例えば、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])

詳細については、「 Ultralytics MobileSAM テスト」のセクションを参照してください。

なぜMobileSAM 使用する必要があるのですか?

MobileSAM 、その軽量設計と高速な推論速度により、モバイルアプリケーションやエッジアプリケーションに最適である。オリジナルのSAM と比較して、MobileSAM は約 5 倍小さく、7 倍高速であるため、計算リソースが限られたデバイスでのリアルタイムのセグメンテーションに適している。この効率性により、モバイルデバイスは、大きな待ち時間なしにリアルタイムの画像セグメンテーションを実行できる。さらに、MobileSAM モバイル性能に最適化された推論モードをサポートしている。

MobileSAM どのようにトレーニングされたのか、またトレーニングコードは入手可能か?

MobileSAM 、100kの画像データセット(元画像の1%)を使って、シングルGPU 1日以内にトレーニングされた。トレーニングコードは将来公開される予定だが、現在はMobileSAM GitHubリポジトリから、事前にトレーニングされた重みと実装の詳細にアクセスできる。

MobileSAM主な使用例とは?

MobileSAM 、モバイル環境およびエッジ環境における高速で効率的な画像セグメンテーションのために設計されている。主な使用例

  • モバイルアプリのリアルタイムオブジェクト検出とセグメンテーション
  • 限られたコンピュートしか持たないデバイスでの低レイテンシー画像処理
  • 拡張現実(AR)、分析などのためのAI搭載モバイル・アプリケーションへの統合

使用例とパフォーマンスの詳細については、 SAM MobileSAM適応と MobileSAM アプリケーションに関するUltralytics ブログを参照のこと。



📅作成:1年前 ✏️更新:1ヶ月前

コメント