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

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

LPIPS

Learned Perceptual Image Patch Similarity сравнивает два изображения через нормированные разности карт признаков глубокой сети, взвешенные обученными весами, так что расстояние согласуется с человеческим восприятием, а не с сырыми значениями пикселей.

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

LPIPS (Learned Perceptual Image Patch Similarity — обученное перцептивное сходство фрагментов изображений; Zhang et al., 2018) измеряет, насколько по-разному два изображения выглядят. Inception Score и FID оценивают целый набор сгенерированных изображений. LPIPS же сравнивает пару изображений, обычно сгенерированное или искажённое изображение x′x' и эталон xx.

Суть метода вкратце: берём выходы нескольких внутренних слоёв предобученной сети, находим разности карт признаков, затем нормируем, взвешиваем и усредняем.

Почему не сравнивать пиксели?#

Очевидное расстояние между двумя изображениями — попиксельное: расстояние L2L_2 или среднеквадратичная ошибка (mean squared error, MSE) по всем C×H×WC\times H\times W значениям,

MSE(x,x′)=1CHW∑c,h,w(xchw−xchw′)2.\mathrm{MSE}(x, x') = \frac{1}{CHW}\sum_{c,h,w}\big(x_{chw} - x'_{chw}\big)^2 .

Для восприятия это плохое расстояние, и оно ошибается в обе стороны:

  • При сдвиге изображения MSE становится большой. Сдвиг картинки на один пиксель для человека почти ничего не меняет. Однако каждый пиксель на границе полос теперь сравнивается с другим значением, поэтому ошибка велика.
  • MSE считает размытие приемлемым. Размытое изображение заменяет каждый пиксель средним по его соседям. Каждое значение меняется лишь немного, поэтому MSE остаётся малой, хотя размытие хорошо заметно.

Разберём небольшой численный пример. Возьмём изображение 8×88\times 8 из вертикальных полос с периодом 4 пикселя, так что каждая строка имеет вид 0 0 1 1 0 0 1 1. Сравним его с двумя копиями:

  • сдвинутой вправо на 1 пиксель (с переносом через край), так что каждая строка становится 1 0 0 1 1 0 0 1;
  • размытой ядром 14[1  2  1]\tfrac14[1\;2\;1] (тоже с переносом через край), так что каждая строка становится .25 .25 .75 .75 .25 .25 .75 .75.
КопияКвадрат ошибки на пиксельMSEДля человека
Сдвинутая11 на половине пикселей, 00 на остальных0.50.5выглядит так же
Размытая0.252=0.06250.25^2 = 0.0625 на каждом пикселе0.06250.0625выглядит хуже

Попиксельная MSE считает размытую копию в 0.5/0.0625=80.5 / 0.0625 = 8 раз более близкой к оригиналу, что прямо противоположно тому, что мы видим.

Рисунок

Попиксельная MSE наказывает за сдвиг и прощает размытие

Сдвинутые и размытые полосы с точки зрения попиксельной MSEВ центре — изображение 8 на 8 пикселей из вертикальных полос: два столбца со значением 0, затем два столбца со значением 1, и так далее. Слева — то же изображение, сдвинутое вправо на один пиксель: оно выглядит так же, но на его карте квадратов ошибок относительно оригинала у половины пикселей ошибка равна 1, поэтому попиксельная MSE равна 0.50, то есть велика. Справа — изображение, размытое ядром 1 2 1, делённым на 4: оно выглядит хуже, с серыми значениями 0.25 и 0.75, но у каждого пикселя квадрат ошибки равен 0.0625, поэтому попиксельная MSE равна 0.0625, то есть мала. Поэтому попиксельная MSE считает размытую копию в 8 раз более близкой.сдвинутая копияоригинал xразмытая копиясдвиг на 1 pxядро [1 2 1]/4выглядит так жевыглядит хужеквадрат ошибки (x − x′)²квадрат ошибки (x − x′)²MSE = 0.50велика: половина пикселейMSE = 0.0625мала: каждый пиксель ±0.25шкала ошибки (√)01попиксельная MSE: размытие8× «ближе»перцептивная метрика должна ранжировать их наоборотСдвинутые и размытые полосы с точки зрения попиксельной MSE (вертикальная компоновка)Вверху — изображение 8 на 8 пикселей из вертикальных полос. Под ним — изображение, сдвинутое вправо на один пиксель, рядом с его картой квадратов ошибок: оно выглядит так же, но у половины пикселей ошибка равна 1, MSE 0.50. Внизу — размытое изображение рядом с его картой ошибок: оно выглядит хуже, но у каждого пикселя ошибка равна 0.0625, MSE 0.0625. Попиксельная MSE считает размытую копию в 8 раз более близкой.оригинал xсдвиг вправо на 1 pxразмытие [1 2 1]/4сдвинутая копия(x − x′)²выглядит так жеMSE = 0.50великаразмытая копия(x − x′)²выглядит хужеMSE = 0.0625мала: 0.0625 вездепопиксельная MSE: размытие 8× «ближе»
Изображение 8 × 8 из вертикальных полос (период 4 пикселя). Сдвиг вправо на один пиксель (с переносом через край) оставляет картинку на вид такой же, но половина пикселей меняет значение на противоположное, поэтому MSE = 0.50. Размытие ядром [1 2 1]/4 (тоже с переносом через край) заметно стирает полосы, но каждый пиксель меняется лишь на 0.25, поэтому MSE = 0.0625: попиксельная MSE считает размытую копию в 8 раз более близкой. Карты ошибок используют цветовую шкалу квадратного корня, чтобы малые ошибки оставались видны.

