Slide 1

Slide 1 text

Segment Anything 2023/04/28 飯田啄巳

Slide 2

Slide 2 text

時系列と関係性 SAM SEEM 5 13 SA3D 26 TAM 24 NOW! 28 相補的なプロンプト利用 メモリプロンプト NeRFでSAM トラッキングでSAM April 今日のメイン

Slide 3

Slide 3 text

手法概要 • タスク:様々なSegmentation Promptを入力として受け付ける。 • モデル:一回重たい画像エンコーダでEmbedding特徴に変換した後、それを使いまわして結果をRefineしていく。 • データ:次の3段階でデータを生成 ① 手動アノテーション ② 半自動アノテーション ③ 完全自動アノテーション SAMの学習に使うのはココ 論文ではmodel-in-the-loopとか言ってる

Slide 4

Slide 4 text

タスク 曖昧性のあるセグメンテーションを行う。 =一点の選択でもセグメンテーションの候補はいくつもある(右図) 様々な条件入力を受け入れられるようにする。 (Promptable Segmentation Task)

Slide 5

Slide 5 text

モデル ViT(MAE) ① 画像に対して大きめの画像エンコーダ (ViT) を適用 ② 各条件入力に対して、適切なエンコードを行う • mask :浅めのCNN • points :Positional Encoding • box :Positional Encoding • text :CLIP Text Encoder scoreでNMS 3つの候補出力 ~50ms, CPU 1500

Slide 6

Slide 6 text

[Appendix] Mask Decoder [CLS] token的なやつらしい(学習可能) コードを見ると以下の様になっている。 token毎 各output tokensの取り出し

Slide 7

Slide 7 text

データ(1) ① 手動アノテーション • 「ブラシ」と「消しゴム」の機能を持つウェブツールでアノテーション。 • セマンティックな制約を何も設けずにアノテーションしてもらった。 Ex. “stuff”と”things”でどっちかに統一する必要はない。 • 目立つオブジェクトをアノテーション。 ② 半自動アノテーション i. ①のアノテーションデータでSAMを学習。 ii. SAMを使って、学習データをセグメンテーション。 iii. セグメンテーションされていないもの(目立たないもの)に対して、手動でアノテーション。 iv. 新たにアノテーションしたデータでSAMを再学習 ViT-BからViT-Hにスケールアップしていく。 ③ 完全自動アノテーション • SAMの学習自体は②で完成。一般公開する用のデータセットをSAMで作る。 • 32x32のグリッド点で自動アノテーション。 6回 繰り返す ステップ データ量 画像枚数 マスク枚数 mask/image ① 手動 120k 4.3M 44 ② 半自動 180k 5.9M 72 ③ 完全自動 11M 1.1B 100

Slide 8

Slide 8 text

データ(2) 完全自動アノテーションされたデータの一部 他のデータセットでは、アノテーションされているオブジェクトが画像中心に偏る傾向がある どれだけギザギザした アノテーションになっているか 一枚あたりのマスク数が多い • 他にもFairnessについてかかれてましたが、省略します。 • 右側の画像は写真家から直接3300x4950サイズの画像を大量 に集めたらしく、「プライバシーを尊重した画像」とのこと。 (スゴイ…)

Slide 9

Slide 9 text

【実験】Zero-shot Single Point Valid Mask Evaluation 様々なセグメンテーションタスク(右図)で検証 サブセットを作って、検証している。 インタラクティブにセグメンテーションする手法(SAMの対抗馬) オラクル =最もGTと高いIoUのあるマスク 人が10段階で採点する

Slide 10

Slide 10 text

【実験】Zero-shot Edge Detection 16x16グリッドに対してSAMをかけて、ソーベルフィルタを適用 教師あり手法に匹敵している

Slide 11

Slide 11 text

【実験】Zero-shot Instance Segmentation GTとの定量評価では負けるが、マスクの質は悪くない 10段階でマスクの質(横軸)を評価 =右側に棒がある方が良い (COCO GT悪いな…) プロンプトだけだと駄目なケースがあるが 点を与えると良くなる

Slide 12

Slide 12 text

Ablation Study 各ステージでの効果? 学習データ量でのSAMの性能比較 画像のエンコーダ部分の比較

Slide 13

Slide 13 text

Application こんな動画が公式にあった。 AR/VRヘッドセットから視線(Gaze)を取り出して、見ている箇所の説明やディテクションをするらしい。 盲目の人とかに使えれば、すごく便利そう。

Slide 14

Slide 14 text

派生論文

Slide 15

Slide 15 text

(SEEM) Segment Everything Everywhere All at Once (1/3) • Versatility :いろんな形式の情報を共通の特徴空間に埋め込むことで、シームレスに動かす • Compositionality:色々組み合わせられる • Interactivity :メモリプロンプトを持っているので、過去のやり取りも利用して指示ができる • Semantic-awareness :オープンセットに認識可能 概要

Slide 16

Slide 16 text

(SEEM) Segment Everything Everywhere All at Once (2/3) モデル learnable 共通 512 point feature 異なるモーダルでもクロスアテンションすることで相補的になる 𝑶ℎ 𝑚 𝑶ℎ 𝑐 メモリプロンプトの求め方 前回のマスク どう対応しているのかを判定する機構も入れているらしい

Slide 17

Slide 17 text

(SEEM) Segment Everything Everywhere All at Once (3/3) 結果

Slide 18

Slide 18 text

(SA3D) Segment Anything in 3D with NeRFs (1/2) 見た目的にはこんなやつです。 SAMを2D → 3Dでする研究 概要

Slide 19

Slide 19 text

(SA3D) Segment Anything in 3D with NeRFs (2/2) • Mask Inverse Rendering • Cross-view Self-prompting Viewが変わる度に毎回SAMでプロンプトを与えるのはめんどい → 一回プロンプトを与えたら、あとはNovel Viewに対して自動で プロンプトを与えられるようにする 一個前のSAMマスクからサンプリングする。 Rendering (NeRF → 2D) Rendering (Voxel → 2D) 色 重み× 1 ※ 最終的なロスとは異なります 高速化 𝐿𝑝𝑟𝑜𝑗 モデルと学習パイプライン

Slide 20

Slide 20 text

(TAM) Track Anything: Segment Anything Meets Videos (1/3) SAMをビデオに適用したもの └ マルチオブジェクトトラッキング インペインティングモデルと組み合わせることでこんなこともできる。 概要

Slide 21

Slide 21 text

(TAM) Track Anything: Segment Anything Meets Videos (2/3) モデルと学習パイプライン 最初のフレームのマスクが得られたら、トラッキングするモデル 弱プロンプト(BBox, Points)を 与えてSAMでセグメンテーショ ン =初期マスクを得る XMemの結果が悪かったら SAMでRefine これらをPoint Promptsに変換して、SAMに入力 [Optional] 人が間に入って、マスクを修正 XMemは半教師ありモデルなので、初期のマスクが良いものである必要がある XMemは長時間のトラッキング になるとマスクの品質が落ちる

Slide 22

Slide 22 text

(TAM) Track Anything: Segment Anything Meets Videos (3/3) 良くもなく、悪くもなくという感じ。 論文中でも言及ほぼなし。 「困難で複雑なシナリオではうまくいくことを確認した」とのこと 対象物体の動き、スケール変化、カメラモーションに強い • 長い動画 • ビデオセグメンテーションモデルが短い動画で学習されている • SAMでうまくRefineできない → プロンプトを複数にしたりすれば改善できるかも • トラッキングする物体が複雑である場合