[논문 리뷰] VL-SAM: Training-Free Open-Ended Object Detection and Segmentation via Attention as Prompts

이정민·2026년 7월 4일

[논문 리뷰]

목록 보기
15/19
post-thumbnail

source: Training-Free Open-Ended Object Detectino and Segmentation via Attention as Prompts

이 논문은 일반적인 open-set perception보다 더 빡센 문제를 잡습니다. 기존 open-set detection이나 segmentation은 unseen object를 다루긴 하지만, inference 시에 여전히 category 이름이 필요하기 때문이죠.

Abstract

현실에서는 어떠한 물체가 있을지 미리 모르는 경우가 많기 때문에 꽤 중요한 문제로 여겨집니다.

여기서 논문이 잡는 문제가 바로 Open-ended object detection입니다. 특히 중요한 조건은

"without any object categories as inputs"

이라는 겁니다. 즉, 텍스트 프롬프트로 car, dog, chair,를 찾아줘~ 라고 주지 않아도 이미지 안의 미지의 객체를 찾아야 하는겁니다.

제안 방법

VL-SAM은 "Training-Free Framework" 입니다. 새로 학습하지 않고, 강력한 두 모델을 연결하는 겁니다.

잠시 "Training-Free"란 무엇인지 살펴봅시다.

Training-Free?

"Training-Free Framework"는 VL-SAM 자체를 새로 학습하지 않는다는 뜻입니다.
조금 더 자세히 말하자면,

  • VLM을 예로, CLIP류 모델의 가중치를 업데이트 하지 않는다.
  • SAM의 가중치도 업데이트 하지 않는다.
  • LVIS나 CODA 같은 detection/segmentation 데이터셋으로 fine-tuning하지 않는다.
  • Loss function, optimizer, backpropagation 없이 Inference 단계의 알고리즘만으로 동작한다.

    즉, VL-SAM은 pre-trianed VLM과 pre-trained SAM을 가져와서 그 사이를 Attention Map 기반 prompt generation으로 연결하는 방식입니다.

    아무 학습도 안 된 모델로 오해하지 말기
    VLM과 SAM은 이미 대규모 데이터로 pre-trained 되어 있는데, 여기서 제안하는 파이프라인 자체는 추가 학습을 하지 않는다는 점이니, '아무 학습도 되지 않은 것'과 혼동하지 맙시다.

다시 돌아와서 강력한 두 모델에 대해서 알아봅시다.
1. VLM: Vision-Language Model 로 객체를 인식하거나 의미적으로 주목하는 능력을 가지고 있습니다.
2. SAM: Segment Anything Model 로 점, 박스 같은 prompt가 주어졌을 때 객체 영역을 잘 자르는 능력을 가지고 있습니다.

논문의 핵심 아이디어는 둘 사이를 "attention maps as the prompts" 로 연결하는 것입니다.
VLM의 Attention map을 보면 모델이 이미지의 어디를 중요하게 보고 있는지 알 수 있고, 여기서 pos/neg point를 뽑아 SAM에 넣습니다. 그러면 SAM이 해당 객체를 segmentation mask로 뽑아내는 구조인 것입니다.

기술적 포인트

Abstract가 말하는 VL-SAM은 두 가지 모듈이 중요합니다.

첫째, Attention map generation module입니다. 단순히 한 layer나 한 head의 attention만 쓰는 것이 아닌, head aggregation 과 regularized attention flow를 사용하여 VLM의 여러 head/layer에 흩어진 attention 정보를 모으는 것입니다.

Attentino map generation module은 더 안정적이고 객체에 더 잘 맞는 Attention map을 얻는 데에 목적이 있습니다.


둘째, Prompt generation module입니다. attention map에서 pos/neg point를 반복적으로 샘플링하여 SAM에 전달하는데, SAM이 이 점들을 기반으로 대응되는 object mask를 만드는 것입니다.

그럼, 위 내용들을 기반으로 논문을 더 중점적으로 리뷰해보겠습니다.


Introduction

먼저 딥러닝 기반 perception 모델이 자율주행 같은 실제 응용에서 크게 성공하였습니다. 다만, 그 성공은 대량의 labeled data가 있음에 가능했던 것인데, 이는 모델은 학습 데이터 안에서 본 객체들을 인식하고 위치를 잡는 데에 강하다는 것입니다.

문제는 현실 세계가 학습 데이터보다 훨씬 더 크다는 것입니다.

문제 의식

기존 detector/segmenter는 closed-world assumption에 기반합니다. 즉, 세상에 나올 객체 종류가 학습 데이터와 label set 안에 있다고 가정하는 것이죠.

물론 현실은 다릅니다.

Open-world Perception의 등장

때문에 open-world perception 방법들이 등장하였습니다. 이들은 '새로운 객체'나 '도메인 변화'가 있는 환경에서도 perception을 하려는 흐름인데, 논문에서는 이를 크게 두 가지로 나눕니다.

"open-set & open-ended"

