Содержание курса 18 / 33

18 / 33 · Оценка качества

Fréchet Inception Distance

FID сравнивает настоящие и сгенерированные изображения через среднее и ковариацию их признаков Inception. Это квадрат расстояния Вассерштейна-2 между двумя подогнанными гауссианами.

На этой странице 11

Inception Score смотрит только на сгенерированные изображения: он проверяет, уверенно ли классификатор предсказывает класс каждого изображения и разнообразны ли предсказанные классы. Похожи ли изображения на обучающие данные, он не проверяет никогда. Fréchet Inception Distance (FID) из работы Heusel et al. (2017) закрывает этот пробел. Настоящие и сгенерированные изображения пропускаются через одну и ту же предобученную сеть Inception, каждый набор признаков сводится к вектору средних и ковариационной матрице, и измеряется, насколько далеко друг от друга эти две сводки.

Обозначения. Нижний индекс rr отмечает настоящие изображения, а gg — сгенерированные. φ(x)\varphi(x) — вектор признаков Inception для изображения xx, ∥⋅∥2\|\cdot\|_2 — евклидова норма. Как и в заметке о гауссовских распределениях, векторы средних и матрицы набраны полужирным: μ\boldsymbol\mu — вектор средних, Σ\boldsymbol\Sigma — ковариационная матрица, I\mathbf I — единичная матрица.

Формула#

FID=∥μr−μg∥22+Tr⁡ ⁣(Σr+Σg−2 (ΣrΣg)1/2)\begin{aligned} \mathrm{FID} &= \|\boldsymbol\mu_r - \boldsymbol\mu_g\|_2^2 \\ &\quad + \operatorname{Tr}\!\Big(\boldsymbol\Sigma_r + \boldsymbol\Sigma_g - 2\,(\boldsymbol\Sigma_r \boldsymbol\Sigma_g)^{1/2}\Big) \end{aligned}
  • μr,μg\boldsymbol\mu_r, \boldsymbol\mu_g — средние векторы признаков настоящих и сгенерированных изображений.
  • Σr,Σg\boldsymbol\Sigma_r, \boldsymbol\Sigma_g — их ковариационные матрицы.

Это определение из Heusel et al. (2017), формула (6). Для NrN_r настоящих изображений x1,…,xNrx_1, \dots, x_{N_r} (и так же для сгенерированного набора) обе сводки — обычные выборочные оценки:

μr=1Nr∑i=1Nrφ(xi),Σr=1Nr−1∑i=1Nr(φ(xi)−μr)(φ(xi)−μr)⊤.\begin{gathered} \boldsymbol\mu_r = \tfrac{1}{N_r}\sum_{i=1}^{N_r} \varphi(x_i), \\ \boldsymbol\Sigma_r = \tfrac{1}{N_r - 1}\sum_{i=1}^{N_r} (\varphi(x_i) - \boldsymbol\mu_r)(\varphi(x_i) - \boldsymbol\mu_r)^{\top}. \end{gathered}

По сути мы приближаем каждое распределение признаков гауссианой — N(μr,Σr)\mathcal N(\boldsymbol\mu_r, \boldsymbol\Sigma_r) для настоящих изображений и N(μg,Σg)\mathcal N(\boldsymbol\mu_g, \boldsymbol\Sigma_g) для сгенерированных — и сравниваем две гауссианы. Heusel et al. обосновывают этот выбор принципом максимума энтропии (maximum entropy; Heusel et al., 2017, текст перед формулой 6). Среди всех плотностей на Rd\mathbb R^d с заданными средним и ковариацией наибольшую дифференциальную энтропию имеет гауссиана (Cover and Thomas, 2006, теорема 8.6.5). Поэтому гауссиана — распределение, которое делает меньше всего допущений сверх двух моментов, сохраняемых FID: подгонка не добавляет никакой структуры помимо них.

Эмбеддинги берутся до softmax. Признаки — это не вероятности классов, которые использует IS, а активации внутри сети. Heusel et al. используют в качестве кодирующего слоя (coding layer) последний слой пулинга Inception v3 (Szegedy et al., 2016). В их коде TTUR это слой pool3, выход которого поступает в классификационный выходной слой (head): 2048 чисел на изображение (рисунок 1). Вероятности классов отбросили бы бо́льшую часть того, что сеть видит в изображении, а предпоследний слой сохраняет более богатое описание, чем 1000 вероятностей классов, хотя и он сформирован классами ImageNet (см. Недостатки).

Рисунок

Как вычисляется FID

