Fréchet Inception Distance (FID)
Fréchet Inception Distance (FID) が生成AI画像の品質、忠実度、多様性をどのように評価し、スコアをどのように計算して解釈するかを学びます。
Fréchet Inception Distance (FID) は、生成モデルによって生成された画像と、参照用の現実の画像セットを比較するための指標です。両方のセットを学習済みの視覚的特徴に変換し、各特徴の分布を要約して、その間の距離を測定します。FIDが低いほど、生成された画像が視覚的品質と多様性の両方において現実の画像により似ていることを一般に示し、FIDが高いほど、アーティファクト、バリエーションの不足、またはコンテンツの不一致を示唆します。
FIDの仕組み#
FIDは、個別の画像ペアではなく画像セットを評価します。これにより、generative AI やgenerative adversarial networks、diffusion models などのシステムを評価する際に役立ちます。
計算は主に4つのステップで行われます。
- 現実の画像と生成された画像は、通常 ImageNet で事前学習された Inception v3 feature extractor を通過します。
- ネットワークは各画像を、高レベルな視覚的特徴の数値表現である embedding に変換します。
- FIDは、現実および生成された特徴セットの平均と covariance matrix を推定します。平均はその中心を表し、共分散は特徴がどのように連動して変化するかを記述します。
- 平均間の二乗距離と共分散行列の差を組み合わせます。この計算には matrix square root が含まれます。
得られるFIDスコアは非負です。理想的な極限では同一の特徴分布はゼロを生み出しますが、有限のサンプルや数値的影響があるため、現実の画像の2つのサブセットであってもゼロ以外のスコアを生み出す可能性があります。
FIDスコアの解釈#
低いほど優れていますが、「良い」FIDスコアに対する普遍的な閾値はありません。解釈は、データセット、画像解像度、サンプル数、前処理パイプライン、および特徴抽出器によって異なります。スコアは、これらの条件が一貫している場合にのみ比較する必要があります。
FIDは、生成された画像の2つの重要な側面に反応します。
- 忠実度: ぼやけた画像、非現実的なテクスチャ、歪んだオブジェクト、およびその他の視覚的アーティファクトにより、生成された特徴が現実の分布から離れる可能性があります。
- 多様性: 反復的な出力や model collapse は特徴のバリエーションを減少させ、生成された分布の共分散を変化させます。
ただし、FIDはスコアがなぜ変化したのかを説明しません。また、稀であるが重要な失敗ケース、記憶された画像、不正確なプロンプトの整列、または dataset bias を見落とす可能性もあります。したがって、チームはFIDを視覚的検査、アプリケーション固有のテスト、およびサブグループ分析と組み合わせる必要があります。
FIDと関連する指標の比較#
FIDは、他の画像生成およびコンピュータビジョンの指標と混同されがちです。
- Inception Score: 生成された画像を現実の参照画像と直接比較することなく評価します。FIDは現実と生成されたサンプルの両方を使用するため、一般に分布の不一致についてより多くの情報を提供します。
- Kernel Inception Distance: こちらも特徴分布を比較しますが、カーネルベースの推定量を使用します。サンプル効率の良い推定や偏りのない推定が重要な場合に役立ちます。
- Mean average precision: オブジェクト検出器がラベル付けされたオブジェクトを正しく分類およびローカライズするかどうかを測定します。FIDは検出精度ではなく、生成された画像の分布を評価します。
- 知覚的類似性: 通常、対応する画像ペアを比較します。一方、FIDは2つのコレクション全体で同様の統計情報を持っているかどうかを評価します。
実世界での利用例#
実践的なアプリケーションの1つは、製造検査のための synthetic data の評価です。チームは、引っかき傷、亀裂、または欠損部品の画像を生成し、実際の製造ラインからの保持された写真に対してFIDを計算する場合があります。高スコアは、合成照明、テクスチャ、または欠陥の形状が展開条件に似ていないことを明らかにすることがあります。ジェネレータを改善した後も、チームは検出器をトレーニングし、Ultralytics validation mode を使用してタスク固有のパフォーマンスを確認する必要があります。
2つ目の例は、シミュレートされた道路シーンの生成です。エンジニアは、自動運転のトレーニングデータを拡張するために、夜間、雨、または霧の画像を作成する場合があります。FIDは、各合成条件をその環境からの実際のフレームと比較することができます。大きな距離は、転移可能な道路特徴ではなく、下流の検出器に非現実的な背景や天候のアーティファクトを学習させる原因となる可能性のあるドメインの不一致を警告します。
Ultralytics Platform dataset management は、トレーニングと展開の前に、チームが現実および合成の画像分割を整理、検査、およびバージョニングするのに役立ちます。
PythonでのFIDの計算#
文書化されている TorchMetrics FID implementation は、現実および生成された画像のバッチを受け入れます。
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 model evaluation workflow でFIDを補完してください。









