- Authors
- Name
- 1. 概要:Segment Anything Modelの進化
- 2. SAM 1: Segment Anything (2023)
- 3. SAM 2: Segment Anything in Images and Videos (2024)
- 4. SAM 3: Segment Anything with Concepts (2025)
- 5. 3つのモデルの総合比較
- 6. 実践的な活用シナリオ
- 7. 学習ロードマップ
- 8. References
1. 概要:Segment Anything Modelの進化
Segment Anything Model(SAM)は、Meta AI Researchが発表した画像・動画セグメンテーション分野のFoundation Modelシリーズである。NLP分野でGPTが「プロンプト」パラダイムを確立したように、SAMはComputer VisionセグメンテーションにPromptable Segmentationという新たなパラダイムを導入した。
| バージョン | 発表 | 核心能力 | 論文 |
|---|---|---|---|
| SAM 1 | 2023.04 (ICCV 2023) | 画像プロンプタブルセグメンテーション | Segment Anything |
| SAM 2 | 2024.08 | 画像+動画リアルタイムセグメンテーション | SAM 2: Segment Anything in Images and Videos |
| SAM 3 | 2025.11 (ICLR 2026) | 概念認識(Concept-Aware)セグメンテーション | SAM 3: Segment Anything with Concepts |
3つのモデルの核心的な進化方向を一言でまとめると以下の通りである。
SAM 1: 「どこ(Where)をセグメンテーションするか?」 → SAM 2: 「動画でもどこを?」 → SAM 3: 「何(What)をセグメンテーションするか?」
2. SAM 1: Segment Anything (2023)
2.1 論文情報
- タイトル: Segment Anything
- 著者: Alexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao 他 (Meta AI Research)
- 発表: 2023年4月 (arXiv)、ICCV 2023 採択
- 論文: arxiv.org/abs/2304.02643
- GitHub: github.com/facebookresearch/segment-anything
- ライセンス: Apache 2.0
2.2 核心的貢献3つ
SAM 1は3つを同時に提案した。
- 新しいタスク — Promptable Segmentation: ポイント、ボックス、マスク、テキストなど任意のプロンプトが与えられると、有効なセグメンテーションマスクを返す
- 新しいモデル — SAM: プロンプトベースのセグメンテーションを実行するFoundation Model
- 新しいデータセット — SA-1B: 1,100万枚の画像から11億個のマスクを含む史上最大のセグメンテーションデータセット
2.3 アーキテクチャ詳細
SAMのアーキテクチャは3つのコンポーネントに分離される。核心的な設計原則は、重い画像エンコーダは一度だけ実行し、軽量なプロンプトエンコーダとマスクデコーダをリアルタイムで繰り返し呼び出すことである。
┌─────────────────────────────────────────────────────────┐
│ SAM Architecture │
│ │
│ ┌──────────────┐ ┌────────────────┐ │
│ │ Image Encoder │ │ Prompt Encoder │ │
│ │ (ViT-H/L/B) │ │ (Point/Box/ │ │
│ │ MAE事前学習 │ │ Mask/Text) │ │
│ └──────┬───────┘ └───────┬────────┘ │
│ │ │ │
│ └─────────┬─────────┘ │
│ ▼ │
│ ┌────────────────┐ │
│ │ Mask Decoder │ │
│ │ (Transformer │ │
│ │ 2-layer) │──→ 3つのマスク + IoUスコア │
│ └────────────────┘ │
└─────────────────────────────────────────────────────────┘
Image Encoder(画像エンコーダ)
| バリアント | パラメータ | チェックポイントサイズ |
|---|---|---|
| ViT-B | 91M | 約375 MB |
| ViT-L | 308M | 約1.25 GB |
| ViT-H(既定) | 636M | 約2.56 GB |
- MAE(Masked Autoencoder)で事前学習されたVision Transformer
- 入力解像度:1024×1024
- 出力:64×64画像埋め込み(256次元)
- 画像ごとに一度だけ実行 → 以降プロンプトごとに再利用
Prompt Encoder(プロンプトエンコーダ)
Sparseプロンプト(ポイント、ボックス、テキスト):
- ポイント/ボックス → Positional Encoding+学習済みタイプ埋め込み(前景ポイント vs 背景ポイント)
- テキスト → CLIPテキストエンコーダで処理
Denseプロンプト(マスク):
- Convolutionレイヤで埋め込み後、画像埋め込みとElement-wise加算
Mask Decoder(マスクデコーダ)
- 修正されたTransformer Decoder(2レイヤ)
- 埋め込み次元:256、MLP内部次元:2048
- Ambiguity-Aware出力:1つのプロンプトに対して3つの候補マスクを同時に予測
- Whole(全体)、Part(部分)、Sub-part(下位部分)レベル
- 各マスクにIoU信頼度スコアを付与
- GPUでプロンプトあたり約50msの推論 → リアルタイムインタラクション可能
2.4 SA-1Bデータセット
| 項目 | 数値 |
|---|---|
| 画像数 | 1,100万枚 |
| マスク数 | 11億個(画像あたり平均約100個) |
| 自動生成比率 | 99.1% |
| 元の解像度 | 約3300×4950 |
| データセットサイズ | 約5TB(画像)+約20GB(アノテーション) |
Data Engine — 3段階の構築プロセス
Phase 1: Assisted-Manual Phase 2: Semi-Automatic Phase 3: Fully Automatic
───────────────────── ────────────────────── ──────────────────────
• SAM+人間アノテーター • SAMが自動マスク提案 • 32×32グリッドポイント自動生成
• ブラウザベースツール • 人間が欠落オブジェクト追加 • NMS+信頼度フィルタリング
• 12万画像 / 430万マスク • 18万画像 / 590万マスク • 11億マスクの大部分
品質検証:500枚の画像(約50,000マスク)の人間監査の結果、**94%**がIoU 0.90超を達成
2.5 核心的イノベーション
Zero-Shot Transfer:Fine-tuningなしで新しいドメインに即座に適用
- エッジ検出(BSDS500 ODS: 0.768)
- Object Proposal生成(LVIS AR@1000: 59.3)
- 医療画像、衛星画像、水中写真、顕微鏡画像など
ベンチマーク性能:
- 23データセットのZero-Shot評価で16個で既存SOTA(RITM)を超過
- Oracle選択時23個すべてでRITMを超過
- 人種/性別等の人口統計グループ間での性能偏差なし(公正性検証)
2.6 インストールと実行
# インストール
pip install git+https://github.com/facebookresearch/segment-anything.git
# オプション依存関係
pip install opencv-python pycocotools matplotlib onnxruntime onnx
チェックポイントのダウンロード:
| モデル | ファイル |
|---|---|
| ViT-H(既定) | sam_vit_h_4b8939.pth |
| ViT-L | sam_vit_l_0b3195.pth |
| ViT-B | sam_vit_b_01ec64.pth |
プロンプトベースのセグメンテーション:
from segment_anything import SamPredictor, sam_model_registry
import numpy as np
# モデルの読み込み
sam = sam_model_registry["vit_h"](checkpoint="sam_vit_h_4b8939.pth")
sam.to(device="cuda")
# 予測器の作成
predictor = SamPredictor(sam)
# 画像の設定(画像埋め込みを1回計算)
predictor.set_image(image) # numpy array (H, W, 3) RGB
# ポイントプロンプトで予測
masks, scores, logits = predictor.predict(
point_coords=np.array([[500, 375]]), # (N, 2) 座標
point_labels=np.array([1]), # 1=前景, 0=背景
multimask_output=True, # 3つの候補マスクを返す
)
自動マスク生成(Segment Everything):
from segment_anything import SamAutomaticMaskGenerator, sam_model_registry
sam = sam_model_registry["vit_h"](checkpoint="sam_vit_h_4b8939.pth")
sam.to(device="cuda")
mask_generator = SamAutomaticMaskGenerator(sam)
masks = mask_generator.generate(image)
# 各マスク: segmentation, area, bbox, predicted_iou, stability_score
3. SAM 2: Segment Anything in Images and Videos (2024)
3.1 論文情報
- タイトル: SAM 2: Segment Anything in Images and Videos
- 著者: Nikhila Ravi, Valentin Gabeur, Yuan-Ting Hu 他15名 (Meta AI Research)
- 発表: 2024年8月 (arXiv)、2024年10月改訂
- 論文: arxiv.org/abs/2408.00714
- GitHub: github.com/facebookresearch/sam2
- プロジェクトページ: ai.meta.com/sam2
- ライセンス: Apache 2.0
3.2 SAM 1から何が変わったか
SAM 2の核心的な問い:「画像だけで行うセグメンテーションを動画に拡張できるか?」
| 比較項目 | SAM 1 | SAM 2 |
|---|---|---|
| 入力 | 単一画像 | 画像+動画 |
| 画像エンコーダ | ViT(MAE事前学習) | Hiera(階層的、MAE事前学習) |
| 時間モデリング | なし | Memory Attentionメカニズム |
| 推論速度 | プロンプトあたり約50ms | 画像で6倍高速 |
| Occlusion処理 | 不可 | Occlusion Head |
| インタラクション | 画像でプロンプト | 動画の任意フレームでプロンプト |
3.3 アーキテクチャ詳細
┌────────────────────────────────────────────────────────────────────┐
│ SAM 2 Streaming Architecture │
│ │
│ フレームt-2 フレームt-1 フレームt(現在) │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────┐ ┌──────┐ ┌──────────────┐ │
│ │Hiera │ │Hiera │ │ Hiera Image │ │
│ │Enc. │ │Enc. │ │ Encoder │ │
│ └──┬───┘ └──┬───┘ └──────┬───────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────┐ │
│ │ Memory Bank │ │
│ │ ┌──────────────┐ ┌───────────────────┐ │ │
│ │ │ FIFO Queue │ │ Prompted Frames │ │ │
│ │ │ (N個の最近 │ │ (M個のプロンプト │ │ │
│ │ │ フレーム) │ │ フレーム) │ │ │
│ │ └──────────────┘ └───────────────────┘ │ │
│ │ ┌──────────────────────────────────────┐│ │
│ │ │ Object Pointers (256-dim) ││ │
│ │ └──────────────────────────────────────┘│ │
│ └──────────────────┬───────────────────────┘ │
│ ▼ │
│ ┌──────────────────────────────┐ ┌───────────────┐ │
│ │ Memory Attention Module │←──│Prompt Encoder │ │
│ │ (L Transformer Blocks: │ │(Point/Box/ │ │
│ │ Self-Attn + Cross-Attn) │ │ Mask) │ │
│ └──────────────┬───────────────┘ └───────────────┘ │
│ ▼ │
│ ┌──────────────────────────┐ │
│ │ Mask Decoder │──→ マスク + IoU + Occlusion Score │
│ │ (+ Skip Connections) │ │
│ └──────────────────────────┘ │
└────────────────────────────────────────────────────────────────────┘
Hiera画像エンコーダ
SAM 1のViTを**Hiera(階層的ViT)**に置き換えた。
- Stage 3+4(stride 16, 32) → FPNで融合 → 画像埋め込み(Memory Attention入力)
- Stage 1+2(stride 4, 8) → マスクデコーダのアップサンプリングレイヤにSkip Connection
- Windowed Absolute Positional Embeddingを使用
Memoryメカニズム(核心的イノベーション)
Memory Encoder:各フレーム処理後、フレーム特徴と予測マスクをMemory Bankに保存(64次元に投影)
Memory Bankの構造:
- FIFO Queue:最近N個の非プロンプトフレーム → 時間的コンテキストの維持
- Prompted Frames:最大M個のプロンプトフレーム → ユーザーガイダンスの保存
- Object Pointers:256次元ベクトル → 追跡オブジェクトの高水準意味情報
Memory Attention Module:L個のTransformerブロック
- Self-Attention:現在のフレーム特徴内部
- Cross-Attention:Memory Bankの過去フレーム+Object Pointerとのインタラクション
Occlusion Prediction Head
動画でオブジェクトが遮蔽されたり画面外に出る状況の処理:
- フレームごとに可視性スコアを出力
- 遮蔽されたオブジェクト → ノイズ予測の抑制
- 再出現時 → Memory Bankを通じて即座に再識別
3.4 SA-Vデータセット
| 項目 | 数値 |
|---|---|
| 動画数 | 50,900本 |
| 総時間 | 約196時間 |
| 総フレーム | 約420万 |
| Spatio-temporal Masklet | 642,600個 |
| 総マスク数 | 3,550万個 |
| 解像度 | 240p~4K(平均1,401×1,037) |
| 平均長さ | 約14秒 |
| シーン分布 | 屋内54%、屋外46% |
| 地理的多様性 | 47カ国 |
| 既存比の規模 | 動画4.5倍、アノテーション53倍 |
Data Engine 3段階:
| 段階 | 方法 | 速度 | 生産量 |
|---|---|---|---|
| Phase 1 | SAM per Frame | 37.8秒/フレーム | 16K masklet |
| Phase 2 | SAM + SAM 2 Mask | 7.4秒/フレーム(5.1倍向上) | 63.5K masklet |
| Phase 3 | Full SAM 2 | 最速 | 残り全部 |
3.5 モデルバリアントと性能
SAM 2.1(2024年9月リリース、最新推奨バージョン):
| モデル | パラメータ | FPS (A100) | SA-V Test (J&F) | MOSE Val (J&F) |
|---|---|---|---|---|
| sam2.1_hiera_tiny | 38.9M | 91.2 | 76.5 | 71.8 |
| sam2.1_hiera_small | 46.0M | 84.8 | 76.6 | 73.5 |
| sam2.1_hiera_base_plus | 80.8M | 64.1 | 78.2 | 73.7 |
| sam2.1_hiera_large | 224.4M | 39.5 | 79.5 | 74.6 |
主要ベンチマーク:
| ベンチマーク | SAM 2 (J&F) | 既存SOTA比 |
|---|---|---|
| MOSE val | 77.9% | +6.2% |
| DAVIS 2017 val | 90.7% | +2.6% |
- 画像セグメンテーション:SAM 1比6倍高速でありながら精度も向上
- インタラクション効率:同品質達成に3倍少ないユーザー介入
3.6 インストールと実行
# インストール
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .
# チェックポイントのダウンロード
cd checkpoints && ./download_ckpts.sh && cd ..
画像セグメンテーション:
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(image)
masks, _, _ = predictor.predict(
point_coords=np.array([[500, 375]]),
point_labels=np.array([1]),
)
動画セグメンテーション:
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(video_path)
# 特定フレームにプロンプトを追加
frame_idx, object_ids, masks = predictor.add_new_points_or_box(
state, frame_idx=0, obj_id=1,
points=np.array([[500, 375]]),
labels=np.array([1]),
)
# 動画全体に伝播
for frame_idx, object_ids, masks in predictor.propagate_in_video(state):
# 各フレームのマスクを処理
process_masks(frame_idx, masks)
Hugging Face統合:
from sam2.sam2_image_predictor import SAM2ImagePredictor
predictor = SAM2ImagePredictor.from_pretrained("facebook/sam2-hiera-large")
from sam2.sam2_video_predictor import SAM2VideoPredictor
predictor = SAM2VideoPredictor.from_pretrained("facebook/sam2-hiera-large")
4. SAM 3: Segment Anything with Concepts (2025)
4.1 論文情報
- タイトル: SAM 3: Segment Anything with Concepts
- 著者: Nicolas Carion, Laura Gustafson, Yuan-Ting Hu 他35名 (Meta AI Research)
- 発表: 2025年11月20日 (arXiv)、ICLR 2026 採択
- 論文: arxiv.org/abs/2511.16719
- GitHub: github.com/facebookresearch/sam3
- プロジェクトページ: ai.meta.com/sam3
- ライセンス: Apache 2.0
4.2 パラダイムシフト:Where → What
SAM 1とSAM 2は**「どこを」セグメンテーションするかを指示する幾何学的プロンプト(ポイント、ボックス)に依存していた。SAM 3は根本的に異なる問いを投げかける:「何を」**セグメンテーションするか?
SAM 1: ポイント/ボックス → 「この位置のオブジェクトを分離して」
SAM 2: ポイント/ボックス + 動画追跡 → 「このオブジェクトを動画で追いかけて」
SAM 3: テキスト/画像例示 → 「この概念に該当するすべてを見つけて」
Promptable Concept Segmentation(PCS) — SAM 3が提案した新しいタスク:
- テキストプロンプト:自然言語の名詞句(例:"yellow school bus")
- 画像例示(Exemplar):視覚的な例示画像
- 結合プロンプト:テキスト+Exemplarの同時使用
- 従来のプロンプト:ポイント、ボックス、マスク(SAM 2との後方互換性)
4.3 アーキテクチャ詳細
総パラメータ:848M(約3.4 GB)
┌───────────────────────────────────────────────────────────────────────┐
│ SAM 3 Architecture │
│ │
│ ┌────────────┐ ┌────────────┐ ┌──────────────────┐ │
│ │ Text │ │ Exemplar │ │ Visual Prompts │ │
│ │ Encoder │ │ Encoder │ │ (Point/Box/Mask) │ │
│ │ "school │ │ [画像] │ │ │ │
│ │ bus" │ │ │ │ │ │
│ └─────┬──────┘ └─────┬──────┘ └────────┬─────────┘ │
│ └────────────┬───┘ │ │
│ ▼ │ │
│ ┌──────────────────────────────┐ │ │
│ │ Meta Perception Encoder │ │ │
│ │ (Vision-Language共同空間) │ │ │
│ └──────────────┬───────────────┘ │ │
│ │ │ │
│ ┌────────┴────────┐ │ │
│ ▼ ▼ │ │
│ ┌───────────┐ ┌─────────────────┐ │ │
│ │ Presence │ │ Fusion Encoder │ │ │
│ │ Head │ │ (条件付き特徴) │ │ │
│ │ "有/無" │ └────────┬────────┘ │ │
│ └───────────┘ │ │ │
│ ▼ │ │
│ ┌──────────────────┐ │ │
│ │ DETR Detector │←────────┘ │
│ │ (Transformer │ │
│ │ ベース検出) │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ SAM 2-inspired Tracker │ │
│ │ (Memory Bank+時間的一貫性) │ │
│ └──────────────────┬───────────────────┘ │
│ ▼ │
│ マスク+ボックス+スコア │
└───────────────────────────────────────────────────────────────────────┘
核心的イノベーション:Presence Head
Presence HeadはSAM 3の最も重要なアーキテクチャ上のイノベーションである。**認識(Recognition)と位置特定(Localization)**を分離する。
従来方式: 検出器が「探す」と「存在判断」を同時に実行 → 最適化の衝突
SAM 3: Presence Headが「存在するか」をまず判断 → 検出器は「探す」ことだけに集中
効果:
| 構成 | CGF1 |
|---|---|
| Presence Headなし | 57.6 |
| Presence Headあり | 63.3(+5.7, +9.9%) |
Decoupled Detector-Tracker設計
SAM 2のモノリシック構造とは異なり、SAM 3はDetectionとTrackingを独立モジュールとして分離:
- 共有:バックボーン(Perception Encoder)
- 分離:デコーダヘッド(検出 vs 追跡)
- 利点:タスク間の干渉減少、独立したスケーリングが可能
学習パイプライン(4段階)
| 段階 | 内容 |
|---|---|
| 1 | Perception Encoderの事前学習 |
| 2 | Detectorの事前学習 |
| 3 | SA-CoデータでDetectorのFine-tuning |
| 4 | バックボーン固定(frozen)後Tracker学習 |
4.4 SA-Coデータセット
SAM 3は**SA-Co(Segment Anything with Concepts)**という史上最大・最多様なセグメンテーションデータセットで学習した。
学習データ
| サブセット | 内容 |
|---|---|
| SA-Co/HQ | 520万枚の高品質画像、400万固有名詞句、5,200万マスク |
| SA-Co/SYN | 3,800万の合成フレーズ、14億マスク(大規模事前学習) |
| SA-Co/VIDEO | 52,500本の動画、24,800の固有概念、467,000以上のmasklet |
総オントロジー:2,200万エンティティ(17の上位カテゴリ、72の下位カテゴリ)
評価ベンチマーク
| ベンチマーク | 説明 |
|---|---|
| SA-Co/Gold | 7つの多重レビュー画像サブセット(最高品質) |
| SA-Co/Silver | 10のドメイン特化画像サブセット |
| SA-Co/VEval | 3つの動画評価サブセット |
- 214,000の固有フレーズ、126,000の画像/動画 → 既存のCOCO/LVIS比50倍以上多様な概念
追加公開データセット
- SA-FARI:10,000本以上の野生動物カメラトラップ動画(100種以上のアノテーション)
- FathomNet:海洋画像の水中セグメンテーションベンチマーク
4.5 性能ベンチマーク
画像セグメンテーション(Zero-Shot)
| ベンチマーク | メトリック | SAM 3 | 既存最高 | 向上 |
|---|---|---|---|---|
| LVIS | Mask AP | 47.0 | 38.5 (T-Rex2) | +22.1% |
| COCO | Box AP | 53.5 | 52.2 | +2.5% |
| SA-Co/Gold | CGF1 | 65.0 | 34.3 | +89.5%(約2倍) |
| ODinW | vs T-Rex2 | - | - | +20.1 AP |
動画セグメンテーション
| ベンチマーク | SAM 3 (J&F) | SAM 2.1 Large | 向上 |
|---|---|---|---|
| MOSEv2 | 60.1 | 47.9 | +25.5% |
| DAVIS 2017 | 92.0 | 90.7 | +1.4% |
| LVOSv2 | 88.2 | 79.6 | +10.8% |
Exemplar活用効果
| プロンプト構成 | CGF1 | テキスト比の向上 |
|---|---|---|
| テキストのみ | 46.4 | - |
| テキスト+1 Exemplar | 57.6 | +11.2 |
| テキスト+3 Exemplar | 65.0 | +18.6 |
速度と効率
- 推論速度:H200 GPUで画像あたり約30ms(100以上のオブジェクト検出を含む)
- モデルサイズ:848Mパラメータ(約3.4 GB)
- 16GB GPUで実行可能
- 人間の性能比:SA-Co/Goldで人間の下限の**88%**を達成
4.6 インストールと実行
公式リポジトリ
# 環境の作成
conda create -n sam3 python=3.12
conda activate sam3
# PyTorchのインストール
pip install torch==2.7.0 torchvision torchaudio \
--index-url https://download.pytorch.org/whl/cu126
# SAM 3のインストール
git clone https://github.com/facebookresearch/sam3.git
cd sam3
pip install -e .
# オプション:ノートブックまたは開発用
pip install -e ".[notebooks]"
pip install -e ".[train,dev]"
画像セグメンテーション(テキストプロンプト):
from PIL import Image
from sam3.model_builder import build_sam3_image_model
from sam3.model.sam3_image_processor import Sam3Processor
model = build_sam3_image_model()
processor = Sam3Processor(model)
image = Image.open("path/to/image.jpg")
# テキストプロンプトで概念セグメンテーション
inference_state = processor.set_image(image)
output = processor.set_text_prompt(
state=inference_state,
prompt="yellow school bus"
)
masks, boxes, scores = output["masks"], output["boxes"], output["scores"]
動画追跡:
from sam3.model_builder import build_sam3_video_predictor
video_predictor = build_sam3_video_predictor()
response = video_predictor.handle_request(
request=dict(
type="start_session",
resource_path="path/to/video.mp4"
)
)
Ultralytics統合
pip install -U ultralytics
from ultralytics.models.sam import SAM3SemanticPredictor
overrides = dict(
conf=0.25, task="segment", mode="predict",
model="sam3.pt", half=True
)
predictor = SAM3SemanticPredictor(overrides=overrides)
predictor.set_image("path/to/image.jpg")
# 複数の概念を同時にセグメンテーション
results = predictor(text=["person", "bus", "glasses"])
5. 3つのモデルの総合比較
5.1 アーキテクチャ比較
| 項目 | SAM 1 | SAM 2 | SAM 3 |
|---|---|---|---|
| 画像エンコーダ | ViT (MAE) | Hiera (MAE) | Meta Perception Encoder |
| パラメータ | 636M (ViT-H) | 224.4M (Hiera-L) | 848M |
| プロンプト | ポイント、ボックス、マスク、テキスト | ポイント、ボックス、マスク | テキスト、Exemplar、ポイント、ボックス、マスク |
| 時間モデリング | なし | Memory Attention | Memory + Tracker |
| 検出器 | なし | なし | DETRベース |
| Occlusion | 未対応 | Occlusion Head | Occlusion + Presence Head |
| 出力 | マスク+IoU | マスク+IoU+Occlusion | マスク+ボックス+スコア+概念 |
5.2 データセット比較
| 項目 | SA-1B (SAM 1) | SA-V (SAM 2) | SA-Co (SAM 3) |
|---|---|---|---|
| 画像 | 1,100万 | - | 520万(HQ) |
| 動画 | - | 50,900 | 52,500 |
| マスク | 11億 | 3,550万 | 14億以上(SYN含む) |
| 概念/ラベル | なし(Class-Agnostic) | なし | 2,200万エンティティ |
| 固有フレーズ | - | - | 400万 |
5.3 性能の進化
| ベンチマーク | SAM 1 | SAM 2/2.1 | SAM 3 |
|---|---|---|---|
| DAVIS 2017 (J&F) | N/A | 90.7 | 92.0 |
| MOSE val (J&F) | N/A | 74.6 | 60.1(MOSEv2、別ベンチマーク) |
| 画像速度比 | 基準 | 6倍高速 | 約30ms/画像 |
| Zero-Shot能力 | 幾何学的 | 幾何学的+時間的 | 概念レベル |
6. 実践的な活用シナリオ
6.1 SAM 1が適している場合
- 単一画像で高速なセグメンテーションが必要なとき
- インタラクティブなアノテーションツールの構築
- 既存パイプラインに簡単に統合したいとき(最も成熟したエコシステム)
6.2 SAM 2が適している場合
- 動画オブジェクト追跡が必要なとき
- リアルタイム動画ストリーミング分析
- 遮蔽(Occlusion)処理が重要なシナリオ
- 画像でもSAM 1より高速な速度が必要なとき
6.3 SAM 3が適している場合
- 自然言語で検索しながらセグメンテーションしたいとき(「すべての自動車を見つけて」)
- Open-Vocabularyオブジェクト検出+セグメンテーション
- 視覚的例示に基づくFew-Shotセグメンテーション
- 大規模な画像/動画の自動ラベリング
6.4 実際の導入事例(SAM 3)
- Instagram Editsアプリ:動画内の特定の人物/オブジェクトにダイナミックエフェクトを適用
- Facebook Marketplace「View in Room」:AR家具配置(SAM 3 + SAM 3D)
- 野生動物保全:SA-FARIデータセットに基づくカメラトラップモニタリング
7. 学習ロードマップ
SAMシリーズを深く理解し活用するための段階的な学習ガイド。
7.1 前提知識
| 順序 | テーマ | 推奨資料 |
|---|---|---|
| 1 | Vision Transformer (ViT) | An Image is Worth 16x16 Words |
| 2 | MAE (Masked Autoencoder) | Masked Autoencoders Are Scalable Vision Learners |
| 3 | DETR | End-to-End Object Detection with Transformers |
| 4 | CLIP | Learning Transferable Visual Models |
| 5 | Hiera | Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles |
7.2 核心論文の読む順序
1. SAM 1論文 (2023) → 基礎概念の確立
↓
2. SAM 2論文 (2024) → 動画拡張の理解
↓
3. SAM 3論文 (2025) → 概念認識の理解
↓
4. 各GitHubリポジトリのノートブック実習
7.3 実習の推奨
| 段階 | 実習内容 | 難易度 |
|---|---|---|
| 1 | SAM 1 自動マスク生成(Colabノートブック) | 易 |
| 2 | SAM 2 動画追跡実習 | 中 |
| 3 | SAM 3 テキストプロンプトセグメンテーション | 中 |
| 4 | SAM + Grounding DINOパイプライン構築 | 難 |
| 5 | カスタムデータセットのFine-tuning | 難 |
| 6 | ONNX/TensorRT変換およびEdge展開 | 上級 |
7.4 関連する後続研究
| モデル | 特徴 | 論文 |
|---|---|---|
| EfficientSAM | 軽量化SAM(SAMI蒸留) | arxiv.org/abs/2312.00863 |
| FastSAM | CNNベースのリアルタイムSAM | arxiv.org/abs/2306.12156 |
| MobileSAM | モバイル最適化SAM | arxiv.org/abs/2306.14289 |
| Grounded SAM | Grounding DINO + SAM | github.com/IDEA-Research/Grounded-Segment-Anything |
| SAM-HQ | 高品質マスクSAM | arxiv.org/abs/2306.01567 |
| SAM 3D | 3Dオブジェクト/人体復元(Meta) | ai.meta.com/sam3 |
8. References
核心論文
- Kirillov, A., Mintun, E., Ravi, N., et al. (2023). "Segment Anything". ICCV 2023. arxiv.org/abs/2304.02643
- Ravi, N., Gabeur, V., Hu, Y.-T., et al. (2024). "SAM 2: Segment Anything in Images and Videos". arxiv.org/abs/2408.00714
- Carion, N., Gustafson, L., Hu, Y.-T., et al. (2025). "SAM 3: Segment Anything with Concepts". ICLR 2026. arxiv.org/abs/2511.16719
前提知識論文
- Dosovitskiy, A., et al. (2021). "An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale". ICLR 2021. arxiv.org/abs/2010.11929
- He, K., et al. (2022). "Masked Autoencoders Are Scalable Vision Learners". CVPR 2022. arxiv.org/abs/2111.06377
- Carion, N., et al. (2020). "End-to-End Object Detection with Transformers (DETR)". ECCV 2020. arxiv.org/abs/2005.12872
- Radford, A., et al. (2021). "Learning Transferable Visual Models From Natural Language Supervision (CLIP)". ICML 2021. arxiv.org/abs/2103.00020
- Ryali, C., et al. (2023). "Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles". ICML 2023. arxiv.org/abs/2306.00989
GitHubリポジトリ
- github.com/facebookresearch/segment-anything — SAM 1
- github.com/facebookresearch/sam2 — SAM 2
- github.com/facebookresearch/sam3 — SAM 3
解説およびチュートリアル
- Ultralytics SAM Documentation — docs.ultralytics.com/models/sam
- Ultralytics SAM 2 Documentation — docs.ultralytics.com/models/sam-2
- Ultralytics SAM 3 Documentation — docs.ultralytics.com/models/sam-3
- Encord Blog: Segment Anything Model Explained — encord.com/blog/segment-anything-model-explained
- Roboflow: What is SAM 3 — blog.roboflow.com/what-is-sam3
- Meta AI Blog: Introducing SAM 3 — ai.meta.com/blog/segment-anything-model-3
プロジェクトページおよびデータセット
- Meta AI SAM 2 Project — ai.meta.com/sam2
- Meta AI SAM 3 Project — ai.meta.com/sam3
- SA-1B Dataset — ai.meta.com/datasets/segment-anything
- SA-V Dataset — ai.meta.com/datasets/segment-anything-video