평가(Evaluation) — FID, CLIP 점수(CLIP Score), 사람 선호도(Human Preference)
생성 모델(generative model) 리더보드는 거의 예외 없이 FID, CLIP 점수, 사람 선호도 평가장(human-preference arena)의 승률을 인용합니다. 그런데 각 숫자에는 마음먹은 연구자가 충분히 악용할 수 있는 실패 양상(failure mode)이 존재합니다. 이 실패 양상을 모르면 진짜 개선과 지표를 흔드는 조작 실행(gaming run)을 구별할 수 없습니다.
유형: Build
언어: Python
선수 지식: Phase 8 · 01 (분류 체계), Phase 2 · 04 (평가 지표)
예상 시간: 약 45분
문제
생성 모델은 *샘플 품질(sample quality)*과 *조건 준수(conditioning adherence)*로 평가됩니다. 그런데 두 항목 모두 닫힌 형태의 측정값(closed-form measure)이 존재하지 않습니다. 모델이 이미지 10,000장을 렌더링해야 하고, 어떤 지표가 그 결과에 숫자를 매기며, 우리는 모델 계열과 해상도, 아키텍처가 달라도 그 숫자를 신뢰해야 합니다. 2014년부터 2026년 사이의 가혹한 검증을 살아남은 지표는 다음 세 가지입니다.
FID(Fréchet Inception Distance). Inception 네트워크의 특징 공간(feature space)에서 실제 분포와 생성 분포 사이의 거리입니다. 낮을수록 좋습니다.
CLIP 점수. 생성 이미지의 CLIP 이미지 임베딩(CLIP-image embedding)과 프롬프트의 CLIP 텍스트 임베딩(CLIP-text embedding) 사이의 코사인 유사도(cosine similarity)입니다. 높을수록 좋고, 프롬프트 준수(prompt adherence)를 측정합니다.
사람 선호도. 같은 프롬프트에 대해 두 모델을 일대일로 맞붙이고 사람 또는 GPT-4급 모델이 더 나은 쪽을 고른 결과를 엘로 점수(Elo score)로 집계합니다.
그 외에도 IS(Inception Score), KID, CMMD, ImageReward, PickScore, HPSv2, MJHQ-30k 같은 지표를 만나게 됩니다. 각 지표는 이전 지표의 한 가지 실패를 보완하려는 시도입니다.
사전 테스트
2문제 · 이 강의를 시작하기 전에 얼마나 알고 있는지 확인해보세요
1.FID는 실제 분포와 생성 분포의 특징 공간(feature space)에서 프레셰 거리를 측정합니다. 왜 최소 N=10,000개의 표본이 필요한가요?
2.CLIP 점수(CLIP score)는 CLIP 이미지 임베딩과 텍스트 임베딩 사이의 코사인 유사도를 측정합니다. 평가 지표로서의 주요 사각지대는 무엇인가요?
0/2 답변 완료
개념
FID — 샘플 품질
FID는 Heusel 등(2017)이 제안한 지표입니다. 절차는 다음과 같습니다.
N장의 실제 이미지와 N장의 생성 이미지에서 Inception-v3 특징(2048차원)을 추출합니다.
각 풀(pool)에 가우시안 분포를 맞추어 평균 μ_r, μ_g와 공분산 Σ_r, Σ_g를 계산합니다.
이를 30k개의 생성 이미지에 대해 평균 내면, 모델 사이를 비교할 수 있는 하나의 스칼라(scalar) 값이 됩니다.
실패 양상은 다음과 같습니다.
CLIP 자체의 사각지대. CLIP은 구성적 추론(compositional reasoning)이 약합니다. 예를 들어 "파란 구 위의 빨간 정육면체(a red cube on a blue sphere)" 같은 프롬프트에서는 자주 실패합니다. 결과적으로 모델이 복잡한 프롬프트를 제대로 따르지 않더라도 CLIP 점수에서는 높은 순위를 받을 수 있습니다.
짧은 프롬프트 편향. 짧은 프롬프트는 자연 상태의 이미지 분포에서 CLIP 이미지 매칭이 많이 나타납니다. 반대로 긴 프롬프트는 기계적으로 CLIP 점수가 낮아지는 경향이 있습니다.
프롬프트 조작. "high quality, 4k, masterpiece" 같은 문구를 프롬프트에 끼워 넣으면 실제 이미지-텍스트 결합(image-text binding)이 좋아지지 않아도 CLIP 점수가 부풀려질 수 있습니다.
CMMD(Jayasumana 등, 2024)는 이런 문제 중 일부를 바로잡습니다. Inception 대신 CLIP 특징을 사용하고, 프레셰 거리 대신 최대 평균 차이(maximum-mean discrepancy)를 사용합니다. 미묘한 품질 차이를 감지하는 데 더 유리합니다.
사람 선호도 — 기준 정답(ground truth)
프롬프트 풀을 정한 뒤, 모델 A와 모델 B로 같은 프롬프트의 이미지를 생성합니다. 만들어진 쌍을 사람 또는 강력한 LLM 심판(LLM judge)에게 보여주고, 그 승리 결과를 엘로(Elo) 또는 브래들리-테리(Bradley-Terry) 점수로 집계합니다. 대표적인 벤치마크는 다음과 같습니다.
PartiPrompts(Google): 12개 카테고리에 걸친 다양한 프롬프트 1,600개.
N=1000에서의 FID. N이 10k 미만이면 휴리스틱(heuristic)이 불안정합니다. 낮은 N에서 낮은 FID를 보고하는 논문은 지표 조작에 가깝습니다.
해상도가 다른 FID 비교. Inception의 299×299 크기 조정이 특징 분포를 바꿉니다. 반드시 해상도를 맞춘 경우에만 비교합니다.
하나의 시드만 보고하기. 최소 3개의 시드(seed)로 실행하고 표준편차를 함께 보고합니다.
부정 프롬프트(negative prompt)로 CLIP 점수 부풀리기. 일부 파이프라인은 프롬프트에 과적합해 CLIP 점수를 인위적으로 올립니다. 시각적 과포화(visual saturation)가 일어났는지 확인합니다.
프롬프트 중복에서 오는 엘로 편향. 두 모델이 학습 과정에서 벤치마크 프롬프트를 본 적이 있다면 엘로는 의미가 없습니다. 보류된 프롬프트 집합(held-out prompt set)을 사용합니다.
유료 크라우드 평가의 쏠림. Prolific, MTurk 주석자는 비교적 젊고 기술 친화적인 쪽으로 치우치는 경향이 있습니다. 따로 모집한 예술/디자인 전문가와 섞어 평가합니다.
사용해보기
2026년 기준 운영 평가 프로토콜은 다음과 같습니다.
축(Pillar)
최소(Minimum)
권장(Recommended)
샘플 품질(Sample quality)
보류된 실제 데이터 대비 10k FID
+ 5k CMMD + 카테고리별 부분집합 FID
프롬프트 준수(Prompt adherence)
30k CLIP 점수
+ HPSv2 + ImageReward + VQA 방식 질의응답
선호도(Preference)
기준 모델 대비 블라인드 쌍 200개
+ 사람 평가 2000쌍 + LLM 심판 + Chatbot Arena
실패 분석(Failure analysis)
사람이 직접 표시한 50개
사람이 직접 표시한 500개 + 자동 안전 분류기
네 축이 하나의 보고서에 모두 담겨 있을 때 비로소 주장이 됩니다. 어느 하나만 있으면 그저 마케팅입니다.
산출물 만들기
outputs/skill-eval-report.md로 저장합니다. 이 스킬(skill)은 새 모델 체크포인트와 기준 모델을 입력으로 받아 샘플 크기, 지표, 실패 양상 조사, 승인 기준(sign-off criteria)을 포함한 전체 평가 계획을 출력합니다.
연습문제
쉬움.code/main.py를 실행합니다. 같은 합성 분포에서 N=100과 N=1000의 FID를 비교하고, 편향 크기(bias magnitude)를 보고합니다.
중간. 합성 CLIP 방식 특징에서 CMMD를 구현합니다. Jayasumana 등(2024)의 공식을 참고하고, 품질 차이에 대한 민감도(sensitivity)를 FID와 비교합니다.
어려움. HPSv2 설정을 재현합니다. Pick-a-Pic 부분집합(subset)에서 이미지-프롬프트 쌍 1000개를 가져와, 작은 CLIP 기반 점수기(scorer)를 선호도에 맞춰 미세조정(fine-tune)한 뒤 보류된 집합과의 일치율(agreement)을 측정합니다.
핵심 용어
용어
흔한 설명
실제 의미
FID
"Fréchet Inception Distance"
실제와 생성 Inception 특징에 가우시안을 맞춘 뒤 그 사이의 프레셰 거리를 계산한 값이다.
CLIP 점수(CLIP score)
"텍스트-이미지 유사도(Text-image similarity)"
CLIP 이미지 임베딩과 텍스트 임베딩 사이의 코사인 유사도다.
CMMD
"FID의 대체 지표(FID's replacement)"
CLIP 특징에 대해 계산한 최대 평균 차이(MMD)다. 편향이 더 작고 가우시안 가정이 없다.
IS(Inception Score)
"Inception score"
`KL(p(y
HPSv2 / ImageReward / PickScore
"학습된 선호도 대리 지표(Learned preference proxies)"
사람 선호도로 학습한 작은 모델로, 자동 심판으로 사용된다.
Elo
"체스 등급(Chess rating)"
쌍대 승리(pairwise wins)를 Bradley-Terry 방식으로 집계한 등급이다.
PartiPrompts
"벤치마크 프롬프트 집합(The benchmark prompt set)"
12개 카테고리에 걸친 Google 선별 프롬프트 1,600개다.
FD-DINO
"자기지도 대체 지표(Self-sup replacement)"
DINOv2 특징을 사용하는 프레셰 거리다. ImageNet 바깥 도메인에 더 잘 맞는다.
운영 참고: 평가도 하나의 추론 워크로드(inference workload)다
10k 샘플로 FID를 돌린다는 것은 이미지를 10k장 생성한다는 뜻입니다. 1024² 해상도의 50-step SDXL base를 단일 L4 GPU에서 단일 요청 추론(single-request inference)으로 돌리면 약 11시간이 소요됩니다. 평가 예산은 실제 비용이며, 이 상황은 정확히 오프라인 추론(offline inference) 시나리오에 해당합니다. 처리량(throughput)을 최대화하고 첫 토큰까지 시간(TTFT)은 무시합니다.
배치를 크게 잡고, 지연 시간은 잊으십시오. 오프라인 평가에서는 메모리에 들어가는 가장 큰 정적 배치(static batching)를 사용합니다. 80GB H100에서 num_images_per_prompt=8로 호출한 pipe(...).images는 단일 요청 방식보다 실제 경과 시간(wall-clock)이 4-6배 빠릅니다.
실제 특징은 캐시합니다. 실제 참조 집합에 대한 Inception(FID) 또는 CLIP(CLIP 점수, CMMD) 특징 추출은 한 번만 실행하고 .npz 파일로 저장해 둡니다. 평가할 때마다 다시 계산하지 않습니다.
CI / 회귀 게이트(regression gate) 용도로는 PR마다 500개 샘플 부분집합으로 FID + CLIP 점수를 약 30분 안에 돌리고, 야간(nightly) 작업으로 전체 10k FID + HPSv2 + Elo를 돌립니다.