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](https://arxiv.org/abs/2304.02643) |
| **SAM 2** | 2024.08 | 이미지 + 비디오 실시간 세그멘테이션 | [SAM 2: Segment Anything in Images and Videos](https://arxiv.org/abs/2408.00714) |
| **SAM 3** | 2025.11 (ICLR 2026) | 개념 인식(Concept-Aware) 세그멘테이션 | [SAM 3: Segment Anything with Concepts](https://arxiv.org/abs/2511.16719) |
세 모델의 핵심 진화 방향을 한 문장으로 요약하면 다음과 같다.
> **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](https://arxiv.org/abs/2304.02643)
- **GitHub**: [github.com/facebookresearch/segment-anything](https://github.com/facebookresearch/segment-anything)
- **라이선스**: Apache 2.0
2.2 핵심 기여 3가지
SAM 1은 세 가지를 동시에 제안했다.
1. **새로운 태스크 — Promptable Segmentation**: 포인트, 박스, 마스크, 텍스트 등 임의의 프롬프트가 주어지면 유효한 세그멘테이션 마스크를 반환한다
2. **새로운 모델 — SAM**: 프롬프트 기반 세그멘테이션을 수행하는 Foundation Model
3. **새로운 데이터셋 — SA-1B**: 1,100만 장 이미지에서 **11억 개** 마스크를 포함하는 역대 최대 세그멘테이션 데이터셋
2.3 아키텍처 상세
SAM의 아키텍처는 세 가지 컴포넌트로 분리된다. 핵심 설계 원칙은 **무거운 이미지 인코더는 한 번만 실행**하고, 가벼운 프롬프트 인코더와 마스크 디코더를 실시간으로 반복 호출하는 것이다.
┌─────────────────────────────────────────────────────────┐
│ 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 출력**: 하나의 프롬프트에 대해 **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
모델 로드
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](https://arxiv.org/abs/2408.00714)
- **GitHub**: [github.com/facebookresearch/sam2](https://github.com/facebookresearch/sam2)
- **프로젝트 페이지**: [ai.meta.com/sam2](https://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 ..
**이미지 세그멘테이션:**
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]),
)
**비디오 세그멘테이션:**
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](https://arxiv.org/abs/2511.16719)
- **GitHub**: [github.com/facebookresearch/sam3](https://github.com/facebookresearch/sam3)
- **프로젝트 페이지**: [ai.meta.com/sam3](https://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. 세 모델 비교 종합
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](https://arxiv.org/abs/2010.11929) |
| 2 | **MAE (Masked Autoencoder)** | [Masked Autoencoders Are Scalable Vision Learners](https://arxiv.org/abs/2111.06377) |
| 3 | **DETR** | [End-to-End Object Detection with Transformers](https://arxiv.org/abs/2005.12872) |
| 4 | **CLIP** | [Learning Transferable Visual Models](https://arxiv.org/abs/2103.00020) |
| 5 | **Hiera** | [Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles](https://arxiv.org/abs/2306.00989) |
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](https://arxiv.org/abs/2312.00863) |
| **FastSAM** | CNN 기반 실시간 SAM | [arxiv.org/abs/2306.12156](https://arxiv.org/abs/2306.12156) |
| **MobileSAM** | 모바일 최적화 SAM | [arxiv.org/abs/2306.14289](https://arxiv.org/abs/2306.14289) |
| **Grounded SAM** | Grounding DINO + SAM | [github.com/IDEA-Research/Grounded-Segment-Anything](https://github.com/IDEA-Research/Grounded-Segment-Anything) |
| **SAM-HQ** | 고품질 마스크 SAM | [arxiv.org/abs/2306.01567](https://arxiv.org/abs/2306.01567) |
| **SAM 3D** | 3D 객체/인체 복원 (Meta) | [ai.meta.com/sam3](https://ai.meta.com/sam3/) |
8. References
핵심 논문
1. Kirillov, A., Mintun, E., Ravi, N., et al. (2023). **"Segment Anything"**. ICCV 2023. [arxiv.org/abs/2304.02643](https://arxiv.org/abs/2304.02643)
2. Ravi, N., Gabeur, V., Hu, Y.-T., et al. (2024). **"SAM 2: Segment Anything in Images and Videos"**. [arxiv.org/abs/2408.00714](https://arxiv.org/abs/2408.00714)
3. Carion, N., Gustafson, L., Hu, Y.-T., et al. (2025). **"SAM 3: Segment Anything with Concepts"**. ICLR 2026. [arxiv.org/abs/2511.16719](https://arxiv.org/abs/2511.16719)
사전 지식 논문
4. Dosovitskiy, A., et al. (2021). **"An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale"**. ICLR 2021. [arxiv.org/abs/2010.11929](https://arxiv.org/abs/2010.11929)
5. He, K., et al. (2022). **"Masked Autoencoders Are Scalable Vision Learners"**. CVPR 2022. [arxiv.org/abs/2111.06377](https://arxiv.org/abs/2111.06377)
6. Carion, N., et al. (2020). **"End-to-End Object Detection with Transformers (DETR)"**. ECCV 2020. [arxiv.org/abs/2005.12872](https://arxiv.org/abs/2005.12872)
7. Radford, A., et al. (2021). **"Learning Transferable Visual Models From Natural Language Supervision (CLIP)"**. ICML 2021. [arxiv.org/abs/2103.00020](https://arxiv.org/abs/2103.00020)
8. Ryali, C., et al. (2023). **"Hiera: A Hierarchical Vision Transformer without the Bells-and-Whistles"**. ICML 2023. [arxiv.org/abs/2306.00989](https://arxiv.org/abs/2306.00989)
GitHub 저장소
9. [github.com/facebookresearch/segment-anything](https://github.com/facebookresearch/segment-anything) — SAM 1
10. [github.com/facebookresearch/sam2](https://github.com/facebookresearch/sam2) — SAM 2
11. [github.com/facebookresearch/sam3](https://github.com/facebookresearch/sam3) — SAM 3
해설 및 튜토리얼
12. Ultralytics SAM Documentation — [docs.ultralytics.com/models/sam](https://docs.ultralytics.com/models/sam/)
13. Ultralytics SAM 2 Documentation — [docs.ultralytics.com/models/sam-2](https://docs.ultralytics.com/models/sam-2/)
14. Ultralytics SAM 3 Documentation — [docs.ultralytics.com/models/sam-3](https://docs.ultralytics.com/models/sam-3/)
15. Encord Blog: Segment Anything Model Explained — [encord.com/blog/segment-anything-model-explained](https://encord.com/blog/segment-anything-model-explained/)
16. Roboflow: What is SAM 3 — [blog.roboflow.com/what-is-sam3](https://blog.roboflow.com/what-is-sam3/)
17. Meta AI Blog: Introducing SAM 3 — [ai.meta.com/blog/segment-anything-model-3](https://ai.meta.com/blog/segment-anything-model-3/)
프로젝트 페이지 및 데이터셋
18. Meta AI SAM 2 Project — [ai.meta.com/sam2](https://ai.meta.com/sam2/)
19. Meta AI SAM 3 Project — [ai.meta.com/sam3](https://ai.meta.com/sam3/)
20. SA-1B Dataset — [ai.meta.com/datasets/segment-anything](https://ai.meta.com/datasets/segment-anything/)
21. SA-V Dataset — [ai.meta.com/datasets/segment-anything-video](https://ai.meta.com/datasets/segment-anything-video/)
현재 단락 (1/469)
**Segment Anything Model(SAM)**은 Meta AI Research가 발표한 이미지·비디오 세그멘테이션 분야의 Foundation Model 시리즈다. NLP...