Схема вычисления FIDНастоящие и сгенерированные изображения поступают в одну и ту же предобученную сеть Inception v3. Её слой pool3, расположенный до классификатора с softmax, даёт для каждого изображения 2048-мерный эмбеддинг; полносвязный выходной слой с softmax перечёркнут как неиспользуемый. Эмбеддинги настоящих изображений образуют красное облако точек, которое сводится к среднему mu r и ковариации Sigma r; эмбеддинги сгенерированных изображений образуют синее облако, которое сводится к mu g и Sigma g. Обе сводки поступают в FID: чем меньше значение, тем ближе распределения, а ноль означает равные средние и равные ковариации.настоящиеизображенияизображениягенератораInception v3обучена и замороженаpool3FC + softmaxнастоящие признакисгенерированные признакиподгонка гауссианыμr, Σrμg, ΣgFIDменьше = ближе0 = равные μ, Σэмбеддинги берём здесь: до softmaxСхема вычисления FID (вертикальная)Настоящие и сгенерированные изображения поступают в одну и ту же предобученную сеть Inception v3. Её слой pool3, расположенный до классификатора с softmax, даёт для каждого изображения 2048-мерный эмбеддинг; полносвязный выходной слой с softmax перечёркнут как неиспользуемый. Эмбеддинги настоящих изображений образуют красное облако точек, которое сводится к mu r и Sigma r; эмбеддинги сгенерированных изображений образуют синее облако, которое сводится к mu g и Sigma g. Обе сводки поступают в FID: чем меньше значение, тем ближе распределения, а ноль означает равные средние и равные ковариации.настоящиесгенерированныеInception v3предобученная, замороженнаяpool3FC + softmaxэмбеддингидо softmaxпризнакиподгонка гауссианыμr, Σrμg, ΣgFIDменьше = ближе0 = равные μ и Σ
Оба набора изображений проходят через одну и ту же замороженную сеть Inception. Активации берутся до классификационного выходного слоя с softmax (в стандартной реализации это 2048-мерный слой pool3), к каждому облаку признаков подгоняется гауссиана, и FID сравнивает две гауссианы.

Как читать два члена#

  • Член средних ∥μr−μg∥22\|\boldsymbol\mu_r - \boldsymbol\mu_g\|_2^2 измеряет, насколько далеко друг от друга центры двух облаков признаков.
  • Член ковариаций Tr⁡(⋅)\operatorname{Tr}(\cdot) измеряет, насколько по-разному облака разбросаны и ориентированы. Он никогда не бывает отрицательным и обращается в нуль, только когда Σr=Σg\boldsymbol\Sigma_r = \boldsymbol\Sigma_g. Оба факта следуют из интерпретации через расстояние Вассерштейна ниже: при равных средних формула сводится к этому члену, так что он равен квадрату расстояния W2W_2 между N(0,Σr)\mathcal N(\mathbf 0, \boldsymbol\Sigma_r) и N(0,Σg)\mathcal N(\mathbf 0, \boldsymbol\Sigma_g). W2W_2 — метрика (Peyré and Cuturi, 2019, предложение 2.3), поэтому это расстояние неотрицательно и равно нулю только для одинаковых распределений, здесь — для одинаковых ковариаций.

Итак, чем меньше FID, тем ближе подогнанные гауссианы, то есть тем ближе средние и ковариации двух облаков признаков. FID = 0 означает равные средние и равные ковариации, а не одинаковые распределения признаков (см. Недостатки).

Рисунок

Два члена FID на двумерном примере

Облака настоящих и сгенерированных признаков и члены FIDКрасное облако настоящих признаков с центром в начале координат, наклонённое, и меньшее, более круглое синее облако сгенерированных признаков с центром в (1.2, 0.6). Янтарная стрелка между двумя средними подписана: квадрат нормы mu r минус mu g, равный 1.80. Выноска, указывающая на контуры обоих эллипсов, подписана: член ковариаций, след, равный 0.484. Сводная панель складывает их: FID равен 2.284.2 из 2048 измерений признаковнастоящие, 𝒩(μr, Σr)сгенерир.,𝒩(μg, Σg)‖μr − μg‖² = 1.80член ковариаций Tr(…) = 0.484разный разброс и наклонЭтот примерчлен средних1.800Tr Σr1.800Tr Σg0.800−2 Tr[(ΣrΣg)½]−2.116член ковар.0.484FID2.284Облака настоящих и сгенерированных признаков и члены FIDКрасное облако настоящих признаков с центром в начале координат, наклонённое, и меньшее, более круглое синее облако сгенерированных признаков с центром в (1.2, 0.6). Янтарная стрелка между двумя средними подписана: квадрат нормы mu r минус mu g, равный 1.80. Выноска, указывающая на контуры обоих эллипсов, подписана: член ковариаций, след, равный 0.484. Сводная панель складывает их: FID равен 2.284.2 из 2048 измерений признаковнастоящие, 𝒩(μr, Σr)сгенерир.,𝒩(μg, Σg)‖μr − μg‖² = 1.80член ковариаций Tr(…) = 0.484разный разброс и наклонЭтот примерчлен средних1.800Tr Σr1.800Tr Σg0.800−2 Tr[(ΣrΣg)½]−2.116член ковариаций0.484FID2.284
Сэмплы, полученные при фиксированном начальном значении (seed) генератора случайных чисел (по 140 из каждой гауссианы; несколько точек за пределами рамки не показаны) с эллипсами 2σ. Член средних измеряет, насколько далеко друг от друга облака, а член ковариаций — насколько по-разному они разбросаны и ориентированы. Числа вычислены по истинным параметрам: среднее настоящих признаков (0, 0) и ковариация [[1, 0.6], [0.6, 0.8]]; среднее сгенерированных признаков (1.2, 0.6) и ковариация [[0.45, −0.1], [−0.1, 0.35]].

Проверка в одномерном случае#

