メタ、フェアの AI
ニキラ・ラヴィ、バレンティン・ガベール、ユアンティン・フー、ロンハン・フー、チャイタニヤ・リャリ、テンギュ・マー、ハイサム・ケドル、ローマン・レードル、クロエ・ロランド、ローラ・グスタフソン、エリック・ミントゥン、ジュンティン・パン、カリヤン・ヴァスデフ・アルワラ、ニコラス・カリオン、チャオユアン・ウー、ロス・ギルシック、ピョートル・ドルラー、クリストフフェイヒテンホーファー
[ Paper
] [ Project
] [ Demo
] [ Dataset
] [ Blog
] [ BibTeX
]
Segment Anything Model 2 (SAM 2) は、画像やビデオのプロンプト表示可能な視覚的セグメンテーションを解決するための基礎モデルです。画像を単一フレームのビデオとみなすことで、SAM をビデオに拡張します。モデルの設計は、リアルタイム ビデオ処理用のストリーミング メモリを備えたシンプルなトランスフォーマー アーキテクチャです。当社は、ユーザー インタラクションを通じてモデルとデータを改善するモデルインザループ データ エンジンを構築し、これまでで最大のビデオ セグメンテーション データセットである SA-V データセットを収集します。当社のデータに基づいてトレーニングされた SAM 2 は、幅広いタスクとビジュアル ドメインにわたって強力なパフォーマンスを提供します。
2024/09/30 -- SAM 2.1 Developer Suite (新しいチェックポイント、トレーニング コード、Web デモ) がリリースされました
pip uninstall SAM-2
を使用して以前のバージョンをアンインストールし、このリポジトリから最新のコードを ( git pull
を使用して) プルしてから、以下のインストールに従ってリポジトリを再インストールしてください。training/README.md
参照してください。demo/README.md
を参照してください。 使用する前に、まず SAM 2 をインストールする必要があります。コードにはpython>=3.10
、 torch>=2.3.1
およびtorchvision>=0.18.1
が必要です。ここの手順に従って、PyTorch と TorchVision の両方の依存関係をインストールしてください。以下を使用して、GPU マシンに SAM 2 をインストールできます。
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .
Windows にインストールする場合は、Ubuntu で Windows Subsystem for Linux (WSL) を使用することを強くお勧めします。
SAM 2 プレディクターを使用してサンプル ノートブックを実行するには、 jupyter
とmatplotlib
が必要で、次の方法でインストールできます。
pip install -e " .[notebooks] "
注記:
pip
経由で PyTorch 2.3.1 (またはそれ以降) をインストールすることをお勧めします。現在の環境に 2.3.1 より前の PyTorch バージョンがある場合、上記のインストール コマンドはpip
使用して最新の PyTorch バージョンにアップグレードしようとします。nvcc
コンパイラを使用してカスタム CUDA カーネルをコンパイルする必要があります。お使いのマシンでまだ利用できない場合は、PyTorch CUDA バージョンと一致するバージョンの CUDA ツールキットをインストールしてください。Failed to build the SAM 2 CUDA extension
のようなメッセージが表示された場合は、それを無視して SAM 2 を使用できます (一部の後処理機能が制限される場合がありますが、ほとんどの場合、結果には影響しません)。潜在的な問題と解決策に関する FAQ については、 INSTALL.md
参照してください。
まず、モデル チェックポイントをダウンロードする必要があります。すべてのモデル チェックポイントは、以下を実行することでダウンロードできます。
cd checkpoints &&
./download_ckpts.sh &&
cd ..
または個別に以下から:
(これらは SAM 2.1 として示される改良されたチェックポイントであることに注意してください。詳細については、「モデルの説明」を参照してください。)
次に、SAM 2 は、次のように数行で画像とビデオの予測に使用できます。
SAM 2 は、静的画像に対する SAM のすべての機能を備えており、画像の使用例に対して SAM によく似た画像予測 API を提供します。 SAM2ImagePredictor
クラスには、画像プロンプト用の簡単なインターフェイスがあります。
import torch
from sam2 . build_sam import build_sam2
from sam2 . sam2_image_predictor import SAM2ImagePredictor
checkpoint = "./checkpoints/sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = SAM2ImagePredictor ( build_sam2 ( model_cfg , checkpoint ))
with torch . inference_mode (), torch . autocast ( "cuda" , dtype = torch . bfloat16 ):
predictor . set_image ( < your_image > )
masks , _ , _ = predictor . predict ( < input_prompts > )
静的画像の使用例については、image_predictor_example.ipynb (こちらの Colab にもあります) の例を参照してください。
SAM 2 は、SAM と同様に画像に対する自動マスク生成もサポートしています。画像内の自動マスク生成については、automatic_mask_generator_example.ipynb (こちらの Colab にもあります) を参照してください。
ビデオ内でプロンプトを表示できるセグメンテーションと追跡を行うために、たとえばプロンプトを追加し、ビデオ全体にマスクレットを伝播するための API を備えたビデオ プレディクターを提供します。 SAM 2 は、複数のオブジェクトに対するビデオ推論をサポートし、推論状態を使用して各ビデオ内のインタラクションを追跡します。
import torch
from sam2 . build_sam import build_sam2_video_predictor
checkpoint = "./checkpoints/sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = build_sam2_video_predictor ( model_cfg , checkpoint )
with torch . inference_mode (), torch . autocast ( "cuda" , dtype = torch . bfloat16 ):
state = predictor . init_state ( < your_video > )
# add new prompts and instantly get the output on the same frame
frame_idx , object_ids , masks = predictor . add_new_points_or_box ( state , < your_prompts > ):
# propagate the prompts to get masklets throughout the video
for frame_idx , object_ids , masks in predictor . propagate_in_video ( state ):
...
クリックまたはボックス プロンプトの追加、調整、ビデオ内の複数のオブジェクトの追跡方法の詳細については、video_predictor_example.ipynb (Colab にもあります) の例を参照してください。
あるいは、Hugging Face からモデルをロードすることもできます ( pip install huggingface_hub
が必要です)。
画像予測の場合:
import torch
from sam2 . sam2_image_predictor import SAM2ImagePredictor
predictor = SAM2ImagePredictor . from_pretrained ( "facebook/sam2-hiera-large" )
with torch . inference_mode (), torch . autocast ( "cuda" , dtype = torch . bfloat16 ):
predictor . set_image ( < your_image > )
masks , _ , _ = predictor . predict ( < input_prompts > )
ビデオ予測の場合:
import torch
from sam2 . sam2_video_predictor import SAM2VideoPredictor
predictor = SAM2VideoPredictor . from_pretrained ( "facebook/sam2-hiera-large" )
with torch . inference_mode (), torch . autocast ( "cuda" , dtype = torch . bfloat16 ):
state = predictor . init_state ( < your_video > )
# add new prompts and instantly get the output on the same frame
frame_idx , object_ids , masks = predictor . add_new_points_or_box ( state , < your_prompts > ):
# propagate the prompts to get masklets throughout the video
for frame_idx , object_ids , masks in predictor . propagate_in_video ( state ):
...
以下の表は、2024 年 9 月 29 日にリリースされた、改良された SAM 2.1 チェックポイントを示しています。
モデル | サイズ(M) | 速度 (FPS) | SA-Vテスト(J&F) | MOSE 値 (J&F) | LVOS v2 (J&F) |
---|---|---|---|---|---|
sam2.1_hiera_tiny (構成、チェックポイント) | 38.9 | 47.2 | 76.5 | 71.8 | 77.3 |
sam2.1_hiera_small (構成、チェックポイント) | 46 | 43.3 (53.0 コンパイル*) | 76.6 | 73.5 | 78.3 |
sam2.1_hiera_base_plus (構成、チェックポイント) | 80.8 | 34.8 (43.8 コンパイル*) | 78.2 | 73.7 | 78.2 |
sam2.1_hiera_large (構成、チェックポイント) | 224.4 | 24.2 (30.2 コンパイル*) | 79.5 | 74.6 | 80.6 |
2024 年 7 月 29 日にリリースされた以前の SAM 2 チェックポイントは次のとおりです。
モデル | サイズ(M) | 速度 (FPS) | SA-Vテスト(J&F) | MOSE 値 (J&F) | LVOS v2 (J&F) |
---|---|---|---|---|---|
sam2_hiera_tiny (構成、チェックポイント) | 38.9 | 47.2 | 75.0 | 70.9 | 75.3 |
サム2_ヒエラ_スモール (構成、チェックポイント) | 46 | 43.3 (53.0 コンパイル*) | 74.9 | 71.5 | 76.4 |
sam2_hiera_base_plus (構成、チェックポイント) | 80.8 | 34.8 (43.8 コンパイル*) | 74.7 | 72.8 | 75.8 |
sam2_hiera_large (構成、チェックポイント) | 224.4 | 24.2 (30.2 コンパイル*) | 76.0 | 74.6 | 79.8 |
* 設定でcompile_image_encoder: True
を設定してモデルをコンパイルします。
詳細については、sav_dataset/README.md を参照してください。
画像、ビデオ、またはその両方のカスタム データセットで SAM 2 をトレーニングまたは微調整できます。開始方法については、トレーニングの README をご確認ください。
SAM 2 Web デモ (https://sam2.metademolab.com/demo に似たローカルに展開可能なバージョン) のフロントエンド + バックエンド コードをリリースしました。詳細については、Web デモの README を参照してください。
SAM 2 モデル チェックポイント、SAM 2 デモ コード (フロントエンドおよびバックエンド)、および SAM 2 トレーニング コードは Apache 2.0 でライセンスされていますが、SAM 2 デモ コードで使用されている Inter Font および Noto Color Emoji は、以下で利用可能です。 SIL オープン フォント ライセンス、バージョン 1.1。
貢献と行動規範をご覧ください。
SAM 2 プロジェクトは、多くの貢献者 (アルファベット順) の協力により可能になりました。
カレン・バーガン、ダニエル・ボリヤ、アレックス・ボーゼンバーグ、カイ・ブラウン、ヴィスピ・カソッド、クリストファー・シェドー、アイダ・チェン、リュック・ダーリン、シュービク・デブナス、レネ・マルティネス・ドーナー、グラント・ガードナー、サヒル・ゴメス、リシ・ゴドゥグ、バイシャン・グオ、カレブ・ホー、アンドリュー・ファン、ソミャジェイン、ボブ・カンマ、アマンダ・カレット、ジェイク・キニー、アレクサンダーキリロフ、シヴァ・コドゥヴァイユル、デヴァンシュ・ククレジャ、ロバート・クオ、アオハン・リン、パルト・マラニ、ジテンドラ・マリク、マリカ・マルホトラ、ミゲル・マーティン、アレクサンダー・ミラー、サーシャ・ミッツ、ウィリアム・ガン、ジョージ・オーリン、ジョエル・ピノー、ケイト・センコ、ロドリック・シェパード、アジタ・ショクルプール、デビッド・スーフィアン、ジョナサン・トーレス、ジェニー・チュオン、サーガルヴァーズ、王孟、クローデット・ウォード、張彭川。
サードパーティ コード: マスク予測のためのオプションの後処理ステップとして、 cc_torch
(ライセンスはLICENSE_cctorch
にあります) から適応された GPU ベースの接続コンポーネント アルゴリズムを使用します。
研究で SAM 2 または SA-V データセットを使用する場合は、次の BibTeX エントリを使用してください。
@article { ravi2024sam2 ,
title = { SAM 2: Segment Anything in Images and Videos } ,
author = { Ravi, Nikhila and Gabeur, Valentin and Hu, Yuan-Ting and Hu, Ronghang and Ryali, Chaitanya and Ma, Tengyu and Khedr, Haitham and R{"a}dle, Roman and Rolland, Chloe and Gustafson, Laura and Mintun, Eric and Pan, Junting and Alwala, Kalyan Vasudev and Carion, Nicolas and Wu, Chao-Yuan and Girshick, Ross and Doll{'a}r, Piotr and Feichtenhofer, Christoph } ,
journal = { arXiv preprint arXiv:2408.00714 } ,
url = { https://arxiv.org/abs/2408.00714 } ,
year = { 2024 }
}