이 둘의 차이가 매우 중요한데, Open-set은 학습 때 보지 못한 객체도 다루려 하지만, inference 시점에 여전히 어떤 category 후보들을 넣어줘야 하는 경우가 많습니다.

예를 들어 CLIP 기반 방법은 이미지 영역과 테스트 category name 사이의 similarity를 계산하는데, 이는 dog, traffic cone, box, animal과 같은 텍스트 후보가 있어야 한다는 뜻입니다.

그래서 논문은 open-set 방법들이 "predefined object categories" 를 필요로 한다고 지적합니다. 이게 바로 VL-SAM이 해결하려는 문제입니다.

Generic obstacle detection도 충분하지 않다.

그렇다면 그냥 "unknown obstacle detection" 이라고 하면 어떨까요? 일부 방법은 모르는 객체를 generic obstacle로 잡으려 하지만, 모든 위험 요소가 뚜렷한 3D shape을 가지는 것은 아닙니다.

예를 들어 도로의 pit, 바닥의 grains 같은 것들이 있겠죠.

그래서 논문은 open-set 방법이 모든 상황을 처리하기 어렵다고 봅니다.

open-ended가 필요한 이유

여기서 open-ended method가 등장합니다.
논문은 open-ended 방법이 "more general and practical" 하다고 말합니다. 바로 category와 location을 모델이 스스로 예측하기 때문이죠.

정리해봅시다.

Open-set detection은 "이미지에서 dog, car, cone 중 뭐가 있는가?"에 가깝고

Open-ended detection은 "이 이미지에 무엇이 있는지 찾아서 말하고, 위치까지 잡아봐"에 가까운 것입니다.

VL-SAM이 다루는 것은 후자로, 단순 unseen class detection이 아닌, 카테고리 입력 없이 객체 발견 및 segmentation까지 하는 것이 핵심입니다.

SAM(Segment Anyting Model)의 등장

VLM은 특정 perception 모델보다 정확도가 떨어지고, 때로는 객체를 놓치거나 정답이 아닌 위치를 파악하곤 합니다. 하지만 SAM은 순수 비전 모델로, 다양한 도메인에서 우수한 일반화 성능을 보이죠.

그렇다고 SAM을 마냥 좋다고만 할 수는 없습니다. 분할된 객체에 대해서 무엇인지 카테고리 이름을 제공하지 못하고, 때로는 무관한 영역까지 분할하는 경향이 있습니다.

논문의 제안: VL-SAM 프레임워크

논문은 VLM의 인식과 SAM의 정밀 위치 추정 능력을 결합하여 Open-Ended Object Detection and Segmentation을 해결하고자 합니다.

별도의 추가 학습은 필요하지 않는 Training-Free 방식으로, Attention Map을 중간 프롬프트로 사용하여 두 모델을 연결하는 방식입니다. 자율주행 도메인에서는 VLM이 생성하는 어텐션 맵으로 SAM의 분할을 프롬프팅 하는 것이죠.

더 자세한 과정은 다음과 같습니다.

  1. VLM의 역할: VLM이 이미지를 보고 이미지 전체에 대한 설명을 생성하며, 다양한 객체들의 이름을 알려준다.
  2. 어텐션 맵 생성: VLM이 특정 객체에 해당하는 어텐션 맵을 만든다.
    • VLM의 여러 레이어와 헤드에서 나온 어텐션 정보를 헤드 통합정규화된 어텐션 flow 매커니즘으로 사용하여 고품질의 어텐션 맵으로 생성
  3. 프롬프트 생성: 어텐션 맵은 특정 객체의 위치와 중요도를 나타내는데, 가장 높은 값의 영역에서 positive point를 샘플링, 활성화가 낮은 영역에서는 negative point를 샘플링
  4. SAM으로 전달: 샘플링된 긍/부정 point pair가 SAM의 입력 프롬프트로 들어간다.
    - SAM은 받은 포인트들로 정확한 분할 마스크 생성

    결론적으로, VLM의 강점인 객체 인식 및 범주화 능력과 SAM의 정교한 분할 능력을 어텐션 맵으로 연결하여 학습 없이도 객체 분할이 가능한 것이다.

    누락되는 객체의 수를 줄이기 위해 SAM의 분할 결과를 사용하여 어텐션 맵에서 양성 및 음성 점을 수렴할 때까지 반복적으로 샘플링한다.


Related work

Related work은 빠르게 알아보고, 3. Method로 넘어가봅시다.

2.1 Vision Language Model (VLM)

LLM은 인간과 유사한 대화, 추론 능력은 보여주는 반면, 시각적인 처리는 한계가 많았습니다.

이를 극복하기 위해 VLM이 도입되어 새로운 응용 분야가 발전되어가고 있습니다.
대표적으로 LLaVA, BLIP-2와 같이 이미지 임베딩과 텍스트 임베딩을 정렬하고 융합하는 모델들이 등장했습니다.

하지만 기존 VLM 모델들은 SAM과 같은 특정 지각 모델(객체의 정확한 위치를 잡는다는 등..)보다는 성능이 떨어집니다.

