You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

6.7 KiB

comments description keywords
true Ultralyticsフレームワーク内でMobileSAMをダウンロードしてテストする方法、MobileSAMの実装、オリジナルのSAMとの比較について詳しく知ることができます。今日からモバイルアプリケーションを改善しましょう。 MobileSAM, Ultralytics, SAM, モバイルアプリケーション, Arxiv, GPU, API, 画像エンコーダ, マスクデコーダ, モデルのダウンロード, テスト方法

MobileSAM ロゴ

Mobile Segment Anything(MobileSAM)

MobileSAM論文がarXivで利用可能になりました。

CPU上で動作するMobileSAMのデモは、こちらのデモリンクからアクセスできます。Mac i5 CPU上では、約3秒かかります。Hugging Faceのデモでは、インターフェースと低性能なCPUが遅い応答に寄与していますが、効果的に動作し続けます。

MobileSAMは、Grounding-SAMAnyLabeling、およびSegment Anything in 3Dなど、さまざまなプロジェクトで実装されています。

MobileSAMは、100kのデータセット(元の画像の1%)を単一のGPUで学習し、1日未満で訓練が完了します。このトレーニングのコードは将来公開される予定です。

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

この表は、利用可能なモデルとそれぞれの固有の事前学習重み、サポートされているタスク、および予測検証訓練、およびエクスポートのようなさまざまな動作モードに対する互換性を示しています。は対応しているモード、は対応していないモードを示しています。

モデルタイプ 事前学習重み サポートされているタスク 予測 検証 訓練 エクスポート
MobileSAM mobile_sam.pt インスタンスセグメンテーション

SAMからMobileSAMへの移行

MobileSAMは、オリジナルのSAMと同じパイプラインを維持しているため、オリジナルの前処理、後処理、およびその他のインタフェースを組み込んでいます。そのため、現在オリジナルのSAMを使用している場合でも、MobileSAMへの移行は最小限の労力で行うことができます。

MobileSAMは、オリジナルのSAMと同等のパフォーマンスを発揮し、イメージエンコーダを変更することで同じパイプラインを保持しています。具体的には、元の重いViT-Hエンコーダ(632M)をより小さいTiny-ViT(5M)に置き換えています。単一のGPU上でMobileSAMは、おおよそ画像あたり12msで動作します:イメージエンコーダで8ms、マスクデコーダで4msです。

次の表は、ViTベースのイメージエンコーダの比較です:

イメージエンコーダ オリジナルのSAM MobileSAM
パラメーター 611M 5M
速度 452ms 8ms

オリジナルのSAMとMobileSAMは、同じプロンプト誘導型マスクデコーダを使用しています:

マスクデコーダ オリジナルのSAM MobileSAM
パラメーター 3.876M 3.876M
速度 4ms 4ms

以下は、全体のパイプラインの比較です:

パイプライン全体(エンコーダ+デコーダ) オリジナルのSAM MobileSAM
パラメーター 615M 9.66M
速度 456ms 12ms

MobileSAMとオリジナルのSAMのパフォーマンスは、ポイントとボックスをプロンプトとして使用した場合に示されます。

ポイントをプロンプトにした画像

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

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

UltralyticsでのMobileSAMのテスト

オリジナルのSAMと同様に、ポイントとボックスのプロンプトの両方に対応したUltralyticsでの簡単なテスト方法を提供しています。

モデルのダウンロード

モデルはこちらからダウンロードできます。

ポイントプロンプト

!!! Example "例"

=== "Python"
    ```python
    from ultralytics import SAM

    # モデルをロード
    model = SAM('mobile_sam.pt')

    # ポイントプロンプトに基づいてセグメントを予測
    model.predict('ultralytics/assets/zidane.jpg', points=[900, 370], labels=[1])
    ```

ボックスプロンプト

!!! Example "例"

=== "Python"
    ```python
    from ultralytics import SAM

    # モデルをロード
    model = SAM('mobile_sam.pt')

    # ボックスプロンプトに基づいてセグメントを予測
    model.predict('ultralytics/assets/zidane.jpg', bboxes=[439, 437, 524, 709])
    ```

MobileSAMSAMは、同じAPIを使用して実装されています。詳細な使用方法については、SAMページをご覧ください。

引用と謝辞

MobileSAMが研究や開発のお役に立つ場合は、次の論文を引用していただけると幸いです:

!!! Quote文 ""

=== "BibTeX"

    ```bibtex
    @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}
    }