sources: SAM 3: Segment Anything with Concepts
SAM 3는 사용자가 지정한 하나의 물체를 분할하는 모델에서 사용자가 말한 개념에 해당하는 모든 물체를 찾아 분할하고 추적하는 모델로 SAM의 범위를 확장한 것이다.
기존 SAM은 개념 전체를 검색하는 문제는 직접 다루지 않았는데, 먼저 PVS와 PCS의 개념에 대해서 한 번 이해하고 넘어가보자.
PVS: Promptable Visual Segmentation
SAM 1과 SAM 2의 기본 과업으로, 입력은 다음과 같다.
- 이미지 또는 비디오
- Positive / Negative point
- Bounding box
- 초기 mask
핵심은 프롬프트가 물체의 의미가 아니라 위치를 지정한다는 것이다.
이미지 위에 점을 찍으면, SAM은 그 위치의 물체를 '경계, 질감, 형태 등'을 이용하여 하나의 coherent object로 분리한다."이 좌표에서 내가 지목한 물체의 경계는 어디인가?"
Positive point: 이 부분은 목표 물체에 포함
Negative point: 이 부분은 목표 물체에 포함 X
즉, Negative Point도 "이 물체는 고양이가 아니다" 라는 의미가 아니라, 단지 이 픽셀은 현재 선택한 인스턴스에 포함하지 말라는 공간적 신호이다.
PCS: Promptable Concept Segmentation
입력 프롬프트가 위치가 아니라 개념의 정의가 된다.
비디오 + "cat" ↓ 영상에 등장하는 모든 고양이 검출 ↓ 각 고양이의 마스크 생성 ↓ 고양이별 고유 ID 부여 ↓ 프레임 사이에서 각 ID 추적PCS가 해결해야 하는 문제는 네 단계이다.
1. Recognition - 무엇인가?
현재 이미지에cat이라는 개념이 존재하는지 판단한다.
2. Localization - 어디 있는가?
고양이가 존재하는 위치와 개수를 찾는다.
3. Segmentation - 정확한 경계가 어디인가?
각 고양이의 픽셀 단위 마스크를 생성한다.
4. Tracking - 다음 프레임의 어떤 물체와 같은가?
여러 고양이가 있을 때 개별 identityfmf dbwlgksek.
PVS PCS box 자체가 목표 위치를 지정 box가 목표 개념의 예시를 제공 박스 안의 한 인스턴스 분할 예시와 같은 모든 인스턴스 검색 “이것” “이것과 같은 것들”
SAM 시리즈는 이미지 및 비디오를 위한 promptable segmentation작업을 도입했으며, 프롬프트당 단일 객체를 분할하기 위해 점, 상자 또는 마스크를 사용하는 프롬프트 기반 시각 분할 (Promptable Visual Segmentation, PVS)에 중점을 두었다.
| 모델 | 시각 입력 | 텍스트 의미 이해 | 의미 기반 검색 |
|---|---|---|---|
| SAM 1 | O | X | X |
| SAM 2 | O | X | X |
| SAM 3 PVS 모드 | O | 필요 없음 | X |
| SAM 3 PCS 모드 | O | O | O |
이러한 방법들이 획기적인 발전을 이루긴 했지만, 입력 내 어디에든 나타나는 개념의 모든 인스턴스를 찾아 분할하는 일반적인 작업을 다루지는 못했다.
이에따라 SAM 2 대비 PVS를 개선하고, 프롬프트 기반 개념 세그먼테이션(Promptable Concept Segmentation, PCS)의 새로운 표준을 제시하는 SAM 3를 저자들은 소개한다.
저자들은 Atomic Visual Concepts 인식을 중심으로 하기 위해 텍스트를 간단한 명사구로 제한한다고 한다.
SAM 3가 말하는 "Concept"의 범위
SAM 3의 텍스트 프롬프트는 원치적으로 간단한 명사구(noun phrase)인데, 예를 들자면 다음과 같다.
applered applestriped catyellow school bus
즉, 명사에 색상, 무늬, 속성 같은 Modifier가 붙는 형태이다. 논문은 이를 atomic visual concept라고 부른다. 하나의 시각적 범주로 직접 grounding 할 수 있는 개념에 초점을 둔다는 의미이다.
따라서 제목의 "Anything" 을 그대로 모든 자연어 질문으로 받아들이면 안된다. SAM 3의 open-endedness는 시각적으로 grounding 가능한 단순 명사구의 어휘가 고정되어 있지 않다는 뜻에 가깝다.
복잡한 언어 질의는 MLLM이 먼저 해석하여 단순한 개념 프롬프트로 변환하고, SAM 3가 실제 검출⋅분할을 수행하는 조합을 제안한다.
"Consistent with previous SAM versions, SAM 3 is fully interactive, allowing users to resolve ambituities by adding refinement prompts to guide the model towards their intended output."
SAM 3가 처음 내놓는 결과가 사용자의 의도와 다르다면, 사용자가 프롬프트를 주면서 결과를 반복적으로 고칠 수 있다는 뜻이다.
여기서ambiguity는 모델이 프롬프트를 여러 방식으로 해석할 수 있는 상황을 말한다.
예를 들어, 프롬프트로mouse를 입력했는데, 컴퓨터 마우스와 동물 쥐가 있다면, 모델은 정확히 무엇을 원하는지 알기 어려울 것이다. 이때 refinement prompt를 추가한다.
- 동물 쥐에 positive exemplar box
- 컴퓨터 마우스에 negative exemplar box
- 누락된 물체에 positive exemplar
- 개별 마스크 경계가 부정확하면 pos/neg click -> 경계선 수정
등과 같은 과정을 거칠 수 있다.
Click/Point 와 Exemplar의 차이
구분 Click/Point Image exemplar 과업 PVS PCS 형태 한 점의 좌표 물체를 둘러싼 bounding box 의미 “이 픽셀은 포함/제외해” “이런 종류의 물체를 포함/제외해” 적용 범위 특정 인스턴스 하나 같은 concept의 전체 인스턴스 수정 대상 마스크 경계 검출 대상 집합/category 해석 시각 정보 클릭 위치 중심 박스 내부의 ROI visual feature 사용
Introduction에서 설명하는 모델은 크게 세 부분으로 이해할 수 있다.
DETR 기반 detector가 다음 입력을 조건으로 물체를 찾는다.
Exemplar는 무엇인가요?
SAM 3의 Image exemplar는 입력 형식으로는 bbox이다. 하지만 exemplar encoder가 단순히 bbox 좌표만 인코딩하는 것은 아니다.
정확히는 하나의 exemplar가 다음 쌍으로 주어진다.
- = : 예시 물체를 감싼 Bounding box
- : 포함할 예시인지 제외할 예시인지 나타내는 binary label
논문에 따르면 각 exemplar는 세 종류의 정보를 결합한다.
()와 는 각각 Position Embedding(bbox의 좌표와 크기)와 Label Embedding(pos/neg)이며, 만 알아봅시다.
- ROI-pooled visual feature
이미지를 먼저 SAM 3의 PE image encoder에 통과시키면 전체 이미지의 feature map 가 ㅁ나들어집니다.그 다음 bbox에 해당하는 영역의 feature를 ROI Pooling으로 추출합니다.
Detector는 identity와 무관하게 현재 이미지 또는 프레임에서 조건에 맞는 물체를 찾는다.
Tracker는 SAM 2의 transformer encoder-decoder 및 memory 구조를 계승한다.
Detector가 찾아낸 물체를 시작점으로 삼아 비디오 전체에서 mask와 identity를 전파한다.
Detector와 tracker가 동일한 vision encoder를 공유하지만, 두 모듈은 분리되어 있다. 그 이유는 두 과업의 목표가 충돌하기 때문이다.
따라서 SAM 3의 "unified model"은 모든 일을 하나의 decoder가 수행한다는 뜻이 아니라, 공유 backbone 위에 역할이 분리된 detector와 tracker를 결합했다는 뜻이다.
"The tracker inherits the SAM 2 transformer encoder-decoder architecture, supporting video segmentation and interactive refinement."
여기서 말하는 Transformer encoder-decoder는 언어를 생성하는 Transformer가 아니다. 현재 프레임과 과거 프레임의 시각 정보를 읽어, 특정 물체의 현재 마스크를 출력하는 visual Transformer이다.
SAM 2의 아키텍처는 비디오 추적 방식인데, 이전 프레임의 마스크와 물체 appearance를 memory에 저장하고, 현재 프레임 feature와 비교하여 같은 물체의 새 마스크를 예측한다.
SAM 2의 tracker는 다음 구성 요소를 가진다.
- Image Encoder
- Prompt Encoder
- Memoery Attention
- Mask Decoder
- Memory Encoder
- Memory Bank
구성요소 역할 Image Encoder 현재 프레임을 visual feature로 변환 Prompt Encoder 사용자의 점·박스·마스크를 token으로 변환 Memory Attention 현재 프레임과 과거 물체 memory를 비교 Mask Decoder 현재 프레임에서 해당 물체의 마스크 예측 Memory Encoder 예측한 마스크와 현재 feature를 memory로 변환 Memory Bank 과거 프레임의 물체 정보 저장 Memory는 위치 + 영역의 시각적 appearnce, identity를 spatial feature로 인코딩하여 memory bank에 넣는다. (MemLoTrack과 유사)
다음 프레임에서는 현재 feature가 이 spatial memory와 cross-attention 하는 것입니다.
SAM 3의 tracker는 SAM 2처럼 과거의 object mask와 appearance를 memory에 저장하고 Transformer attention으로 현재 프레임의 동일 물체를 찾아 mask를 디코딩하며, 사용자가 특정 프레임에서 click으로 mask를 수정하면 그 결과를 memory에 반영하여 비디오 전체로 다시 전파할 수 있다.
open-vocabulary detection에서는 object query 하나가 동시에 두 질문을 해결해야 한다.
SAM 3는 별도의 presence head를 두어 이를 분리한다.
"Introduce a separate presence head to decouple recognition and localization"
Presence head는 이미지 전체를 보고 해당 개념의 존재 여부를 판단하고, object queries는 위치를 찾는 데 집중한다. 이는 특히 hard negative phrase를 학습할 때 중요하다.
예를 들어 이미지에 일반 의자는 있지만 Adirondack chair는 없을 수 있다. 비슷하게 생긴 물체가 있다는 이유만으로 마스크를 생성하면 False Positive가 되어버린다.
Presence Head는 이런 상황에서 "정확히 그 개념은 존재하지 않는다"라고 판단하는 역할을 한다.
Introduction에서 모델 구조만큼, 어쩌면 그보다 더 중요하다고 보는 것이 바로 데이터 엔진이다.
기존 데이터 엔진과 비교하여 세 가지를 확장한다.
이미지·비디오 수집
→ 명사구 제안
→ SAM 3가 후보 마스크 생성
→ 이 후보 mask가 pseudo-label
→ 인간/AI가 마스크 품질 및 누락 검사
→ 오류 사례만 인간이 집중 수정
→ 개선된 SAM 3로 다시 후보 생성
Pseudo-labeling
SAM 3에서 나오는 pseudo-labeling은 단순히 "현재 모델의 예측을 정답으로 저장한다."가 아니다. 모델이 만든 noisy한 후보를 출발점으로 삼고, mask quality와 exhausitivity를 별도로 검증한 뒤, 필요한 경우 사람이 수정하는 데이터 엔진이다.
"Starting from noisy media-phrase-mask pseudo-labels"
예를 들어보자면,
- Media: 고양이 3마리가 있는 이미지
- Noun phrase: "cat"
- Mask set: {고양이 A mask, 고양이 B mask, 고양이 C mask}
PCS에서는 단순히 마스크 하나가 정확한 것만으로 부족하다. 해당 Phrase에 맞는 모든 인스턴스가 빠짐없이 포함된 mask set이어야 한다.
중요한 점은 AI가 모든 annotation을 대신하는 것이 아니라, 쉽고 올바른 샘플을 자동으로 통과시키고 인간을 어려운 오류 사례에 집중시킨다는 것이다.
PCS를 한 문장으로 정의하면 다음과 같다.
"detect, segment and track all instances of a visual concept specified by a short text phrase, image exemplars, or a combination of both."
즉, 이미지 또는 30초 이하의 짧은 영상에서 사용자가 정의한 시각적 개념에 해당하는 모든 인스턴스를 검출하고, 마스크로 분할하고, 비디오에서는 동일한 identity를 유지하며 추적하는 과업이다.
위와 같은 입력이 있다고 가정해보자.
각 exemplar는 대략 다음과 같다.
출력은 개념에 해당하는 인스턴스의 집합이다.
추가로 모든 instance mask를 합친 semantic mask도 출력할 수 있다.
하나의 물체에 속하는 시간 방향 마스크 집합을 논문에서는 masklet이라고 부른다.
PCS에서는 단순히 각 프레임의 물체를 따로 검출하는 것으로 끝나지 않는다. 서로 다른 프레임의 마스크가 동일한 물체라면 같은 로 연결해야 한다.
PVS와 PCS의 차이를 조금 더 자세히 표로 정리하면 다음과 같다.
| 항목 | PVS: SAM 1·2 | PCS: SAM 3 |
|---|---|---|
| 프롬프트 의미 | 이 위치의 물체 | 이 개념에 속하는 물체 |
| 입력 | point, box, mask | noun phrase, image exemplar |
| 기본 출력 | 프롬프트당 한 인스턴스 | 일치하는 모든 인스턴스 |
| 대상 | 특정 물체 | 물체 집합 |
| 핵심 문제 | 경계 추정 | 존재 판단 + 검색 + 분할 |
| 비디오 | 지정된 물체 전파 | 새 물체 검출 + identity 추적 |
| 사용자 보정 | 개별 마스크 수정 | concept 집합 수정 + 개별 마스크 수정 |
PCS의 prompt는 크게 세 층으로 구분해야 한다.
텍스트는 명사와 선택적인 modifier로 구성된 단순 명사구이다.
catstriped catred appleyellow school bussmall windowAdirondack chairNoun phrase는 이미지나 비디오 전체에 적용되는 global prompt이다.
비디오의 특정 프레임에 fish가 보이지 않더라도 text prompt의 의미가 그 프레임에서 사라지는 것은 아니다. 영상 전체에서 fish에 해당하는 물체를 검출하고 추적해야 한다.
사용자가 bounding box로 올바른 예시를 지정한다.
예를 들어, bird라는 텍스트만으로 특정 종류의 새를 잘 찾기 못한다면, 원하는 새 한마리를 positive exemplar로 제공할 수 있다.
그 결과는 단순히 그 박스의 물체 하나를 추가하는 것이 아니다.
따라서 positive exemplar는 다음 상황에 특히 유용하다.
False Positive를 box로 지정한다.
예를 들어 모델이 bat을 동물이 아니라 야구 방망이로 해석하였다면, 잘못 검출된 방망이를 negative exemplar로 제공할 수 있다.
Negative exemplar 역시 해당 물체 하나만 삭제하는 신호라기보다는, 그 예시가 대표하는 잘못된 해석을 억제하는 concept-level feedback이다.