때문에 본 논문에서 VLM에 일반화된 분할 모델, 즉 SAM을 사용하여 open-ended object detection 및 segmentation 을 위한 VLM의 지역화 한계를 해결하는 방법을 제안합니다.

2.2 Open-World Object Detection and Segmentation

CLIP의 등장과 함께 open-world 연구는 크게 두 가지 유형으로 분류됩니다.

바로 open-set과, open-ended.

Open-set은 추론 중에 훈련 세트에서 본 객체와 보지 못한 객체를 포함하여 재정의된 객체 범주를 입력으로 주어져야 합니다. 그와 대조적으로 Open-ended은 현재 VLM이 하는 것처럼 본 객체와 보지 못한 객체를 찾고 이름을 생성하는 것이죠.

텍스트로만 보면 헷갈릴 수 있으니, 표로 정리해서 확인해봅시다.

개념Inference: Unseen 탐지 여부Inference시 입력 형태
Closed-set불가능없음 (정해진 레이블 출력)
Open-set가능사람이 미리 정의한 단어 목록
Open-ended가능아무것도 주지 않음

Open-set의 한계는 자율주행 등에서와 같이 사전에 정의하기 어려운 객체가 많아 실용성이 떨어진다는 단점이 있습니다.

Open-ended는 대규모 데이터셋 구축과 함께 네트워크 전체를 파인튜닝 해야하므로 막대한 비용이 드는 단점이 있습니다.

본 연구는 VL-SAM으로, 대규모 데이터 학습 없이, 이미 잘 학습된 VLM과 SAM을 어텐션 맵으로 단순 결합하여 학습 비용이 없는(Training-free) 방식이니, 기존의 Open-ended문제를 해결합니다.


3. Method

핵심은 바로 VLM의 어텐션 맵을 SAM의 포인트 프롬프트로 변환하는 것입니다.

3.1 Preliminary

본격적인 Method를 살펴보기 전, 베이스라인 두 모델에 대해 다시 알아봅시다.

1. SAM

  • 구성: Image Encoder, Prompt Encoder, Mask Decoder

  • 매커니즘
    - 이미지를 입력받아 Feature 추출, Point나 Box로 받은 프롬프트를 Prompt Encoder가 토큰으로 변환
    - Mask Decoder 안에서 이 두 정보가 Two-way 트랜스포머로 상호작용하며 최종 분할 마스크 생성

    Two way transformer?

    Two way transformer는 SAM의 Mask Decoder 내부의 동작 매커니즘입니다.
    Image Features와 Prompt Tokens가 서로를 참조하여 양방향으로 Attention을 수행하기 때문에 붙은 이름입니다.

    일반적인 트랜스포머 디코더가 한쪽 방향으로 정보를 가져오는 것과 달리, SAM의 양방향 트랜스포머는 다음과 같은 형태로 상호작용합니다.

    Two-way Transformer의 두 가지 핵심

    1. Prompt-to-Image Attention (Prompt가 이미지 참조)
    - 프롬프트 토큰이 Query, SAM Decoder가 뽑은 이미지 특징이 Key, Value가 된다.
    - 이를 통해 "내가 찍은 이 점/프롬프트 가 이미지의 어떤 시각적 특징들과 연관이 되어있는지"를 계산하여 프롬프트 정보를 업데이트한다.
    2. Image-to-Prompt Attention (이미지가 프롬프트 참조)
    이미지 특징이 Query, 프롬프트 토큰이 Key, Value가 된다.

    • 이를 통해 "이미지의 각 픽셀들은 프롬프트와 얼마나 가까운 관계인지" 계산하여 이미지 특징을 프롬프트 성향에 맞게 업데이트한다.

      이를 통해 포인트 프롬프트 토큰이 이미지 전반의 기하학적 특징과 융합되어 최종적으로 매우 정밀한 객체 분할 마스킹이 가능한 것이다.

      여러 정보를 섞는 것처럼 보여서 Self-Attention을 많이 하는거랑 차이가 뭐지? 싶지만,
      Self-Attention을 더 많이 하는 것과 SAM의 양방향 트랜스포머는 "Q, K, V"를 어디서 가져오느냐"와 "연산의 목적"에서 결정적인 차이가 있습니다.

      트랜스포머의 일반적인 Self-Attention은 하나의 데이터 소스에서 자기들끼리 연산하는 것입니다.

      SAM의 양방향 트랜스포머 (두 사람이 주고받는 대화)

      반면, SAM의 Two-way Transformer는 이미지와 프롬프트가 서로 다른 두 개의 소스를 Cross-Attention 기법으로 번갈아 엮어주는 것입니다.

      단순 한쪽이 일방적으로 참조하는 것이 아니라, 블록 내부에서 아래의 두 단계를 거치며 양방향으로 소통합니다.

      1방향: Prompt-to-Image Attention, 2방향:Image-to-Prompt Attention 수행