Для скалярных признаков Σ\boldsymbol\Sigma превращается в дисперсию σ2\sigma^2, квадратный корень из матрицы — в обычный квадратный корень, σr2σg2=σrσg\sqrt{\sigma_r^2\sigma_g^2} = \sigma_r\sigma_g, поскольку стандартные отклонения неотрицательны, а след исчезает:

σr2+σg2−2σrσg=(σr−σg)2,FID1D=(μr−μg)2+(σr−σg)2.\begin{aligned} \sigma_r^2 + \sigma_g^2 - 2\sigma_r\sigma_g &= (\sigma_r - \sigma_g)^2 , \\ \mathrm{FID}_{1\text{D}} &= (\mu_r - \mu_g)^2 + (\sigma_r - \sigma_g)^2 . \end{aligned}

Член ковариаций равен квадрату разности стандартных отклонений. Возьмём настоящие признаки N(0,1)\mathcal N(0, 1) и сгенерированные признаки N(0.5,22)\mathcal N(0.5, 2^2):

FID=(0−0.5)2+(1+4−2⋅1⋅2)=0.25+1=1.25.\begin{aligned} \mathrm{FID} &= (0 - 0.5)^2 + \big(1 + 4 - 2\cdot 1\cdot 2\big) \\ &= 0.25 + 1 = 1.25 . \end{aligned}

Генератор со слишком большим разбросом сэмплов штрафуется так же, как сдвинутый. Так же штрафуется и генератор со слишком узким разбросом. У модели, которая каждый раз выдаёт почти одно и то же изображение (коллапс мод, mode collapse), σg→0\sigma_g \to 0, и член ковариаций стремится к σr2\sigma_r^2, даже если среднее верное.

То же верно в dd измерениях для изотропных ковариаций Σr=σr2I\boldsymbol\Sigma_r = \sigma_r^2\mathbf I и Σg=σg2I\boldsymbol\Sigma_g = \sigma_g^2\mathbf I. Тогда (ΣrΣg)1/2=σrσgI(\boldsymbol\Sigma_r\boldsymbol\Sigma_g)^{1/2} = \sigma_r\sigma_g\mathbf I, и каждый из dd диагональных элементов даёт вклад (σr−σg)2(\sigma_r - \sigma_g)^2, так что член ковариаций равен d(σr−σg)2d(\sigma_r - \sigma_g)^2. Рисунок 3 показывает случай d=2d = 2 с σr=1\sigma_r = 1, σg=s\sigma_g = s и сдвигом среднего mm, так что FID=m2+2(1−s)2\mathrm{FID} = m^2 + 2(1 - s)^2.

Рисунок

FID при сдвиге и сжатии сгенерированной гауссианы

Четыре случая FID между двумя изотропными гауссианамисовпадают: сдвиг 0, масштаб 1, член средних 0, член ковариаций 0, FID 0. сдвиг: сдвиг 1.5, масштаб 1, член средних 2.25, член ковариаций 0, FID 2.25. сжатие: сдвиг 0, масштаб 0.4, член средних 0, член ковариаций 0.72, FID 0.72. сдвиг + сжатие: сдвиг 1.5, масштаб 0.4, член средних 2.25, член ковариаций 0.72, FID 2.97.совпадаютm = 0, s = 10 + 0FID = 0сдвигm = 1.5, s = 12.25 + 0FID = 2.25сжатиеm = 0, s = 0.40 + 0.72FID = 0.72сдвиг + сжатиеm = 1.5, s = 0.42.25 + 0.72FID = 2.97Четыре случая FID между двумя изотропными гауссианамисовпадают: сдвиг 0, масштаб 1, член средних 0, член ковариаций 0, FID 0. сдвиг: сдвиг 1.5, масштаб 1, член средних 2.25, член ковариаций 0, FID 2.25. сжатие: сдвиг 0, масштаб 0.4, член средних 0, член ковариаций 0.72, FID 0.72. сдвиг + сжатие: сдвиг 1.5, масштаб 0.4, член средних 2.25, член ковариаций 0.72, FID 2.97.совпадаютm = 0, s = 10 + 0FID = 0сдвигm = 1.5, s = 12.25 + 0FID = 2.25сжатиеm = 0, s = 0.40 + 0.72FID = 0.72сдвиг + сжатиеm = 1.5, s = 0.42.25 + 0.72FID = 2.97
Настоящие признаки N(0, I) показаны красным, сгенерированные признаки N((m, 0), s²I) — синим (окружности 2σ). В двух измерениях FID = m² + 2(1 − s)²; здесь член ковариаций вдвое больше одномерного (1 − s)². Под каждой панелью напечатано: член средних (янтарный) + член ковариаций. Сдвиг меняет только член средних, более узкий (менее разнообразный) генератор — только член ковариаций, и два члена складываются.

Двумерный пример в числах#

На рисунке 2 взяты параметры

