[저품질 사진 필터링] 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

논문(Boosting CLIP Adaptation for Image Quality Assessment via Meta-Prompt Learning and Gradient Regularization)

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)