2. Auto-Regressive Based VLM

  • 구성: Image Encoder, Text Tokenizer, Projection Layers, Language Decoder
  • 매커니즘
    • 이미지와 텍스트 토큰을 하나의 임베딩 공간으로 정렬, 합쳐서 Language Decoder에 넣기
    • Language Decoder는 Next-token prediction패러다임을 따르기 때문에, 현재 생성하는 단어 xtx_t는 이전에 생성된 모든 단어들 (x1,x2,...,xt1)(x_1, x_2, ..., x_{t-1})에 의존한다.

3.2 Attention Map Generation

VL-SAM의 주요 아이디어는 객체의 어텐션 맵을 SAM이 분할하기 위한 프롬프트로 사용하는 것이라고 말했습니다.

이에 따라 고품질 어텐션 맵을 생성하는 것이 매우 중요한데요,
단순히 마지막 레이어의 어텐션을 가져다 쓰면 성능이 나오지 않아, 저자들은 두 가지 장치를 도입합니다.

Method 1. Head Aggregation

VLM 디코더 내부에 수많은 트랜스포머 레이어(LL)와 헤드(HH)가 존재합니다.

Query와 Key를 곱하고 Casual Mask와 SoftMax를 적용하여 4차원 유사도 행렬 SN×N×H×LS \in N \times N \times H \times L을 얻습니다.

"During this process, we cache all queries and keys from VLM. THen, we multiply quries and keys with casual masks and SoftMax normalization to obtain similarity matrix SN×N×H×LS \in N \times N \times H \times L"

여기서 cache한다... 이게 무엇일까요?

단순 곱하는 것이 아닌, VLM의 트랜스포머 레이어들에서 생성된 쿼리와 키 벡터들을 메모리에 저장한다는 뜻입니다. 그럼, 일반적인 트랜스포머나 VLM은 저장을 하지 않는걸까요?

아닙니다. 일반적으로 KV Cache를 통해 저장합니다. 하지만 이 논문에서 캐시한다는 것과 일반적인 VLM모델들이 기본적으로 처리하는 방식에는 꼭 짚고 넘어가야 할 결정적인 차이가 있습니다.

일반적인 VLM의 KV Cache와의 차이점

일반적인 VLM은 문장을 생성할 때, 연산의 중복을 피하기 위해 Key와 Value만 캐시 합니다. 그리고 Query는 매 스텝 계산 이후 버려지는 것이죠.

저자들은 나중에 특정 단어(예: 'pothole')가 이미지의 어느 위치에 있었는지 역추적하기 위해, 생성 단계가 다 끝난 후에도 과거에 발생했던 모든 스텝의 Query(쿼리)와 Key(키) 행렬 전체를 메모리에 명시적으로 붙잡아 두고(Cache) 활용합니다. 즉, 일반적인 VLM이 필요 없어서 버리는 Query 벡터까지 싹 다 긁어모아 거대한 행렬 SS를 구성하는 것입니다.

Transformer Attention에서 "어디를 봤는가"는 Q, K로 결정되고, "보고 나서 무엇을 가져왔는가"는 V로 결정됩니다. VL-SAM은 위치 힌트가 필요하니까 Q, K 또는 QK로 만든 Attention Weight를 봅니다.

  • Q, K : Attention Weight를 만든다.
  • Attention Weight: 어디를 얼마나 봤는지 알려준다.
  • V: Attention Weight에 따라 실제 정보를 가져온다.
  • VL-SAM: 위치 prompt가 필요하므로 Attention Weight만 사용한다.

각 헤드마다 중요도가 다르니, 저자들은 Mean-Max Attention Head Weights (WW)를 계산합니다.

V=Mean(Max(S,dim=1),dim=0)V = \text{Mean}(\text{Max}(S, dim=-1), dim=0)

위 식이 바로 어떤 헤드가 더 중요한지 가중치를 매기는 과정입니다.

S=Mean(SW,dim=2)S' = \text{Mean}(S \odot W, dim=2)

Figure 3의 하단에는 개별 헤드 어텐션 맵들에 방금 구한 가중치를 각 곱하는 모습인데,
이 가중치 WW를 오리지날 유사도 행렬 SS에 point-wise로 곱한 뒤 헤드 차원에 대해 평균을 내어 헤드 정보가 통합된 SS'를 얻습니다.

Attention Flow & Attention Collapse 방지

하나의 레이어 정보만 쓰는 것이 아닌, 첫 번째 레이어부터 마지막 레이어까지 어텐션이 어떻게 흘러가는지 누적하기 위해 Attention Rollout방식을 사용합니다.

