Fréchet Inception Distance (FID)
Расстояние Фреше—Inception (FID) оценивает сгенерированные изображения, сравнивая статистики признаков Inception с реальными фотографиями. Как его вычисляют и сравнивают.
Расстояние Фреше между распределениями признаков Inception (FID) — метрика, оценивающая генеративную модель изображений путем сравнения статистик созданных ею изображений со статистиками реальных изображений. Оба набора пропускают через предварительно обученную сеть Inception v3, признаки каждого набора описывают многомерным гауссовым распределением со средним значением и ковариационной матрицей, а FID — это расстояние Фреше между двумя распределениями. Чем меньше значение, тем лучше; нулевая оценка означает, что средние значения и ковариационные матрицы обоих наборов признаков совпадают. Мартин Хойзель и его коллеги из Университета имени Иоганна Кеплера в Линце представили FID в 2017 году в работе GANs Trained by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium, и эта метрика быстро сменила оценку Inception Score в качестве стандартной метрики для генеративно-состязательных сетей (GAN), а позднее — для диффузионных моделей.
Как рассчитывается FID#
- Сгенерируй большую выборку изображений — обычно 50,000 — и собери эталонный набор реальных изображений, как правило, обучающую выборку.
- Измените размер каждого изображения до 299 x 299 пикселей и пропустите его через Inception v3 — сверточную нейронную сеть, обученную на классификацию изображений по набору данных ImageNet. В качестве эмбеддинга изображения сохраните выход размерностью 2,048 из последнего слоя пулинга.
- Вычисли вектор математического ожидания и ковариационную матрицу эмбеддингов реальных изображений и эмбеддингов сгенерированных изображений.
- Объедини их: FID = (квадрат расстояния между двумя математическими ожиданиями) + trace(C_real + C_gen - 2 x sqrt(C_real x C_gen)), где sqrt — квадратный корень матрицы.
Первое слагаемое увеличивается, когда сгенерированные изображения в среднем отличаются от реальных, например из-за цветового оттенка или неверного набора объектов. Второе растет, если их разнообразие отличается от реального, как при коллапсе мод — сбое GAN, при котором генератор создает лишь несколько типов результатов. Таким образом, одно число отражает и достоверность, и разнообразие, поэтому FID стал стандартной оценкой для систем генерации изображений по тексту, например Stable Diffusion.
Тот же расчёт на NumPy для смоделированных 64-мерных векторов признаков:
import numpy as np
rng = np.random.default_rng(0)
# Simulated 64-D feature vectors for 5,000 real and 5,000 generated images
real = rng.normal(0.0, 1.0, size=(5000, 64))
generated = rng.normal(0.3, 0.8, size=(5000, 64)) # shifted mean, less variety
# Summarize each set as a Gaussian: a mean vector and a covariance matrix
mu_r, mu_g = real.mean(axis=0), generated.mean(axis=0)
cov_r, cov_g = np.cov(real, rowvar=False), np.cov(generated, rowvar=False)
# Trace of the matrix square root of cov_r @ cov_g, via its eigenvalues
tr_covmean = np.sqrt(np.linalg.eigvals(cov_r @ cov_g)).real.sum()
# FID = squared distance between means + covariance mismatch
fid = ((mu_r - mu_g) ** 2).sum() + np.trace(cov_r) + np.trace(cov_g) - 2 * tr_covmean
print(f"FID: {fid:.2f}")Скрипт выводит значение FID 8.78. Смещение математического ожидания даёт около 5.8, а меньшее рассеяние — около 2.6. Оставшиеся полбалла связаны с оценкой статистик по конечной выборке, которая всегда повышает FID. Для реальных оценок библиотеки, например TorchMetrics FID, извлекают признаки с помощью исходных весов Inception из TensorFlow, опубликованных вместе с метрикой. В Inception v3 из Torchvision, обученной на ImageNet, используются другие веса, поэтому её результаты нельзя сравнивать с опубликованными.
Как интерпретировать и сравнивать значения FID#
Значения FID можно сравнивать только при одинаковых условиях: с одним эталонным набором, разрешением изображений, количеством образцов и предварительной обработкой. Изменение размера изображений с помощью другой библиотеки или сохранение их в формате JPEG может сдвинуть оценку на несколько пунктов; эта проблема привела к созданию реализации Clean-FID. Поскольку небольшие выборки завышают оценку, авторы исходной работы рекомендуют использовать не менее 10,000 изображений; оценку по 5,000 образцам нельзя сравнивать с оценкой по 50,000 образцам.
Для сравнения: StyleGAN2 достиг FID 2.84 на изображениях лиц размером 1024 x 1024 из набора данных FFHQ, а при генерации изображений по тексту без дополнительного обучения на 30,000 описаниях MS-COCO модель Imagen от Google получила оценку 7.27 против 10.39 у DALL-E 2.
Другие метрики генерации изображений#
- Оценка Inception (IS): Оценивает только сгенерированные изображения — по уверенности и разнообразию их классификации сетью Inception. Реальные данные при этом не используются, поэтому метрика не выявляет модель, создающую четкие изображения неправильного содержания.
- Расстояние по ядру между признаками Inception (KID): Сравнивает те же признаки Inception с помощью несмещенной оценки на основе ядра, что делает ее надежнее при небольшом размере выборки.
- Метрика CLIP: Оценивает, насколько изображение соответствует текстовому запросу, чего не отражает FID, поэтому для моделей генерации изображений по тексту обычно приводят обе оценки.
- Точность и полнота генеративных моделей: Разделяют единую оценку FID на достоверность — долю сгенерированных изображений, похожих на реальные, — и охват — долю разнообразия реальных изображений, которую воспроизводит модель.
- FD-DINOv2: Вычисляет то же расстояние Фреше по признакам DINOv2 — визуального трансформера с самостоятельным обучением. Джордж Стайн и его коллеги предложили эту метрику в 2023 году после масштабного исследования с участием людей, которое показало, что FID не отражает, насколько реалистичными люди считают изображения диффузионных моделей.
В видеомоделях используется та же идея с метрикой расстояния Фреше для видео, а такие наборы тестов, как VBench, разбивают качество видео на отдельные характеристики вместо одной оценки расстояния.
FID для синтетических обучающих данных#
FID также используют для проверки синтетических данных перед обучением детектора. Оценка сгенерированных изображений редких сцен — например, ночного вождения для автомобильного компьютерного зрения или определенных дефектов продукции для обнаружения дефектов — относительно реальных снимков с камеры развертывания позволяет выявить разрыв доменов до начала обучения. Заключительная проверка — точность на последующих задачах: обучите Ultralytics YOLO26 с синтетическими изображениями и без них и сравните среднюю точность по классам (mAP) на одной и той же отложенной выборке реальных изображений в режиме валидации.










