FID — золотой стандарт генерации картинок — оказался неправ

FID — золотой стандарт генерации картинок — оказался неправ

Если вы занимаетесь генерацией изображений, FID — это ваш главный KPI. Fréchet Inception Distance с 2017 года определяет, какая модель лучше, какая хуже, и какую выбирать для продакшена. Исследователи из USC и Toyota Research Institute показали: FID не просто метрика — это оптимизируемая функция потерь. И когда вы её оптимизируете, она сама признаётся, что ошибалась.

Проблема, которую никто не замечал

Fréchet Inception Distance работает так: берём все сгенерированные картинки, пропускаем через предобученную сеть Inception-v3, получаем распределение признаков в некотором латентном пространстве. Сравниваем с распределением настоящих картинок — получаем одно число. Ниже — лучше. Логика понятна: Inception-v3 — мощный признаковый экстрактор, обученный на классификации, значит его представления отражают семантику визуального контента.

Но у FID есть слепая зона: Inception-v3 обучался в 2015 году на ImageNet. Его представления отражают то, как визуальное качество виделось восемь лет назад. Современные модели — DINOv2, SigLIP, CLIP — кодируют совсем другие аспекты визуального сходства. Картинка может получить отличный FID по Inception, но при этом выглядеть хуже по SigLIP или DINOv2. Метрика вводит нас в заблуждение, а мы ей слепо доверяем.

Авторы называют это «representation-coupled reward hacking» — оптимизация узкого прокси-признака, который не отражает реальное качество. Это аналог Goodhart's law в применении к генеративным моделям: когда метрика становится целью, она перестаёт быть хорошей метрикой.

Как оптимизировать распределение

FD-loss — идея простая до гениальности. Fréchet Distance всегда была дифференцируемой — каждая операция в формуле позволяет брать градиенты. Проблема была вычислительная: для надёжной оценки распределения нужно 50 000 сэмплов, а для градиентного спуска на каждом шаге обучения — стандартный батч в 1024 изображения. Использовать 50 000 изображений для каждого градиентного шага — невозможно.

Авторы предлагают разделить эти два параметра: поддерживать онлайн-очередь (queue) признаков из недавно сгенерированных сэмплов и вычислять FD по всей очереди, а градиенты считать по стандартному батчу. Generator генерирует B изображений за шаг → признаки накапливаются в очередь → FD вычисляется по всей очереди (N сэмплов, например 50 000) → градиент вычисляется по батчу (B = 1024). Очередь обновляется через EMA с коэффициентом 0.999 — это даёт гладкую оценку распределения без переобучения на последних батчах.

Результат: FD теперь оптимизируема как функция потерь. Можно делать стандартный градиентный спуск. Никаких специальных архитектур, никакой дополнительной магии — только переиспользование уже известной формулы FID в обратном проходе.

0.72 FID без дистилляции и адверсариального обучения

Главный результат впечатляет. Post-training базового генератора pMF-B/16 с FD-loss в пространстве признаков Inception позволяет достичь 0.72 FID на ImageNet 256×256 за один шаг генерации (one-step generation). Один. Без дистилляции учителя, без adversarial training, без per-sample targets.

Для контекста: типичные one-step генераторы требуют либо массивного обучения с учителем, либо переноса знаний с большой мультишаговой модели. Современные DiT-модели (Stable Diffusion 3, Flux) работают за 20–50 шагов диффузии. One-step результат уровня 0.72 — это прорыв, и достигается он простым post-training на новой функции потерь.

Второй ключевой результат: мультишаговые генераторы превращаются в одношаговые. JiT-H/16 с 200 NFE (50 шагов × 2 Heun × 2 CFG) после FD-loss post-training работает за один forward pass и не уступает по качеству оригиналу. Это 200x ускорение инференса без дополнительной дистилляции.

Третий результат — текст-к-картинкам. SD3.5 Medium требует 56 NFE. Post-training с FD-loss на распределении реалистичных фотографий (BLIP3o-Pretrain-Long-3M) даёт модель с 1 NFE, сохраняющую визуальное качество. 56x ускорение для текст-к-картинкам.

Как настраивать FD-loss на практике

Несколько практических деталей из статьи. Queue size: оптимальное значение — 50 000 сэмплов. При 5 000 FID уже значительно улучшается, но 50 000 даёт стабильно лучшие результаты. При 100 000+ начинается переобучение на историю очереди — качество деградирует.

EMA decay rate для обновления очереди: оптимальное значение 0.999. При слишком быстром обновлении (0.99) распределение «дрейфует» и FD-loss не сходится. При слишком медленном (0.9999) — очередь недостаточно адаптируется к текущему состоянию генератора.

Learning rate: авторы используют 1e-4 с cosine schedule. При слишком большом LR (1e-3 и выше) генератор быстро «переоптимизирует» FID и начинает генерировать артефакты — это и есть reward hacking в чистом виде. Меньший LR (1e-5) сходится слишком медленно.

FDr^k: метрика, которая не врёт

Авторы вводят FDr^k — мультирепрезентационную метрику. Вместо одного пространства признаков FID использует среднее геометрическое расстояний по шести разным пространствам: Inception-v3, ConvNeXt-v2 (self-supervised CNN), MAE (self-supervised ViT), DINOv2 (contrastive ViT), SigLIP2 (vision-language), CLIP (vision-language).

И вот парадокс: Inception FID после FD-loss оптимизации падает драматически — с 3.31 до 0.48. Но FDr^6 падает лишь с 13.70 до 10.74. Современные представления всё ещё видят пробелы, которые Inception не замечает. Оптимизация Inception FID — это не то же самое, что оптимизация визуального качества. Модель научилась обманывать Inception, но не DINOv2.