Sˉi,jl=k=1N(Ii,k+Si,kl)×(Ik,j+Sˉk,jl)\bar {S'}^l_{i, j} = \sum \limits_{k=1}^N (I_{i,k} + {S'}^l_{i, k}) \times (I_{k, j} + \bar {S'}^l_{k, j})

Figure 4를 보면 레이어 1의 결과(S1S'^1)가 레이어 2(S2S'^2)로 넘어가고, 이것이 최종 레이어 LL까지 연속적으로 곱해지며 전파되는 흐름입니다.

  • VLM은 미래의 단어를 보지 못하게 막는 Casual Mask를 사용합니다. 이로 인해 Attention Rollout을 그냥 사용하면 어텐션 값이 첫 부분(Top-left corner)으로 과도하게 몰려 뭉개지는 Attention Collapse가 발생합니다. (Figure 5 참고)

이에 따라 저자들은 Regularization Term을 하나 도입합니다.
마스킹 되지 않은 열의 길이를 L0L_0라고 할 때, 해당 열의 모든 값에 1(L01)L1- \frac{(L_0 - 1)}{ L}을 곱해줍니다. 이 덕분에 좌상단으로 어텐션이 몰리는 것을 방지하는 것이죠.

3.3 SAM Prompt Generation

정규화된 고품질 어텐션 맵을 얻긴 했지만, 여전히 FP 노이즈 픽셀들이 존재합니다.

이를 없애기 위해, 아래 과정을 거쳐 SAM용 포인트를 뽑습니다.

1. Threshold Filtering:

  • 값이 너무 약하게 활성화된 영역을 쳐냅니다.

2. Maximum Connectivity Area 추출

  • 필터링 후 남은 영역 중 가장 크게 뭉친 덩어리를 Positive Area로 지정하고, 나머지를 Negative Area로 봅니다. (PA: 객체, NA: 배경)

3. 포인트 샘플링:

  • Positive Area에서 어텐션 값이 가장 강한 지점을 Positive Point, Negative Area에서 어텐션 값이 가장 약한 지점은 Negative Point로 샘플링하여 SAM에 입력할 프롬프트 한 쌍을 완성합니다.

헷갈리지 않게 주의

Positive Area는 binary 영역이고, Positive Point는 그 안의 원래 Attention 값 기준 peak 입니다.

0.02 0.03 0.05 0.04
0.10 0.45 0.62 0.51
0.08 0.58 0.91 0.67
0.03 0.39 0.48 0.41

pothole Attention Map이라고 해봅시다.
threshold를 0.4로 잡으면

0 0 0 0
0 1 1 1
0 1 1 1
0 0 1 1

인데 이 binary connected component가 Positive Area입니다.
그런데 Positive Area 안의 원래 Attention 값은 여전히 다릅니다.
1에 해당하는 영역들 중 가장 높은 값인 0.91이 바로 Positive Point 입니다.

3.4 Iterative Refinement

여전히 SAM이 한 번에 완벽한 마스크를 만들지 못하고 경계선이 흐릿하거나 배경 노이즈를 포함할 수 있습니다.

저자들은 이를 위해 두 가지 Iterative 전략을 사용합니다.

  • 전략 1(PerSAM 방식): SAM이 출력한 대략적 마스크를 다음 루프 때 SAM디코더의 추가 프롬프트 입력으로 다시 넣어 정밀도를 올립니다.
  • 전략 2(Attention Map Update): 생성된 분할 마스크를 이용하여 기존 어텐션 맵 S\overline{S'}를 마스킹합니다. 그리고 그 마스킹된 어텐션 맵에서 다시 3.3의 방식으로 PP, NP를 뽑아 SAM에게 전달합니다. 이 과정을 수렴할 때까지 반복한 후 NMS(Non-Maximum Suppression)으로 병합합니다.

사실 저는 Figure 2의 이 부분이 많이 헷갈렸는데요.
초기 단계와 이후 반복 단계로 나누어 흐름을 한 번 정리해봤습니다.

Attention Map
-> SAM Prompt Generation
-> positive/negative point
-> SAM Decoder
-> Initial mask M0

여기까지가 바로 초기 예측, i=0입니다.
이 때 입력은

attn_map = original_object_attention_map
points = sample_pos_neg(attn_map)
mask_0 = SAM(points)

그런데, mask_0이 완벽하지 않을 수 있어서 SAM Decoder output이 다시 refinement로 들어가는겁니다.

전략 1 (PerSAM)방식으로 cascaded post-refinement를 쓰는 겁니다.
Pos/neg point로 만든 mask를 다시 SAM Decoder에 additional mask prompt로 넣는거죠. 설명은 위와 똑같습니다. 여기서는 그냥 처음 잡은 객체의 mask품질을 다듬을 뿐입니다.
쉽게 말해, Original Attention Map에서 point sampling하여 SAM에 넣어 Initial Mask를 얻는겁니다.

이제 점선의 Iterative Refinement를 보겠습니다.
짧게 말해서 이건 이전 mask로 Attention map을 조정하고, 다시 point sampling 하여 SAM 에 넣고 new/refined mask를 얻는 것입니다.
SAM Decoder가 만든 mask가 최종 결과로 바로 끝나는게 아니라 다시 Attention Map / Prompt Generation 단계에 영향을 주고, 그 결과 새 Point Prompt가 SAM으로 들어가는 겁니다.

3.4 & 3.6 Ensembles

  • Multi-scale Ensemble: VLM은 보통 490×490490 \times 490 같은 저해상도 이미지를 입력받아, 작은 객체를 잘 놓칩니다. 이를 위해 이미지를 4개의 코너로 쪼개어 각 VL-SAM을 돌린 뒤, 원본 이미지 결과와 합칩니다.
  • Question-prompt Ensemble: VLM은 프롬프트에 민감하므로, VLM에게 질문 리스트를 먼저 뽑게 한 뒤, 그 질문 리스트 프롬프트로 각 VL-SAM을 실행하여 결과를 대규모로 앙상블하는 방법입니다.

    이 모델의 핵심 파이프라인은 결국 VLM내부의 Attention Matrix 가공에 있습니다. VLM 소스코드를 열어서 특정 토큰의 Query, Key 행렬을 캐싱하고, Casual Mask 연산 및 정규화 방법을 텐서 연산으로 구현하는 부분이 핵심 난이도로 보입니다.

How to design Prompt?

VL-SAM의 프롬프트 디자인은 추가 학습 없이 거대 멀티모달 모델(VLM)의 인식 능력과 SAM의 Localization 능력을 연결하는 이 논문의 핵심이기 때문에 본 파트에서 정리를 해보겠습니다.

VL-SAM의 프롬프트 디자인은 크게 1)VLM을 자극하는 입력용 질문 프롬프트 디자인, 2)VLM의 출력 가공하여 SAM의 힌트로 넣는 Point 프롬프트 디자인으로 구성되어 있습니다.

VLM의 입력 단계:Question-Prompt Ensemble

VLM은 입력되는 질문 텍스트의 뉘앙스에 따라 출력하는 문장과 내부 어텐션 맵의 퀄리티가 크게 요동치는 민감성을 가집니다. 저자들은 이 문제를 해결하기 위해 VLM이 가장 선호하는 질문 10개를 스스로 생성하게 만드는 앙상블 전략을 취한 것입니다.

동작 흐름

  1. 질문 생성 요청: 먼저 VLM에게 Meta-prompt를 입력합니다.
    "if we want you to list all possible objects in the given image, what questions should we ask? Please give 10 questions you prefer."

  2. 질문 리스트업: VLM은 이 요청을 받고 이미지의 문맥을 가장 잘 이끄는 10개의 커스텀 질문을 스스로 뱉습니다.

    • e.g., "Do you see any obstacle on the road?", "What does the sign says?" etc
  3. 병렬 쿼리 및 태그 파싱: 이 10개의 질문을 각각 독립적으로 VLM에 통과시켜서 도로 환경에 대한 풍부한 서술 문장을 얻은 뒤, 문장에서 명사 형태의 객체 태그(e.g., pothole, car )들을 파싱하여 타깃 객체로 선정합니다.

    그럼 VLM에서 나온 Answer는 어떻게 사용되는걸까요?

    VLM에서 나온 Answer


    Attention Map을 추출하기 위한 Query로 사용됩니다.

    • VLM이 답변 문장을 생성하는 도중, 타깃 단어인 pothole에 해당하는 토큰이 생성되는 바로 그 스텝을 정확히 포착합니다.
    • pothole 토큰의 임베딩 값을 Query로 삼아 VLM 디코더 내부에 캐싱되어 있던 이미지 패트 토큰들의 Key 행렬과 행렬 곱 연산을 수행합니다.
    • 이 연산을 통해 "VLM이 문장 안에서 'pothole'이라는 단어를 뱉는 그 순간에, 이미지의 어느 픽셀들을 집중해서 쳐다보고 있었는지"를 역추적하여 선명한 어텐션 맵으로 형상화할 수 있게 됩니다.

      참고로 이건 양방향 어텐션이 아니라 트랜스포머 디코더 내부의 일반적인 'Casual Self-Attention의 연산 기록을 사후에 활용한 것입니다.

2. SAM 입력 단계: 정규화된 어텐션 기반 Point Prompt Design

VLM이 특정 단어(e.g., pothole )를 생성할 때 내부에서 발생한 Query-Key 어텐션 행렬을 수학적으로 정제하여, SAM이 즉각적으로 이해할 수 있는 Positive PointNegative Point의 좌표 쌍으로 변환하는 핵심입니다.

1)인과적 마스크에 따른 어텐션 붕괴 해결

