1. Introduction
Weakly Supervised Semantic Segmentation (WSSS)의 문제점과 이를 해결하기 위한 새로운 프레임워크인 CLIP-ES에 대해 소개합니다.
기존의 WSSS 방법
CLIP과 관련된 연구
저자들의 제안
WSSS의 기존 방법과 CLIP 모델에 대해 다루고 있습니다. 이에 대한 설명은 위에 전부 나와있으므로 생략하겠습니다.
3. Method
3.1. Softmax-GradCAM
피처별 가중치 계산
주어진 수식은 GradCAM에서 클래스 활성화 맵(CAM)을 생성하는 데 사용되는 클래스 특징 가중치를 계산하는 공식입니다. 이 가중치는 특정 클래스에 대한 모델의 예측에 각 특징 맵이 얼마나 중요한 영향을 미치는지 나타냅니다. 모델이 추론한 클래스 로짓을 피처맵 값으로 미분한 것으로, 수식은 다음과 같습니다:
wkc=Z1i∑j∑∂Aijk∂Yc
각 항의 의미는 다음과 같습니다:
- wkc: 특정 클래스 c에 대한 k번째 특징 맵의 가중치입니다. 이 가중치는 해당 특징 맵이 클래스 c를 예측하는 데 얼마나 기여하는지를 나타냅니다.
- Z: 특징 맵의 총 픽셀 수입니다. 이는 그래디언트 합계를 정규화하여 공간 차원에 걸쳐 평균을 내는 역할을 합니다.
- ∑i∑j: 특징 맵의 모든 공간 위치(i, j)에 대한 합계를 의미합니다. 즉, 특징 맵 전체에 걸쳐 그래디언트를 합산합니다.
- Yc: 클래스 c에 대한 로짓(logit) 점수입니다. 로짓은 모델의 마지막 출력 레이어에서 소프트맥스 함수를 적용하기 전의 원시 예측 값입니다.
- Aijk: k번째 특징 맵의 위치 (i, j)에서의 활성화 값입니다.
- ∂Aijk∂Yc: 클래스 c의 로짓 점수(Yc)가 k번째 특징 맵의 위치 (i, j)에 있는 활성화 값(Aijk)에 대해 얼마나 민감하게 변하는지를 나타내는 그래디언트입니다. 이는 특정 특징 맵의 특정 공간 위치가 해당 클래스 예측에 미치는 영향력을 측정합니다.
가중치를 피처맵에 곱해 CAM으로 변환
다음으로, 특정 클래스 c에 대한 활성화 맵(CAMc)으로 변환하는 공식입니다. 이는 위에서 계산한 wkc을 각 피처맵에 weighted sum한 뒤 ReLU를 태워 음의 값을 절삭하는 과정이며, 수식은 다음과 같습니다:
CAMijc=ReLU(k∑wkcAijk)
각 항에 대한 자세한 설명은 다음과 같습니다.
-
CAMijc: 이는 특정 클래스 c에 대한 Class Activation Map의 공간 위치 (i,j)에서의 값을 나타냅니다. 이 맵은 이미지에서 해당 클래스에 가장 중요한 영역이 어디인지 시각적으로 보여줍니다. 값이 높을수록 해당 픽셀이 클래스 c에 속할 확률이 높다는 것을 의미합니다.
-
ReLU (Rectified Linear Unit): 활성화 함수 중 하나입니다. 수식은 ReLU(x)=max(0,x)로 정의됩니다. 이 함수를 사용하는 이유는 다음과 같습니다:
- 양의 영향 강조: 대상 클래스에 긍정적인 영향을 미치는 특징들만을 고려하고, 음의 영향을 미치는 특징들은 0으로 만들어 무시함으로써 CAM이 해당 클래스의 존재를 가장 강하게 나타내는 영역에 집중할 수 있도록 합니다.
- 해석 가능성: 이를 통해 생성된 CAM은 특정 클래스의 존재에 대한 모델의 '증거' 또는 '확신'을 양수 값으로 명확하게 시각화하여 해석하기 용이하게 만듭니다.
-
∑k: 이는 모든 특징 맵(k)에 대한 합산을 나타냅니다. 딥러닝 모델의 특정 레이어에서 여러 개의 특징 맵이 생성되는데, 이들 각각이 이미지의 다른 측면을 포착합니다. 이 합산은 모든 관련 특징 맵의 기여도를 통합합니다.
-
wkc: 이는 클래스 c에 대한 k번째 특징 맵의 가중치입니다. 이 가중치는 모델의 예측에서 해당 특징 맵이 클래스 c에 얼마나 중요한 기여를 하는지를 나타냅니다. 원본 GradCAM 에서는 이 가중치를 대상 클래스 로짓(softmax 이전의 값)에 대한 특정 특징 맵의 기울기(gradient)를 평균하여 계산합니다.
- 이 논문 CLIP is Also an Efficient Segmenter에서는 이 wkc를 계산할 때 softmax 함수를 도입하여 (4번 공식 참고) 비대상 클래스와 배경으로 인한 혼동을 억제하고, 카테고리 간의 상호 배타성을 높이는 방식으로 개선했습니다.
-
Aijk: 이는 k번째 특징 맵의 공간 위치 (i,j)에서의 활성화 값입니다. 이는 특정 특징 맵이 이미지의 해당 영역에 대해 얼마나 활성화되었는지를 나타냅니다.
기존 GradCAM의 문제점
그러나 기존의 Grad-CAM은 소프트맥스 함수를 적용하기 전의 로짓 스코어를 사용하여 기울기(gradient)를 계산했습니다. 그러나 이런 분류 태스크의 이진 교차 엔트로피 손실(binary cross entropy loss)은 이미지 내부에 섞여있는 다른 클래스들 간의 경쟁(competition)을 반영할 수 없습니다. 즉, CLIP 모델 자체는 교차 엔트로피 손실과 소프트맥스를 사용하여 학습되었지만, 하나의 이미지에 여러 요소가 혼재되어 있을 때는 카테고리 간의 명확한 구분이 어렵습니다.
이를 해결하기 위해 저자들은 Grad-CAM에 소프트맥스 함수를 도입하여 각 카테고리가 상호 배타적(mutually exclusive)이 되도록 만듭니다. 즉, 한 픽셀이 한 클래스에 속할 확률이 높으면 다른 클래스에 속할 확률은 낮아지도록 강제합니다. 이를 통해 타겟 클래스와 배경 또는 비타겟 클래스 간의 혼동(confusion)을 효과적으로 억제하고, 더 정확하고 완전한 Class Activation Map (CAM)을 생성하는 데 기여합니다.
sc=∑c′=1Cexp(Yc′)exp(Yc)
- sc: 특정 클래스 c에 대한 소프트맥스 적용 후의 스코어 또는 확률을 나타냅니다. 이 값은 0과 1 사이이며, 모든 클래스의 sc 값을 합하면 1이 됩니다.
- Yc: 소프트맥스 함수가 적용되기 전의 클래스 c에 대한 로짓(logit) 스코어입니다. 이는 신경망의 마지막 레이어에서 출력되는 원시(raw) 예측 값입니다.
- exp(⋅): 지수 함수를 나타냅니다. 이는 로짓 값을 양수로 변환하여 확률처럼 다룰 수 있게 하며, 더 큰 로짓 값에 더 높은 가중치를 부여합니다.
- ∑c′=1Cexp(Yc′): 모든 클래스(c′은 1부터 총 클래스 수 C까지)의 지수 함수가 적용된 로짓 스코어를 합산한 값입니다. 이 값은 정규화 항으로 사용되어 각 클래스의 스코어가 전체 스코어에서 차지하는 비율을 계산하는 데 사용됩니다.전체 수식을 간단하게 요약하면 다음과 같습니다.
- 또한 저자들은 데이터셋에 정의된 카테고리간의 경쟁만으론 타겟을 배경으로부터 분리하기 어렵다는 것을 파악하고, 배경들 또한 카테고리에 추가하였습니다.
- CLIP의 제로샷(zero-shot) 능력 덕분에, 이러한 배경 카테고리를 위해 분류 네트워크를 다시 학습시킬 필요 없이 단순히 입력 텍스트를 수정하는 것만으로 배경 픽셀을 억제할 수 있습니다.

