[저품질 사진 필터링] Quality Assessment 방식 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
1. CLIP-IQA
논문(Exploring CLIP for Assessing the Look and Feel of Images)
a. CLIP-IQA의 핵심 아이디어
- 사전학습된 CLIP 모델을 추가 학습 없이(freeze), 텍스트 프롬프트와의 유사도를 통해 이미지 품질(미적/기술적 측면 모두)을 평가
b. 목적
-
이미지의 "Look" (예: sharp, blurry, overexposed 등)
-
이미지의 "Feel" (예: beautiful, ugly, professional 등)
→ 이 두 가지 모두를 정성적으로 평가하고자 함.
c. 기본 구조
- 입력 이미지 → CLIP 이미지 인코더
- 텍스트 프롬프트 (예:
"a beautiful photo"
,"an ugly photo"
) → CLIP 텍스트 인코더 - Cosine Similarity: 이미지 임베딩과 각 텍스트 임베딩 간 유사도 측정
- Softmax + Weighting: 유사도를 점수로 변환
d. 프롬프트 설계 방식
가. 반의어 프롬프트 쌍을 사용하는 이유
- 정성적 품질 개념은 명확한 기준이 없다 → 예: “예쁜 사진”이란 무엇인가?
- → 그래서 한 가지 프롬프트만 쓰는 것이 아니라, 대조되는 개념의 쌍을 동시에 비교하여 상대적인 품질을 평가
- 논문에서는 이를 “relative measurement of quality”라고 설명
나. 예시 프롬프트 쌍
-
"a beautiful photo"
vs."an ugly photo"
-
"a professional photo"
vs."an amateur photo"
-
"a sharp photo"
vs."a blurry photo"
→ CLIP은 본래 zero-shot 분류를 위한 모델이므로, 이처럼 서로 반대 의미를 가진 텍스트 쌍을 비교하는 방식이 적합함.
e. 품질 점수 계산 방식
가. 유사도 계산
-
각 이미지 III에 대해 텍스트 쌍 $$T_{\text{pos}}, T_{\text{neg}}$$와의 cosine similarity 계산:
$$spos=cos(fI,fTpos),sneg=cos(fI,fTneg)$$
나. 소프트맥스 적용
-
위 두 유사도에 softmax 적용하여 “긍정적인 쪽”에 얼마나 가까운지 확률화:
$$p= \frac{e^{s_{\text{pos}}}}{e^{s_{\text{pos}}} + e^{s_{\text{neg}}}}$$
→ 이 값이 최종 품질 점수로 사용됨 (0~1 범위)
f. 실험 및 결과 요약
- 데이터셋: AVA, KonIQ-10k, SPAQ, RealBlur 등
- 비교 모델: BRISQUE, NIMA, MUSIQ 등
- 결과: 별도의 학습 없이도 CLIP-IQA는 기존 학습 기반 모델과 유사한 성능을 보임
- 강점:
- 라벨 없이 작동
- “look”뿐 아니라 “feel” 같은 추상적 품질도 반영 가능
g. 요약 정리
항목 | 내용 |
---|---|
모델 구조 | CLIP (image + text encoder 고정) |
입력 | 이미지 + 반의어 텍스트 프롬프트 쌍 |
출력 | Softmax 기반 품질 점수 (0~1) |
프롬프트 사용 이유 | 추상적 품질 표현을 비교 방식으로 해석하기 위함 |
학습 필요 여부 | ❌ 없음 (zero-shot 방식) |
2. GRMP-IQA
a. GRMP-IQA의 핵심 아이디어
- CLIP 모델은 freeze 상태로 유지하면서, soft prompt 학습과 gradient regularization을 통해 CLIP의 시각-언어 지식을 IQA(Task: Image Quality Assessment)에 효과적으로 적응시킴.
b. 목적
- 기존 CLIP 모델은 IQA에 직접 쓰기엔 “semantic 편향”이 크고 “fine-grained 품질 정보”가 부족함.
- 소량의 IQA 라벨만으로도 CLIP을 IQA에 잘 적응시키는 lightweight adaptation 방법 제안.
c. 기본 구조
- CLIP의 image encoder와 text encoder는 모두 freeze (사전학습 그대로 사용)
- 학습 대상은:
- Soft prompt (입력 텍스트 앞에 붙는 학습 가능한 벡터 시퀀스)
- Auxiliary mapping network (점수 추정기)
- Cosine similarity → Quality score로 변환
d. Soft Prompting: 프롬프트를 학습 가능한 벡터로 바꾸자
가. 기본 개념
- CLIP은 원래
"a photo of a dog"
같은 문장을 입력으로 받아 학습. - 이 문장들은 텍스트 인코더에 의해 임베딩으로 바뀌며, 이미지 임베딩과 비교되어 "같은 의미인지" 판단
- Soft Prompting은 이 문장을 사람이 직접 쓰는 대신, 텍스트 임베딩의 앞에 학습 가능한 벡터 토큰들을 붙여서 문장 전체의 의미를 조절하는 방법
나. 예시 비교
방식 | 입력 형태 | 의미 |
---|---|---|
Hard Prompt | "a blurry photo" → 텍스트 인코더 |
고정된 문장 |
Soft Prompt | [P1, P2, P3, ..., Pn] + "photo" → 텍스트 인코더 |
P1~Pn은 학습됨 |
- 이렇게 하면, 모델은 "photo"라는 의미 구조는 유지하면서, P1~Pn을 조절하여 이미지 품질과 더 잘 매칭되도록 학습
다. 왜 IQA에 유용한가?
-
이미지 품질은 추상적이고 문장 하나로 설명하기 어려움
예: "blurry"도 여러 종류 있음 → motion blur, defocus blur 등
-
사람이 설계한 hard prompt 하나로 표현하기 힘듦
→ Soft prompt를 학습하면, 데이터가 품질 개념을 벡터 공간에서 직접 정의할 수 있음
e. Gradient Regularization: 잘못된 특징에 의존하지 마라
가. 기본 개념
-
CLIP은 semantic alignment (예: 개, 고양이, 해변 등)에 강함
-
하지만 IQA에서는 이런 의미 정보보다는 조명, 노이즈, 선명도, 구도 등 비의미적 요소들이 중요
→ 문제: CLIP은 의미만 보고 품질을 착각할 수 있음
-
그래서 GRMP-IQA는 학습 중 다음을 유도:
- “품질이 비슷한 이미지 쌍은 CLIP의 유사도 변화가 작아야 한다.
- 품질이 다른 이미지 쌍은 유사도 변화가 커야 한다.
나. 예시
-
이미지 A (score=7.9) vs B (score=8.0) → 유사도는 비슷해야 함
-
이미지 A (score=2.0) vs C (score=8.0) → 유사도는 크게 달라야 함
-
이걸 수식으로 표현하면: $$\text{Loss}_{\text{reg}} = \left( \Delta \text{cos}(I_1, T) - \Delta y \right)^2$$
-
$$\Delta \text{cos}(I_1, T)$$: 이미지 간 cosine similarity 차이
-
$$\Delta y$$: 실제 품질 점수 차이
→ 이 둘이 일치하게끔 정규화 (regularization)
다. 정리
문제 | 해결책 |
---|---|
CLIP은 의미적 요소에 과하게 반응 | 품질 기반 변화량을 기준으로 유도 |
품질 차이가 작아도 점수 차이 큼 | gradient penalty로 변화량 제한 |
품질 차이 큰데 점수 비슷 | 학습 과정에서 차이를 강제로 확대시킴 |
f. Soft Prompt를 학습시킬 때, Gradient Regulation을 도입해서 학습
가. 개요
-
GRMP-IQA에서 soft prompt를 학습시킬 때, 단순히 회귀 손실(MSE 등)만 쓰는 게 아니라, Gradient Regularization 손실도 함께 사용해서 "품질 차이에 민감하게 작동하는 soft prompt"를 만들도록 유도.
-
학습할 때 사용하는 전체 손실 함수는 다음과 같이 구성:
$$\mathcal{L}{\text{total}}$$ = $$\underbrace{\mathcal{L}{\text{regression}}}{\text{예측 점수 vs 실제 점수}}$$ + $$\lambda \cdot \underbrace{\mathcal{L}{\text{reg}}}_{\text{cosine 변화량 vs 품질 변화량}}$$
-
$$\mathcal{L}_{\text{regression}}$$
→ 예: 이미지 품질 점수를 맞추는 MSE Loss (예측 점수 - 실제 점수)
-
$$\mathcal{L}_{\text{reg}}$$
→ 두 이미지 쌍 간 cosine similarity 변화량과 실제 품질 차이의 차이를 최소화
-
$$\lambda$$
→ 두 손실의 균형을 맞추는 가중치 하이퍼파라미터
-
나. 중요한 이유
- 단순 회귀 손실만으로 학습하면:
- 모델은 점수만 맞추려고 하고,
- 실제로는 의미 없는 feature를 써도 되게 됨
- 하지만 정규화를 함께 사용하면:
- 모델은 soft prompt를 의미 있는 방향으로 조정
- 즉, CLIP이 품질 변화에 민감하게 반응하도록 prompt를 바꾸는 것
다. 요약
항목 | 설명 |
---|---|
학습 대상 | soft prompt + 회귀 네트워크 |
고정되는 것 | CLIP 이미지/텍스트 인코더 |
사용되는 손실 | 회귀 손실 + gradient regularization 손실 |
목적 | 품질 차이에 맞춰 prompt가 의미 있는 방향으로 조정되게 유도 |
g. 성능
데이터셋 | SRCC (GRMP-IQA) | 기존 CLIP-IQA | 기타 |
---|---|---|---|
KonIQ-10k | 0.853 | 0.697 | MUSIQ: 0.832 |
LIVEC | 0.836 | - | HyperIQA: 0.772 |
SPAQ | 0.889 | - | MUSIQ: 0.861 |
- 20% 데이터만 사용해도 fully-supervised 모델 대부분을 능가
- Pre-training된 CLIP 그대로 유지하며 높은 성능을 달성함
h. 요약 정리
항목 | 내용 |
---|---|
모델 구조 | CLIP (image/text encoder 고정) + 학습 가능한 soft prompt |
입력 | 이미지 + 학습된 soft prompt 기반 문장 |
출력 | MLP 회귀기로 예측된 품질 점수 |
핵심 기술 | Meta-prompt pretraining + Quality-aware gradient regularization |
학습 대상 | 소프트 프롬프트 + 회귀 네트워크 (CLIP은 고정) |
라벨 효율성 | ✅ 매우 우수 (20% 라벨만 사용해도 high SOTA) |