μr=(00),Σr=(10.60.60.8),μg=(1.20.6),Σg=(0.45−0.1−0.10.35).\begin{aligned} \boldsymbol\mu_r &= \begin{pmatrix}0\\0\end{pmatrix}, & \boldsymbol\Sigma_r &= \begin{pmatrix}1 & 0.6\\ 0.6 & 0.8\end{pmatrix}, \\ \boldsymbol\mu_g &= \begin{pmatrix}1.2\\0.6\end{pmatrix}, & \boldsymbol\Sigma_g &= \begin{pmatrix}0.45 & -0.1\\ -0.1 & 0.35\end{pmatrix}. \end{aligned}

Обе ковариации здесь положительно определённые (det⁡Σr=0.44\det\boldsymbol\Sigma_r = 0.44, det⁡Σg=0.1475\det\boldsymbol\Sigma_g = 0.1475, диагонали положительны). Единственный нетривиальный шаг — квадратный корень из матрицы. Остаток этого абзаца и следующая формула обосновывают его замкнутый вид, Tr⁡M1/2=Tr⁡M+2det⁡M\operatorname{Tr} \mathbf M^{1/2} = \sqrt{\operatorname{Tr} \mathbf M + 2\sqrt{\det \mathbf M}}; это дополнительный математический материал, и тот, кто готов принять формулу на веру, может сразу перейти к таблице. Произведение M=ΣrΣg\mathbf M = \boldsymbol\Sigma_r\boldsymbol\Sigma_g не симметрично. Поскольку Σr\boldsymbol\Sigma_r обратима, оно подобно симметричной положительно определённой матрице Σr1/2ΣgΣr1/2\boldsymbol\Sigma_r^{1/2}\boldsymbol\Sigma_g\boldsymbol\Sigma_r^{1/2}:

M=Σr1/2(Σr1/2ΣgΣr1/2)Σr−1/2.\mathbf M = \boldsymbol\Sigma_r^{1/2}\big(\boldsymbol\Sigma_r^{1/2}\boldsymbol\Sigma_g\boldsymbol\Sigma_r^{1/2}\big)\boldsymbol\Sigma_r^{-1/2} .

Значит, M\mathbf M диагонализуема с положительными собственными значениями λ1,λ2\lambda_1, \lambda_2, а её главный квадратный корень (principal square root) M1/2\mathbf M^{1/2} имеет те же собственные векторы и собственные значения λ1,λ2\sqrt{\lambda_1}, \sqrt{\lambda_2}. Для матрицы 2×22\times 2 это даёт формулу в замкнутом виде. Квадрат суммы двух корней равен λ1+λ2+2λ1λ2\lambda_1 + \lambda_2 + 2\sqrt{\lambda_1\lambda_2}, а сумма и произведение собственных значений — это след и определитель:

Tr⁡M1/2=λ1+λ2=λ1+λ2+2λ1λ2=Tr⁡M+2det⁡M.\begin{aligned} \operatorname{Tr} \mathbf M^{1/2} &= \sqrt{\lambda_1} + \sqrt{\lambda_2} \\ &= \sqrt{\lambda_1 + \lambda_2 + 2\sqrt{\lambda_1\lambda_2}} \\ &= \sqrt{\operatorname{Tr} \mathbf M + 2\sqrt{\det \mathbf M}} . \end{aligned}
ВеличинаЗначение
∥μr−μg∥22=1.22+0.62\lVert\boldsymbol\mu_r - \boldsymbol\mu_g\rVert_2^2 = 1.2^2 + 0.6^21.801.80
M=ΣrΣg\mathbf M = \boldsymbol\Sigma_r\boldsymbol\Sigma_g(0.390.110.190.22)\begin{pmatrix}0.39 & 0.11\\ 0.19 & 0.22\end{pmatrix}
Tr⁡M, det⁡M\operatorname{Tr} \mathbf M,\ \det \mathbf M0.61, 0.06490.61,\ 0.0649
Tr⁡M1/2=0.61+20.0649\operatorname{Tr} \mathbf M^{1/2} = \sqrt{0.61 + 2\sqrt{0.0649}}1.0581.058
Tr⁡Σr+Tr⁡Σg−2Tr⁡M1/2=1.8+0.8−2.116\operatorname{Tr}\boldsymbol\Sigma_r + \operatorname{Tr}\boldsymbol\Sigma_g - 2\operatorname{Tr} \mathbf M^{1/2} = 1.8 + 0.8 - 2.1160.4840.484
FID2.2842.284

На практике признаки 2048-мерные, и квадратный корень вычисляется численно, например с помощью scipy.linalg.sqrtm. В отличие от симметричного корня Σ1/2\boldsymbol\Sigma^{1/2} из заметки о гауссовских распределениях, (ΣrΣg)1/2(\boldsymbol\Sigma_r\boldsymbol\Sigma_g)^{1/2} — главный квадратный корень несимметричной матрицы. В арифметике с плавающей точкой он может получиться с крошечными мнимыми частями, которые реализации отбрасывают, если они пренебрежимо малы (иначе TTUR выдаёт ошибку). Если вычисленный корень содержит бесконечные значения, потому что произведение почти вырождено, к обеим ковариациям добавляют малую матрицу εI\varepsilon\mathbf I и вычисляют корень заново (см. calculate_frechet_distance в коде TTUR).

FID — расстояние Вассерштейна между двумя гауссианами#

Расстояние Вассерштейна-2 (2-Wasserstein distance) между распределениями PP и QQ на Rd\mathbb R^d с конечными вторыми моментами равно

