생성 모델 평가: IS · FID · 정밀도/재현율 · CLIP 점수 · 사람 평가
IS · FID · 정밀도/재현율 · CLIP 점수를 작은 숫자로 계산하고 한계와 비교 조건을 익히는 수업
먼저 알아야 할 것
다루는 내용
생성 모델의 품질 · 다양성 · 정합성을 재는 대표 지표를 정리합니다. Inception Score와 FID의 식을 클래스 2개 · 1/2차원 정규분포 예로 직접 계산하고, 표본 수 편향과 구현 차이 같은 비교 주의점을 설명합니다. k-최근접 이웃 영역으로 정의한 정밀도/재현율, CLIPScore, 사람 짝 비교를 다루고 목적별 지표 선택표를 제시합니다.
해설
생성 모델 평가: IS · FID · 정밀도/재현율 · CLIP 점수 · 사람 평가
분류기는 정답과 비교하면 되지만, 생성 모델에는 "정답 이미지"가 없습니다. 그래서 "표본이 얼마나 그럴듯한가(품질)", "데이터의 다양한 모습을 얼마나 다 만드는가(다양성)", "요청한 조건을 지켰는가(정합성)"를 따로 잽니다. 이 수업은 논문과 리더보드에서 가장 자주 보는 지표 — IS, FID, 정밀도/재현율, CLIP 점수 — 를 작은 숫자로 직접 계산하고, 각각이 무엇을 놓치는지 정리합니다.
| 항목 | 내용 |
|---|---|
| 참고 출처 | Salimans 외(2016) Inception Score, Heusel 외(NIPS 2017) FID, Kynkäänniemi 외(2019) 개선된 정밀도/재현율, Hessel 외(EMNLP 2021) CLIPScore, Chong · Forsyth(CVPR 2020), pytorch-fid 구현 |
| 트랙 · 수준 | 생성 모델 · 중급 |
| 이 수업이 다루는 범위 | 평가가 어려운 이유, 가능도 기반 평가, IS 식과 손계산, FID 식과 1 · 2차원 손계산, 표본 수 편향, 정밀도 · 재현율(k-최근접 이웃), CLIP 점수, 사람 평가, 지표 고르는 법 |
들어가기 전에
- 생성 모델 총론 — 가능도를 계산할 수 있는 모델과 없는 모델.
- 정보 이론 최소한 — KL 발산. IS가 KL로 정의됩니다.
- 모델 평가와 과적합 — 정밀도 · 재현율의 원래 뜻.
- CLIP — 이미지와 글을 같은 공간에 놓는 모델.
한눈에 보기
- 품질 · 다양성 · 정합성이 서로 다른 축이며, 지표 하나로 다 잴 수 없다는 것을 압니다.
- IS 를 이미지 두 장으로 계산합니다.
- FID 를 1 · 2차원 예로 계산합니다.
- 정밀도/재현율이 "품질"과 "다양성"을 따로 보여 주는 방식을 점 네 개로 확인합니다.
- CLIP 점수 · 사람 평가를 언제 쓰는지, 지표를 비교할 때 지켜야 할 조건을 정리합니다.
1. 왜 평가가 어려운가
직관(해설용 비유). 요리 대회 심사를 생각해 봅니다. 한 접시가 맛있는지(품질), 참가자가 여러 종류의 요리를 할 줄 아는지(다양성), 주문한 메뉴를 만들었는지(정합성)는 서로 다른 질문입니다. 김치찌개 한 가지만 완벽하게 만드는 참가자는 품질 점수는 높지만 다양성 점수는 낮습니다 — GAN의 모드 붕괴가 바로 이런 경우입니다.
가능도로 재면 되지 않나. 자기회귀 · 플로우처럼 가능도를 계산할 수 있는 모델은 시험 데이터의 평균 음의 로그 가능도(이미지에서는 흔히 차원당 비트, bits/dim)로 비교할 수 있습니다. 그러나 (1) GAN처럼 가능도가 없는 모델에는 쓸 수 없고, (2) DDPM 해설 에서 보듯 가능도가 좋지 않아도 표본은 아주 좋을 수 있어, 가능도와 눈으로 본 품질이 늘 같이 가지 않습니다. 그래서 표본 자체를 재는 지표가 필요합니다.
2. Inception Score(IS): 확신 있고 고루 다양한가
Salimans 외(2016)는 ImageNet으로 학습한 Inception 분류기에 생성 이미지를 넣고 클래스 확률 를 봅니다.
| 기호 | 뜻 |
|---|---|
| 이미지 한 장에 대한 분류기의 클래스 확률. 뾰족할수록 "무엇인지 분명한" 이미지 | |
| 모든 생성 이미지의 클래스 확률 평균. 평평할수록 여러 클래스를 고루 만듦 | |
| KL | 두 조건이 다 만족될 때 커짐 |
숫자로 해 보기(해설용, 클래스 2개).
- 이미지 두 장의 가 , : 평균 . 각 KL . IS
- 두 장 모두 (한 클래스만 생성): 이라 KL , IS (최솟값)
- 두 장이 각각 완벽히 확신하고 클래스가 고르면 IS는 클래스 수(여기서 2)에 가까워집니다(최댓값)
한계. 논문 스스로 IS를 직접 최적화하면 적대적 예제가 만들어질 수 있다고 경고하며, 표본은 약 5만 장 정도로 많이 쓰라고 권합니다. 또 IS는 진짜 데이터와 비교하지 않습니다. ImageNet 클래스가 아닌 데이터(얼굴, 의료 영상)에는 의미가 약합니다.
3. FID: 진짜와 가짜의 특징 분포 비교
Heusel 외(NIPS 2017)는 진짜 이미지와 생성 이미지를 각각 Inception 신경망에 넣어 특징 벡터를 뽑고(논문은 Inception-v3의 마지막 풀링 층을 쓰고 생성 이미지 5만 장으로 계산했으며, 널리 쓰이는 구현 pytorch-fid도 이 2048차원 특징이 기본입니다), 두 특징 집합을 각각 다변량 정규분포로 근사한 뒤 둘 사이의 프레셰 거리(정규분포 사이의 바서슈타인-2 거리)를 잽니다.
| 기호 | 뜻 |
|---|---|
| 진짜 이미지 특징의 평균 벡터 · 공분산 행렬 | |
| 생성 이미지 특징의 평균 · 공분산 | |
| 첫 항 | 평균이 얼마나 떨어졌나(전형적인 모습의 차이) |
| 둘째 항 | 퍼짐(다양성 · 모양)이 얼마나 다른가 |
| 대각 원소의 합 |
낮을수록 좋고, 두 분포가 같으면 0입니다.
숫자로 해 보기(해설용).
- 1차원. 진짜 , 생성 . 첫 항 , 둘째 항 . FID .
- 2차원. 진짜 평균 · 공분산 , 생성 평균 · 공분산 . 첫 항 , 둘째 항 . FID .
- 모드 붕괴 흉내. 평균은 같은데 생성 공분산이 로 쪼그라들면(늘 비슷한 이미지만 생성) 첫 항은 0이지만 둘째 항이 입니다. FID는 다양성 부족도 벌점으로 잡습니다.
(위 세 값은 scipy의 행렬 제곱근으로 계산해 확인했습니다.)
왜 특징 공간에서 재나. 픽셀끼리 직접 비교하면 한 칸만 밀린 같은 사진도 아주 달라 보입니다. 분류기의 깊은 특징은 "무엇이 그려졌는가"에 가까운 정보를 담아, 사람의 판단과 더 잘 맞습니다. 논문은 가우시안 잡음 · 흐림 · 검은 사각형 덮기 · 소용돌이 왜곡 · 소금-후추 잡음 · 다른 데이터(ImageNet) 섞기의 정도를 키울수록 FID가 단조롭게 커지는 것을 보였습니다.
주의할 점.
- 표본 수. Chong · Forsyth(CVPR 2020)는 유한한 표본으로 계산한 FID · IS가 편향되어 있고, 그 편향이 평가하는 모델마다 다르다 고 보였습니다. 그래서 표본 수가 다른 FID끼리는 비교하면 안 되고, 논문들은 보통 5만 장 같은 큰 수를 씁니다. pytorch-fid 문서도 기본 2048차원 특징을 쓰려면 이미지가 2048장 이상 있어야 한다는 취지로 안내합니다.
- 구현 · 전처리. 이미지 크기 조정 방식, 특징 추출 신경망 버전이 다르면 값이 달라집니다. 같은 구현으로 잰 값만 비교합니다.
- 한 숫자의 한계. FID 하나로는 품질 문제인지 다양성 문제인지 알 수 없습니다. 그래서 다음 지표가 나왔습니다.
4. 정밀도와 재현율: 품질과 다양성을 따로
Kynkäänniemi 외(2019)의 개선된 정밀도/재현율은 특징 공간에서 "데이터가 사는 영역(다양체)"을 직접 어림합니다.
단계.
- 진짜 · 생성 이미지를 특징 벡터로 바꿉니다(논문 기본은 VGG-16의 둘째 완전 연결 층).
- 각 집합에서 점마다 번째로 가까운 이웃까지의 거리 를 반지름으로 하는 구를 그립니다(논문 기본 ). 구들의 합집합이 그 집합의 영역입니다.
- 정밀도(precision) = 생성 표본 중 진짜 영역 안에 들어간 비율 → 품질
- 재현율(recall) = 진짜 표본 중 생성 영역 안에 들어간 비율 → 다양성
논문은 진짜 · 생성 각 5만 장을 썼습니다.
숫자로 해 보기(해설용, 1차원 · ). 진짜 점 의 반지름은 모두 1(가장 가까운 이웃까지 거리)입니다.
- 생성 : 앞 세 점은 진짜 영역 안, 5는 밖 → 정밀도 . 그런데 생성 점 5의 반지름이 이나 되어 진짜 점 1 · 2 · 3을 모두 덮습니다 → 재현율 . 이상치 하나가 영역을 크게 부풀려 재현율을 과대평가한 것입니다.
- 생성 (한곳에 몰림): 모두 진짜 영역 안 → 정밀도 . 생성 반지름이 씩이라 진짜 점 1만 덮음 → 재현율 . 모드 붕괴는 "정밀도 높음 · 재현율 낮음" 으로 드러납니다.
첫 예처럼 가 작고 표본이 적으면 이상치에 흔들리므로, 실제로는 큰 표본과 같은 값을 씁니다. Dhariwal · Nichol(2021)의 표에서도 조건부 모델에 분류기 가이던스를 세게 걸수록(배율 1 → 10) 정밀도는 0.82 → 0.88로 오르고 재현율은 0.52 → 0.32로 떨어졌습니다. 이것이 확산 모델 실전 의 CFG 표에서 IS가 오르고 FID가 나빠지는 것과 같은 맞바꿈입니다.
5. CLIP 점수: 글과 그림이 맞는가
텍스트-이미지 모델은 "요청한 내용을 그렸는가"도 재야 합니다. Hessel 외(EMNLP 2021)의 CLIPScore는 원래 이미지 캡션 평가용으로, 참조 문장 없이 CLIP 임베딩의 코사인 유사도로 점수를 매깁니다.
| 기호 | 뜻 |
|---|---|
| 문장의 CLIP 텍스트 임베딩(논문은 문장 앞에 "A photo depicts"를 붙임) | |
| 이미지의 CLIP 이미지 임베딩(논문은 ViT-B/32) | |
| 점수 범위를 0~1 근처로 늘리는 배율 |
숫자로 해 보기(해설용). 코사인 유사도가 0.32면 점수는 입니다. 음수면 0으로 자릅니다. 생성 모델 평가에서는 같은 아이디어로 "프롬프트와 생성 이미지의 CLIP 유사도"를 정합성 지표로 씁니다. CLIP이 가진 편향과 약점(개수 세기, 위치 관계 등)은 그대로 점수에 들어갑니다.
6. 사람 평가
자동 지표는 결국 사람 판단을 흉내 내는 대리 지표입니다. 최종 판단에는 사람 평가를 함께 씁니다.
- 짝 비교: 같은 프롬프트로 두 모델의 결과를 나란히 보여 주고 더 나은 쪽을 고르게 합니다. 점수 척도보다 사람 사이 기준 차이가 작습니다.
- 항목별 평가: 사실감 · 프롬프트 충실도 · 글자 렌더링처럼 축을 나눠 묻습니다.
- 설계 주의: 평가자가 어느 모델인지 모르게 하고(눈가림), 순서를 섞고, 프롬프트 집합을 미리 고정합니다.
flowchart LR
G[생성 표본 N장] --> F[특징 추출<br/>Inception · VGG · CLIP]
R[진짜 표본 N장] --> F
P[프롬프트] --> F
F --> FID[FID<br/>분포 전체 닮음]
F --> PR[정밀도 · 재현율<br/>품질 · 다양성 분리]
F --> IS[IS<br/>확신 · 클래스 고르기]
F --> CS[CLIP 점수<br/>글-그림 정합성]
FID --> D[모델 비교 · 결정]
PR --> D
IS --> D
CS --> D
H[사람 짝 비교] --> D7. 지표 고르는 법 · 비교 체크리스트
| 목적 | 1순위 지표 | 같이 볼 것 |
|---|---|---|
| 무조건부 이미지 생성 품질 | FID | 정밀도 · 재현율, 표본 눈검사 |
| 모드 붕괴 진단 | 재현율 | 봉우리(클래스)별 개수 |
| 클래스 조건 생성 | FID + IS | 가이던스 세기별 곡선 |
| 텍스트-이미지 | CLIP 유사도 + FID | 사람 짝 비교 |
| 가능도 모델 | bits/dim | 표본 품질 지표 |
비교할 때 지킬 것. 같은 표본 수, 같은 구현 · 특징 신경망, 같은 해상도 · 전처리, 같은 진짜 데이터 세트(학습용인지 검증용인지 포함). 이 조건이 다른 숫자끼리의 비교는 의미가 없습니다.
연습 문제
- 진짜 , 생성 의 1차원 FID는?
- 풀이: 첫 항 0, 둘째 항 . FID 입니다.
- 클래스 2개에서 생성 이미지 두 장의 가 모두 이면 IS는?
- 풀이: 와 같아 KL , IS 입니다. 고르지만 확신이 없는 경우도 최솟값입니다.
- 정밀도 0.95, 재현율 0.30인 모델은 어떤 문제가 있나요?
- 풀이: 만든 것은 대부분 진짜 같지만 진짜 데이터의 다양한 모습 중 일부만 만듭니다. 모드 붕괴나 지나친 가이던스를 의심합니다.
- 코사인 유사도 −0.1인 이미지-문장 쌍의 CLIP-S는?
- 풀이: 이므로 0입니다.
스스로 점검
- IS와 FID의 가장 큰 차이는?
- 답: IS는 생성 이미지만 보고 분류기의 확신과 클래스 다양성을 재며 진짜 데이터와 비교하지 않습니다. FID는 진짜와 생성 이미지의 특징 분포를 직접 비교합니다.
- 표본 수가 다른 두 FID 값을 비교하면 안 되는 이유는?
- 답: 유한 표본 FID에는 편향이 있고 그 크기가 표본 수와 모델에 따라 달라서, 차이가 모델 품질 때문인지 편향 때문인지 구분할 수 없기 때문입니다.
- 정밀도/재현율이 FID 하나보다 나은 점은?
- 답: 품질(정밀도)과 다양성(재현율)을 따로 보여 주어, 성능이 나쁜 원인이 어느 쪽인지 진단할 수 있습니다.
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 품질 · 다양성 · 정합성 | 그럴듯함 · 데이터 모습을 고루 만드는 정도 · 조건을 지킨 정도 |
| bits/dim | 데이터 한 차원을 부호화하는 데 드는 평균 비트(낮을수록 가능도 좋음) |
| Inception Score(IS) | 분류기 확신과 클래스 다양성을 합친 점수(높을수록 좋음) |
| FID | 진짜 · 생성 특징 분포 사이의 프레셰 거리(낮을수록 좋음) |
| 공분산 행렬 | 여러 특징이 함께 퍼진 모양을 나타내는 행렬 |
| 정밀도(생성 모델) | 생성 표본 중 진짜 영역에 든 비율 |
| 재현율(생성 모델) | 진짜 표본 중 생성 영역에 든 비율 |
| k-최근접 이웃 반지름 | 점에서 k번째로 가까운 이웃까지의 거리 |
| CLIP 점수 | 이미지와 문장 임베딩의 코사인 유사도 기반 정합성 점수 |
| 짝 비교 | 두 결과 중 더 나은 쪽을 고르게 하는 사람 평가 |
더 깊이 보려면
- pytorch-fid(FID 계산 구현, Apache-2.0): github.com/mseitzer/pytorch-fid
- Chong · Forsyth, Effectively Unbiased FID and Inception Score: arxiv.org/abs/1911.07023
- 잡음 제거 확산 확률 모델 (DDPM) — FID 3.17 · IS 9.46과 가능도의 간극 사례
다음에 볼 것
- 소리를 숫자로: 샘플링 · 나이퀴스트 · 푸리에 변환 · 스펙트로그램 · 멜 스케일 — 생성 모델이 음성 합성에서 어떻게 쓰이는지 보려면, 먼저 소리를 숫자로 바꾸는 법부터
- 확산 정책: 행동을 확산 모델로 생성하기 — 생성 모델을 로봇 행동 생성에 쓴 사례
- Cosmos: 피지컬 AI를 위한 월드 기반 모델 플랫폼 — 영상 생성 모델을 물리 세계 시뮬레이터로 쓰고 평가하는 사례
라이선스
본문은 KAITABASE 자체 해설입니다. 각 논문은 요약 · 인용만 했고, pytorch-fid는 Apache-2.0 공개 구현입니다. 클래스 확률 · 정규분포 · 점 집합 숫자는 이 수업을 위해 만든 해설용 예입니다.
출처
- Salimans 외, Improved Techniques for Training GANs(2016): arxiv.org/abs/1606.03498
- Heusel 외, GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium(NIPS 2017): arxiv.org/abs/1706.08500
- Kynkäänniemi 외, Improved Precision and Recall Metric for Assessing Generative Models(2019): arxiv.org/abs/1904.06991
- Hessel 외, CLIPScore: A Reference-free Evaluation Metric for Image Captioning(EMNLP 2021): arxiv.org/abs/2104.08718
- Chong · Forsyth, Effectively Unbiased FID and Inception Score and where to find them(CVPR 2020): arxiv.org/abs/1911.07023
- Dhariwal · Nichol, Diffusion Models Beat GANs on Image Synthesis(2021) 표 4: arxiv.org/abs/2105.05233
- pytorch-fid: github.com/mseitzer/pytorch-fid
AI 원리부터 이해하기 · 생성 모델 모듈
생성 모델 모듈 학습
이 글은 생성 모델 모듈의 학습 자료입니다. 전체 10개 자료 중 10번째입니다.
출처·원문
원문 보기요약만