RIM(Relation-aware Intra-modal Matching) 논문은 Open-Vocabulary Semantic Segmentation(OVS) 문제를 해결하기 위해 기존의 Text-to-Image 매칭 방식이 아닌 Image-to-Image 매칭을 활용하는 방법을 연구
https://arxiv.org/abs/2404.00262
Image-to-Image Matching via Foundation Models: A New Perspective for Open-Vocabulary Semantic Segmentation
Open-vocabulary semantic segmentation (OVS) aims to segment images of arbitrary categories specified by class labels or captions. However, most previous best-performing methods, whether pixel grouping methods or region recognition methods, suffer from fals
arxiv.org
📌 RIM이 제시하는 기존 연구의 문제점과 해결책
RIM 논문에서는 기존의 Open-Vocabulary Semantic Segmentation (OVS) 연구들이 가진 주요 문제점을 지적하며, 이를 해결하기 위한 새로운 접근법을 제안합니다.
🔥 기존 연구의 문제점
기존의 OVS 방법들은 주로 CLIP과 같은 Vision-Language 모델을 활용하여 Text-to-Image Matching을 수행했습니다. 하지만, 이러한 방식은 다음과 같은 문제를 가지고 있습니다.
1️⃣ 크로스 모달 갭 (Cross-Modal Gap)
- 기존 OVS 방법들은 텍스트(클래스 레이블)와 이미지(시각적 특징)를 직접 매칭하려 했습니다.
- 하지만, 텍스트와 이미지의 표현 공간이 다르기 때문에 정확한 대응 관계를 형성하기 어렵고, 부정확한 매칭이 발생할 가능성이 큽니다.
- 예를 들어, CLIP은 텍스트와 이미지 간의 거리를 줄이려 하지만, 여전히 완벽한 정렬(alignment)이 어렵습니다.
2️⃣ 공간적 관계 모호성 (Spatial Relation Ambiguity)
- CLIP 기반 모델들은 이미지 전체를 하나의 전역적인 표현(global representation)으로 처리하기 때문에, 픽셀 단위나 영역(region) 단위의 정확한 매칭이 어렵습니다.
- 즉, 한 이미지에서 특정 객체를 찾을 때, 배경 정보나 다른 객체들의 영향을 받아 잘못된 매칭이 발생할 가능성이 큽니다.
- 예를 들어, 책상(desk)과 의자(chair)가 함께 있는 장면에서 CLIP은 이 두 개의 객체를 개별적으로 구분하기 어려울 수 있습니다.
3️⃣ 공동 출현 혼동 (Co-occurring Object Confusion)
- CLIP과 같은 모델들은 객체가 자주 함께 등장하는 경우 이를 구분하기 어려운 경향이 있습니다.
- 예를 들어, "책상(desk)"와 "의자(chair)"가 항상 같이 등장하는 경우, "책상"만 존재하는 이미지에서도 "의자"로 잘못 분류될 가능성이 있습니다.
- 이는 CLIP이 이미지 전체의 의미를 학습하는 과정에서 발생하는 홀리스틱(holistic) 학습 특성 때문입니다.
4️⃣ 독립적 매칭의 한계 (Independent Matching Limitations)
- 기존의 방법들은 각 객체를 개별적으로 처리하며, 객체 간의 관계를 고려하지 않았습니다.
- 예를 들어, 특정 객체가 여러 개의 클래스와 유사할 경우, 다른 클래스들과의 상대적인 관계를 고려하지 않고 단순히 가장 높은 점수를 받은 클래스로 매칭하는 방식이었습니다.
- 하지만, 이러한 방식은 객체 간의 유사성과 계층적 관계를 활용하지 못하기 때문에 분류 오류를 초래할 가능성이 큽니다.
✅ RIM의 해결 방법
RIM은 위 문제점을 해결하기 위해 Image-to-Image Matching을 활용하고, 관계 인식(Relation-aware) 매칭 기법을 도입하는 방식을 제안합니다.
🔹 1. 크로스 모달 갭 해결 → Intra-modal Reference Construction (동일 모달 내 참조 구축)
✅ 기존의 Text-to-Image Matching이 아니라, Image-to-Image Matching을 수행
✅ Stable Diffusion을 활용하여 각 클래스의 대표적인 이미지를 생성
✅ Segment Anything Model (SAM)을 사용하여 생성된 이미지에서 해당 객체를 정확히 분리하여 참조
✅ DINOv2를 활용하여 이미지 기반 참조를 더욱 정제
➡️ 결과적으로, 텍스트와 이미지 간의 매칭이 아닌, 이미지와 이미지 간의 매칭을 수행함으로써 모달 간 갭을 해소
🔹 2. 공간적 관계 모호성 해결 → SAM을 활용한 정교한 마스크 생성
✅ 기존의 방법들이 이미지 전체를 전역적인 표현으로 다룬 것과 달리, SAM을 이용해 픽셀 단위의 정확한 객체 영역을 추출
✅ 이를 통해 배경 정보를 효과적으로 제거하고, 정확한 객체 표현을 확보
➡️ 결과적으로, 기존의 전역적인 이미지 표현 방식보다 훨씬 세밀한 객체 단위 표현이 가능
🔹 3. 공동 출현 혼동 해결 → Background Segmentation & Masked Average Pooling (MAP)
✅ 기존 방법들은 배경 정보가 포함된 특징을 사용하여 객체를 구분하기 어려웠음
✅ RIM은 Stable Diffusion의 크로스 어텐션 맵을 활용하여 정확한 객체 영역을 찾고, SAM을 사용하여 배경을 제거
✅ 이후 DINOv2를 활용해 특정 객체의 핵심 특징만을 남기는 Masked Average Pooling (MAP) 기법을 적용
➡️ 결과적으로, 공동 출현 문제를 방지하고, 배경 정보를 효과적으로 제거하여 정확한 매칭 가능
🔹 4. 독립적 매칭의 한계 해결 → Relation-aware Matching (관계 인식 매칭)
✅ 기존 방법들은 개별적인 객체-클래스 매칭만 수행했지만, RIM은 클래스 간의 관계를 반영한 순위 기반 매칭(Ranking Distribution Matching) 기법을 도입
✅ 특정 객체가 여러 클래스와 유사할 경우, 단순 매칭이 아니라, 가장 적절한 순위로 정렬되는 클래스를 찾는 확률적 접근 방식을 적용
✅ 예를 들어, "책상(desk)"와 "의자(chair)"가 비슷한 경우, 책상이 1순위, 의자가 2순위로 정렬되도록 확률적으로 분포를 계산하여 최종 분류
➡️ 결과적으로, 객체 간의 관계성을 활용하여 더욱 정밀한 매칭이 가능해짐
🏆 정리: RIM이 기존 문제를 해결하는 방식
기존 문제점RIM의 해결 방법
크로스 모달 갭 | Image-to-Image Matching (Stable Diffusion + SAM + DINOv2) |
공간적 관계 모호성 | SAM 기반 세밀한 객체 마스크 생성 |
공동 출현 혼동 | Background Segmentation + Masked Average Pooling (MAP) |
독립적 매칭의 한계 | Relation-aware Matching (Ranking Distribution) |
🚀 결론: RIM의 성능 개선 효과
✅ 기존 CLIP 기반 방법보다 PASCAL VOC 기준 mIoU에서 10% 이상 성능 향상
✅ Training-free 모델이면서도, 기존 학습 기반 모델을 능가하는 성능 달성
✅ Open-Vocabulary Segmentation의 새로운 패러다임(Image-to-Image Matching)을 제시
📌 RIM의 Method
Figure 2의 흐름을 따라 Proposal Generation → Intra-modal Reference Construction → Relation-aware Matching 순으로 진행
🏆 1. Proposal Generation (마스크 제안 생성)
목적:
- 입력 이미지에서 Segment Anything Model (SAM)을 활용해 객체의 마스크(Region Proposals)를 생성
- 기존 CLIP 기반 방법들이 픽셀 단위 또는 전체 이미지 기반으로 매칭을 수행한 것과 달리, 객체 단위로 정밀한 Region Features를 추출
방법:
1️⃣ 입력 이미지를 SAM의 인코더(EncI)에 통과시켜 이미지 특징(feature map)을 추출
2️⃣ SAM의 마스크 예측기(DecM)를 사용해 객체 마스크(Mask Proposals)를 생성
3️⃣ 각 마스크에 해당하는 영역만을 남긴 Region Feature를 생성
- 마스크가 적용된 영역을 DINOv2의 Mask Average Pooling (MAP)을 통해 변환
출력:
✅ Region Features → SAM이 예측한 객체 마스크를 기반으로 생성된 객체별 특징 맵
💡 기존 방법 대비 장점:
- 픽셀 수준 매칭이 아닌 객체 단위로 정확한 매칭 가능
- SAM을 활용해 새로운 카테고리에도 강력한 Zero-shot 성능 발휘
🎯 2. Intra-modal Reference Construction (동일 모달 내 참조 구축)
목적:
- CLIP을 활용한 Text-to-Image 매칭이 아니라, Stable Diffusion을 이용해 Image-to-Image 매칭을 수행
- 각 클래스의 대표적인 참조 이미지(Reference Images)를 생성하고, 이를 통해 클래스별 특징(Category Reference Features)을 구축
방법:
1️⃣ Stable Diffusion(SD) 모델을 이용해 각 카테고리에 대한 이미지 생성
- 프롬프트 예시: "A photo of [category name]"
- 각 클래스에 대해 K개의 참조 이미지 생성
2️⃣ Stable Diffusion의 크로스 어텐션 맵 활용
- SD의 크로스 어텐션 맵을 사용하여 객체가 존재하는 영역을 파악
- 특정 텍스트 토큰이 활성화된 영역을 기반으로 객체의 정확한 위치를 찾음
3️⃣ Segment Anything Model(SAM) 활용
- SD에서 생성한 이미지를 SAM에 입력하여 객체 마스크를 자동 생성
- SD의 어텐션 맵을 활용해 배경과 객체를 정확히 분리
4️⃣ DINOv2를 사용해 Reference Feature 생성
- SAM이 생성한 객체 마스크를 이용하여 DINOv2의 Mask Average Pooling (MAP) 적용
- 클래스별로 정제된 Image-based Reference Feature 생성
출력:
✅ Category Reference Features → SD + SAM을 이용하여 클래스별 대표적인 이미지 기반 참조 특징 생성
💡 기존 방법 대비 장점:
- CLIP을 통한 Text-to-Image 매칭보다 동일한 이미지 기반의 매칭이 훨씬 더 정확함
- SD의 강력한 이미지 생성 능력을 활용해 카테고리별로 다양한 참조 이미지 확보 가능
🔗 3. Relation-aware Matching (관계 인식 매칭)
목적:
- 기존의 개별 객체와 개별 클래스 간 매칭이 아니라, 클래스 간의 관계를 고려한 순위 기반 매칭(Ranking-based Matching) 수행
- 유사한 클래스들을 함께 고려하여 더 정확한 분류 수행
👉 즉, 객체를 특정 카테고리에 할당할 때, 단순한 점수 비교가 아니라 "각 클래스가 얼마나 적절한 순위로 정렬되는지"를 고려하는 방식
방법:
1️⃣ 테스트 이미지의 Region Feature와 Reference Feature 매칭
- SAM이 생성한 객체 마스크를 기반으로 DINOv2에서 Region Feature를 추출
- 이를 참조 이미지에서 생성된 Category Reference Features와 매칭
2️⃣ Top-N Category Agents 선정
- 특정 객체(Region Feature)와 가장 유사한 Top-N 개의 카테고리(예: sofa, chair, bench)를 선택
- 이들을 Category Agents라고 부름
- 각 Category Agent와 객체 간의 유사도를 계산해 벡터 s 를 생성
3️⃣ 순열(Permutation) 기반 확률 모델링
- 기존 방식은 가장 높은 점수를 가진 클래스만 선택했지만,
RIM은 각 클래스가 특정 순위로 정렬될 확률을 고려합니다.
💡 예제 (sofa, chair, bench)
- 특정 객체가 있을 때,
- "sofa > chair > bench" 순서가 될 수도 있고
- "chair > sofa > bench" 순서가 될 수도 있음
- 각 순열(Permutation)마다 확률을 계산하여, 가장 가능성 높은 순서로 정렬되는지 확인
4️⃣ 순열 확률 계산 (Ranking Distribution)
하나의 순열(예: "chair > sofa > bench")이 나올 확률은 아래와 같이 계산됩니다.
💡 쉽게 말하면:
- "chair"가 가장 높은 순위로 올 확률 = chair의 유사도 점수 / (chair + sofa + bench 점수)
- "sofa"가 두 번째로 올 확률 = sofa의 점수 / (sofa + bench 점수)
즉, 각 클래스가 특정 순서로 정렬될 확률을 계산하여 매칭을 수행합니다.
5️⃣ 테스트 객체와 참조 카테고리의 순위 분포 비교
- 위 과정을 통해 특정 객체의 순위 확률 분포 를 얻음
- 마찬가지로 각 카테고리 Reference Feature들도 동일한 방식으로 순위 분포 를 계산
- 이제 테스트 객체의 순위 분포와 각 카테고리의 순위 분포 간의 유사도를 비교하여 최종 분류를 결정
➡️ 즉, 객체와 카테고리 간의 관계를 고려하여 가장 적절한 클래스를 선택!
🔍 Relation-aware Matching에서의 Subcategory Reference (세부 카테고리 참조)
Subcategory Reference Features는 RIM의 Relation-aware Matching 과정에서 더 정밀한 매칭을 수행하기 위해 도입된 개념입니다. 기존 방식은 클래스 전체를 하나의 특징 벡터로 나타냈지만, 카테고리 내에서도 다양한 형태의 객체가 존재하기 때문에 세부적인 참조를 만들 필요가 있습니다.
🏆 왜 Subcategory Reference가 필요한가? (기존 방식의 한계)
기존의 Image-to-Image Matching 방식에서는 각 카테고리(class)에 대해 단 하나의 대표적인 Reference Feature를 사용했습니다.
하지만 현실적으로, 하나의 카테고리 안에서도 다양한 형태의 객체가 존재할 수 있습니다.
예시: '의자 (chair)' 클래스의 경우
- 팔걸이가 있는 의자, 없는 의자
- 바퀴가 달린 사무용 의자, 식탁용 나무 의자
- 소파 스타일 의자
단 하나의 "의자(chair)" 참조 벡터만 사용한다면, 테스트 이미지 속 다양한 형태의 의자와의 매칭 정확도가 떨어질 가능성이 큽니다.
➡️ 이를 해결하기 위해, RIM은 Subcategory Reference Features를 생성하여 더 세밀한 매칭을 수행합니다.
🎯 Subcategory Reference를 어떻게 생성하는가?
기본적인 Category Reference Features는 Stable Diffusion과 SAM을 활용하여 생성된 다수의 참조 이미지(Reference Images)를 기반으로 구축됩니다.
이를 활용하여 각 카테고리 내부에서 더 세밀한 그룹을 만들기 위해 클러스터링을 수행합니다.
1️⃣ Step 1: 클래스별 참조 이미지에서 Feature Extraction
- Stable Diffusion을 통해 "A photo of [category name]"을 프롬프트로 사용하여 여러 개의 참조 이미지(Reference Images)를 생성
- SAM을 활용해 해당 이미지에서 객체 마스크를 분리하여 정제된 카테고리별 참조 데이터셋을 구축
- DINOv2를 활용해 이들 참조 이미지에서 Feature Extraction 수행
2️⃣ Step 2: 클래스 내부에서 Subcategory Clustering 수행
- 각 클래스별로 여러 개의 Reference Feature가 생성되었기 때문에, 이를 클러스터링하여 대표적인 Subcategory Reference를 구성
- 예를 들어, "chair" 카테고리라면 다음과 같은 서브 그룹으로 나뉠 수 있음:
- Subcategory 1: 회전식 사무용 의자 (Office chair)
- Subcategory 2: 식탁 의자 (Dining chair)
- Subcategory 3: 팔걸이 없는 일반 의자 (Armless chair)
3️⃣ Step 3: Region Feature와 Subcategory Reference Matching
- 테스트 이미지에서 SAM을 이용해 Region Features를 추출
- 각 Region Feature와 해당 카테고리의 모든 Subcategory Reference Features 간 매칭을 수행
- 단일 대표 벡터를 사용하는 것이 아니라, 각 Subcategory Reference와의 관계를 고려한 가중 합을 통해 최종 점수 결정
🔑 Subcategory Reference를 활용한 최종 매칭 방법
기존 방식에서는 각 Region Feature와 개별 카테고리 전체의 대표 벡터(holistic reference feature)를 직접 비교했지만,
RIM에서는 각 카테고리의 Subcategory Reference를 활용하여 더 정밀한 매칭을 수행합니다.
✅ 기존 방식 (Holistic Matching)
➡️ 문제점: 클래스 하나에 대한 단일 대표 벡터만 사용하므로 다양한 형태의 객체를 포괄하지 못함
✅ RIM 방식 (Subcategory Matching)
➡️ 해결책:
- 클래스 전체가 아니라 각 Subcategory Reference Feature와 매칭 수행
- 각 Subcategory의 유사도를 따로 계산한 후, 모든 서브 카테고리의 점수를 합산하여 최종 분류 결정
📌 결과적으로, Subcategory Reference의 역할
✅ 하나의 클래스 안에서도 다양한 형태의 객체를 효과적으로 구분할 수 있음
✅ 보다 세밀한 매칭을 통해 유사한 클래스 간 혼동을 줄일 수 있음
✅ Ranking Distribution Matching과 결합하여 더욱 강력한 분류 성능을 제공함
🔥 실험 결과 (Table 2: Ablation Study)
실험에서도 Subcategory Reference를 추가하면 성능이 향상됨이 확인되었습니다.
실험 조건mIoU (%)
기본적인 Image-to-Image Matching (Text-to-Image 미사용) | 38.7 |
Foreground Mask 사용 (배경 제거) | 41.8 |
Relation-aware Matching 적용 | 43.1 |
Subcategory Reference 추가 적용 | 44.5 |
➡️ Subcategory Reference를 추가했을 때 성능이 43.1 → 44.5 mIoU로 향상됨