Родственный эффект объясняет, почему сети, обученные только с функцией потерь MSE, склонны выдавать размытые результаты (Mathieu, Couprie and LeCun, 2016). Предсказание, минимизирующее математическое ожидание квадрата ошибки, — это условное среднее, поэтому, когда правдоподобны несколько чётких ответов, наилучшее предсказание с точки зрения MSE — их среднее, то есть размытие. То же усреднение — одна из причин размытых сэмплов VAE. Перцептивное расстояние, напротив, должно быть устойчивым к малым, незаметным сдвигам и чувствительным к потере структуры. Глубокие признаки гораздо ближе к этому. Свёрточная сеть реагирует на границы, текстуры и части объектов, а её более глубокие слои сводят каждую окрестность к одной позиции грубой сетки, так что сдвиг на один пиксель лишь слегка меняет их отклики. Ранние слои всё же замечают сдвиг, поэтому признаки меняются меньше, чем сырые пиксели, но не инвариантны: сам LPIPS реагирует на сдвиги, слишком малые, чтобы их заметили люди (Ghildyal and Liu, 2022).

Алгоритм#

  1. Извлекаем признаки φl(x)\varphi_l(x) и φl(x′)\varphi_l(x') на нескольких слоях l=1,…,Ll = 1,\dots,L предобученной сети, например AlexNet (Krizhevsky, Sutskever and Hinton, 2012) или VGG (Simonyan and Zisserman, 2015). Оба изображения обрабатывает одна и та же замороженная сеть с общими весами.
  2. Нормируем по каналам. В каждой пространственной позиции (h,w)(h, w) делим вектор признаков на его длину по каналам.
  3. Вычитаем две нормированные карты признаков.
  4. Взвешиваем разность поканально вектором wlw_l, берём квадрат её длины по каналам в каждой позиции и усредняем по пространству, то есть по всем позициям. Получаем одно число dld_l на слой.
  5. Суммируем по слоям и получаем LPIPS.

Веса wlw_l обучаются на человеческих перцептивных суждениях, а сеть при этом остаётся замороженной (конфигурация lin в Zhang et al., 2018, §3). Их подгоняют на наборе данных BAPPS, собранном методом вынужденного выбора из двух альтернатив (two-alternative forced choice, 2AFC): людям показывали эталонный фрагмент размером 64×6464\times 64 пикселя и две его искажённые версии, и они выбирали ту, что выглядит ближе (§2).

Рисунок

Как LPIPS сравнивает два изображения

Схема вычисления LPIPSИзображение x слева вверху и изображение x штрих слева внизу поступают каждое в копию одной и той же замороженной свёрточной сети, AlexNet или VGG, изображённой пятью слоями. Две копии имеют общие веса. С каждого слоя l карты признаков фи l для x и для x штрих идут в узел сравнения d l между двумя полосами. Узлы d1, d2, d3, d4 и d5 складываются, и сумма равна LPIPS от x и x штрих. Врезка внизу показывает шаги внутри каждого узла d l: карты признаков размера C l на H l на W l нормируются к единичной длине по каналам, вычитаются, поканально умножаются на веса w l, обученные на человеческих перцептивных суждениях, возводятся в квадрат и усредняются по позициям h, w, что даёт d l. Низкий LPIPS означает, что изображения выглядят похоже; высокий — что изображения различаются видимой структурой.замороженная предобученная CNN (AlexNet / VGG), слои l = 1 … Lxx′общиевесаconv1conv5conv1conv5карты признаков φl размера Cl × Hl × Wl (чем глубже слой, тем грубее сетка)d₁d₂d₃d₄d₅++++φ₁(x)φ₁(x′)=LPIPS(x, x′)низкий → выглядят похожевысокий → различаетсявидимая структурасумма по слоям Σlвнутри каждого узла dl:φl(x), φl(x′)Cl × Hl × Wlнормировкапо каналамвычитаниеφ̂l(x) − φ̂l(x′)⊙ wlвзвешиваниеквадрат ‖ · ‖²₂среднее по h, wdlобучены на человеческих перцептивных сужденияхСхема вычисления LPIPS (вертикальная)Изображение x слева и изображение x штрих справа проходят сверху вниз каждое через копию одной и той же замороженной свёрточной сети из пяти слоёв; копии имеют общие веса. На каждом слое карты признаков обоих изображений идут в узел сравнения d l посередине. Узлы от d1 до d5 складываются, и сумма равна LPIPS от x и x штрих. Врезка в рамке внизу показывает шаги внутри каждого узла d l: нормировка к единичной длине по каналам, вычитание, поканальное умножение на w l (обученные на человеческих перцептивных суждениях), возведение в квадрат и усреднение по позициям h, w. Низкий LPIPS означает, что изображения выглядят похоже; высокий — что изображения различаются видимой структурой.xx′та же замороженная CNN(AlexNet / VGG)общие весаd₁d₂d₃d₄d₅++++conv1conv1conv5conv5=LPIPS(x, x′)низкий → выглядят похожевысокий → разная видимая структуравнутри каждого узла dl:φl(x), φl(x′)Cl × Hl × Wlнормировкапо каналамвычитаниеφ̂l(x) − φ̂l(x′)⊙ wlвзвешиваниеквадрат ‖ · ‖²₂среднее по h, wdlwl обучены на человеческих перцептивных суждениях
Оба изображения проходят через одну и ту же замороженную сеть. На каждом выбранном слое две карты признаков сравниваются (нормируются к единичной длине по каналам, вычитаются, взвешиваются обученными весами wₗ, возводятся в квадрат и усредняются по позициям), что даёт одно число dₗ на слой. LPIPS — сумма этих чисел. Размеры слоёв схематичны: у AlexNet пять слоёв имеют Cₗ = 64, 192, 384, 256 и 256 каналов, у VGG — 64, 128, 256, 512 и 512.

Формула#

Обозначения: слой ll выдаёт карту признаков φl(x)∈RCl×Hl×Wl\varphi_l(x) \in \mathbb R^{C_l \times H_l \times W_l} с ClC_l каналами на сетке Hl×WlH_l \times W_l. Вектор признаков в позиции (h,w)(h, w) — это φl(x)hw∈RCl\varphi_l(x)_{hw} \in \mathbb R^{C_l}, а крышка обозначает его версию, нормированную к единичной длине:

φ^l(x)hw=φl(x)hw∥φl(x)hw∥2.\hat\varphi_l(x)_{hw} = \frac{\varphi_l(x)_{hw}}{\big\|\varphi_l(x)_{hw}\big\|_2} .

Вектор признаков после ReLU может быть нулевым. Эталонная реализация делит на ∥φl(x)hw∥2+ε\|\varphi_l(x)_{hw}\|_2 + \varepsilon с ε=10−10\varepsilon = 10^{-10}, так что нулевой вектор остаётся нулевым (Zhang, 2021).

Слой ll с вектором весов wl∈RClw_l \in \mathbb R^{C_l} и разностью Δl,hw\Delta_{l,hw} нормированных признаков в каждой позиции (Zhang et al., 2018, §3, формула 1):

Δl,hw=φ^l(x)hw−φ^l(x′)hw,dl(x,x′)=1HlWl∑h,w∥ wl⊙Δl,hw∥22.\begin{aligned} \Delta_{l,hw} &= \hat\varphi_l(x)_{hw} - \hat\varphi_l(x')_{hw} , \\ d_l(x, x') &= \frac{1}{H_l W_l}\sum_{h,w}\big\|\, w_l \odot \Delta_{l,hw}\big\|_2^2 . \end{aligned}

Здесь ⊙\odot — поэлементное произведение, так что wlw_l масштабирует каждый канал разности. Эталонный пакет lpips (Zhang, 2021) вместо этого применяет веса vl,c≥0v_{l,c} \ge 0 к квадратам поканальных разностей, ∑cvl,c Δl,hw,c2\sum_c v_{l,c}\,\Delta_{l,hw,c}^2, где Δl,hw,c\Delta_{l,hw,c} — канал cc вектора Δl,hw\Delta_{l,hw}; статья тоже ограничивает веса неотрицательными значениями (Zhang et al., 2018, приложение A, рисунок 10). Поскольку ∥wl⊙Δl,hw∥22=∑cwl,c2 Δl,hw,c2\|w_l \odot \Delta_{l,hw}\|_2^2 = \sum_c w_{l,c}^2\,\Delta_{l,hw,c}^2, это формула выше с wl,c=vl,cw_{l,c} = \sqrt{v_{l,c}}, так что две формы эквивалентны.

Итоговая формула:

LPIPS(x,x′)=∑ldl(x,x′).\mathrm{LPIPS}(x, x') = \sum_{l} d_l(x, x') .

У каждой части своя задача:

  • Нормировка убирает общую величину активаций. Сравнивается только направление вектора признаков, то есть какие каналы откликаются и в какой пропорции. Поэтому слои или позиции с большими активациями не доминируют. Без весов этот член — по сути косинусное расстояние: для единичных векторов с углом θ\theta между ними ∥u^−v^∥22=∥u^∥22+∥v^∥22−2 u^⊤v^=2−2cos⁡θ\|\hat u - \hat v\|_2^2 = \|\hat u\|_2^2 + \|\hat v\|_2^2 - 2\,\hat u^\top\hat v = 2 - 2\cos\theta (Zhang et al., 2018, §3).
  • Веса wlw_l решают, какие каналы важны для восприятия, и приглушают те, что не важны.
  • Пространственное усреднение 1HlWl∑h,w\frac{1}{H_l W_l}\sum_{h,w} делает сравнимыми слои с разными размерами сетки. Оно также прощает небольшое локальное расхождение, если остальная часть карты совпадает. Без усреднения слагаемые ∥wl⊙Δl,hw∥22\|w_l \odot \Delta_{l,hw}\|_2^2 образуют карту, которая показывает, где два изображения различаются. Эталонный пакет возвращает такую карту, приведённую к разрешению входа и просуммированную по слоям, если он создан с spatial=True (Zhang, 2021).

У игрушечного слоя ниже Cl=2C_l = 2 канала на сетке 3×33 \times 3, так что каждый вектор признаков можно нарисовать стрелкой. Веса равны wl=(1,0.6)w_l = (1, 0.6). Две позиции показывают эффект каждого шага:

  • Правый нижний угол. Векторы признаков направлены вдоль канала 1 и канала 2. Они различаются на 90∘90^\circ — наибольший угол, возможный для признаков, взятых после ReLU, как в эталонной реализации (Zhang, 2021), поскольку такие признаки неотрицательны. Без весов член равен 2−2cos⁡90∘=22 - 2\cos 90^\circ = 2. Разность равна (1,−1)(1, -1), веса превращают её в (1,−0.6)(1, -0.6), так что член равен 1+0.36=1.361 + 0.36 = 1.36.
  • Центр. Направления различаются на 40∘40^\circ. Без весов член был бы равен 2−2cos⁡40∘≈0.472 - 2\cos 40^\circ \approx 0.47. Вес 0.60.6 на канале 2 снижает его до 0.340.34.

Во всех остальных позициях векторы почти совпадают. Усреднение девяти членов даёт dl≈0.20d_l \approx 0.20.

Рисунок

Внутри одного слоя: от двух карт признаков к числу dₗ

Четыре шага вычисления расстояния LPIPS на одном слоеЧетыре сетки 3 на 3, соединённые стрелками. Первая: в каждой позиции красный вектор признаков x и синий вектор признаков x штрих разной длины. Вторая: оба вектора нормированы к единичной длине и достают до четверти окружности. Третья: разность единичных векторов, поканально умноженная на w_l = (1.0, 0.6); почти везде она крошечная, больше в центре и наибольшая в правой нижней позиции, где два направления различаются на 90 градусов. Четвёртая: квадраты длин в виде тепловой карты с числами от 0.00 до 1.36. Их среднее по девяти позициям равно d_l = 0.20.признакиφl(x), φl(x′)нормировкаφ̂l(x), φ̂l(x′)вычитание, весаwl ⊙ (φ̂ − φ̂′)квадрат‖ · ‖²2 в позиции (h, w)0.000.020.000.030.340.010.000.001.36разные длиныостались направленияwl = (1.0, 0.6)велик при разных углахсреднее 9 значенийdl = 0.20Четыре шага вычисления расстояния LPIPS на одном слое (вертикальная компоновка)Четыре сетки 3 на 3 в два ряда. Слева вверху: красные векторы признаков x и синие векторы признаков x штрих разной длины. Справа вверху: оба нормированы к единичной длине. Слева внизу: разность единичных векторов, поканально умноженная на w_l = (1.0, 0.6), велика лишь там, где направления различаются. Справа внизу: квадраты длин в виде тепловой карты с числами от 0.00 до 1.36; их среднее по девяти позициям равно d_l = 0.20.1. признакиразные длины2. нормировкаостались направления3. вычитание, ⊙ wlwl = (1.0, 0.6)4. квадрат ‖ · ‖²0.000.020.000.030.340.010.000.001.36велик при разных углахсреднее по 9 позициям:dl = 0.20красные: x, синие: x′
Игрушечный слой с C = 2 каналами на сетке 3 × 3, так что вектор признаков в каждой позиции (h, w) — стрелка (красная для x, синяя для x′). Признаки после ReLU неотрицательны, поэтому на первых двух сетках каждая стрелка начинается в левом нижнем углу своей клетки и направлена в первый квадрант. Нормировка оставляет только направления; взвешенная разность велика лишь там, где направления расходятся; квадрат её длины, усреднённый по 9 позициям, равен dₗ = 0.20. Все значения вычислены.

Интерпретация#

  • Низкий LPIPS: изображения выглядят перцептивно похожими.
  • Высокий LPIPS: изображения различаются видимой структурой (границами, текстурами, формами).

При поиске среди примерно 1000 случайно выбранных изображений FashionMNIST все девять ближайших изображений к ботинку (класс Ankle boot) — тоже ботинки. В этом поиске сеть получала сырые значения яркости 00–255255 вместо ожидаемого диапазона [−1,1][-1, 1], так что измерялся неверно масштабированный вариант, а не LPIPS в его определении. Перемасштабирование входа меняет нелинейные признаки, а с ними, возможно, и порядок соседей. Этот результат — диагностика данной конфигурации, а не свидетельство того, что LPIPS упорядочивает соседей этого запроса по классу; для такого вывода нужен повторный запуск с эталонной предобработкой.

Достоинства и недостатки#

Достоинства

  • Лучше согласуется с людьми, чем попиксельные метрики и классические меры вроде SSIM (Wang et al., 2004). Основной выигрыш дают сами глубокие признаки. Без весов признаки сетей, обученных с учителем, совпадают с человеческими суждениями 2AFC в 67.0–68.9% случаев против 63.2% для L2L_2 и 63.1% для SSIM, тогда как человек набирает 73.9% (Zhang et al., 2018, §4.1). Обученные веса больше всего помогают на типах искажений, похожих на те, на которых их обучали: для AlexNet они поднимают показатель с 76.8% до 78.7% на этих тестовых наборах, но лишь с 65.0% до 65.3% на выходах реальных алгоритмов (приложение A, таблица 5).
  • Менее чувствителен к малым сдвигам, чем сырые пиксели: более глубокие признаки при них меняются мало, хотя метрика не инвариантна к сдвигам (Ghildyal and Liu, 2022).

Недостатки

  • Зависит от базовой CNN (backbone). AlexNet и VGG дают разные значения, поэтому результаты сравнимы, только если они получены с одной и той же базовой сетью и одной и той же версией обученных весов (Zhang, 2021).
  • Медленнее попиксельных метрик: каждое сравнение требует прямого прохода через глубокую сеть.
  • Всё ещё не идеален. Это обученное приближение человеческого восприятия, подогнанное к суждениям о небольших фрагментах. Малые состязательные возмущения (adversarial perturbations) изображения могут заставить LPIPS резко разойтись с человеческим суждением (Kettunen, Härkönen and Lehtinen, 2019).

Где применяется#

  • Сравнение выходов GAN и диффузионных моделей. LPIPS измеряет, насколько сгенерированное изображение близко к эталону. В условной генерации среднее LPIPS между парами выходов, сэмплированных для одного и того же входа, служит мерой разнообразия (Zhu et al., 2017, §5.2, рисунок 6).
  • Проверка ближайших соседей на запоминание (memorization). Поиск в обучающей выборке ближайших по LPIPS изображений к каждому сгенерированному сэмплу может выявить кандидатов в копии, которых FID не видит (недостатки FID). Это инструмент отсева: малое расстояние не доказывает запоминание, а поиск без находок не является исчерпывающей проверкой. Кандидатов нужно просмотреть и указать, какая часть обучающей выборки просмотрена, какая предобработка и какой порог использованы.
  • Оценка восстановления и редактирования изображений: сверхразрешение (super-resolution), заполнение пропущенных областей (inpainting) и перенос стиля (style transfer), где попиксельная метрика поощряла бы размытые результаты.
  • Как «перцептивная функция потерь» (perceptual loss) при обучении сетей. LPIPS дифференцируем, поэтому он может заменить или дополнить MSE в качестве функции потерь при обучении, в духе более ранних функций потерь в пространстве признаков (Johnson, Alahi and Fei-Fei, 2016). Это направлено именно на описанную выше проблему размытия.

Сравнение с IS и FID#

Эта таблица дополняет таблицу сравнения IS и FID столбцом для LPIPS.

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

Ноутбук#

Ноутбук о метриках из репозитория HSE-LAMBDA Deep Generative Models (закреплённый коммит; ячейки нумеруются с 1, считая все ячейки подряд, в том числе текстовые) содержит практическую часть блока об оценке качества.

  • Ячейка 7 приводит формулу LPIPS с суммой по слоям снаружи и обозначениями x^ijl\hat x^l_{ij}, y^ijl\hat y^l_{ij} для нормированных признаков.
  • Ячейки 10–13 загружают FashionMNIST, показывают изображение-запрос (индекс 0, ботинок) и вычисляют LPIPS с помощью lpips.LPIPS(net='alex') относительно 1000 индексов, выбранных с возвращением (np.random.seed(10)), предварительно изменив размер каждого изображения до 512×512512\times512. Каждое изображение поступает на вход как тензор 512×512512\times512 в оттенках серого со значениями 00–255255. Распространение размерностей (broadcasting) в слое масштабирования входа пакета превращает его в трёхканальный батч из одного изображения, без перевода в диапазон [−1,1][-1, 1], которого ожидает пакет (Zhang, 2021). Поэтому сохранённый запуск — нарушение контракта на вход: его расстояния несравнимы с опубликованными значениями LPIPS, и порядок соседей тоже не подтверждён, ведь правильное масштабирование меняет нелинейные признаки и может переставить соседей. Числа ниже — диагностика этой конфигурации, пока их не пересчитают со входами в [−1,1][-1, 1] (например, с normalize=True для изображений в [0,1][0, 1]). Тензор запроса заново строится на каждой итерации, и градиенты отслеживаются, что замедляет вычисления, но не меняет расстояний. При загрузке модели пакет печатает spatial [off]: при значении по умолчанию spatial=False он возвращает одно число на пару, а не описанную выше карту расстояний.
  • Ячейки 14–15 строят гистограмму расстояний по классам и показывают девять ближайших изображений. В сохранённом запуске, с немасштабированными входами, девять наименьших расстояний равны 0.168, 0.181, 0.183, 0.191, 0.213, 0.214, 0.215, 0.217 и 0.220, и все эти изображения — ботинки. Все ботинки в выборке лежат примерно на расстоянии 0.17–0.44. Ближайшие изображения других классов, несколько сандалий и кроссовок, лежат примерно на 0.25–0.28, а почти все остальные изображения — выше 0.3.
  • Ячейка 16 содержит две автоматические проверки: наименьшее расстояние должно быть меньше 0.2, и больше 90% из девяти ближайших соседей должны иметь ту же метку, что и запрос, а при девяти соседях это означает все девять.

Дальше#

IS и FID оценивают наборы сгенерированных изображений, LPIPS — пары. Ни одна из этих метрик не может сказать, ошибается ли модель, порождая неправдоподобные изображения, или упуская часть данных. Следующая заметка разделяет эти два случая с помощью точности и полноты.

Литература#