본문 바로가기

논문 리뷰

Segment Anything 리뷰

Kirillov, Alexander, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao et al. "Segment anything." In Proceedings of the IEEE/CVF International Conference on Computer Vision, pp. 4015-4026. 2023. 

 

ICCV 2023 Open Access Repository

Segment Anything Alexander Kirillov, Eric Mintun, Nikhila Ravi, Hanzi Mao, Chloe Rolland, Laura Gustafson, Tete Xiao, Spencer Whitehead, Alexander C. Berg, Wan-Yen Lo, Piotr Dollar, Ross Girshick; Proceedings of the IEEE/CVF International Conference on Com

openaccess.thecvf.com

 

 

Abstract

우리는 10억개의 마스크가 포함된 1100만개의 대용량의 dataset을 이용한 모델을 소개한다. 이 모델은 prompt가 가능한 모델로 새로운 이미지들에 대해 zero-shot형태로 전이 가능하다.

Introduction

"Foundation Models"라고도 불리는, web-scale 데이터셋을 이용해 zero-shot/few-shot 으로 학습된 Large Language Model은 학습된 데이터 이상으로 일반화된 성능을 보인다. 우리는 image segmentation을 위한 Foundation Model을 설계하는것이 목표이다. 이는 다음과 같은 세가지의 요소를 통해 이루어진다.

 

Task : 우리는 promptable segmentation task를 제안한다. 이는 Fig1 a.에서와 같이 특정 prompt가 주어졌을 때 유효한 segmentation mask를 반환하는 것이다. 예를 들어 prompt는 text로 주어진 객체에 대한 정보를 인식한다. 이는 모호하거나 여러 객체에 대한 정보를 포함하더라도 유효한 마스크를 반환하여야 한다.

 

Model : 현실세계에서 promptable하기 위한 모델은 제한적인 구조를 가진다. 우리는 강력한 image encoder, prompt encoder, 이를 결합하기 위한 lightweight mask decoder을 이용한 아주 간단한 구조를 사용했다. Segment Anything Model(SAM)은 분리된 인코더를 통해 하나의 image embedding을 이용하여 여러 prompt에 재사용 할 수 있다.

 

Data engine : 우리는 SAM을 훈련하기위해 현존하는 segmentation dataset을 넘어서는 다양하고 큰 데이터셋을 이용할 필요성을 느꼈다. 하지만 online data는 mask가 부족하기 때문에 새로운 data engine을 구축했다. 데이터 엔진은 [1. annotators로부터 mask 생성 2. 일부 객체에 대해 자동으로 annotation을 생성하고 이외의 부분은 annotators가 마무리 3. 격자 형태의 포인트로부터 SAM을 prompt하여 이미지 당 평균 100개의 마스크를 생성] 단계를 가진다. 데이터셋은 SA-1B라고 불리며 총 10억개의 마스크를 포함하는 1100만개의 이미지로 구성된다.

 

 

Segment Anything Model

 

Segment Anything Model(SAM)은 3가지 요소로 구성되어 있다.

Image encoder : ViT로 사전훈련된 Masked AutoEncoder를 사용하였다.

 

Prompt encoder : 우리는 두가지 종류의 prompt인 sparse(points, boxes, text)와 dense(mask)를 고려하였다. points, boxes는 positional encoding, 임베딩과 합산되며 texts는 CLIP의 off-the-shelf encoder를 사용하였다. dense는 convolution을 사용하여 element-wise형태로 합산된다.

 

Mask decoder : 마스크 디코더는 image embedding, prompt embeddings, output token을 효율적으로 맵핑한다. 우리의 디코더 블록은 prompt와 image embedding간에 self-attention, cross-attention을 실행한다. 이는 두 블록으로 구성되며 이후 output token을 출력하기 위한 MLP로 입력된다.

 

Resolving ambiguity : 하나의 출력에서는 모델이 모호한 prompt에 대해 마스크를 평균한 값을 출력한다. 우리는 이를 조금 수정하여 Fig3과 같이 여러개의 출력을 내도록 하였다. 우리는 3개의 출력이 대부분의 경우에서 충분할 것이라 생각하고 훈련중에는 가장 작은 loss를 발생하는 mask에 대해서만 역전파를 진행한다.

이후에는 data engine, dataset, experiment에 대한 설명이 나오는데 자세한 내용은 논문을 참조하길 바람. 눈여겨볼 만한 사항은 없는듯함