19 / 33 · Оценка качества
LPIPS
Learned Perceptual Image Patch Similarity сравнивает два изображения через нормированные разности карт признаков глубокой сети, взвешенные обученными весами, так что расстояние согласуется с человеческим восприятием, а не с сырыми значениями пикселей.
На этой странице 10
LPIPS (Learned Perceptual Image Patch Similarity — обученное перцептивное сходство фрагментов изображений; Zhang et al., 2018) измеряет, насколько по-разному два изображения выглядят. Inception Score и FID оценивают целый набор сгенерированных изображений. LPIPS же сравнивает пару изображений, обычно сгенерированное или искажённое изображение и эталон .
Суть метода вкратце: берём выходы нескольких внутренних слоёв предобученной сети, находим разности карт признаков, затем нормируем, взвешиваем и усредняем.
Почему не сравнивать пиксели?#
Очевидное расстояние между двумя изображениями — попиксельное: расстояние или среднеквадратичная ошибка (mean squared error, MSE) по всем значениям,
Для восприятия это плохое расстояние, и оно ошибается в обе стороны:
- При сдвиге изображения MSE становится большой. Сдвиг картинки на один пиксель для человека почти ничего не меняет. Однако каждый пиксель на границе полос теперь сравнивается с другим значением, поэтому ошибка велика.
- MSE считает размытие приемлемым. Размытое изображение заменяет каждый пиксель средним по его соседям. Каждое значение меняется лишь немного, поэтому MSE остаётся малой, хотя размытие хорошо заметно.
Разберём небольшой численный пример. Возьмём изображение из вертикальных полос с периодом 4 пикселя, так что каждая строка имеет вид 0 0 1 1 0 0 1 1. Сравним его с двумя копиями:
- сдвинутой вправо на 1 пиксель (с переносом через край), так что каждая строка становится
1 0 0 1 1 0 0 1; - размытой ядром (тоже с переносом через край), так что каждая строка становится
.25 .25 .75 .75 .25 .25 .75 .75.
| Копия | Квадрат ошибки на пиксель | MSE | Для человека |
|---|---|---|---|
| Сдвинутая | на половине пикселей, на остальных | выглядит так же | |
| Размытая | на каждом пикселе | выглядит хуже |
Попиксельная MSE считает размытую копию в раз более близкой к оригиналу, что прямо противоположно тому, что мы видим.
Попиксельная MSE наказывает за сдвиг и прощает размытие
Родственный эффект объясняет, почему сети, обученные только с функцией потерь MSE, склонны выдавать размытые результаты (Mathieu, Couprie and LeCun, 2016). Предсказание, минимизирующее математическое ожидание квадрата ошибки, — это условное среднее, поэтому, когда правдоподобны несколько чётких ответов, наилучшее предсказание с точки зрения MSE — их среднее, то есть размытие. То же усреднение — одна из причин размытых сэмплов VAE. Перцептивное расстояние, напротив, должно быть устойчивым к малым, незаметным сдвигам и чувствительным к потере структуры. Глубокие признаки гораздо ближе к этому. Свёрточная сеть реагирует на границы, текстуры и части объектов, а её более глубокие слои сводят каждую окрестность к одной позиции грубой сетки, так что сдвиг на один пиксель лишь слегка меняет их отклики. Ранние слои всё же замечают сдвиг, поэтому признаки меняются меньше, чем сырые пиксели, но не инвариантны: сам LPIPS реагирует на сдвиги, слишком малые, чтобы их заметили люди (Ghildyal and Liu, 2022).
Алгоритм#
- Извлекаем признаки и на нескольких слоях предобученной сети, например AlexNet (Krizhevsky, Sutskever and Hinton, 2012) или VGG (Simonyan and Zisserman, 2015). Оба изображения обрабатывает одна и та же замороженная сеть с общими весами.
- Нормируем по каналам. В каждой пространственной позиции делим вектор признаков на его длину по каналам.
- Вычитаем две нормированные карты признаков.
- Взвешиваем разность поканально вектором , берём квадрат её длины по каналам в каждой позиции и усредняем по пространству, то есть по всем позициям. Получаем одно число на слой.
- Суммируем по слоям и получаем LPIPS.
Веса обучаются на человеческих перцептивных суждениях, а сеть при этом остаётся замороженной (конфигурация lin в Zhang et al., 2018, §3). Их подгоняют на наборе данных BAPPS, собранном методом вынужденного выбора из двух альтернатив (two-alternative forced choice, 2AFC): людям показывали эталонный фрагмент размером пикселя и две его искажённые версии, и они выбирали ту, что выглядит ближе (§2).
Как LPIPS сравнивает два изображения
Формула#
Обозначения: слой выдаёт карту признаков с каналами на сетке . Вектор признаков в позиции — это , а крышка обозначает его версию, нормированную к единичной длине:
Вектор признаков после ReLU может быть нулевым. Эталонная реализация делит на с , так что нулевой вектор остаётся нулевым (Zhang, 2021).
Слой с вектором весов и разностью нормированных признаков в каждой позиции (Zhang et al., 2018, §3, формула 1):
Здесь — поэлементное произведение, так что масштабирует каждый канал разности. Эталонный пакет lpips (Zhang, 2021) вместо этого применяет веса к квадратам поканальных разностей, , где — канал вектора ; статья тоже ограничивает веса неотрицательными значениями (Zhang et al., 2018, приложение A, рисунок 10). Поскольку , это формула выше с , так что две формы эквивалентны.
Итоговая формула:
У каждой части своя задача:
- Нормировка убирает общую величину активаций. Сравнивается только направление вектора признаков, то есть какие каналы откликаются и в какой пропорции. Поэтому слои или позиции с большими активациями не доминируют. Без весов этот член — по сути косинусное расстояние: для единичных векторов с углом между ними (Zhang et al., 2018, §3).
- Веса решают, какие каналы важны для восприятия, и приглушают те, что не важны.
- Пространственное усреднение делает сравнимыми слои с разными размерами сетки. Оно также прощает небольшое локальное расхождение, если остальная часть карты совпадает. Без усреднения слагаемые образуют карту, которая показывает, где два изображения различаются. Эталонный пакет возвращает такую карту, приведённую к разрешению входа и просуммированную по слоям, если он создан с
spatial=True(Zhang, 2021).
У игрушечного слоя ниже канала на сетке , так что каждый вектор признаков можно нарисовать стрелкой. Веса равны . Две позиции показывают эффект каждого шага:
- Правый нижний угол. Векторы признаков направлены вдоль канала 1 и канала 2. Они различаются на — наибольший угол, возможный для признаков, взятых после ReLU, как в эталонной реализации (Zhang, 2021), поскольку такие признаки неотрицательны. Без весов член равен . Разность равна , веса превращают её в , так что член равен .
- Центр. Направления различаются на . Без весов член был бы равен . Вес на канале 2 снижает его до .
Во всех остальных позициях векторы почти совпадают. Усреднение девяти членов даёт .
Внутри одного слоя: от двух карт признаков к числу dₗ
Интерпретация#
- Низкий LPIPS: изображения выглядят перцептивно похожими.
- Высокий LPIPS: изображения различаются видимой структурой (границами, текстурами, формами).
При поиске среди примерно 1000 случайно выбранных изображений FashionMNIST все девять ближайших изображений к ботинку (класс Ankle boot) — тоже ботинки. В этом поиске сеть получала сырые значения яркости – вместо ожидаемого диапазона , так что измерялся неверно масштабированный вариант, а не LPIPS в его определении. Перемасштабирование входа меняет нелинейные признаки, а с ними, возможно, и порядок соседей. Этот результат — диагностика данной конфигурации, а не свидетельство того, что LPIPS упорядочивает соседей этого запроса по классу; для такого вывода нужен повторный запуск с эталонной предобработкой.
Достоинства и недостатки#
Достоинства
- Лучше согласуется с людьми, чем попиксельные метрики и классические меры вроде SSIM (Wang et al., 2004). Основной выигрыш дают сами глубокие признаки. Без весов признаки сетей, обученных с учителем, совпадают с человеческими суждениями 2AFC в 67.0–68.9% случаев против 63.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 Score | FID | LPIPS | |
|---|---|---|---|
| Цель | уверенность и разнообразие сгенерированных изображений | близость сгенерированных изображений к настоящим | перцептивное сходство двух изображений |
| Используемые данные | только сгенерированные изображения | настоящие и сгенерированные изображения | пара изображений, например сгенерированное и эталон |
| Что сравнивается | каждое с маргинальным | гауссиана, подогнанная к настоящим признакам, и гауссиана, подогнанная к сгенерированным | нормированные глубокие признаки двух изображений, позиция за позицией |
| Расстояние | KL-дивергенция | квадрат расстояния Фреше (Вассерштейна-2) | квадрат взвешенного расстояния в пространстве признаков с обученными весами |
| Лучше | больше | меньше | меньше (более похожи) |
Ноутбук#
Ноутбук о метриках из репозитория HSE-LAMBDA Deep Generative Models (закреплённый коммит; ячейки нумеруются с 1, считая все ячейки подряд, в том числе текстовые) содержит практическую часть блока об оценке качества.
- Ячейка 7 приводит формулу LPIPS с суммой по слоям снаружи и обозначениями , для нормированных признаков.
- Ячейки 10–13 загружают FashionMNIST, показывают изображение-запрос (индекс 0, ботинок) и вычисляют LPIPS с помощью
lpips.LPIPS(net='alex')относительно 1000 индексов, выбранных с возвращением (np.random.seed(10)), предварительно изменив размер каждого изображения до . Каждое изображение поступает на вход как тензор в оттенках серого со значениями –. Распространение размерностей (broadcasting) в слое масштабирования входа пакета превращает его в трёхканальный батч из одного изображения, без перевода в диапазон , которого ожидает пакет (Zhang, 2021). Поэтому сохранённый запуск — нарушение контракта на вход: его расстояния несравнимы с опубликованными значениями LPIPS, и порядок соседей тоже не подтверждён, ведь правильное масштабирование меняет нелинейные признаки и может переставить соседей. Числа ниже — диагностика этой конфигурации, пока их не пересчитают со входами в (например, сnormalize=Trueдля изображений в ). Тензор запроса заново строится на каждой итерации, и градиенты отслеживаются, что замедляет вычисления, но не меняет расстояний. При загрузке модели пакет печатает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 — пары. Ни одна из этих метрик не может сказать, ошибается ли модель, порождая неправдоподобные изображения, или упуская часть данных. Следующая заметка разделяет эти два случая с помощью точности и полноты.
Литература#
- R. Zhang, P. Isola, A. A. Efros, E. Shechtman, O. Wang. The unreasonable effectiveness of deep features as a perceptual metric. CVPR, 2018. §2: набор данных BAPPS 2AFC из фрагментов 64 × 64; §3 и формула (1): нормировка к единичной длине по каналам, веса каналов , косинусное расстояние при , конфигурация lin с замороженными признаками; §4.1: согласие глубоких признаков с 2AFC по сравнению с и SSIM; приложение A, таблица 5: полные результаты 2AFC; приложение A, рисунок 10: неотрицательные обученные веса, числа каналов AlexNet.
- R. Zhang. PerceptualSimilarity, эталонная реализация LPIPS (пакет
lpips, релиз v0.1.4, версия весов 0.1), 2021.lpips/lpips.py: масштабирование входа для изображений в , нормировка с , веса на квадратах поканальных разностей;lpips/pretrained_networks.py: признаки берутся после каждого ReLU. - A. Krizhevsky, I. Sutskever, G. E. Hinton. ImageNet classification with deep convolutional neural networks. Advances in Neural Information Processing Systems 25 (NIPS), 2012. Базовая сеть AlexNet.
- K. Simonyan, A. Zisserman. Very deep convolutional networks for large-scale image recognition. ICLR, 2015. Базовая сеть VGG.
- Z. Wang, A. C. Bovik, H. R. Sheikh, E. P. Simoncelli. Image quality assessment: from error visibility to structural similarity. IEEE Transactions on Image Processing, 13(4), 2004. Индекс SSIM.
- M. Mathieu, C. Couprie, Y. LeCun. Deep multi-scale video prediction beyond mean square error. ICLR, 2016. Размытые предсказания при функции потерь MSE.
- A. Ghildyal, F. Liu. Shift-tolerant perceptual similarity metric. ECCV, 2022. Чувствительность LPIPS к незаметным сдвигам.
- M. Kettunen, E. Härkönen, J. Lehtinen. E-LPIPS: robust perceptual image similarity via random transformation ensembles. arXiv, 2019. Состязательные атаки на LPIPS.
- J.-Y. Zhu, R. Zhang, D. Pathak, T. Darrell, A. A. Efros, O. Wang, E. Shechtman. Toward multimodal image-to-image translation. NeurIPS, 2017. §5.2 и рисунок 6: среднее попарное LPIPS как мера разнообразия.
- J. Johnson, A. Alahi, L. Fei-Fei. Perceptual losses for real-time style transfer and super-resolution. ECCV, 2016.
- HSE-LAMBDA, репозиторий курса Deep Generative Models:
metrics.ipynb.