SAM 3: Segment Anything with Concepts - 논문 리뷰 및 코드 분석
개요
Meta의 최신 연구인 SAM 3 (Segment Anything Model 3)는 개념 프롬프트(concept prompts)를 통해 이미지와 비디오에서 객체를 감지, 세그멘테이션, 추적하는 통합 모델입니다. 이전 버전인 SAM 2가 포인트, 박스, 마스크로 단일 객체를 세그멘테이션하는 데 집중했다면, SAM 3는 "yellow school bus" 같은 짧은 명사구나 이미지 예시만으로 해당 개념의 모든 인스턴스를 자동으로 찾아 세그멘테이션할 수 있습니다.
공식 리소스:
- 논문: SAM 3: Segment Anything with Concepts
- 코드: GitHub Repository
- 데모: Segment Anything Demo
- 웹사이트: Meta AI SAM 3
핵심 기여
1. Promptable Concept Segmentation (PCS)
SAM 3의 가장 큰 혁신은 Promptable Concept Segmentation (PCS) 기능입니다. 이는 다음과 같은 다양한 프롬프트를 지원합니다:
- 텍스트 프롬프트: "yellow school bus", "striped cat", "red apple" 같은 짧은 명사구
- 이미지 예시: 양성(positive) 또는 음성(negative) 이미지 예시
- 조합: 텍스트 + 이미지 예시의 조합
입력: 개념 프롬프트
출력: 해당 개념과 매칭되는 모든 객체 인스턴스의 세그멘테이션 마스크와 고유 ID
2. 모델 아키텍처
SAM 3의 모델은 두 가지 주요 구성 요소로 이루어져 있습니다:
Detector (감지기)
- DETR 기반 아키텍처 (Carion et al., 2020)
- 텍스트, 기하학, 이미지 예시에 조건화(conditioned)
- Presence Head: 인식(recognition)과 위치 지정(localization)을 분리하여 감지 정확도 향상
- 이는 특히 하드 네거티브(hard negatives) 학습 시 효과적
Tracker (추적기)
- SAM 2의 트랜스포머 인코더-디코더 아키텍처 상속
- 비디오 세그멘테이션 및 인터랙티브 정제(interactive refinement) 지원
- 감지기와 추적기의 분리 설계로 태스크 충돌 방지
- 감지기는 identity-agnostic (객체 식별 불필요)
- 추적기는 비디오에서 identity 분리가 주요 목표
공유 백본
- 감지기와 추적기가 단일 비전 인코더를 공유 (Bolya et al., 2025)
- 효율적인 계산 자원 활용
3. 데이터 엔진
SAM 3의 성능 향상의 핵심은 확장 가능한 데이터 엔진입니다:
데이터 규모
- 4M개의 고유 개념 레이블 (unique concept labels)
- 52M개의 마스크 (masks)
- 합성 데이터셋: 38M개 구문, 1.4B개 마스크
데이터 엔진의 3가지 혁신
- 미디어 큐레이션 (Media Curation)
- 이전 접근법들이 동질적인 웹 소스에 의존했던 것과 달리, 더 다양한 미디어 도메인 큐레이션
- 레벨 큐레이션 (Label Curation)
- 온톨로지(ontology)와 멀티모달 LLM을 "AI 어노테이터"로 활용
- 명사구 생성 및 하드 네거티브 생성으로 레이블 다양성과 난이도 대폭 증가
- 레이블 검증 (Label Verification)
- MLLM을 "AI 검증자"로 파인튜닝하여 처리량 2배 향상
- 거의 인간 수준의 정확도 달성
데이터 엔진 워크플로우
노이즈가 있는 미디어-구문-마스크 pseudo-labels
↓
인간 및 AI 검증자를 통한 마스크 품질 및 완전성 검사
↓
올바르게 레이블링된 예시 필터링
↓
도전적인 에러 케이스 식별
↓
인간 어노테이터가 수동으로 마스크 수정
↓
고품질 학습 데이터 생성
성능 및 벤치마크
성능 지표
- LVIS Zero-shot Mask AP: 48.8 (기존 최고: 38.5)
- SA-Co 벤치마크: 기존 대비 최소 2배 성능 향상
- SAM 2 대비: 시각적 프롬프트 성능 개선
SA-Co 벤치마크
SAM 3는 새로운 벤치마크인 Segment Anything with Concepts (SA-Co)를 제안했습니다:
- 207K개의 고유 개념
- 120K개 이미지, 1.7K개 비디오
- 기존 벤치마크 대비 50배 이상의 개념 수
기술적 세부사항
Presence Head의 역할
Presence Head는 SAM 3의 핵심 혁신 중 하나입니다:
문제: 기존 오픈-보커불러리 감지 모델들은 인식과 위치 지정이 결합되어 있어, 특히 하드 네거티브 학습 시 성능이 저하됨
해결: Presence Head를 도입하여 인식과 위치 지정을 분리
- 인식: 객체가 존재하는지 여부 판단
- 위치 지정: 객체의 위치와 경계 찾기
이 분리는 특히 다음과 같은 경우에 효과적입니다:
- 하드 네거티브 학습
- 복잡한 장면에서의 객체 감지
- 작은 객체나 가려진 객체 감지
디커플링 설계의 이점
감지기와 추적기의 분리 설계는 다음과 같은 이점을 제공합니다:
- 태스크 충돌 방지
- 감지기: identity-agnostic (객체가 무엇인지만 중요)
- 추적기: identity-specific (객체의 식별이 중요)
- 독립적 최적화
- 각 구성 요소를 독립적으로 최적화 가능
- 더 나은 성능 달성
코드 구조 및 사용법
기본 사용 예시
from sam3 import SAM3
# 모델 초기화
model = SAM3.from_pretrained("facebook/sam3")
# 이미지 로드
image = load_image("path/to/image.jpg")
# 텍스트 프롬프트로 세그멘테이션
masks, labels = model.segment(
image=image,
prompt="yellow school bus",
return_masks=True
)
# 이미지 예시로 세그멘테이션
exemplar_image = load_image("path/to/exemplar.jpg")
masks, labels = model.segment(
image=image,
exemplar=exemplar_image,
return_masks=True
)
# 조합 프롬프트
masks, labels = model.segment(
image=image,
prompt="red car",
exemplar=exemplar_image,
return_masks=True
)
비디오 세그멘테이션
# 비디오 프레임 로드
video_frames = load_video("path/to/video.mp4")
# 비디오 세그멘테이션 (객체 추적 포함)
masks, tracks = model.segment_video(
frames=video_frames,
prompt="person",
track_objects=True
)
인터랙티브 정제
SAM 3는 SAM 2와 마찬가지로 인터랙티브 정제를 지원합니다:
# 초기 세그멘테이션
masks = model.segment(image, prompt="cat")
# 정제 프롬프트 추가 (포인트, 박스 등)
refined_masks = model.refine(
image=image,
initial_masks=masks,
refinement_prompts=[
{"type": "point", "coord": (100, 200), "label": 1},
{"type": "box", "bbox": [50, 50, 200, 200]}
]
)
SAM 2 vs SAM 3 비교
| 특징 | SAM 2 | SAM 3 |
|---|---|---|
| 주요 기능 | Promptable Visual Segmentation (PVS) | Promptable Concept Segmentation (PCS) |
| 프롬프트 타입 | 포인트, 박스, 마스크 | 텍스트, 이미지 예시, 조합 |
| 출력 | 단일 객체 세그멘테이션 | 모든 매칭 인스턴스 세그멘테이션 |
| 객체 추적 | 지원 | 지원 (개선됨) |
| 인터랙티브 정제 | 지원 | 지원 |
| 벤치마크 | 기존 벤치마크 | SA-Co (새로운 벤치마크) |
SAM 3의 개선점
- 개념 기반 세그멘테이션: 텍스트나 이미지로 개념을 지정하면 모든 인스턴스를 자동으로 찾음
- Presence Head: 인식과 위치 지정 분리로 감지 정확도 향상
- 확장된 데이터 엔진: 4M개 고유 개념, 52M개 마스크
- 성능 향상: LVIS에서 48.8 AP (기존 최고 38.5)
실험 결과 및 분석
주요 실험 결과
- LVIS Zero-shot 성능
- SAM 3: 48.8 AP
- 기존 최고: 38.5 AP
- 약 27% 향상
- SA-Co 벤치마크
- 기존 시스템 대비 최소 2배 성능
- 다양한 개념에 대한 강건한 성능
- Ablation Studies
- 백본 선택: 다양한 백본 아키텍처 비교
- Presence Head: Presence Head 제거 시 성능 저하 확인
- 하드 네거티브: 하드 네거티브 추가 시 성능 향상
- 스케일링 법칙: 고품질 데이터셋과 합성 데이터셋에 대한 스케일링 법칙 수립
스케일링 법칙
SAM 3는 PCS 태스크에 대한 스케일링 법칙을 수립했습니다:
- 고품질 데이터셋: 데이터 규모에 따른 성능 향상 패턴
- 합성 데이터셋: 합성 데이터의 효과적인 활용 방법
응용 분야
SAM 3는 다양한 응용 분야에서 활용될 수 있습니다:
1. 로보틱스
- 객체 인식 및 조작
- 환경 이해
2. 콘텐츠 생성
- 이미지/비디오 편집
- 자동 마스킹 및 세그멘테이션
3. 증강 현실 (AR)
- 실시간 객체 추적
- 가상 객체 배치
4. 데이터 어노테이션
- 대규모 데이터셋 자동 레이블링
- 품질 검증
5. 과학 연구
- 의료 이미지 분석
- 생물학적 이미지 분석
6. MLLM과의 통합
SAM 3는 Multimodal Large Language Model (MLLM)과 쉽게 통합될 수 있습니다:
# MLLM과 통합 예시
from mllm import MLLM
from sam3 import SAM3
mllm = MLLM.from_pretrained("llama-vision")
sam3 = SAM3.from_pretrained("facebook/sam3")
# 복잡한 언어 프롬프트 처리
complex_prompt = "Find all the red cars that are parked near the building"
simplified_concepts = mllm.extract_concepts(complex_prompt)
# ["red car", "building"]
# SAM 3로 세그멘테이션
masks = sam3.segment(image, prompt=simplified_concepts[0])
향후 연구 방향
1. 긴 참조 표현 (Long Referring Expressions)
현재 SAM 3는 짧은 명사구에 집중하지만, 더 복잡한 언어 프롬프트를 직접 처리하는 연구가 필요합니다.
2. 추론이 필요한 쿼리
"Find the car that is closest to the person" 같은 추론이 필요한 쿼리를 처리하는 방법
3. 실시간 성능
실시간 애플리케이션을 위한 모델 경량화 및 최적화
4. 다중 모달 프롬프트 확장
음성, 제스처 등 다양한 모달리티의 프롬프트 지원
결론
SAM 3는 세그멘테이션 분야에서 중요한 진전을 이루었습니다:
- 개념 기반 세그멘테이션: 텍스트나 이미지로 개념을 지정하면 모든 인스턴스를 자동으로 찾는 혁신적인 기능
- Presence Head: 인식과 위치 지정 분리로 감지 정확도 향상
- 확장 가능한 데이터 엔진: 4M개 고유 개념, 52M개 마스크의 대규모 데이터셋
- 뛰어난 성능: LVIS에서 48.8 AP, SA-Co에서 기존 대비 2배 이상 성능
SAM 3는 세그멘테이션 분야의 새로운 표준을 제시하며, 다양한 응용 분야에서 활용될 것으로 기대됩니다.
참고 자료
- 논문: SAM 3: Segment Anything with Concepts
- 코드: GitHub - facebookresearch/sam3
- 데모: Segment Anything Demo
- 웹사이트: Meta AI SAM 3
- SAM 2 논문: SAM 2: Segment Anything in Images and Videos
- SAM 1 논문: Segment Anything