Fréchet Inception Distance (FID)
Fréchet Inception Distance (FID)가 생성형 AI 이미지 품질, 충실도 및 다양성을 평가하는 방법과 점수를 계산하고 해석하는 방법을 알아보세요.
Fréchet Inception Distance (FID)는 생성 모델이 생성한 이미지와 실제 이미지 참조 세트를 비교하기 위한 지표입니다. 이 지표는 두 세트를 학습된 시각적 특징으로 변환하고, 각 특징 분포를 요약하며, 특징 분포 간의 거리를 측정합니다. 일반적으로 FID가 낮을수록 생성된 이미지가 시각적 품질과 다양성 측면에서 실제 이미지와 더 유사함을 나타내며, FID가 높을수록 아티팩트, 누락된 변동성 또는 콘텐츠 불일치가 있음을 시사합니다.
FID 작동 방식#
FID는 개별 이미지 쌍이 아닌 이미지 세트를 평가합니다. 따라서 생성형 AI 시스템(예: 생성적 적대 신경망 및 확산 모델)을 평가하는 데 유용합니다.
계산은 네 가지 주요 단계로 이루어집니다:
- 실제 이미지와 생성된 이미지가 ImageNet에 사전 학습된 Inception v3 특징 추출기를 통과합니다.
- 네트워크는 각 이미지를 상위 수준의 시각적 특성을 나타내는 수치적 표현인 임베딩으로 변환합니다.
- FID는 실제 및 생성된 특징 세트의 평균과 공분산 행렬을 추정합니다. 평균은 중심을 나타내며, 공분산은 특징들이 함께 변동하는 양상을 설명합니다.
- 이 지표는 평균 간의 제곱 거리와 공분산 행렬 간의 차이를 결합합니다. 이 연산에는 행렬 제곱근이 포함됩니다.
결과로 도출되는 FID 점수는 음수가 아닙니다. 이상적인 극한 상태에서는 동일한 특징 분포가 0을 산출하겠지만, 유한한 샘플과 수치적 영향으로 인해 두 개의 실제 이미지 하위 세트조차 0이 아닌 점수를 산출할 수 있습니다.
FID 점수 해석#
낮을수록 좋지만, “좋은” FID 점수에 대한 보편적인 임계값은 없습니다. 해석은 데이터셋, 이미지 해상도, 샘플 수, 전처리 파이프라인 및 특징 추출기에 따라 달라집니다. 점수는 이러한 조건이 일관될 때만 비교해야 합니다.
FID는 생성된 이미지의 두 가지 중요한 측면에 반응합니다:
- 충실도: 흐린 이미지, 비현실적인 텍스처, 왜곡된 객체 및 기타 시각적 아티팩트는 생성된 특징을 실제 분포에서 멀어지게 할 수 있습니다.
- 다양성: 반복적인 출력 또는 모델 붕괴는 특징 변동성을 줄여 생성된 분포의 공분산을 변화시킵니다.
그러나 FID는 점수가 왜 변경되었는지 설명하지 않습니다. 또한 드물지만 중요한 실패 사례, 암기된 이미지, 잘못된 프롬프트 정렬 또는 데이터셋 편향을 간과할 수 있습니다. 따라서 팀은 FID를 시각적 검사, 애플리케이션별 테스트 및 하위 그룹 분석과 결합해야 합니다.
FID와 관련 지표 비교#
FID는 다른 이미지 생성 및 컴퓨터 비전 지표와 종종 혼동됩니다:
- Inception Score: 실제 참조 이미지와 직접 비교하지 않고 생성된 이미지를 평가합니다. FID는 실제 샘플과 생성된 샘플을 모두 사용하기 때문에 일반적으로 분포 불일치에 대해 더 유용한 정보를 제공합니다.
- Kernel Inception Distance: 마찬가지로 특징 분포를 비교하지만 커널 기반 추정기를 사용합니다. 샘플 효율적이거나 편향되지 않은 추정이 중요할 때 유용할 수 있습니다.
- 평균 정밀도: 객체 검출기가 라벨이 지정된 객체를 올바르게 분류하고 지역화하는지 측정합니다. FID는 검출 정확도가 아니라 생성된 이미지 분포를 평가합니다.
- 지각적 유사성: 대개 해당하는 이미지 쌍을 비교합니다. 반면 FID는 두 컬렉션이 유사한 전체 통계치를 갖는지 평가합니다.
실제 적용 사례#
한 가지 실용적인 애플리케이션은 제조 검사를 위한 합성 데이터를 평가하는 것입니다. 팀은 긁힘, 균열 또는 누락된 부품의 이미지를 생성하고 실제 생산 라인의 홀드아웃 사진과 비교하여 FID를 계산할 수 있습니다. 높은 점수는 합성 조명, 텍스처 또는 결함 모양이 배포 조건과 유사하지 않음을 나타낼 수 있습니다. 생성기를 개선한 후에도 팀은 여전히 감지기를 학습시키고 Ultralytics 검증 모드를 사용하여 작업별 성능을 확인해야 합니다.
두 번째 예는 시뮬레이션된 도로 장면 생성입니다. 엔지니어는 자율 주행 학습 데이터를 확장하기 위해 야간, 비 또는 안개 이미지를 생성할 수 있습니다. FID는 각 합성 조건을 해당 환경의 실제 프레임과 비교할 수 있습니다. 큰 거리는 다운스트림 감지기로 하여금 전송 가능한 도로 특징 대신 비현실적인 배경이나 날씨 아티팩트를 학습하게 만들 수 있는 도메인 불일치를 경고합니다.
Ultralytics 플랫폼 데이터셋 관리는 팀이 학습 및 배포 전에 실제 이미지 분할과 합성 이미지 분할을 구성, 검사 및 버전 관리하는 데 도움을 줄 수 있습니다.
Python에서 FID 계산하기#
문서화된 TorchMetrics FID 구현은 실제 이미지와 생성된 이미지의 배치를 허용합니다:
import torch
from torchmetrics.image.fid import FrechetInceptionDistance
generator = torch.Generator().manual_seed(7)
real_images = torch.randint(0, 256, (64, 3, 64, 64), dtype=torch.uint8, generator=generator)
generated_images = torch.randint(32, 224, (64, 3, 64, 64), dtype=torch.uint8, generator=generator)
fid = FrechetInceptionDistance(feature=64)
fid.set_dtype(torch.float64)
fid.update(real_images, real=True)
fid.update(generated_images, real=False)
print(f"FID: {fid.compute().item():.3f}")이 작은 예제는 빠른 시연을 위해 64차원 특징을 사용합니다. 표준 벤치마크 비교는 일반적으로 기본 2,048차원 표현과 훨씬 더 많은 이미지를 사용합니다. 신뢰할 수 있는 평가를 위해 전처리 및 샘플 수를 고정하고, 정확한 구성을 보고하고, 가능하면 측정을 반복하고, 생성된 데이터가 다운스트림 비전 작업을 지원할 때 Ultralytics 모델 평가 워크플로로 FID를 보완하십시오.