단순 VLM의 마지막 레이어 어텐션을 쓰면 정보가 유실됩니다.
저자들은 전 층의 어텐션을 누적하여 전파하는 Attention Rollout을 사용한다고 했었죠.
하지만 VLM은 뒤의 단어를 보지 못하게 막는 인과적 마스크 (Casual Mask)를 쓰기 때문에, 레이어를 거칠 때마다 어텐션 가중치가 마스크의 시작점인 좌상단 구석으로 터져버리는 어텐션 붕괴가 발생합니다.

이를 제어하기 위해 저자들은 어텐션 플로우 전파 시 다음과 같은 강력한 정규화 프롬프트 가중치를 행렬에 직접 연산해 줍니다.

  • 마스킹 되지 않은 열의 유효 길이를 L0L_0, 전체 레이어 길이를 LL라고 할 때, 해당 열의 모든 어텐션 값에 아래 가중치를 Pointwise 곱해 강제로 좌상단 쏠림을 억제합니다.
    Weight=1(L01)L\text{Weight} = 1- \frac{(L_0 - 1)}{ L}
    이 정규화 처리를 거치고 나면, 이미지 패치 해상도(35×3535 \times 35)크기의 선명하고 노이즈가 억제된 타깃 객체 어텐션 맵 한 장이 완성됩니다.

