[22’ ECCV] MaskCLIP: Extract Free Dense Labels from CLIP
카테고리: Vision
태그: Semantic Segmentation Training-free Contrastive Learning
🔍 Abstract
ECCV 2022 Oral을 받은 중요한 논문이다. 저자들은 거의 학습 없이 CLIP 자체에서 Dense Label을 추출하는 방법을 제안하고, 이러한 Dense Label을 다듬는 (1) Key Smoothing과 (2) Prompt Denoising을 통해 Segmentation Mask를 만들 수 있었다. 이러한 모델을 MaskCLIP이라 부른다. 저자들은 여기서 더 나아가 MaskCLIP을 이용한 Pseudo Labeling 및 Self-training 방법을 통해 성능을 더 개선시킨 MaskCLIP+을 제안한다.
1. MaskCLIP
저자들은 CLIP의 Layer를 Fine-tuning 하는 것이 오히려 성능에 악영향을 준다고 판단했다. 대신, CLIP 전체를 Frozen한 상태로 좋은 Feature를 뽑는 것에 집중하였다.
CLIP Vision Encoder로는 ResNet과 ViT Backbone을 모두 사용할 수 있다. ResNet의 경우 Global Attention Pooling을 통해 Global Feature를 추출하고, ViT의 경우 CLS Token을 사용한다. 저자들은 이러한 마지막 과정을 제거하고, Last Layer Feature에 Text Embedding과의 Dot Product를 취함으로써 Dense Label을 추출한다. 이는 굉장히 직관적인 방법이다. 이를 Attention의 관점에서 보면,
결국 Global Attention Pooling은 Attention Map에 Feature Map $\mathcal{F}(v)$을 곱해 모두 Pooling 한 것으로 해석할 수 있고, 따라서 Last Layer Feature Map $\mathcal{F}(v)$을 사용하는 것으로 이해할 수 있다. 그러나 이러한 Feature Map을 단순히 사용하는 것만으로는 충분하지 않았고, Label을 다듬어주기 위해 (1) Key Smoothing과 (2) Prompt Denoising을 사용하였다.
1.1. Key Smoothing
Key Smoothing은 Feature Map 자체에서는 얻을 수 없는 Key Feature의 정보를 사용하는 것이다. Key Feature가 유사한 Patch들은 서로 유사한 Mask Prediction을 내릴 것이므로, 이를 바탕으로 Smoothing을 진행한다. 즉, Key Feature가 유사한 Patch를 Aggregation하여 최종 Mask를 만드는 것이다.
\[\text{pred}_ i = \sum_ j \cos \left(\frac{k_ i}{\Vert k_ i \Vert_ 2}, \frac{k_ j}{\Vert k_ j \Vert_ 2}\right) \cdot \text{pred}_ j\]1.2. Prompt Denoising
한편, Target 수가 많을 경우 실제로 등장하지 않는 수많은 Class에 의해 실제로 등장하는 Class가 방해를 받게 된다. 이를 해결하기 위해 Prompt Denoising을 사용한다. Prompt Denoising은 Prompt의 Target Class Confidence가 0.5보다 작을 경우 이를 삭제하는 것이다. 예를 들어 특정 이미지에 실제로 등장하는 Object가 (나무, 사람)이라면 (바다)를 사용한 Prompt의 Confidence는 매우 낮을 것이고, 이는 제거된다. 이를 통해 실제로 이미지에 없는 Class에 대한 Prediction을 반영하는 Noise를 어느 정도 방지할 수 있다.
2. MaskCLIP+
MaskCLIP+는 Pseudo Labeling과 Self-training을 통해 성능을 더 개선시킨다. Pseudo Labeling은 MaskCLIP을 이용해 Pseudo Label을 생성하고, 이를 이용해 DeepLab 기반의 모델에 Supervised Learning을 진행하는 것이다. 그러나 1/10 정도의 학습이 일어나면 MaskCLIP+의 성능이 MaskCLIP이 제공하는 Pseudo-Labeling보다 더 좋아지기 때문에, Self-training을 통해 MaskCLIP+의 성능을 더 개선시킨다. 즉 MaskCLIP+이 직접 생성한 Pseudo Label을 이용해 MaskCLIP+ 자기 자신을 학습시키는 것이다.
3. Experiments
3.1. Main Results
결과는 놀라울 정도로, 기존 모델보다 거의 학습 없이 성능을 크게 개선시켰다. 이는 CLIP의 Dense Label을 효과적으로 활용한 결과라고 할 수 있다. 그리고 이는 Fully Supervised Setting에 거의 근접한 수치로 성능을 끌어올린 것이고, 따라서 MaskCLIP+는 일종의 Upper bound에 근접한 성능을 보여준다.
3.2. Ablation Study
실제로 Key Smoothing과 Prompt Denoising이 성능을 크게 개선시켰다. Key Smoothing의 경우 유사한 Patch를 잘 Aggregation하는 것을 알 수 있고, PD는 기타 Class에 의한 Noise를 어느 정도 제거하는 효과를 보여준다.
💡 Summary
MaskCLIP 논문의 내용을 정리하면 다음과 같다.
- MaskCLIP은 학습 없이 CLIP Last Layer Feature Map으로부터 Dense Label을 추출하고, 이를 다듬는 (1) Key Smoothing과 (2) Prompt Denoising 기법을 제시함
- MaskCLIP+는 Pseudo Labeling과 Self-training을 통해 MaskCLIP의 성능을 더 개선시킴
댓글 남기기