SAM: 범용 세그멘테이션 파운데이션 모델

Meta · 2023-04-01 · Vision · Apache-2.0

개요

SAM(Segment Anything Model)은 2023년 Meta의 Alexander Kirillov 등이 발표한 프롬프트 기반 이미지 세그멘테이션 파운데이션 모델이다. NLP에서 GPT가 텍스트 프롬프트로 다양한 언어 태스크를 수행하듯, SAM은 점(point), 바운딩 박스(box), 텍스트, 마스크 등의 프롬프트로 이미지 내 원하는 객체를 분할할 수 있는 범용 세그멘테이션 능력을 갖춘다. 기존의 세그멘테이션 모델은 특정 태스크(인스턴스 세그멘테이션, 의미론적 세그멘테이션, 파노라마 세그멘테이션)와 특정 도메인(의료 영상, 자율주행, 위성 이미지 등)에 특화된 개별 모델을 각각 학습해야 했으며, 새로운 도메인이나 객체 유형에 적용하려면 대량의 어노테이션 데이터 수집과 재학습이 필수적이었다.

SAM의 야심적인 목표는 NLP의 GPT-3처럼 “세그멘테이션의 파운데이션 모델”을 구축하는 것이다. 이를 위해 세 가지 구성요소를 동시에 개발하였다: (1) 프롬프트 기반 세그멘테이션 태스크의 정의, (2) 이를 해결하는 SAM 아키텍처, (3) 1B개 이상의 마스크와 1,100만 이미지로 구성된 SA-1B 데이터셋. SA-1B는 모델-인-더-루프(model-in-the-loop) 방식의 3단계 데이터 엔진으로 구축되었으며, 기존 최대 데이터셋(COCO의 2.8M 마스크) 대비 400배 이상 큰 규모이다. SAM은 별도 파인튜닝 없이 의료 영상, 위성 이미지, 수중 사진, 현미경 이미지 등 학습 분포와 무관한 도메인에서도 강건한 제로샷 세그멘테이션을 수행한다.

SAM의 아키텍처 설계는 이미지당 한 번의 인코딩 후 다양한 프롬프트에 대해 실시간으로 마스크를 생성할 수 있어, 대화형(interactive) 세그멘테이션 도구로서 뛰어난 사용성을 제공한다. 이미지 인코딩(~150ms) 후 각 프롬프트에 대한 마스크 생성은 ~50ms에 불과하여, 사용자가 클릭을 변경할 때마다 즉각적인 피드백을 받을 수 있다. SAM은 컴퓨터 비전의 파운데이션 모델 패러다임을 세그멘테이션 분야로 확장한 이정표적 모델이다.

아키텍처 상세

SAM은 세 가지 핵심 구성요소로 이루어진다: 이미지 인코더, 프롬프트 인코더, 마스크 디코더이다. 이 세 모듈의 분리 설계가 SAM의 효율적인 대화형 사용을 가능하게 하는 핵심이다.

이미지 인코더 (Image Encoder)

MAE로 사전학습된 ViT-H(632M 파라미터)를 이미지 인코더로 사용한다. 로 리사이즈된 입력 이미지를 패치로 분할하여 개의 패치 토큰을 생성하고, 32개 트랜스포머 레이어를 거쳐 크기의 이미지 임베딩을 출력한다:

이미지 인코더는 가장 연산량이 큰 구성요소(~150ms)이나, 이미지당 한 번만 실행되고 이후 다양한 프롬프트에 대해 캐싱된 임베딩을 재사용한다. 이 분할 전략이 대화형 세그멘테이션에서의 실시간 응답(프롬프트당 ~50ms)을 가능하게 한다.

이미지 인코더 사양
아키텍처ViT-H/16
사전학습MAE (ImageNet-1K)
파라미터632M
입력 해상도1024×1024
출력 해상도64×64×256
패치 크기16×16
어텐션전역 + windowed (교차 사용)

프롬프트 인코더 (Prompt Encoder)

다양한 유형의 프롬프트를 통합적으로 처리한다. 희소 프롬프트(점, 박스)와 밀집 프롬프트(마스크)를 구분하여 처리한다:

  • 점(Point): 학습 가능한 전경/배경 구분 임베딩 + 위치 인코딩을 더하여 토큰 생성. 사용자가 전경(양성) 또는 배경(음성) 점을 지정할 수 있다.
  • 박스(Box): 좌상단과 우하단 점의 위치 인코딩 + 학습 가능한 코너 임베딩 2개를 생성
  • 마스크(Mask): 이진 마스크를 2개의 커널 stride-2 컨볼루션으로 으로 다운샘플링하여 이미지 임베딩에 요소별 가산
  • 텍스트: CLIP 텍스트 인코더로 처리 (선택적, 기본 모델에서는 제한적)

프롬프트 인코더는 매우 경량(<1M 파라미터)으로 설계되어, 프롬프트 변경 시 거의 즉각적인 응답이 가능하다.