2) 최대 연결 영역 기반 긍정/부정 점 샘플링 (Positive/Negative Pair Sampling)

정규화된 어텐션 맵을 원본 해상도 크기로 Interpolate 한 후, 기하학적 필터링을 통해 SAM 프롬프트용 최종 좌표를 추출합니다.

  • Positive Area (객체 영역) 디자인: 어텐션 맵에서 약하게 활성화된 노이즈 영역을 제거하기 위해 특정 임계값으로 필터링을 칩니다. 그 후 남은 활성화 픽셀들 중 가장 크게 뭉쳐있는 덩어리인 최대 연결 영역(Maximum Connectivity Area)을 추출하여 이를 객체가 존재하는 'Positive Area'로 정의합니다.

4. Experiments

이번에는 기존 Open-set이나 Open-ended 모델들과 비교하여 얼마나 뛰어난지, 각 모듈별 역할을 잘 하는지 알아봅시다.

4.1 Implementation Details

사용된 두 가지 베이스라인 모델에 대해서 알아봅시다.

VLM baseline

CogVLM-17B(EVA2-CLIP-E 이미지 인코더 + Vicuna-7B-v1.5 언어 디코더 결합)를 사용했습니다.
이미지는 490×490490 \times 490 해상도로 입력되고, 35×3535\times 35 패치 사이즈 토큰으로 쪼개집니다.

문장 생성 시에는 텍스트 다양성을 조절하는 Temperature가 0.8, Nucleus sampling(top_ptop\_p)는 0.1 셋팅값입니다.

SAM baseline

가장 체급이 크고 성능도 좋은 SAM ViT-Huge를 사용했습니다.

텍스트 맵핑은 VLM이 생성한 자유로운 문장에서 객체 이름을 파싱한 뒤, CLIP 텍스트 인코더로 데이터셋이 정의한 카테고리와 유사도를 계산하여 맵핑하는 구조입니다.

"All models are infered on an 80G A800 machine."

4.2 Main Results

LVIS Dataset 결과


VL-SAM은 대형 롱테일 데이터셋인 LVIS minival에서 희귀 객체 탐지 성능 23.4 APrare23.4\ AP_{rare}를 기록하며, 기존 오픈엔디드 모델인 GenerateU(20.020.0)를 3.4 포인트 차이로 가볍게 제쳤습니다.

GenerateU는 대규모 데이터셋으로 모델 전체를 무겁게 파인튜닝해야 하고 박스(Box)만 칠 수 있는 반면, VL-SAM은 추가 학습이 전혀 없는(Training-free) 상태에서 박스와 고품질 마스크(Mask)를 동시에 따낼 수 있음을 증명했습니다. 사전에 단어 목록을 쥐여주어야 하는 오픈셋(Open-Set) 모델들과 비교해도 꿀리지 않는 강력한 경쟁력을 보여줍니다.

CODA Dataset 결과


자율주행 중 예외 상황을 다루는 CODA 벤치마크에서 기존 오픈셋 및 오픈엔디드 최고 모델들(12.6∼18.4 mAR)을 아득히 압도하며 40.1 mAR40.1\ \text{mAR}이라는 압도적인 성적을 거두었습니다.

정답 박스를 SAM에 바로 찔러 넣었을 때의 하드웨어적 한계 상한선(Oracle) 성능이 54.1 mAR54.1\ \text{mAR}인데, VL-SAM은 학습을 단 한 번도 안 하고도 이 상한선의 74.1% 수준까지 도달했습니다.

실제 도로 위의 위험한 미지 객체(싱크홀, 파편 등)를 잡아내는 데 있어 실용성이 엄청나다는 방증입니다.

4.3 Ablation Study

Main Components


VLM 마지막 층의 평균 어텐션만 쓰는 Naive 베이스라인은 앙상블을 발라도 성능이 처참하지만, 제안한 어텐션 생성 모듈(Attn Generation)을 붙이는 순간 mAR이 7.9 급상승합니다. 점 프롬프트 샘플링과 반복 정제를 추가할 때마다 각각 2.2 mAR, 1.8 mAR씩 복리로 상승합니다.

논문에서 제안한 각 파이프라인 단계(어텐션 정제 \rightarrow 포인트 추출 \rightarrow 반복 루프)가 독립적으로 작동하는 꼼수가 아니라, 성능 향상에 유기적이고 실질적인 기여를 하고 있음을 정량적으로 입증했습니다. 멀티스케일 등 앙상블 기법도 이 기본 모듈들이 받쳐줘야 제 성능을 냅니다.

Attention Generation