Figure 3는 PCS의 전체 흐름을 네 가지 단계로 보여준다.
유저가 모델과 어떻게 상호작용하며 원하는 결과를 얻는지 보여주는 흐름이다.
a fish처럼 텍스트로 개념을 알려주거나, 특정 물고기 이미지를 긍정 예시로 주면서 "이런 걸 찾아줘" 하고 시작한다.기존 SAM식 correction과 가장 다른 점인데,
- PVS correction: 한 번의 입력으로 물체 하나 수정
- PCS correction: 한 번의 exemplar로 같은 오류를 공유하는 여러 물체가 함께 수정될 수 있음
논문의 interactive experiment에서도 이러한 일반화 효과 때문에 PCS가 이상적인 PVS 기반 수동 수정 방식보다 빠르게 개선되는 경향을 보인다. 다만 exemplar로는 경계 자체의 품질을 계속 고칠 수 없기 때문에, 일정 시점 이후에는 PVS refinement와 결합하는 것이 유리하다.
논문은 이 규칙을 강하게 제시한다.
모든 prompt는 같은 category definition을 가져야 한다.
Text와 exemplar가 동일한 category를 정의해야 하며, 그렇지 않으면 모델의 동작은 undefined이다.
논문에 나온 예시는 다음과 같다.
fishfish의 꼬리만 박스로 지정이 조합은 유효한 refinement가 아니다.
fish는 전체 물고기를 category로 정의한다.fish tail이라는 part category로 정의한다.올바른 방법은 text 자체를 fish tail로 변경하는 것이다.
concept prompt와 object query는 명백히 다른 것이다.
DERT object query와 연결하면 PCS 구조를 더 정확하게 이해할 수 있다.
"Stripped cat" 를 사용자의 semantic intent를 정의해보자.
SAM 3 detector 내부에는 기본적으로 개의 learned object query가 있다.
각 query는 concept prompt와 이미지 feature를 보면서 특정 위치의 물체 후보를 담당한다.
따라서 하나의 concept prompt가 모든 object query를 조건화하여 200개의 Object query가 만들어지고, concept에 해당하는 여러 instance를 출력하는 관계이다.
다시 말해서
DETR object query란?
DETR의 object query는 이미지 속 물체를 하나씩 찾아내기 위한 학습 가능한 prediction slot이다. (slot에 집중하자)
예를 들어 SAM 3 detector가 개의 object query를 사용한다면, 각 query는 이미지 feature를 cross-attention으로 읽고 다음과 같은 하나의 후보를 출력한다.
즉, object query 하나는 대략 다음 질문을 수행하는 셈이다.
"내가 담당해야 할 물체가 이미지 어디에 있지"Query마다 물체 종류가 정해져 있는가?
아니다. 예를 들어 이 항상 고양이를 담당하는 것은 아니다.
- 이미지 A에서는 이 고양이를 담당
- 이미지 B에서는 자동차 담당
- 이미지 C에서는 아무 물체를 담당하지 X
따라서 objecty query는 category 자체가 아니라, 물체 하나가 들어갈 수 있는 빈 출력 슬롯이다.
One-to-one Hungarian matching
학습할 때는 예측 query와 GT 객체를 1:1로 대응시키기 위해 헝가리안 매칭을 사용한다.
정답 물체가 세 개이고 query가 200개라면,
- : 고양이
- : 신호등
- : 사람
- 나머지 197개 쿼리 : No object
최적 매칭은 다음과 같이 구한다.
이 1:1 매칭으로 같은 GT 물체를 여러 query가 중복해서 담당하지 않도록 학습된다. 이것이 DETR에서 NMS 의존도를 없앨 수 있는 핵심 원리이다.
PCS는 고정된 category list가 아니라 임의의 groundable noun phrase를 받는다. 어휘를 넓히는 순간 category definition을 데이터셋이 완전히 통제하기 어려워진다.
논문은 Ambiguity를 다섯 종류로 설명한다.
mouse는 컴퓨터 마우스, 동물 쥐가 가능하다.large dog, cozy chair와 같은 주관적인 속성은 명확한 경계가 없다. 사람마다 포함하는 instance가 달라질 수 있다.brand identity: 이미지 안의 특정 픽셀 집합과 직접 대응하기 어려운 개념이다. 로고를 의미하는지, 색상 체계를 의미하는지, 제품 디자인 전체를 의미하는지 불분명하다.mirror: 거울의 반사면만 mask로 만들어야 하는지, 바깥 frame까지 포함해야 하는지 애매하다. 이는 category는 합의했지만, mask extent에 합의하지 못한 경우이다.논문은 ambiguity를 네 층에서 처리한다.
가능하면 annotator들이 동일한 해석을 하도록 데이터 수집 지침을 설계한다. 지나치게 모호하거나 visual grounding이 불가능한 phrase는 거부할 수 있다.
SA-Co/Gold의 주요 positive datapoint에는 세 명의 expert가 독립적으로 annotation을 수행한다.
중요한 점은 세 사람이 SAM 3 결과를 보고 수정한 것이 아니라, 각자 처음부터 mask를 생성했다는 것이다. 따라서 모델의 오류에 의해 해석이 유도되는 것을 줄인다.
모델 prediction을 세 개의 valid GT과 각각 비교한 후, 가장 높은 local F1을 주는 annotation을 선택한다.
이는 모델에게 무조건 유리하게 점수를 주려는 것이라기보다, 여러 인간 해석 중 하나와 일치한 올바른 예측을 오답 처리하지 않기 위한 장치인 셈이다.
학습 데이터에 두 가지 해석이 절반식 존재한다고 해보자.
일반적인 단일 모델은 손실을 줄이기 위해 두 해석을 모두 약 50% confidence로 출력할 수 있다. 그 결과 서로 충돌하거나 겹치는 mask가 생긴다
SAM 3는 이를 피하기 위해 인 mixture-of-experts 형태의 ambiguity head를 사용한다.
각 expert의 loss를 라고 하면,
가장 낮은 loss를 얻은 expert만 gradient를 받는 winner-takes-all 방식이다.
그 결과,
중요한 세부사항은 ambiguity head가 새로운 box나 mask를 직접 생성하는 것이 아니라 classification logits를 조정한다는 것이다. Box, mask, presence score 자체는 변경하지 않는다.
즉, 목표는 모든 해석이 합집합을 출력하는 것이 아니라 하나의 일관된 해석을 선택하는 것이다.
근데 Expert는 무엇인가요?
expert는 사람도 아니고 LLM Agent도 아니다.
신경망 내부에 있는 여러 개의 작은 branch/head를 의미한다.SAM 3의 ambiguity head에서는 동일한 입력을 서로 다른 방식으로 해석할 수 있도록 개의 expert를 병렬로 둔다.
공유된 SAM 3 feature │ ├── Expert 1 → 해석 A의 classification logits └── Expert 2 → 해석 B의 classification logits논문에서는 가 가장 잘 작동했다고 한다.
왜 이름이 Expert이지?
각 branch가 서로 다른 데이터 패턴이나 해석에 전문화되어 학습되기 때문에 그렇게 부른다.
예를 들어 phrase가
"large circular shape"라고 할 때, 이미지에는 다음 모두가 있을 수 있다.
- 큰 원영 물체 전체
- 그 물체 안의 작은 원형 부분
두 해석이 학습 데이터에 섞여 있다면 일반 모델은 둘 다 50% confidence로 출력 및 충돌 mask가 생긴다.
Ambiguity head를 사용하면
- Expert 1 큰 원형 물체 전체라는 해석
- Expert 2 내부의 원형 부분이라는 해석
처럼 서로 다른 interpretation에 특화될 수 있다.
그럼 Inference에서 누가 선택?
사용할 expert를 사람이 직접 고르지는 않는다.
별도의 classification head가 입력을 보고 어떤 expert의 해석이 더 적절한지 선택한다.또 SAM 3의 ambiguity head는 독립된 SAM 3 모델 두 개를 돌리는 구조가 아니다. 공유된 본체 위에서 classification logits를 다르게 조정하는 작은 전문가 분기들에 가깝고, box / mask / presence score 자체를 직접 새로 생성하지는 않는다.
- Human expert: SA-Co 평가용 annotation을 만드는 숙련된 사람
- AI verifier/annotator: 데이터 엔진에서 mask를 검사하는 MLLM
- MoE expert: 신경망 내부의 학습 가능한 예측 brnach
- Agent: 외부 도구나 모델을 반복 호출하여 과제 수행하는 시스템
이 부분은 SAM 3의 전체 구조를 개요 수준에서 설명한다. 상세한 layer 구성, Loss, matching 설정, 학습 hyperparamteter는 Appendix에서 다룬다.
SAM 3는 기존 SAM 2의 PVS 능력을 유지하면서 PCS까지 추가한 모델이다.
입력 prompt는 두 계열이다.
이 prompt는 "어떤 종류의 물체들을 모두 찾을 것인가?"를 정의한다.
이 prompt는 기존 SAM처럼 "이 특정 물체의 mask를 수정하라"는 역할을 한다.
따라서 SAM 3의 interaction에는 두 수준이 공존한다.
| 보정 수준 | 사용 prompt | 기능 |
|---|---|---|
| Concept-level | image exemplar | false positive/negative 인스턴스 집합 수정 |
| Instance-level | point, box, mask | 특정 인스턴스의 mask 경계 수정 |
SAM 3의 전체 architecture는 크게 다음으로 나뉜다.
Shared PE backbone + Detector + Tracker + Memory Bank