이후 Yc 대신 sc를 미분하면, 아래와 같은 식이 나옵니다.
wkc=Z1i∑j∑∂Aijk∂sc
=Z1i∑j∑c′∑∂Aijk∂Yc′∗∂Yc′∂sc
=Z1i∑j∑∂Aijk∂Yc∗sc(1−sc)+Z1i∑j∑c′=c∑∂Aijk∂Yc′∗sc(−sc′)
각 항의 의미는 다음과 같습니다:
- wkc: c번째 클래스에 대한 k번째 특징 맵의 가중치입니다. 이 가중치는 최종 Class Activation Map (CAM)을 생성할 때 k번째 특징 맵의 중요도를 결정합니다.
- Z: 특징 맵의 전체 픽셀 수입니다. GradCAM에서 미분값의 합을 평균화하는 데 사용됩니다.
- i,j: 특징 맵 내의 픽셀 위치를 나타내는 인덱스입니다.
- c′: 데이터셋에 정의된 모든 클래스를 나타내는 인덱스입니다.
- Yc′: c′번째 클래스의 로짓(logit) 점수입니다. 이는 소프트맥스 함수를 적용하기 전의 모델 출력값을 의미합니다.
- Aijk: k번째 특징 맵의 (i,j) 위치에서의 활성화 값(activation value)입니다. 이는 특정 레이어의 특징 맵에서 얻어지는 값입니다.
- ∂Aijk∂Yc′: c′번째 클래스의 로짓 점수가 k번째 특징 맵의 (i,j) 위치 활성화 값에 대해 얼마나 민감하게 변하는지를 나타내는 기울기(gradient)입니다.
- sc: 소프트맥스 함수를 거쳐 정규화된 c번째 클래스의 확률 점수입니다.
- ∂Yc′∂sc: c번째 클래스의 소프트맥스 확률이 c′번째 클래스의 로짓 점수에 대해 얼마나 민감하게 변하는지를 나타내는 기울기입니다.
- 만약 c=c′인 경우, ∂Yc∂sc=sc(1−sc)입니다. 이는 타겟 클래스 로짓에 대한 자기 클래스 확률의 변화를 나타냅니다.
- 만약 c=c′인 경우, ∂Yc′∂sc=sc(−sc′)입니다. 이는 비타겟 클래스 로짓이 타겟 클래스 확률에 미치는 영향을 나타냅니다.
- c=c′ 항은 타겟 클래스 c가 아닌 다른 클래스 c′가 활성화될 때 타겟 클래스 c의 특징 맵 가중치(wkc)를 억제하는 효과를 가집니다. 이는 클래스 간의 상호 배타성(mutually exclusive)을 강화하여, CAM이 특정 타겟 클래스에 더 집중하고 배경 및 관련 없는 객체를 효과적으로 억제하도록 돕습니다.
수식의 유도 과정
위 수식을 유도하는 과정을 따로 정리해보았습니다.