정규화 항 없이 단순한 기존 Attention Flow(rollout) 기법을 쓰면 Causal Mask로 인한 어텐션 붕괴가 발생해 mAR이 0.1로 수직 낙하하지만, 저자들의 핵심 치트키인 정규화(Regularization)를 먹이자마자 8.5 mAR로 기사회생합니다. 헤드 가중치(Head Weight)까지 버무리면 10.1 mAR로 정점을 찍습니다.

Model Generalization


VLM 뼈대를 MiniGPT-4나 LLaVA로 바꾸고, SAM을 경량화 모델인 MobileSAM으로 교체해도, 모든 조합이 기존 최고 오픈엔디드 성능(18.4 mAR)을 가뿐히 상회합니다.

VL-SAM 프레임워크가 특정 아키텍처(CogVLM이나 SAM-Huge)에만 종속된 종속적 결과가 아니라, "어떠한 VLM과 SAM을 플러그앤플레이(Plug-and-Play) 형태로 가져다 꽂아도 구조적으로 무조건 작동하는 강력한 범용 프레임워크"임을 증명했습니다. 향후 더 강력한 VLM이나 경량 SAM이 나오면 학습 없이 그대로 갈아 끼워 성능을 더 올릴 수 있다는 오픈 아키텍처로서의 가치를 보여줍니다.

종합 결론

본 연구의 핵심은 VLM의 인식 능력과 SAM의 분할 능력을 어텐션 맵의 중간 매개체로 활용하여 학습 없이 연결하는 것입니다.

이 연구 모형은 다음과 같은 방식으로 정리할 수 있겠습니다.

1. VLM의 인식 + SAM의 분할: LVIS 및 CODA 데이터셋에서 VL-SAM이 기존의 개방형 방법들을 능가하는 성능을 보인 것은, VLM이 객체 범주를 식별하고 SAM이 해당 객체를 정확히 분할하는 상호 보완적인 역할이 성공적으로 결합되었음을 의미합니다.

특히, SAM이 범주 정보를 제공하지 못하는 한계는 VLM의 언어 이해 능력으로 보완되고, VLM의 약한 위치 파악 능력은 SAM의 정교한 분할 능력으로 극복됩니다.

2. 어텐션 맵의 역할: §3에서 제안된 어텐션 맵 생성 모듈(헤드 통합, 정규화된 어텐션 흐름)은 어텐션 붕괴를 방지하고 고품질의 어텐션 맵을 생성하여 SAM 프롬프트의 효과를 극대화했지요.
table 4에서 정규화된 어텐션 흐름이 mAR을 크게 향상시킨 것은 이 모듈이 VLM의 내부 작동을 활용하여 SAM에 의미 있는 지시를 제공하는 데 결정적이었음을 보여줍니다.

3. 반복적 개선 및 앙상블: §3의 반복적 개선 파이프라인과 다중 스케일/질문 프롬프트 앙상블 전략은 table 3의 절제 연구를 통해 각 요소가 성능 향상에 기여함을 알 수 있습니다.

이는 초기 어텐션 맵의 불확실성을 줄이고, 분할 결과를 정제하며, VLM의 프롬프트 민감도를 완화하여 모델의 견고성과 정확도를 높이는 데 필수적인 구성 요소임을 증명하는 것이죠.

결론적으로, VL-SAM은 VLM과 SAM의 개별적 한계를 극복하고, 학습 없이 Open-ended 객체 탐지 및 분할이라는 복합적 문제를 효과적으로 해결하는 통합 프레임워크를 입증한 것입니다.

근데 VLM이 scene묘사를 하는 것도 결국엔 VLM이 해당 카테고리들을 제공 받아서 훈련한 것 아닌가?

맞다. 근본적으로 들어가면 VLM이 학습데이터에 수많은 카테고리와 단어들을 학습한 것은 맞다.
하지만, Open-ended Object Detection 분야에서 '카테고리 셋을 제공한다/안 한다'라고 표현할 때는, 그 모델의 'Pre-training(사전학습)' 단계가 아니라 'Inference(테스트/추론)' 단계를 기준으로 이야기한다는 것에 주의하자.

한계점

VLM의 Hallucination

VL-SAM은 VLM과 SAM의 결합 구조이기 때문에, VLM이 가진 고질적인 문제인 환각 문제를 그대로 받습니다. 때문에 VL-SAM도 잘못된 객체 토큰이나 어텐션 맵을 생성할 수 있는 것이죠.

Pos/Neg point sampling의 민감도

어텐션 맵에서 긍부정 포인트 샘플링을 하는 방식은 어텐션 맵의 품질과 임계값 설정에 크게 흔들립니다.
이 샘플링 전략의 견고성과 다양한 조건에서의 성능에 대한 추가적인 분석이나 대안적 샘플링 전략에 대한 탐색은 아직 부족합니다.

향후 연구 방향

SAM의 변형 모델

추론 속도 문제를 SAM의 변형 모델(EfficientSAM, MobileSAM 등)을 통해 해결할 수 있습니다.

또한 VLM 환각 문제를 완화하기 위한 새로운 전략의 탐색 필요성 또한 대두되는 문제입니다.

0개의 댓글