논문읽기

SAM : Segment Anything

언시 2025. 6. 28. 13:16

3줄 요약

  1. foundation model을 활용한 segmentation을 진행한다. 해당 모델은 모호한 프롬프트에도 높은 referring segmentation 성능을 보인다.
  2. 해당 모델은 다중 프롬프트를 활용하여 segmentation이 가능하다.
  3. SAM을 활용하여 데이터를 만들고, 해당 결과를 수정하여 iterative하게 데이터 생성과 학습을 진행한다.

Limitation of Previous Studies


  • 이미지-텍스트 멀티모달은 CLIP과 같은 foundation 모델로 인해 큰 발전을 이루었다. 특히 zero-shot 성능에서 또한 큰 발전을 이루었다. 이는 여러 다운스트림 테스크에 적용되었고, 그 성능 또한 준수하였다.
  • 이미지-텍스트 세그멘테이션 모델은 기존에 이미 존재하였다. 그러나 이를 다운스트림 테스트에 적용했을 때 성능이 만족스럽지 못하다.
  • 위 문제를 해결하기 위해 강력한 다운스트림 성능을 갖는 제로샷 세그멘테이션 모델을 만들고자 한다.

Observations & Motivations


위 문제를 해결하기 위해 고려할 내용은 다음과 같다.

  1. 어떤 접근법을 사용해야 제로샷을 이룰 수 있을까?
  2. 어떤 모델 구조를 사용해야 할까? 여기에는 세부 조건이 붙는다.
    1. 프롬프트를 지원해야 함.
    2. 실시간으로 마스크 생성이 가능해야 함
    3. 모호성을 인식해야 함.
      1. 모호성이란? : 프롬프트가 다음과 같이 들어온다 가정하자. 입력 == 사과를 마스킹 해줘. 이 때 여러개의 사과가 존재한다고 가정해보자. 사과 한 개를 마스킹 해야 할까? 아니면 여러 사과를 전부 마스킹 해야할까? 모호하다.
  3. 어떤 데이터를 사용해야 할까?

  • 1번에 대한 해결책 : 보통의 제로샷의 경우 새로 들어온 데이터에 대한 프롬프트를 활용하여 수행된다. 즉, 프롬프트를 활용하여 제로샷의 기능을 확보한다.
  • 2번에 대한 해결책 : 사전훈련된 인코더를 활용한다. 이미지 인코더에서 입력 사진을 처리한다. 텍스트 인코더에서 프롬프트를 처리한다.(a) 두 정보를 결합하여 마스크 디코더에서 처리 후 마스크를 반환한다.(b) 또한 SAM을 단일 프롬프트에 대하여 여러 마스크를 생성하게 하여 모호한 프롬프트에 대하여도 정답의 부분집합에 해당하는 reasonable한 마스크를 출력하게 한다.(c)
  • 3번에 대한 해결책 : 필요한 데이터는 단일 프롬프트-다중 마스크를 갖는 데이터셋이다. 하지만 이런 데이터는 존재하지 않는다. 이에 아래 3가지 절차를 통해 데이터를 생성한다.

  • stage 1 :
    1. 기존 존재하는 세그멘테이션 데이터를 통해 일정부분 학습시킨다.
    2. SAM이 출력한 마스크를 사람이 직접 수정한다.
    3. 해당 데이터를 SAM에 다시 학습시킨다.
  • stage 2 :
    1. stage 1에서 훈련된 SAM이 탐지하지 못한 부분을 어노테이팅 한다.
    2. 어노테이팅 후, 데이터를 다시 학습시킨다.
  • stage 3 :
    1. 해당 단계에서는 ‘모호한’ 프롬프트에 대해 적절한 마스크를 만드는 과정을 수행한다.
    2. 모호한 프롬프트가 왔을 때 해당 포인트를 포함하는 sub-region을 포함하는 마스크를 출력하게 한다. 이후 정답과 가장 가까운 마스크를 학습하는 과정을 진행한다.

모호함에 대한 예시는 다음과 같다.

다음의 포인트를 세그멘테이션 하라고 지시했을 때, 왼쪽의 사진에서는 가방에 초점을 맞춰야 하는지 아니면 가방을 매고 있는 사람에 초점을 맞춰야 하는지 모호하다.

stage 3에서는 위와 같은 모호한 상황에 어떻게 세그멘테이션을 진행해야 하는지 학습한다.

Method


Observations & Motivations 파트에서 데이터에 대하여 이미 다루었기에 method에서는 모델을 다룬다.

 

위 사진은 모델에 대한 사진이다.

  • 이미지 인코더 : MAE(masked auto encoder)를 사용한다. 필자가 알기로 해당 모델은 이미지의 일정 부분을 drop 후 reconstruct 하는 방식으로 훈련되고, 이후에 classification을 훈련한다.
  • 프롬프트 인코더 :
    • 포인트, 박스 : 포시젼임베딩 토큰을 통해 표현된다.
    • 텍스트 : 일반적인 텍스트 임베딩을 거친다.
    • 마스크 : 마스크의 경우에는 conv 레이어를 통해 이미지 피처에 concat 된다.
  • 디코더 : 이미지, 프롬프트의 결과를 입력 받아 마스크를 생성한다.

Experiments


 

  • zero-shot single point valid mask test : fig b는 사람이 직접 평가하여 수치화 한 것이다. 사람이 평가를 진행한 이유를 생각해 보았다.
  • : ‘모호함’ 때문이라 생각한다. 하나의 데이터 포인트에는 여러개의 마스크가 존재한다. 하지만 벤치마크 데이터에는 가능한 여러 마스크가 아닌, 하나의 마스크만 있기에 평가가 불공정할 수 있다.

instance segmentation에서는 살짝 밀리는 모습이 있다. 이는 COCO 세그멘테이션 데이터는 마스크에 구멍이 없는 폴리곤으로 구성된다. SAM은 더 세부적인 마스크를 생성하기에 성능이 밀리는 것으로 보인다. 그러나, 아래 사람이 직접 평가한 표에서는 SAM이 앞서는 모습을 보인다.

 

Pros & Cons


Pros

  • 멀티모달을 활용한 세그멘테이션 모델의 제로샷 성능을 크게 향상시켰다.
  • 비교적 가벼운 이미지 인코더와 모델을 사용하여 실시간 처리가 가능하다.

Cons

  • 평가에 사람이 활용되었다는 부분에서 신뢰성이 떨어지지만, 세그멘테이션 결과를 시각화 하여 보여주었고, 사람의 평가가 개입될 수 밖에 없었던 이유를 설명하여 납득 가능하였다.(데이터셋의 GT가 마스크 폴리곤으로 구성)