본문 바로가기
Segmentation

[Segmentation] Segment Anything(SAM) (ICCV2023) 리뷰

by pulluper 2024. 1. 3.
반응형

안녕하세요 pulluper 입니다.

오랜만에 논문리뷰를 하려 합니다. 오늘 리뷰할 논문은 SAM(segment anything) 입니다.

 

Introduction

 

Paper : [Link], Github : [Link], Project : [Link]

2023년 4월 FAIR 에서 작성한 논문으로 제목부터 '어느것이든 분할하겠다' 라는 의지를 표명합니다. 

2024년 1월 현재 1600 이상의 citation 이 있고 ICCV2023에서 발표 되었습니다.

아카이브 버전부터 아주 관심이 많았던 논문입니다.  

 

본래 인식문제는 미리정의된 (pre-defined) 클래스와 위치 (bbox, mask 등)를 찾는 것이 목적인 task 인데, 

SAM에서는 promptable segmentation 을 task 로 잡습니다.

 

promptable segmentation 란 '마스크로 생성하고자 하는 대상으로 prompt 로 지정하여 생성하는 task 입니다. 

prompt로 사용되는 것은 점들 (points), 박스 (bbox), 텍스트 (text) 등이 있습니다. 

 

비슷한 task로는 zero-shot segmentation 등이 있을 수 있습니다.

왜냐하면 한번도 안 본 대상을 (여기서 클래스를 뜻합) segmentation해 내야 하기 때문입니다. 

따라서 기존의 미리 정해진 클래스를 푸는 문제보다 더 어려운 문제입니다. 

 

이번 리뷰는 논문의 흐름과 비슷하게 Task, Model, Dataset, Experiment에 대하여 작성을 해 보겠습니다. 

그럼 시작하겠습니다. 

 

Task

 

[Vision의 Foundation model 을 향해서]

LLM(Large Language Model)의 성능과 능력은 zero-shot, few-shot 생성을 모두 가능하게 합니다. (chat gpt) 

chat gpt 는 다음과 같은 느낌의 "foundation model" 입니다.

chat gpt 와 같은 언어쪽 foundation 모델

 

"foundation model"은 학습때 데이터의 그 분포를 넘어서 생성 가능하게 하는 모델이며, 훨씬 더 일반적 이라고 할 수 있습니다. 이러한 일반화 능력인 수용력(capacity)은 prompt engineering 통해서 만들어집니다.

 

NLP(Natural Language Processing)에서의 prompt engineering 은 "높은 품질의 응답을 얻어 낼 수 있는 prompt 입력값들의 조합을 찾는 작업" 이라고 할 수 있습니다. 여기서는 prompt 를 설정하고 segmentation을 하기위한 foundation model 만듭니다. 즉, 이 논문의 목표는 image segmentation 에서의 foundation model 을  prompt engineering 이용해서 만드는 것이라 합니다.

 

[Promptable Segmentation]

여기서 다루는 Task 는 promptable segmentation 입니다. 처음 이 말을 들었을 때, vision 에서의 prompt 가 무엇인지 궁금해 졌습니다. language에서의 prompt 는 어떤 말뭉치 들이라고 할 수 있겠지만, vision 에서의 prompt 는 무엇일까요? 

 

논문에서는 prompt를 물체를 구별해 낼 수 있는 공간적, 언어적 정보 라 합니다.(spatial or text information identifying an object) 예를 들어 아래 그림과 같이 점들(points), 박스(bbox), 마스크(mask), 나아가 텍스트(text) 로 볼 수 있겠습니다. 

promptable segmentation

 

1) image encoder & prompt encoder

 

2) Decoder & TwoWayTransformer 

 

이번에는 디코더를 알아볼 차례입니다. 

 

2-1) set features 

 

 

2-2) TwoWayTransformer

 

 

 

변경한 코드 

 

반응형

댓글