SAM
Kirillov 2023 · 논문
한 줄 요약 — Segment Anything: 1100만 장의 이미지에서 나온 11억 개의 마스크로 학습된 프롬프트 가능한 세그먼테이션 파운데이션 모델로, 점/박스/마스크 프롬프트로부터 임의의 객체를 zero-shot으로 세그먼테이션합니다.
문제
세그먼테이션 연구는 태스크별 모델들 — 인터랙티브, 시맨틱, 인스턴스, 판옵틱 — 로 분열되어 있었으며, 각각 자체 레이블링된 데이터셋과 학습 과정이 필요했고, 새로운 이미지 분포나 새로운 태스크로 zero-shot 전이되지 않았습니다. NLP는 프롬프트 가능한 태스크에 대해 충분한 규모로 학습된 파운데이션 모델이 명시적으로 학습되지 않은 태스크로 일반화될 수 있음을 보여주었습니다. Segment Anything 프로젝트는 세그먼테이션에 대해 이에 상응하는 태스크, 모델, 데이터셋이 무엇인지를 묻습니다 — 문제는 마스크가 인터넷에서 자연스럽게 풍부하지 않다는 것이므로, 10억 규모의 어노테이션을 직접 만들어내야 했습니다.
방법 및 아키텍처
이 프로젝트는 세 가지 상호 연결된 구성 요소를 가집니다: 프롬프트 가능한 세그먼테이션 태스크(점, 박스, 마스크, 또는 탐색적 자유 형식 텍스트 등 임의의 프롬프트에 대해 유효한 마스크를 반환), 모델(SAM), 그리고 SA-1B를 생성하는 데이터 엔진.
SAM은 세 개의 모듈을 가지며, 비용이 많이 드는 부분이 이미지당 상각(amortize)되도록 설계되었습니다:
- 이미지 인코더: 1024×1024 입력에서 MAE로 사전 학습된 ViT-H/16(네 개의 전역 attention 블록을 가진 14×14 윈도우 attention)이 16배 다운스케일된 이미지 임베딩을 생성합니다. 어떤 프롬프트가 도착하기 전에 이미지당 한 번만 실행됩니다.
- 프롬프트 인코더: 희소 프롬프트(점, 박스)는 학습된 타입별 임베딩과 합산된 위치 인코딩이 됩니다; 텍스트는 기성(off-the-shelf) CLIP 텍스트 인코더를 거칩니다; 밀집 프롬프트(마스크)는 합성곱으로 임베딩되어 이미지 임베딩과 원소별로 합산됩니다.
- 마스크 디코더: 프롬프트 self-attention과 양방향 cross-attention(프롬프트-에서-이미지, 이미지-에서-프롬프트)을 가진 두 개의 수정된 Transformer 디코더 블록이 있고, 그다음 이미지 임베딩이 업샘플링되고 MLP가 출력 토큰을 위치별로 마스크 전경 확률을 채점하는 동적 선형 분류기로 매핑합니다. 사전 계산된 임베딩이 주어지면, 프롬프트 인코더 + 디코더는 CPU에서 웹 브라우저 안에서 약 50ms만에 실행됩니다 — 실시간 인터랙티브 프롬프트.
모호성: 하나의 클릭은 전체/부분/하위 부분 중 어느 것도 유효하게 의미할 수 있으므로, SAM은 프롬프트마다 3개의 출력 마스크를 예측하고 각각에 예측된 IoU 신뢰도를 함께 냅니다; 학습은 세 개 중 최소 손실만 역전파합니다. 마스크 지도(supervision)는 focal loss와 dice loss의 선형 결합이며, 마스크당 11라운드에 걸쳐 프롬프트를 샘플링하는 인터랙티브 설정으로 시뮬레이션됩니다.
데이터 엔진(모델-인-더-루프, 세 단계): (1) 보조-수동(assisted-manual) — 어노테이터가 SAM을 루프에 넣고 클릭하며, 12만 장의 이미지에서 430만 개의 마스크, 모델이 6번 재학습되면서 마스크당 소요 시간이 34초에서 14초로 감소; (2) 반자동(semi-automatic) — SAM이 확신할 수 있는 마스크를 미리 채우고 어노테이터가 나머지를 추가, 18만 장의 이미지에서 590만 개의 마스크 추가; (3) 완전 자동(fully automatic) — 32×32 점 그리드로 SAM에 프롬프트하고, 확신할 수 있는(예측된 IoU) 그리고 안정적인(확률 맵을 와 로 임계값을 두면 비슷한 마스크가 나옴) 마스크만 남기고, NMS로 중복을 제거. 1100만 장의 모든 이미지에 적용하여 SA-1B: 11억 개의 마스크, 이미지당 약 100개의 마스크를 얻었으며, Open Images보다 이미지는 11배, 마스크는 400배 더 많습니다; 공개된 이미지는 최단 변 1500픽셀로 다운샘플링되었습니다.
실험 결과
- 새로운 23개 데이터셋 스위트에서의 단일 점 zero-shot 세그먼테이션: SAM은 23개 중 16개 데이터셋에서 가장 강력한 인터랙티브 기준선인 RITM을 능가합니다(최대 약 47 IoU까지); 3개의 마스크 중 최선을 고르는 오라클을 사용하면 모든 23개에서 승리합니다. 사람 평가 연구에서, SAM의 마스크는 10점 만점에 7~9점을 받아 RITM보다 꾸준히 높으며 — 자동 mIoU가 RITM을 선호하는 데이터셋에서도 그렇습니다.
- Zero-shot 인스턴스 세그먼테이션(ViTDet-H 박스로 프롬프트): COCO에서 마스크 AP 46.5 대 완전 지도학습된 ViTDet-H의 51.0, LVIS에서 44.7 대 46.6 — COCO/LVIS 마스크 학습 없이도 근접하며, 사람 어노테이터에게는 ViTDet보다 더 높게 평가받았습니다(ViTDet은 데이터셋 특화 마스크 편향을 활용합니다).
- LVIS에서의 zero-shot 객체 후보(proposal): 중형/대형 및 희귀/일반 객체에서 ViTDet-H를 능가하고, 소형 및 빈번한 객체에서만 뒤처집니다.
- BSDS500에서의 zero-shot 엣지 검출: 엣지에 대한 학습을 전혀 받지 않았음에도 합리적인 엣지 맵을 생성합니다; 정밀도는 낮지만 재현율(R50)은 높습니다.
- Ablation: 자동 마스크만으로 학습해도 전체 데이터 대비 mIoU 손실은 약 0.5뿐입니다; 100만 장의 이미지(SA-1B의 약 10%)로도 전체 데이터셋에 거의 근접합니다; ViT-H는 ViT-B를 확실히 능가하지만 ViT-L보다는 근소하게만 우세합니다.
- 명시된 한계: 미세한 구조를 놓칠 수 있고, 작은 구성 요소를 환각(hallucinate)할 수 있으며, 무거운 인코더로 인해 종단간 실시간이 아닙니다; 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 매핑