https://arxiv.org/abs/2112.10003
Image Segmentation Using Text and Image Prompts
Image segmentation is usually addressed by training a model for a fixed set of object classes. Incorporating additional classes or more complex queries later is expensive as it requires re-training the model on a dataset that encompasses these expressions.
arxiv.org
본 연구는 고정된 클래스가 아닌 임의의 쿼리를 기반으로 이미지 분할을 수행하기 위한 CLIPSeg를 제안한다.
이 접근법은 참조 표현 분할, 제로샷 분할, 원샷 분할과 같은 세 가지 일반적인 분할 작업을 단일 모델(한 번의 학습으로)에서 수행할 수 있게한다. CLIPSeg는 CLIP 모델을 백본으로 사용하고 트랜스포머 기반 디코더를 추가하여 밀집 예측이 가능하다.
Introduction
- 기존 접근법의 한계 : 기존 분할 모델은 고정된 클래스 집합에 제한되며 새로운 클래스를 추가하기 위해 재학습이 필요하다.
- CLIPSeg 모델 : CLIPSeg 모델은 텍스트 또는 이미지 형태의 임의 프롬프트로 분할을 수행하여 zero-shot segmentation, one-shot segmentation, referring expression segmentation을 포함하는 분할 작업을 지원한다.
- 모델 구성 : CLIP의 텍스트-비주얼 임베딩 공간을 활용한 경량 트랜스포머 기반 디코더를 추가해 텍스트와 이미지 쿼리에 모두 적응할 수 있는 단일 모델을 구현한다.
CLIPSeg Method
CLIPSeg 모델 개요
- ViT-B/16 모델을 백본으로 사용하며, 여기에 파라미터 효율적인 트랜스포머 디코더를 추가
- 디코더는 CLIP 인코더를 고정한 상태에서 훈련되고, 분할 작업을 수행
- CLIP 인코더에서 특정 계층의 활성화 값을 추출하여 디코더 입력으로 사용하며, FiLM을 사용해 조건 벡터로 조정
Decoder Architecture
- CLIP 인코더와 연결된 U-Net 유사 스킵 연결을 통해 컴팩트한 아키텍처 유지
- 마지막 레이어에서 선형 투영을 통해 이진 분할 결과 생성
- 위치 임베딩을 보간하여 다양한 이미지 크기 지원 가능
Image-Text Interpolation
- CLIP의 공유 임베딩 공간에서 텍스트 및 이미지 조건 벡터를 보간하여 조건 벡터 생성
- 이 보간된 벡터를 데이터 증강 전략으로 활용
CLIP 모델은 이미지와 텍스트의 임베딩을 생성하지만 직접적인 세그멘테이션 맵을 생성하지 않는다. 디코더는 CLIP의 임베딩을 입력으로 받아 픽셀 단위의 세그멘테이션 맵을 생성하고 이를 통해 zero-shot 및 one-shot 세그멘테이션이 가능하다.
Visual Prompt Engineering
트랜스포머 모델에서는 의미 정보가 피처 맵뿐만 아니라 계층을 거치며 CLS 토큰에도 축적된다. 마스크 풀링 방식이 CLS 토큰을 통과하는 정보를 반영하지 않기 때문에 이러한 방식을 그대로 적용하면 CLIP의 텍스트 임베딩과 비주얼 임베딩의 호환성을 손상시킬 수 있다. 이를 해결하기 위해 CLIP로 텍스트 임베딩 $t_i$를 계산하여 이미지의 객체 이름과 일치하는 텍스트 임베딩을 생성한 후 다음 두 경우를 비교한다.
- 원본 이미지 시각적 임베딩 $s_o$
- 수정된 이미지 시각적 임베딩 $s_h$여기서는 타겟 객체를 강조 표시한 RGB 이미지 또는 주의 마스크를 사용한다.
정량화된 지표로는 목표 객체 이름 임베딩 $t_0$ 의 정렬 향상 여부를 고려하며, $s_h t_0 - s_o t_0 = \Delta P(\text{object})$를 통해 해당 기법이 정렬을 개선하는지 확인한다.
CLIP 기반 마스킹
- 트랜스포머에서 CNN의 마스크 풀링과 동등한 방안은 토큰에 직접 마스크를 적용하는 것
- 트랜스포머는 고정된 토큰 집합을 가지며, 각 계층에서 멀티 헤드 어텐션을 통해 CLS 토큰 및 이미지 영역 토큰들이 상호작용
- 여기서 마스크는 CLS 토큰 및 마스크 영역 내 패치 토큰 간의 상호작용만을 허용하여 특정 계층(예: 11번째 계층) 또는 모든 계층에서 제한을 걸 수 있음
- CLS 토큰과의 상호작용을 제한했을 때 약간의 성능 향상이 있었지만, 모든 상호작용을 제한했을 때는 성능이 크게 저하
- 기존 마스크 풀링 방식을 그대로 적용하기 어렵고, CLS 토큰과의 제한적인 상호작용만으로는 충분한 성능 향상이 이루어지지 않음
Visual Prompt Engineering
- 모델 내부에서 마스크를 적용하는 대신 마스크와 이미지를 결합해 새로운 이미지를 생성하여 시각적 트랜스포머에 입력하는 방식을 사용
- 주요 결과 > 세 가지 기법을 조합했을 때 성능이 가장 크게 향상됨
- 배경 밝기 감소: 배경의 밝기를 줄여 타겟 객체가 돋보이도록 함
- 배경 흐림(블러): 가우시안 필터로 배경을 흐리게 만들어 타겟 객체를 강조
- 객체 중심 자르기(Cropping): 타겟 객체가 중심이 되도록 이미지를 자름
즉 CLIP 모델을 백본으로 사용하고 트랜스포머 기반 디코더를 추가한 후 텍스트 또는 이미지 프롬프트를 사용하여 세그멘테이션을 수행한다. 이때 단일 모델로 세 가지 세그멘테이션 작업(referring expression, zero-shot, one-shot)을 수행할 수 있다.