コンテンツへスキップ

MobileSAM ロゴ

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

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

CPU 上で動作するMobileSAM のデモは、このデモリンクからアクセスできる。Mac i5CPU でのパフォーマンスは約3秒です。Hugging Face のデモでは、インターフェースと低性能のCPUがレスポンスの遅さに寄与していますが、効果的に機能し続けています。



見るんだ: How to Run Inference with MobileSAM using Ultralytics | Step-by-Step Guide 🎉

MobileSAM は、Grounding-SAMAnyLabelingSegment Anything in 3D を含む様々なプロジェクトで実装されている。

MobileSAM は、100kのデータセット(元画像の1%)を用いて、GPU 、1日足らずで学習される。このトレーニングのコードは将来公開される予定である。

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

この表は、利用可能なモデルを、特定の事前訓練された重み、サポートするタスク、および推論検証トレーニングエクスポートなどのさまざまな操作モードとの互換性を示しています。

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

SAM からMobileSAM

MobileSAM はオリジナルのSAM と同じパイプラインを保持しているため、オリジナルの前処理、後処理、その他すべてのインターフェイスを組み込んでいる。その結果、現在オリジナルのSAM を使用している人は、最小限の労力でMobileSAM に移行することができる。

MobileSAM はオリジナルのSAM と同等の性能を持ち、画像エンコーダの変更以外は同じパイプラインを維持しています。具体的には、オリジナルのヘビー級のViT-Hエンコーダー(632M)を、より小型のTiny-ViT(5M)に置き換えています。シングルGPU 、MobileSAM は画像あたり約12msで動作する:画像エンコーダーで8ms、マスク・デコーダーで4msである。

次の表は、ViTベースの画像エンコーダの比較である:

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

オリジナルのSAM 、MobileSAM 、どちらも同じプロンプトガイド付きマスクデコーダーを利用している:

マスク・デコーダーオリジナルSAMMobileSAM
パラメータ3.876M3.876M
スピード4ms4ms

パイプライン全体の比較である:

パイプライン全体(Enc+Dec)オリジナルSAMMobileSAM
パラメータ615M9.66M
スピード456ms12ms

点と箱の両方をプロンプトとして使用し、MobileSAM とオリジナルのSAM のパフォーマンスを示す。

点をプロンプトとした画像

ボックスをプロンプトにした画像

その優れた性能により、MobileSAM は、現在のFastSAM よりも約5倍小さく、7倍高速である。詳細はMobileSAM プロジェクトのページでご覧いただけます。

テストMobileSAM Ultralytics

オリジナルのSAM と同様に、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 mutiple 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 ページ.

引用と謝辞

もし、あなたの研究や開発業務に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 is a lightweight, fast image segmentation model designed for mobile applications. It retains the same pipeline as the original SAM but replaces the heavyweight ViT-H encoder (632M parameters) with a smaller Tiny-ViT encoder (5M parameters). This change results in MobileSAM being approximately 5 times smaller and 7 times faster than the original SAM. For instance, MobileSAM operates at about 12ms per image, compared to the original SAM's 456ms. You can learn more about the MobileSAM implementation in various projects here.

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 は、モバイル環境での高速かつ効率的な画像分割のために設計されている。主な使用例

  • Real-time object detection and segmentation for mobile applications.
  • 計算資源が限られた機器における低遅延画像処理
  • 拡張現実(AR)やリアルタイム分析などのタスクのためのAI駆動型モバイルアプリへの統合

より詳細な使用例と性能比較については、「SAM からMobileSAM への適応」のセクションを参照のこと。

📅 Created 12 months ago ✏️ Updated 24 days ago

コメント