마스크 디코더 (Mask Decoder)

2개의 트랜스포머 디코더 블록으로 구성되며, 프롬프트 토큰과 이미지 임베딩 간의 양방향 교차 어텐션을 수행한다:

디코더의 처리 흐름은 다음과 같다:

  1. 프롬프트 → 이미지 교차 어텐션: 프롬프트 토큰이 이미지 임베딩의 관련 영역에 주목
  2. 이미지 → 프롬프트 교차 어텐션: 이미지 특징이 프롬프트 정보를 흡수하여 프롬프트 조건화
  3. 업샘플링: 전치 컨볼루션으로
  4. 마스크 예측: MLP로 토큰별 마스크 가중치를 생성하고, 업샘플링된 특징 맵과 내적

프롬프트의 모호성(ambiguity)을 처리하기 위해 3개의 마스크 후보와 각각의 IoU 신뢰도 점수를 동시에 예측한다. 예를 들어 사람의 팔 위에 점 하나를 찍으면, 모델은 “팔만”, “상반신”, “전신”이라는 세 가지 유효한 분할 해석을 모두 제시하고, 사용자가 적절한 것을 선택하거나 추가 프롬프트로 명확히 할 수 있다.

핵심 혁신

  1. 프롬프트 기반 세그멘테이션 태스크 정의: 다양한 프롬프트(점, 박스, 마스크, 텍스트)로 세그멘테이션을 조건화하는 새로운 태스크를 정의하였다. 프롬프트를 변경하면 동일 이미지에서 다른 객체를 즉시 분할할 수 있다.

  2. SA-1B 데이터 엔진: 3단계 데이터 엔진으로 11M 이미지에서 1.1B 마스크를 구축하였다:

    • 1단계 (보조 수동, Assisted-Manual): 인간 주석자가 브라우저 도구에서 SAM의 도움을 받아 마스크 생성 (4.3M 마스크, 120K 이미지)
    • 2단계 (반자동, Semi-Automatic): SAM이 자동 생성한 마스크를 인간이 검수·보완, 누락된 객체를 추가 (5.9M 마스크, 180K 이미지)
    • 3단계 (완전 자동, Fully Automatic): SAM이 개 그리드 포인트로 이미지의 모든 객체를 자동 분할, NMS와 품질 필터링 적용 (1.1B 마스크, 11M 이미지)
  3. 모호성 인식 출력: 하나의 프롬프트에 대해 여러 유효한 마스크가 존재할 수 있음을 인정하고, 3개의 마스크 후보를 IoU 신뢰도 점수와 함께 동시에 예측한다.

  4. 이미지-프롬프트 분리 설계: 이미지 인코딩을 한 번만 수행하고 다양한 프롬프트에 재사용하는 분리 설계로, 대화형 사용에서 프롬프트당 ~50ms의 실시간 응답을 가능하게 한다.

벤치마크/성능

벤치마크SAM ViT-HSAM ViT-LRITMFocalClickSimpleClick
COCO (1-click mIoU)75.474.065.768.072.4
LVIS (1-click mIoU)75.173.860.663.166.5
제로샷 도메인 전이우수우수제한적제한적제한적
프롬프트 유형점/박스/마스크/텍스트점/박스/마스크/텍스트
모호성 처리3개 후보3개 후보단일단일단일

SAM은 특히 도메인 전이(학습에 없던 의료, 위성, 수중 이미지 등)에서 기존 모델을 크게 능가하며, 이는 SA-1B의 규모와 다양성 덕분이다.

학습

  • 데이터셋: SA-1B (1.1B 마스크, 11M 이미지, 3단계 데이터 엔진)
  • 이미지 인코더 초기화: MAE 사전학습된 ViT-H (ImageNet-1K)
  • 입력 해상도: 1024×1024
  • 패치 크기: 16×16 (64×64 임베딩 그리드)
  • 옵티마이저: AdamW
  • 혼합 정밀도: FP16
  • GPU: 256×A100
  • 학습 손실: Focal Loss(마스크 분류) + Dice Loss(마스크 품질) + MSE(IoU 예측)
  • 프롬프트 시뮬레이션: 학습 시 ground truth 마스크에서 무작위 점/박스를 샘플링하여 프롬프트로 사용

관련 모델

SAM은 비전 파운데이션 모델의 대표적 성공 사례로, SAM 2(2024, 스트리밍 메모리로 비디오 확장)와 SAM 3(2025, 언어 인코더 통합으로 개념 기반 세그멘테이션 확장)로 지속적으로 진화하고 있다. Grounding DINO와 결합한 “Grounded SAM”은 텍스트만으로 탐지+세그멘테이션을 수행하는 실무 파이프라인으로 널리 활용된다. EfficientSAM, MobileSAM 등 경량화 모델도 활발히 연구되고 있다.

참고 자료

관련 문서