W22(P,Q)=inf⁡γ∈Π(P,Q)E(x,y)∼γ ∥x−y∥22,W_2^2(P, Q) = \inf_{\gamma \in \Pi(P, Q)} \mathbb{E}_{(x, y)\sim\gamma}\,\|x - y\|_2^2 ,

где Π(P,Q)\Pi(P, Q) — множество транспортных планов с маргинальными распределениями PP и QQ, как в заметке о WGAN; конечность вторых моментов гарантирует, что инфимум конечен. Это то же семейство транспортных расстояний, что и W1W_1, но стоимость в нём — квадрат евклидова расстояния, а не само расстояние. Для двух гауссиан инфимум выражается в замкнутом виде (Dowson and Landau, 1982), и это выражение и есть формула FID:

FID=W22(N(μr,Σr), N(μg,Σg)).\mathrm{FID} = W_2^2\big(\mathcal N(\boldsymbol\mu_r, \boldsymbol\Sigma_r),\ \mathcal N(\boldsymbol\mu_g, \boldsymbol\Sigma_g)\big).

FID — это квадрат расстояния, поэтому внешнего квадратного корня в нём нет. Морис Фреше изучал это расстояние между распределениями вероятностей (Fréchet, 1957), поэтому его также называют расстоянием Фреше; именно к нему отсылает буква «F» в FID.

Сравнение с Inception Score#

В отличие от IS, FID сравнивает сгенерированные изображения с настоящими данными.

Inception ScoreFID
Цельуверенность и разнообразие сгенерированных изображенийблизость сгенерированных изображений к настоящим
Используемые данныетолько сгенерированные изображениянастоящие и сгенерированные изображения
Что сравниваетсякаждое p(y∣x)p(y \mid x) с маргинальным p(y)p(y)гауссиана, подогнанная к настоящим признакам, и гауссиана, подогнанная к сгенерированным
РасстояниеKL-дивергенцияквадрат расстояния Фреше (Вассерштейна-2)
Лучшебольшеменьше

Недостатки#

  • Гауссовское приближение. Признаки Inception не распределены нормально: эмбеддинги типичного набора изображений имеют много мод (Jayasumana et al., 2024, §3.3). Два распределения признаков с одинаковыми средним и ковариацией, но разной формой получают FID 0, потому что сравниваются только первые два момента. Jayasumana et al. строят такую пару из гауссианы и смеси гауссиан с одинаковыми общими средним и ковариацией (§3.2, таблица 2).
  • Данные, не похожие на ImageNet. Сеть обучена на фотографиях ImageNet, поэтому для далёких от них данных, например медицинских изображений, набросков или спектрограмм, ничто не гарантирует, что её признаки улавливают то, что делает изображение хорошим. Одно из решений — вычислять то же расстояние в признаках энкодера, обученного на данных этой области (ниже). Даже там, где FID — стандартная метрика, признаки остаются привязанными к классам ImageNet. На лицах FFHQ FID сильнее всего реагирует на области вне лица, где классификатор распознаёт объекты ImageNet, например галстуки-бабочки, ремни безопасности или академические шапочки (Kynkäänniemi et al., 2023, §2, рисунок 4). Если отобрать сгенерированные изображения повторной выборкой (resampling) так, чтобы их статистики классов ImageNet совпадали со статистиками настоящих, FID снижается без видимого улучшения изображений: примерно на 10%, когда совпадают только гистограммы классов Top-1, и примерно на две трети на FFHQ (с 5.30 до 1.78), когда совпадают сами признаки pool3 (§3, таблицы 1–2).
  • Одно число для двух свойств. FID смешивает реалистичность сэмплов и то, какую часть вариативности данных они покрывают (Kynkäänniemi et al., 2023, §1). Худшее значение может объясняться нереалистичными сэмплами, которые сдвигают облако признаков и меняют его форму, или недостаточным разнообразием, которое его сжимает (рисунок 3), поэтому два генератора с одинаковым FID могут ошибаться по-разному. Метрики точности и полноты (precision / recall) показывают эти два свойства по отдельности (Sajjadi et al., 2018).
  • Не замечает запоминания (memorization). Heusel et al. вычисляют статистики настоящих изображений по всей обучающей выборке. Генератор, который возвращает случайно выбранные обучающие изображения, воспроизводит их среднее и ковариацию с точностью до шума выборки, поэтому его FID близок к 0, хотя он не выучил ничего сверх самих данных. Та же слабость есть у Inception Score. Чтобы обнаружить копии, нужно сравнивать отдельные изображения, например искать ближайшего соседа в обучающей выборке по перцептивному расстоянию вроде LPIPS.
  • Нужны тысячи изображений. У ковариационной матрицы 2048 × 2048 есть 2048⋅2049/2=2 098 1762048\cdot 2049/2 = 2\,098\,176 свободных элементов. При N≤2048N \le 2048 изображениях выборочная ковариация вырождена (её ранг не больше N−1N - 1), и вычисление квадратного корня из матрицы становится численно неустойчивым. При нескольких тысячах изображений оценка всё ещё шумная. Она смещена вверх, и смещение зависит от генератора, поэтому фиксированный размер выборки смягчает проблему, но не устраняет её: два генератора, оценённые с одним и тем же NN, могут ранжироваться по смещению, а не по качеству (Chong and Forsyth, 2020, §3.1, рисунок 2). Chong и Forsyth экстраполируют по 1/N1/N и получают практически несмещённое FID∞\mathrm{FID}_\infty (§3.2). Heusel et al. использовали 50 000 сгенерированных изображений; обычно берут 10 000 или 50 000.
  • Чувствителен к предобработке. Изменение размера до входного размера сети (фильтр масштабирования и его сглаживание, antialiasing), 8-битное квантование и сжатие JPEG меняют признаки, и значения FID, вычисленные разными конвейерами, несравнимы (Parmar, Zhang and Zhu, 2022, §3).