이 때 sc에 대한 소프트맥스 함수는 다음과 같이 정의 됐으므로,
sc=∑k=1Cexp(Yk)exp(Yc)
여기서 sc는 c번째 클래스의 확률, Yc는 c번째 클래스의 로짓(logit) 점수, ∑k=1Cexp(Yk)는 모든 클래스의 exp(로짓) 값들의 합입니다.
계산을 간단히 하기 위해 분모를 Z라고 하겠습니다. (이는 논문에서 사용된 Z와는 다른 의미입니다. 여기서는 분모를 나타내는 약어로 사용하겠습니다.)
Z=k=1∑Cexp(Yk)
따라서, sc=Zexp(Yc) 로 쓸 수 있습니다.
경우 1: c′=c 일 때 (∂Yc∂sc 유도)
이 경우는 c번째 클래스의 확률 sc를 자기 자신의 로짓 Yc에 대해 미분하는 것입니다. 이는 몫의 미분법(dxd(vu)=v2u′v−uv′)을 사용하여 계산할 수 있습니다.
여기서:
- u=exp(Yc)
- v=Z=∑k=1Cexp(Yk)
각각을 Yc에 대해 미분하면:
- u′=∂Yc∂(exp(Yc))=exp(Yc)
- v′=∂Yc∂(∑k=1Cexp(Yk))
Z는 모든 exp(Yk)의 합이므로, Yc에 대해 미분할 때 Yc 항만 남고 다른 Yk (k=c) 항은 상수 취급되어 미분하면 0이 됩니다.
따라서, v′=exp(Yc)
이제 이 값들을 몫의 미분법 공식에 대입합니다:
∂Yc∂sc=v2u′v−uv′=Z2exp(Yc)⋅Z−exp(Yc)⋅exp(Yc)
이 식을 정리합니다:
∂Yc∂sc=Z2exp(Yc)⋅Z−Z2(exp(Yc))2
∂Yc∂sc=Zexp(Yc)−(Zexp(Yc))2
소프트맥스 함수의 정의에 따라 sc=Zexp(Yc) 이므로, 이를 대입하면:
∂Yc∂sc=sc−(sc)2
∂Yc∂sc=sc(1−sc)
이로써 첫 번째 유도가 완료되었습니다.
경우 2: c′=c 일 때 (∂Yc′∂sc 유도)
이 경우는 c번째 클래스의 확률 sc를 자기 자신이 아닌 다른 클래스 c′의 로짓 Yc′에 대해 미분하는 것입니다. 역시 몫의 미분법을 사용합니다.
여기서:
- u=exp(Yc)
- v=Z=∑k=1Cexp(Yk)
각각을 Yc′에 대해 미분하면:
-
u′=∂Yc′∂(exp(Yc))
u는 Yc에만 의존하며, Yc′ (c′=c)과는 무관하므로, Yc′에 대한 미분값은 0입니다.
u′=0
-
v′=∂Yc′∂(∑k=1Cexp(Yk))
Z는 모든 exp(Yk)의 합입니다. Yc′에 대해 미분할 때, 합 내부의 Yc′ 항(즉, exp(Yc′))만 남고 다른 항들은 상수 취급되어 미분하면 0이 됩니다.
따라서, v′=exp(Yc′)
이제 이 값들을 몫의 미분법 공식에 대입합니다:
∂Yc′∂sc=v2u′v−uv′=Z20⋅Z−exp(Yc)⋅exp(Yc′)
이 식을 정리합니다:
∂Yc′∂sc=−Z2exp(Yc)⋅exp(Yc′)
∂Yc′∂sc=−(Zexp(Yc))⋅(Zexp(Yc′))
소프트맥스 함수의 정의에 따라 sc=Zexp(Yc) 이고, 마찬가지로 sc′=Zexp(Yc′) 이므로, 이를 대입하면:
∂Yc′∂sc=−scsc′
이로써 두 번째 유도가 완료되었습니다.
그러므로 아래와 같은 식이 최종적으로 유도되는 것입니다.
wkc=Z1i∑j∑∂Aijk∂sc
=Z1i∑j∑∂Aijk∂Yc∗sc(1−sc)+Z1i∑j∑c′=c∑∂Aijk∂Yc′∗sc(−sc′)
3.2. Text-driven Strategies
CLIP의 텍스트-이미지 이해도를 이용하여, 프롬프트를 통해 어떤 클래스를 활성화할지 정하는 과정입니다. 이 때 해당 태스크의 성능을 끌어올리기 위해 아래 두 가지 방법을 제안합니다.
3.2.1 Sharpness-based Prompt Selection
CLIP 모델을 활용한 WSSS에서 효과적인 텍스트 프롬프트를 선택하는 방법을 설명합니다.
-
문제점 인식:
- 일반적인 이미지 분류 작업에서는 여러 프롬프트를 결합하는 '프롬프트 앙상블(prompt ensembling)'이 단일 타겟 클래스의 점수를 극대화하여 분류 성능을 크게 향상시킵니다.
- 그러나 WSSS은 이미지 내에 여러 객체가 존재하므로, 프롬프트 앙상블이 특정 타겟 클래스를 과도하게 두드러지게 만들면, 같은 이미지 내의 다른 타겟 클래스들의 점수를 억제하여 전반적인 분할 성능을 저하시킬 수 있습니다.
-
Sharpness 지표 제안:
-
이러한 문제를 해결하고 WSSS에 적합한 프롬프트를 선택하기 위해, 저자들은 'Sharpness'라는 새로운 지표를 제안했습니다.
-
Sharpness는 다중 라벨 이미지에서 타겟 클래스 점수 분포의 '분산(dispersion)'을 측정하는 지표입니다. 이는 통계학에서 사용되는 변동 계수(Coefficient of Variation)에서 영감을 받았습니다.
-
Sharpness를 이해하기 위해선 분산, 표준편차, 변동계수의 개념을 알아야 합니다.
-
분산: 관측값에서 평균을 뺀 뒤, 음의 값을 무시할 수 있도록 제곱하고, 그 값을 평균 낸 값으로, 데이터가 평균으로부터 얼마나 떨어져있는지를 파악하는 지표입니다.
-
표준편차: 분산의 제곱근으로, 제곱 연산 때문에 실제 값에서 너무 먼 분산의 결과를 완화시킨 값입니다.
-
집값은 천차만별이나, 쌀값은 큰 변동이 없는 것처럼, 데이터 분포에서 평균이 크면 데이터 분포도 넓어집니다. 따라서 평균 대비 표준편차를 계산하면 서로 다른 특성의 데이터 분포를 비교할 수 있습니다. 이점에 착안하여, 표준편차를 평균으로 나눈 것이 변동계수입니다.
-
그러나 논문의 저자들은 변동계수의 개념을 살짝 비틀어 표준편차가 아닌 분산을 사용합니다. 이는 이미지 속의 각 개체에 대한 확률이 softmax를 거쳐 0부터 1 사이로 나오기 때문에, 제곱근을 거치지 않은 분산이 표준편차보다 더 작은 값을 갖기 때문입니다.
-
만약 평균이 0에 가까울 경우, 분자가 매우 작아져 변동계수의 값은 요동칠 것입니다. 그러나 표준편차보다 작은 값을 가지는 분산을 분자로 쓸 경우 이러한 불안전성을 상쇄할 수 있습니다.
-
이러한 지식을 가지고 sharpness 수식을 이해해봅시다:
sharpness(prompt)=∑i=1nmean(si1,…,sik)∑i=1nvar(si1,…,sik)
- 여기서 n은 데이터셋에 있는 이미지의 총 개수입니다.
- k는 이미지 i에 존재하는 카테고리 개수를 나타냅니다(k≥1).
- sij는 i-번째 이미지에서 j-번째 클래스의 softmax 이후 점수를 의미합니다.
- var(⋅)는 분산을, mean(⋅)은 평균을 나타냅니다.
-
분산은 데이터 포인트들이 평균으로부터 얼마나 떨어져 있는지를 나타내는 척도입니다.
-
분산이 작다는 것은 si1,...,sik 값들이 서로 매우 가깝게 분포되어 있다는 것을 의미합니다. 즉, 이미지 i 내의 타겟 클래스들의 Softmax 점수들이 서로 비슷한 값을 가진다는 뜻입니다.
-
따라서 이들의 합인 Sharpness 값이 낮을수록, 이미지 내의 여러 타겟 클래스 점수 분포가 더 균형적임을 의미합니다.
-
실험 결과는 Sharpness와 분할 성능이 대체로 음의 상관관계(Sharpness↓성능↑)를 보임을 입증했습니다. 즉, Sharpness가 낮은 프롬프트가 더 좋은 분할 성능을 제공합니다.
-
효과적인 프롬프트 선택:
- 이 지표를 통해 저자들은 "a clean origami {}."라는 프롬프트가 가장 낮은 Sharpness 값을 가짐과 동시에 최적의 분할 성능을 달성했음을 확인했습니다.
- "origami"나 "rendering"과 같은 추상적인 묘사와 "clean", "large", "weird"와 같은 형용사가 분할 성능에 긍정적인 영향을 미친다는 것도 발견했습니다. 이는 일반적인 분류 작업과 달리, WSSS에서는 객체의 본질적인 특성을 설명하는 텍스트가 더 효과적일 수 있음을 시사합니다.
3.2.2 Synonym Fusion
이 섹션에서는 WSSS에서 CLIP 모델의 텍스트 입력 기능을 최대한 활용하기 위해 동의어(synonym)를 사용하는 전략인 '동의어 통합(Synonym Fusion)'에 대해 설명합니다.
- 목적: CLIP이 이해하는 풍부한 언어에 비해 데이터셋에 제공되는 카테고리 이름은 제한적이기 때문에, 동의어를 활용하여 CLIP의 언어 임베딩과 세그멘테이션 모듈간의 의미론적 이해도를 높입니다.
- 동의어 병합 전략:
- 논문에서는 동의어를 병합하는 다양한 전략(문장 수준, 특징 수준, CAM 수준) 중에서 문장 수준(sentence-level) 병합을 사용합니다.
- 문장 수준 병합 예시: "A clean origami of person, people, human"과 같이 여러 동의어를 하나의 문장에 포함시키는 방식입니다.
- 장점: 이 방식은 다의어 문제를 해소하고, 여러 번의 순방향 계산(multiple forward passes)이 필요한 다른 방법들에 비해 시간을 효율적으로 사용할 수 있습니다.
- 동의어 획득 방법: 동의어는 WordNet과 같은 어휘 데이터베이스나 Glove 워드 임베딩(word embedding)을 통해 얻을 수 있습니다.
- 맞춤형 단어 사용: 특정 카테고리의 성능을 향상시키기 위해 맞춤형 단어를 사용할 수도 있습니다. 예를 들어, 'person' 카테고리의 CAM이 얼굴에만 집중되는 경향이 있을 때, 'person with clothes'와 같이 옷을 포함하는 표현을 사용하면 전체 몸을 커버하는 CAM을 생성하는 데 도움이 될 수 있습니다. 이는 CLIP이 'person'과 'clothes'를 별개의 카테고리로 처리할 가능성에서 비롯됩니다.
이러한 동의어 통합 전략은 이미지 수준 레이블만을 사용하는 WSSS에서 텍스트 입력의 중요성을 강조하며, CLIP의 언어 이해 능력을 적극적으로 활용하여 초기 CAM의 품질을 높이는 데 기여합니다. 특히, 데이터셋의 한정된 어휘에서 발생하는 의미적 모호성을 줄여 모델이 더 정확한 영역을 식별하도록 돕습니다.
3.3. Class-aware Attention-based Affinity (CAA)
CLIP-ES 프레임워크의 두 번째 단계는 초기 CAM을 정제하는 것입니다. 이 단계에서 저자들은 Class-aware Attention-based Affinity (CAA) 모듈을 제안했습니다.
3.4. Confidence-guided Loss (CGL)
4. Experiments
(추후 작성 예정)
5. Conclusion
-
CAM 생성 단계
- 일일이 세그멘테이션 맵을 만드는 것은 너무 어려운 일.
- 그러나 CLIP은 이미지와 텍스트에 대한 이해도가 매우 높아 추가 학습 없이 세그멘테이션 도데인에서 사용 가능.
- CAM 생성 과정에서 텍스트 정보를 추가로 주어 생성 정확도를 높임
- GradCAM에 softmax 함수를 달아 타겟을 제외한 요소나 배경이 영향을 주는 것을 억제
- 이 때 CLIP에 정제된 텍스트 정보를 주어 어떤 개체를 세그멘테이션 할지 알려줌
-
CAM 정제 단계
- 기존의 WSSS은 CAM을 만들고, 여기에 Affinity Net을 추가 학습시켜 수도 마스크를 생성.
- 그러나 ViT의 셀프 어텐션은 패치들간의 시맨틱 유사도를 파악하기 때문에, 추가학습이 필요한 Affinity Net을 대체할 수 있음.
- 셀프 어텐션 맵과 CAM을 결합하여 CAM을 정제.
-
세그멘테이션 훈련 단계
- CGL을 도입하여 수도 마스크의 퀄리티를 더욱 상승시킴