Human preference study подтверждает: люди предпочитают FD-loss пост-тренированные модели по сравнению с базовыми. Но это предпочтение не всегда коррелирует с Inception FID. На некоторых классах Inception FID улучшается, а человеческое предпочтение — нет. Метрика с одним пространством признаков — это всегда слепота в каком-то измерении.

Что это значит на практике

FD-loss — это не замена существующим методам обучения генераторов. Это post-training техника: берёте уже обученную модель и улучшаете её за несколько десятков эпох. Можно применять к любому типу генераторов — и к пиксельным (pMF, JiT), и к латентным (iMF).

Первый практический выигрыш — ускорение инференса. Если ваш генератор работает за 50 шагов диффузии, FD-loss может превратить его в one-step модель без потери качества. 50x ускорение для продакшен-пайплайнов реальных продуктов.

Второй — улучшение качества при сохранении числа шагов. Post-training на FD-loss стабильно улучшает FID по Inception и визуальное качество по современным представлениям на широком наборе бенчмарков.

Третий — диагностика. FDr^6 позволяет понять, какие аспекты качества улучшает ваш генератор, а какие нет. Если FID падает, а SigLIP FDr растёт — вы оптимизируете Inception, а не визуальное сходство. Это критично для принятия решений: какую модель выкатить в продакшен.

Почему это важно для индустрии

Десять лет индустрия ориентировалась на FID как на объективную меру прогресса. ImageNet генерация прошла путь от 18 FID (2017) до суб-единичных значений (2024–2025). Каждый улучшенный FID объявлялся прорывом. Но теперь мы знаем: FID — это в первую очередь мера близости к Inception-распределению, а не мера визуального качества.

Это не означает, что FID бесполезен. Это означает, что он должен использоваться в связке с другими метриками. FDr^6 — один из вариантов, но индустрия может разработать свои наборы представлений под свои задачи. Для генерации фотореалистичных портретов — одни признаки. Для арт-генерации — другие. Для документов — третьи.

FD-loss также показывает, что дистилляция — не единственный способ получить fast generation. Adversarial training — тоже. Прямая оптимизация распределения даёт сравнимые результаты с куда меньшими требованиями к пайплайну обучения.

Ограничения

FD-loss зависит от выбора репрезентационного пространства. Оптимизация Inception FID не устраняет слепые зоны Inception — модель может «переоптимизировать» именно те характеристики, которые Inception измеряет, и игнорировать всё остальное. Если вам важны аспекты, которые Inception не кодирует (например, эстетика, композиция, художественный стиль), используйте другое пространство признаков или комбинируйте несколько.

Исследование сфокусировано на ImageNet и контролируемых условиях. На более разнообразных данных (реальные пользовательские фото, смешанные домены) эффект может отличаться. Также не исследован вопрос выбора признаковых пространств для разных задач — это остаётся открытым.

Часто задаваемые вопросы

Почему FID нельзя было оптимизировать раньше?

FD требует большой популяции сэмплов (50 000) для надёжной оценки распределения. Использовать их все для градиентного спуска на каждом шаге — вычислительно невозможно при стандартном размере батча. Решение авторов: поддерживать очередь признаков и обновлять её через EMA, а градиенты считать по стандартному батчу. Это снимает ограничение — FD вычисляется по очереди (50k), а градиент — по батчу (1024).

Что такое one-step генерация и почему она важна?

One-step генерация — получение изображения за один forward pass нейросети, без итераций. Большинство современных генеративных моделей (DiT, SD3, Flux) работают через 20–50 итераций диффузии — это медленно. One-step модели генерируют изображение за миллисекунды. FD-loss позволяет превратить мультишаговую модель в одношаговую без дополнительного обучения с учителем — просто post-training на новой функции потерь. Результат: JiT с 200 NFE → 1 NFE, SD3.5 с 56 NFE → 1 NFE.

Чем FDr^6 отличается от FID?

FID измеряет расстояние только в пространстве Inception-v3 — это одно представление 2015 года. FDr^6 усредняет расстояния по шести пространствам: Inception (2015), ConvNeXt (2023), MAE (2021), DINOv2 (2023), SigLIP2 (2025), CLIP (2021). Это даёт более полную и устойчивую картину визуального сходства — и не позволяет «обмануть» метрику, оптимизируя слепое пятно одного представления.

Можно ли использовать FD-loss для других модальностей?

Технически — да, Fréchet Distance применима к любому распределению признаков. Для аудио можно использовать признаки из аудио-энкодера, для текста — из языковой модели. Авторы упоминают это как направление будущей работы. Ограничение: нужно репрезентационное пространство, которое хорошо кодирует целевые свойства. Для аудио и видео таких устоявшихся признаков пока меньше, чем для изображений.

Итог

FD-loss — это концептуально простая идея с далеко идущими последствиями. Разделение размера популяции для оценки распределения и размера батча для градиентного спуска позволяет оптимизировать Fréchet Distance напрямую. Результат — one-step генераторы уровня 0.72 FID и метрика FDr^6, которая не врёт.

Но главный вывод глубже: метрика, которую вся индустрия использовала десять лет как истину, оказалась лишь одним из возможных взглядов на качество. Когда вы оптимизируете её как функцию потерь, она показывает свои ограничения. Модель, оптимизирующая Inception FID, не обязательно улучшает визуальное качество по современным меркам — она улучшает Inception FID. Это напоминание, что в ML любой KPI со временем становится proxy — и полезно иногда смотреть на него со стороны.

Попробовать FD-loss несложно: это post-training техника, которую можно применить к любому уже обученному генератору. Если у вас есть мультишаговая модель, которую хочется ускорить, — FD-loss даёт бесплатное 10–200x ускорение инференса. Если есть one-step модель, качество которой хочется улучшить, — FD-loss даёт стабильный прирост без переобучения с нуля.

← Все записи