По каким изображениям вычисляется FID?#

Стандартный FID вычисляется один раз, по всем сгенерированным и всем настоящим изображениям, а не по классам и не по парам изображений. Мы собираем все настоящие изображения в одно облако признаков, а все сгенерированные — в другое, подгоняем к каждому облаку по гауссиане и сравниваем две гауссианы. FID не нужны метки классов, и ни одно сгенерированное изображение не сопоставляется с конкретным настоящим. (Условные генераторы иногда оценивают с помощью intra-FID — FID, вычисленного отдельно внутри каждого класса между сгенерированными и настоящими изображениями этого класса (Miyato and Koyama, 2018, §5.1), но это отдельный вариант.) Поскольку FID сравнивает распределения, а не пары, ему нужны большие выборки, о которых говорилось выше. Отдельные изображения попарно сравнивает LPIPS.

FID с собственным энкодером#

Ничто в формуле не зависит от Inception: ей нужен вектор признаков φ(x)\varphi(x) для каждого изображения, а дать его может любой энкодер. Для данных, не похожих на ImageNet, естественный выбор — энкодер, обученный на данных самой этой области, например энкодер автоэнкодера, обученного на этих данных; Bińkowski et al. (2018), §4, оценивают модели на MNIST по признакам классификатора MNIST в духе LeNet вместо Inception. Цена — сравнимость. Расстояние, вычисленное с одним энкодером, можно сравнивать только с расстояниями, вычисленными с тем же энкодером, тем же слоем и той же предобработкой. Строго говоря, это уже не FID, ведь буква I означает Inception: это расстояние Фреше в признаках названного энкодера и слоя. Стандартный FID — это протокол с Inception, и значение, полученное с другим энкодером, нельзя сравнивать с опубликованными FID. Ниже «FID» в формулах — сокращение для этого расстояния в признаках.

Расстояния между классами как проверка. Прежде чем доверять новому энкодеру, применим его только к настоящим изображениям. Разобьём размеченный набор данных по классам, подгоним гауссиану к признакам каждого класса и вычислим расстояние Фреше для каждой пары классов. Для KK классов получается матрица K×KK \times K, у которой нужно проверить три свойства:

  • Нулевая диагональ. У класса, сравниваемого с самим собой, средние и ковариации равны, поэтому оба члена обращаются в нуль. Численное вычисление квадратного корня из матрицы оставляет малые значения любого знака, поэтому проверке нужен небольшой допуск.
  • Симметричность. W2W_2 — метрика, поэтому FID(a,b)=FID(b,a)\mathrm{FID}(a, b) = \mathrm{FID}(b, a).
  • Смысловой порядок. Если признаки несут смысл, похожие классы ближе друг к другу, чем непохожие. На CIFAR-10 следует ожидать FID(самолёт,корабль)<FID(самолёт,лягушка)\mathrm{FID}(\text{самолёт}, \text{корабль}) < \mathrm{FID}(\text{самолёт}, \text{лягушка}) и FID(грузовик,автомобиль)<FID(грузовик,собака)\mathrm{FID}(\text{грузовик}, \text{автомобиль}) < \mathrm{FID}(\text{грузовик}, \text{собака}).

Размер выборки здесь важнее, чем для стандартного FID. В CIFAR-10 по 1000 тестовых изображений на класс, поэтому ковариация каждого класса оценивается по 1000 векторам и имеет ранг не больше 999999. Значит, энкодер с кодом из 1000 чисел или больше даёт вырожденные ковариации, и вычисление квадратного корня из матрицы становится неустойчивым (Нужны тысячи изображений). Добавление εI\varepsilon\mathbf I к обеим ковариациям с малым ε\varepsilon, например 10−610^{-6}, делает вычисление устойчивым ценой небольшого смещения; код меньшего размера позволяет избежать проблемы.

Тот же энкодер можно применить и к изображениям, на которых он не обучался, например к двум классам фотографий из другого набора данных. Тогда результат — расстояние в признаках, выученных на обучающей области, и эти признаки могут не улавливать того, что отличает новые классы: это то же ограничение, что и у признаков Inception на данных, не похожих на ImageNet, только в обратном направлении.

Kernel Inception Distance: несмещённая альтернатива#

Kernel Inception Distance (KID) из работы Bińkowski et al. (2018), §4, сохраняет признаки Inception, но отказывается от подгонки гауссиан. Это квадрат максимального расхождения средних (maximum mean discrepancy, MMD) между настоящими и сгенерированными признаками с кубическим полиномиальным ядром (kernel)

