https://kimjy99.github.io/논문리뷰/segment-anything/
어떤 object던지, 어떤 Image던지 또 다른 task specific한 training 없이 segmentation 할 수 있는 tool
웹 규모 데이터셋에서 사전학습 된 대규모 언어모델은 강력한 zero-shot 및 few-shot 일반화로 NLP를 혁신하고 있다(=foundation model).
위와 같은 foundation model은 학습 중 볼 수 있는 것 이상으로 task와 데이터 분포를 일반화할 수 있다.
목표: Image segmentation을 위한 foundation model을 구축하는 것. 즉 일반화를 가능하게 하는 task를 사용하여 광범위한 데이터셋에서 promptable model을 개발하고 사전학습 하는 것
질문
Task
프롬프트의 아이디어를 segmentation으로 변환하는 것으로 시작
프롬프트: 전경, 배경, 대략적인 박스, segmentation 대상을 나타내는 모든 정보
Promptable segmentation task는 프롬프트가 주어지면 유효한 segmentation task를 반환하는 것이다.
유효한 마스크의 요구사항: 프롬프트가 모호한 경우에 출력이 그 객체 중 적어도 하나에 대한 합리적인 마스크여야함을 의미함
이 요구사항은 모호한 프롬프트에 대해 일관된 응답을 출력하는 언어모델을 기대하는 것과 유사함
Pre-training
Promptable segmentation task는 각 학습 샘플에 대한 일련의 프롬프트를 시뮬레이션하고 모델이 예측한 마스크를 ground truth와 비교하는 사전 학습 알고리즘을 제안한다.
prompt가 모호한 경우에도 항상 유효한 마스크를 예측하는 것이 목표이다.
Zero-shot transfer
사전학습 task는 모델이 모든 프롬프트에 적절하게 응답할 수 있는 능력을 부여한다. 그러므로 하위 task는 적절한 프롬프트를 엔지니어링하여 해결할 수 있다.
예를 들어 고양이에 대한 boundary box detector가 있는 경우 예측된 boundary box를 모델에 프롬프트로 제공하여 고양이 instatnce segmentation을 해결할 수 있다.
일반적으로 실용적인 segmentation task는 프롬프트로 캐스팅될 수 있다.
Segment Anything Model
SAM에는 위 그림처럼 세 가지 구성요소가 있다.
이미지 인코더
유연한 프롬프트 인코더
빠른 마스크 디코더
이미지 인코더
프롬프트 인코더
마스크 디코더
Data engine: segmentation의 ground truth를 포함하는 dataset
SAM은 대규모 데이터셋이 중요한데, web에서 쉽게 얻을 수 없다.
Data endine has three stages: Assisted-manual stage, Semi-automatic stage, Fully automatic stage