Figure 4의 색은 각 구성 요소의 출처를 의미한다.
핵심은 detector와 tracker가 서로 다른 역할을 동시에 수행한다는 것이다.
Detector는 DETR 계열 구조이다.
전체 흐름은 다음과 같다.
Image/Text/Exemplars Encoding Fusion Encoder DETR-like Decoder Boxes, Scores, Masks
이미지와 text prompt는 aligned Preception Encoder, PE를 통해 encoding 된다.
펭귄 여러 마리가 있는 프레임a penguinPE는 이미지와 텍스트를 서로 비교할 수 있는 vision-language representation으로 변환한다.
Image exemplar가 있다면 별도의 exemplar encoder를 거친다.
Text tokens ───────┐
├── prompt tokens
Exemplar tokens ──┘
논문은 text token과 image exemplar token을 합쳐서 prompt tokens라고 부른다. 여기서 prompt token은 사용자의 concept를 표현하는 token이고, 뒤에 나오는 object query와는 다르다.
Fusion Encoder는 말 그대로 이미지 정보와 프롬프트 정보를 먼저 융합하는 Transformer Encoder이다. Text Encoder와 Image Encoder를 묶어서 Fusion Encoder라고 부르는 것이 아니라, 두 Encoder 뒤에 별도로 추가된 Transformer 모듈이다.
그러니까 논문의 Figure 4에는 안보이지만, 아래와 같은 구조로 이루어지는 것이다.
Fusion Encoder가 6개의 Transformer block으로 구성되며, 각 block에는 대략 다음 연산이 들어간다. Image-token self-attention Image-to-prompt cross-attention MLP
Image
↓
Image Encoder
↓
비조건화 image tokens X ──────────────┐
│
Text │
↓ │
Text Encoder │
↓ ▼
text tokens ────────────────→ Fusion Encoder
│
Image exemplar │
↓ │
Exemplar Encoder │
↓ │
exemplar tokens ────────────→─────────┘
↓
조건화된 image tokens X'
↓
DETR Decoder
참고로 정렬과 융합은 다르다.
- Image/text Encoder의 역할: Alignment
이미지와 텍스트를 비교 가능한 표현 공간에 배치하는 것이고,
- Fusion Encoder의 역할: Conditional Interaction
Encoder들이 각 입력을 표현하고 Fusion Encoder가 그 표현들을 실제로 상호작용 시킨다.
SAM 3에서는 이미지 encoder가 만든 feature를 곧바로 DETR decoder에게 넣지 않는다. 먼저 사용자가 입력한 text/exemplar prompt를 이미지 feature에 주입하여 prompt-aware image feature로 바꾼다.
Image encoder가 만든 feature는 아직 특정 prompt에 조건화되지 않은 상태이다.
Fusion Encoder는 image feature가 prompt token을 cross-attention 하도록 만든다.
여기서 는 text와 exemplar로 구성된 prompt token이다.
이를 직관적으로 해석하면 다음과 같다. (조건화와 조건화되지 않은 차이를 살펴보자)
"이미지 안에 어떤 시각적 패턴들이 있는가?""이미지에서 penguin과 관련된 시각적 패턴은 어디에 있는가?"동일한 이미지라도 prompt가 달라지면 conditioned feature도 달라진다.
Fusion Encoder 다음에는 DETR-like decoder가 있다.
여기에는 여러 개의 learned object query가 들어간다.
각 object query는 다음에 cross-attention을 한다.
즉, query 는 다음 문제를 해결한다: "현재 프롬프트와 일치하는 물체 후보가 이 위치에 있는가?"
각 decoder layer는 object query마다 두 가지를 예측한다.
일반적인 closed-vocabulary DETR라면 각 query가 pereson, car, dog 등 여러 class 중 하나를 예측한다.
하지만 SAM 3는 prompt를 하나씩 조건으로 사용하기 때문에 기본 classification이 binary이다.
예를 들어 prompt가 a penguin이라면,
따라서 관계는 다음과 같다.
하나의 concept prompt 여러 object queires $rightarrow$ 여러 matching
SAM 3는 object query가 특정 box 주변에 attention을 집중하도록 box-region-positional bis를 사용한다.
Decoder가 box를 예측하면 다음 layer는 query의 해당 box와 관련된 pixel에 더 집중할 수 있다.
다만 논문은 최근 DETR 변형들이 복잡한 attention을 사용하는 것과 달리, SAM 3에서는 기본적으로 vanilla attention을 유지한다고 말한다.
여기서 말하는 vanilla attention은 원래 Transformer의 표준 dense multi-head attention을 말한다.
각 query가 모든 key와 유사도를 계산하고, softmax weight로 모든 value를 가중합한다.
SAM 3에서는 여기에 위치 정보를 위한 bias를 추가한다.
따라서 SAM 3의 attention은
연산 자체는 모든 token을 보는 표준 attention이고, 현재 query의 box와 pixel의 상대 위치를 bias로 넣어 관련 영역에 더 집중시킨다.
SAM 3 decoder에서 무슨 일이 일어나는가?
SAM 3에는 기본저긍로 개의 object query가 있다.
각 decoder layer에서
Object queries ↓ self-attention 서로 중복되지 않도록 정보 교환 ↓ prompt cross-attention noun phrase/exemplar 정보 확인 ↓ image cross-attention 이미지의 모든 spatial token에서 물체 위치 탐색 ↓ box, class score, mask 예측이미지 cross-attention에서 obejct query가 하나의 모든 image token과 attention을 계산한다.
연산량은 대략 이다.
이것이 바로
dense또는vanilla cross-attention이다.
Detector는 box만 출력하는 것이 아니다.
MaskFormer에서 가져온 mask head를 이용하여 object query 별 instance mask를 예측한다.
별도의 semantic head는 각 pixel이 prompt concept에 해당하는지 binary하게 예측한다.
예를 들어 prompt가 penguin이면
이 두 출력은 PCS가 instance-level과 semantic-level segmentation을 모두 지원하게 한다.
Section 3에서 가장 중요한 새로운 설계이다.
논문은 다음과 같이 지적한다.
"It can be difficult for each of the proposal queries to both recognize and localize an object."
Oject query 하나가 동시에 다음 두 가지를 수행하면 목표가 충돌할 수 있다.
이 이미지에 penguin이라는 concept가 존재하나?
이 판단에는 이미지 전체의 context가 필요하다.
"Penguin이 있다면 정확히 어디에 있는가?"
이는 특정 영역과 경계에 집중하는 local한 문제이다.
Recognition을 위해 query가 이미지 전체를 보도록 강제하면 localization 집중력이 떨어질 수 있다. 반대로 local region만 보면 해당 물체가 실제로 prompt concept인지 판단하기 어렵다.
SAM 3는 이를 global presence token으로 분리한다.
Presence token은 이미지 또는 프레임 전체에서 noun phrase가 존재하는지를 예측한다.
예를 들어 propmt가 a penguin이라면,
이 값은 모든 object query가 공유한다.