k(u,v)=(1d u⊤v+1)3,k(u, v) = \Big(\tfrac1d\, u^{\top} v + 1\Big)^{3},

где dd — размерность признаков (20482048 для pool3). Для распределений признаков PP и QQ

MMD2(P,Q)=E k(u,u′)+E k(v,v′)−2 E k(u,v),\mathrm{MMD}^2(P, Q) = \mathbb E\,k(u, u') + \mathbb E\,k(v, v') - 2\,\mathbb E\,k(u, v),

где u,u′∼Pu, u' \sim P и v,v′∼Qv, v' \sim Q независимы. Если раскрыть куб, kk оказывается суммой скалярных произведений (u⊤v)j(u^\top v)^j, j=0,…,3j = 0, \dots, 3, с положительными весами, а (u⊤v)j(u^\top v)^j — это скалярное произведение jj-х тензорных степеней uu и vv. Поэтому MMD2\mathrm{MMD}^2 — взвешенная сумма квадратов разностей между моментами PP и QQ порядков от 1 до 3, и она равна нулю тогда и только тогда, когда эти моменты совпадают. FID сравнивает первые два момента; KID сравнивает также третьи моменты, в том числе асимметрию (skewness), и не предполагает никакой параметрической формы.

Пусть u1,…,umu_1, \dots, u_m — признаки настоящих изображений, а v1,…,vnv_1, \dots, v_n — сгенерированных. KID оценивается как

KID^=1m(m−1)∑i≠jk(ui,uj)+1n(n−1)∑i≠jk(vi,vj)−2mn∑i=1m∑j=1nk(ui,vj).\begin{aligned} \widehat{\mathrm{KID}} = {}& \frac{1}{m(m-1)}\sum_{i \ne j} k(u_i, u_j) + \frac{1}{n(n-1)}\sum_{i \ne j} k(v_i, v_j) \\ &- \frac{2}{mn}\sum_{i=1}^{m}\sum_{j=1}^{n} k(u_i, v_j) . \end{aligned}

Исключение слагаемых с i=ji = j делает каждое среднее несмещённой оценкой своего математического ожидания (Gretton et al., 2012, лемма 6), поэтому оценка KID^\widehat{\mathrm{KID}} несмещённая при любом размере выборки. В этом её главное преимущество перед FID, оценка которого смещена вверх на величину, зависящую от генератора (Нужны тысячи изображений); несмещённой оценки FID не существует (Bińkowski et al., приложение D.3). Если сравнивать обучающую и тестовую выборки CIFAR-10 — две выборки из одного распределения, — оценка KID распределена вокруг 00 при каждом из показанных размеров выборки, а оценка FID даже на всех 10 000 тестовых изображениях всё ещё около 8.18.1 (Bińkowski et al., §4, рисунок 1). Цена несмещённости в том, что оценка может быть слегка отрицательной, когда два распределения близки.

Двойные суммы стоят O(n2d)O(n^2 d) операций для nn изображений в каждом наборе против O(nd2+d3)O(nd^2 + d^3) для ковариаций и квадратного корня из матрицы в FID. Поэтому Bińkowski et al. рекомендуют усреднять оценку по нескольким подмножествам умеренного размера: в их экспериментах усредняются 100 подмножеств по 1000 изображений (§5). Как и FID, KID зависит от того, что улавливают признаки, обученные на ImageNet, и чем он меньше, тем лучше.

Ноутбук#

Ноутбук о метриках из репозитория HSE-LAMBDA Deep Generative Models (закреплённый коммит; ячейки нумеруются с 1, считая все ячейки подряд, в том числе текстовые) описывает FID в ячейке 5: признаки из промежуточных слоёв предобученной сети, «часто Inception v3», гауссиана, подогнанная к настоящим и к сгенерированным признакам (там они записаны как N(μ1,Σ1)\mathcal N(\mu_1, \Sigma_1) и N(μ2,Σ2)\mathcal N(\mu_2, \Sigma_2)), и расстояние Фреше между ними. Стандартный FID использует один слой — 2048-мерный выход pool3, описанный выше. Ячейка 6 сравнивает IS, FID и LPIPS в таблице; таблица сравнения IS и FID выше основана на ней. Сам ноутбук о метриках FID не вычисляет. KID упоминается в репозитории только по названию — в заключительном обсуждении ноутбука о GAN (ячейка 35), рядом с IS и FID.

