SAM
Kirillov 2023 · 論文
一行要約 — Segment Anything: 1100万枚の画像から得られた11億個のマスクで学習されたプロンプト可能なセグメンテーション基盤モデルで、点・ボックス・マスクのプロンプトから任意のオブジェクトをゼロショットでセグメント化する。
問題
セグメンテーション研究は、対話型・セマンティック・インスタンス・パノプティックといったタスク特化型モデルに分断されており、それぞれが専用のラベル付きデータセットと学習実行を要し、いずれも新しい画像分布や新しいタスクへゼロショットで転移することができなかった。NLPでは、プロンプト可能なタスクについて十分な規模で学習された基盤モデルが、明示的に学習されたことのないタスクへも一般化できることが示されていた。Segment Anythingプロジェクトは、セグメンテーションにおける同等のタスク、モデル、データセットとは何かを問う——難点は、マスクがインターネット上に自然に豊富にあるわけではないことで、そのため10億スケールのアノテーションを人工的に作り出す必要があった。
手法とアーキテクチャ
このプロジェクトは相互に連関する3つの構成要素を持つ: プロンプト可能なセグメンテーションタスク(点、ボックス、マスク、または探索的な自由形式テキストといった任意のプロンプトに対して有効なマスクを返す)、モデル(SAM)、そしてSA-1Bを生成するデータエンジンである。
SAMは3つのモジュールを持ち、コストの高い部分が画像ごとに償却されるよう設計されている。
- 画像エンコーダ: MAE事前学習されたViT-H/16(14×14のウィンドウアテンションと4つのグローバルアテンションブロック)を1024×1024入力に適用し、16倍にダウンスケールされた画像埋め込みを生成する。プロンプトが到着する前に画像ごとに一度だけ実行される。
- プロンプトエンコーダ: 疎なプロンプト(点、ボックス)は位置エンコーディングとなり、学習済みのタイプ別埋め込みと加算される; テキストは既製のCLIPテキストエンコーダを通過する; 密なプロンプト(マスク)は畳み込みで埋め込まれ、画像埋め込みと要素ごとに加算される。
- マスクデコーダ: プロンプトの自己注意と双方向クロスアテンション(プロンプトから画像、画像からプロンプト)を持つ2つの改変されたTransformerデコーダブロック。その後画像埋め込みがアップサンプルされ、MLPが出力トークンを動的線形分類器へ写し、各位置のマスク前景確率を計算する。事前計算された埋め込みが与えられれば、プロンプトエンコーダ+デコーダはCPU上のWebブラウザで約50msで実行される——リアルタイムの対話的プロンプティングである。
曖昧性: 単一のクリックは全体/部分/サブパートのいずれをも妥当に意味しうるため、SAMはプロンプトごとに予測されたIoU信頼度付きの3つの出力マスクを予測する; 学習は3つのうちの最小損失のみを逆伝播する。マスクの教師信号はフォーカル損失とダイス損失の線形結合であり、対話的な設定はマスクごとに11ラウンドにわたりプロンプトをサンプリングすることでシミュレートされる。
データエンジン(モデルインザループ、3段階): (1) アシスト付き手動——アノテータがSAMをループ内に置いてクリックし、12万枚の画像から430万個のマスクを得る。モデルが6回再学習される中で、マスク1個あたりの時間は34秒から14秒に減少した; (2) 半自動——SAMが確信度の高いマスクを事前に埋め、アノテータが残りを追加し、18万枚の画像から+590万個のマスクを得る; (3) 完全自動——32×32の点グリッドでSAMにプロンプトし、確信度が高い(予測IoU)かつ安定(確率マップをとで閾値化しても類似したマスクが得られる)マスクを保持し、NMSで重複を除去する。1100万枚すべての画像に適用した結果、SA-1B: 11億個のマスク、画像あたり約100個のマスクが得られ、Open Imagesより画像数で11倍、マスク数で400倍多い; 公開画像は短辺1500pxにダウンサンプルされている。
実験結果
- 新規の23データセット群における単一点ゼロショットセグメンテーション: SAMは最強の対話型ベースラインRITMを23データセット中16個で上回る(最大約47 IoU差); 3つのマスクのうち最良を選ぶオラクルを用いると、全23個で勝利する。人間による評価では、SAMのマスクは10点満点中7〜9点と評価され、自動mIoUがRITMを支持するデータセットにおいてさえ、一貫してRITMを上回る。
- ゼロショットインスタンスセグメンテーション(ViTDet-Hのボックスでプロンプト): COCOでmask AP 46.5(完全教師付きViTDet-Hの51.0に対して)、LVISで44.7対46.6——COCO/LVISのマスク学習をまったく行わずにこれだけ近い結果を出し、人間のアノテータによってViTDetよりも高く評価された(ViTDetはデータセット固有のマスクバイアスを利用している)。
- LVISにおけるゼロショットオブジェクト提案: 中・大サイズのオブジェクトおよび稀少・一般的なオブジェクトでViTDet-Hを上回り、小さく頻出するオブジェクトでのみ劣る。
- BSDS500でのゼロショットエッジ検出: エッジに対して一度も学習していないにもかかわらず妥当なエッジマップを生成する; 低い精度では高い再現率(R50)を示す。
- アブレーション: 自動マスクのみでの学習は全データと比較してわずか約0.5 mIoUの損失にとどまる; 100万枚の画像(SA-1Bの約10%)はほぼフルデータセットに匹敵する; ViT-HはViT-Bを明確に上回るが、ViT-Lをわずかに上回るに留まる。
- 明示された限界: 細かい構造を見逃すことがある、小さな構成要素を幻視することがある、重いエンコーダのためend-to-endでリアルタイムではない; text-to-maskは探索的な段階である。
SLAMにおける意義
SAMはSLAMシステムに、要求に応じたクラス不問のオブジェクトマスクを与えた——オープン語彙のセマンティックマッピングに欠けていた要素である。テキストプロンプト検出器(Grounded SAM = Grounding DINO + SAM)と組み合わせることで、ConceptGraphsやClioのような3Dシーングラフおよびオープン語彙マッピングシステムを動かし、動的物体除去のためのクリーンなマスクを提供する。その画像単位の償却設計(重いエンコーダを一度、安価なプロンプトを多数回)はSLAMのキーフレームパイプラインに適合し、そのビデオ版の後継であるSAM 2は、SLAMがフレーム間で実際に必要とする時間的一貫性を追加する。
関連ノート
- SAM 2 — ストリーミングメモリを備えたビデオ拡張版
- Grounding DINO — SAMに入力するテキストプロンプトによるボックス
- ConceptGraphs — SAMマスクに基づくオープン語彙3Dシーングラフ
- Clio — SAM型マスクを利用するタスク駆動型オープン語彙マッピング
- ConceptFusion — オープンセット・マルチモーダル3Dマッピング