Расстояние Фреше в признаках, названное там FID, вычисляется в домашнем задании 1 из того же репозитория (нумерация ячеек та же), причём вместо Inception используется энкодер автоэнкодера, обученного на CIFAR-10 (часть об автоэнкодере описана в заметке об автоэнкодерах). В ноутбуке нет сохранённых выходов, а ячейки для решений пусты, поэтому он документирует только процедуру.

  • Ячейки 35–38: формула FID и get_representations, которая сопоставляет каждому классу валидационной выборки список из 1000 выходов энкодера.
  • Ячейка 39: calculate_fid(repr1, repr2, eps=1e-6), которую пишет студент; значение eps по умолчанию играет роль ε\varepsilon, добавляемого к ковариациям выше.
  • Ячейки 40–41: матрица FID 10×1010 \times 10 между классами и её тепловая карта. Проверки: все элементы больше −10−5-10^{-5}, FID(самолёт,корабль)<FID(самолёт,лягушка)\mathrm{FID}(\text{самолёт}, \text{корабль}) < \mathrm{FID}(\text{самолёт}, \text{лягушка}) и FID(грузовик,автомобиль)<FID(грузовик,собака)\mathrm{FID}(\text{грузовик}, \text{автомобиль}) < \mathrm{FID}(\text{грузовик}, \text{собака}). Матрица вычисляется целиком, хотя симметрия сократила бы работу вдвое, а диагональ известна.
  • Ячейка 42: FID между двумя классами любого другого набора данных (например, кошками и собаками) с тем же энкодером, обученным на CIFAR.

Дальше#

IS, FID и KID оценивают набор изображений целиком. Иногда нужно расстояние между двумя отдельными изображениями, согласованное с человеческим восприятием, например чтобы сравнить сгенерированное или восстановленное изображение с эталоном или обучить сеть с перцептивной функцией потерь. Такое расстояние даёт LPIPS.

Литература#

  • M. Heusel, H. Ramsauer, T. Unterthiner, B. Nessler, S. Hochreiter. GANs trained by a two time-scale update rule converge to a local Nash equilibrium. NeurIPS, 2017. Вводит FID: раздел Experiments, абзац «Performance Measure» (обоснование через максимум энтропии и формула (6)); абзац «Model Selection and Evaluation» (последний слой пулинга как кодирующий слой, статистики настоящих изображений по всей обучающей выборке, 50 000 сгенерированных изображений). Код: fid.py в репозитории TTUR.
  • D. C. Dowson, B. V. Landau. The Fréchet distance between multivariate normal distributions. Journal of Multivariate Analysis, 12(3), pp. 450–455, 1982. Замкнутая формула для расстояния Фреше (W2W_2) между двумя гауссианами.
  • M. Fréchet. Sur la distance de deux lois de probabilité. Comptes rendus hebdomadaires des séances de l’Académie des sciences, Paris, 244, pp. 689–692, 1957. Том оцифрован в коллекции Comptes rendus на Gallica (1957, том 244, первая часть).
  • T. M. Cover, J. A. Thomas. Elements of Information Theory, 2nd ed. Wiley, 2006. Теорема 8.6.5: при заданной ковариации гауссиана максимизирует дифференциальную энтропию.
  • G. Peyré, M. Cuturi. Computational optimal transport. Foundations and Trends in Machine Learning, 11(5–6), 2019. Предложение 2.3: WpW_p — расстояние.
  • C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, Z. Wojna. Rethinking the Inception architecture for computer vision. CVPR, 2016.
  • M. J. Chong, D. Forsyth. Effectively unbiased FID and Inception Score and where to find them. CVPR, 2020. §3.1 и рисунок 2: смещение FIDN\mathrm{FID}_N зависит от генератора; §3.2: экстраполяция к FID∞\mathrm{FID}_\infty.
  • G. Parmar, R. Zhang, J.-Y. Zhu. On aliased resizing and surprising subtleties in GAN evaluation. CVPR, 2022. §3.2 (изменение размера), §3.3 (квантование и сжатие).
  • S. Jayasumana, S. Ramalingam, A. Veit, D. Glasner, A. Chakrabarti, S. Kumar. Rethinking FID: Towards a better evaluation metric for image generation. CVPR, 2024. §3.2–3.3: предположение о нормальности и причины, по которым оно не выполняется.
  • T. Kynkäänniemi, T. Karras, M. Aittala, T. Aila, J. Lehtinen. The role of ImageNet classes in Fréchet Inception Distance. ICLR, 2023. §1: FID смешивает качество и вариативность; §2 и рисунок 4: к чему FID чувствителен на изображениях FFHQ; §3, таблицы 1–2: повторная выборка, подгоняющая статистики классов ImageNet, снижает FID.
  • M. S. M. Sajjadi, O. Bachem, M. Lucic, O. Bousquet, S. Gelly. Assessing generative models via precision and recall. NeurIPS, 2018.
  • T. Miyato, M. Koyama. cGANs with projection discriminator. ICLR, 2018. §5.1: intra-FID.
  • M. Bińkowski, D. J. Sutherland, M. Arbel, A. Gretton. Demystifying MMD GANs. ICLR, 2018. §4: Kernel Inception Distance, его кубическое ядро и несмещённая оценка, рисунок 1 (смещение оценки FID на CIFAR-10), сноска 12 (вычислительная стоимость) и признаки LeNet для MNIST; §5: KID, усреднённый по 100 подмножествам из 1000 изображений; приложение D.3: несмещённой оценки FID не существует.
  • A. Gretton, K. M. Borgwardt, M. J. Rasch, B. Schölkopf, A. Smola. A kernel two-sample test. JMLR, 13, pp. 723–773, 2012. Лемма 6: квадрат MMD и его несмещённая оценка.
  • HSE-LAMBDA, репозиторий курса Deep Generative Models: metrics.ipynb, GANs.ipynb и 01_hw_AE-and-FID.ipynb.