# Как победить пустые пиксели с помощью формулы Фурье?

Источник: https://www.youtube.com/watch?v=Lg97gWXsiQ4
Канал: Yannic Kilcher
Опубликовано: 18.12.2021

---

Технология инпейнтинга (дорисовывания изображений) сделала качественный шаг вперед благодаря совместной разработке ученых из Samsung AI Center, EPFL и Сколтеха. В рамках видеообзора и интервью с авторами метода Янник Кильхер разобрал нейросетевую архитектуру LaMa, способную эффективно реконструировать даже огромные поврежденные области на фотографиях высокого разрешения. Ключевым открытием стало использование быстрых преобразований Фурье, позволяющих нейросети мгновенно оценивать глобальный контекст изображения.

## 🛠️ Инструменты разработки: оркестрация экспериментов с ClearML
[[JUMP:0:39]]

Перед детальным разбором научной статьи Янник Кильхер знакомит зрителей со спонсором выпуска — платформой ClearML. Это полностью открытый (open-source) стек для ML Ops, предоставляющий разработчикам инструменты для отслеживания экспериментов, оркестрации, деплоя, а также создания хранилищ моделей и признаков.

Ведущий выделяет следующие ключевые особенности платформы:

* **Полная воспроизводимость:** интеграция всего двух строк кода позволяет автоматически отслеживать метрики, выходные данные, окружение и зависимости.
* **Движок оркестрации:** инструмент упаковывает эксперименты со всеми зависимостями и распределяет их по имеющемуся оборудованию.
* **Гибкость вычислений:** разработчик может запустить вычисления локально на ноутбуке, а затем мгновенно перенаправить их в облако.
* **Управление очередями:** задачи распределяются по специализированным очередям в зависимости от приоритета или требований к GPU.
* **Автоматизация процессов:** поддерживается автоматический поиск гиперпараметров и запуск обучения по расписанию или триггерам при поступлении новых данных.

Для демонстрации Янник клонирует ранее запущенный эксперимент, меняет в интерфейсе размер батча (batch size) со 128 на 129 в конфигурации гиперпараметров и отправляет его в очередь вычислений одним кликом. По его мнению, ClearML предоставляет мощный бесплатный облачный уровень, которого достаточно для решения многих повседневных задач инженера.

## 🎨 На что способна нейросеть LaMa
[[JUMP:3:29]]

Модель LaMa принимает на вход изображение и нарисованную пользователем маску, скрывающую определенную область. Алгоритм не видит того, что находится под маской, — перед ним стоит задача реалистично заполнить пустую зону на основе открытых фрагментов кадра.

Янник Кильхер демонстрирует работу модели на примерах со сложной геометрией. Система способна восстанавливать нерегулярные структуры (например, сквозные проемы в дверях) на очень больших площадях. Особую сложность для классических систем инпейнтинга представляют повторяющиеся паттерны: сетки, решетки и параллельные линии. Обычные сверточные сети опираются на локальный контекст, из-за чего «ломают» регулярные текстуры. По мнению ведущего, LaMa лишена этого недостатка благодаря глобальному видению кадра.

Для демонстрации возможностей алгоритма Янник использует стороннее веб-приложение `cleanup.pictures` (хотя существуют также официальное пространство на Hugging Face и Colab-ноутбук от авторов). Ведущий тестирует нейросеть на логотипе своего канала:

* Удаление математического знака Пи ($\pi$) проходит идеально.
* Стирание лапы и носа маскота дает забавные, но несколько пугающие результаты, изменяя анатомию существа.
* При удалении ножки стола и пересечении линий заголовка модель демонстрирует высокую устойчивость: она успешно дорисовывает геометрию стола, игнорируя случайные заступы кисти на соседние объекты.

Главное практическое преимущество LaMa отражено в ее названии (Resolution-robust Large Mask Inpainting) — это устойчивость к изменению разрешения кадра. Модель способна обрабатывать изображения разного масштаба без потери качества заполнения.

## 📐 Магия преобразования Фурье: преодоление ограничений классических CNN
[[JUMP:6:38]]

В чем заключается главная проблема стандартных сверточных нейросетей (CNN)? Обычная свертка (например, размером $3 \times 3$ пикселя) на конкретном слое анализирует исключительно ближайших соседей точки. Чтобы информация распространилась по всему изображению, сети требуется огромная глубина — множество последовательных слоев.

Когда маска, закрывающая объект, становится слишком широкой, ядра свертки внутри этой области видят только пустые («замаскированные») пиксели слоем за слоем. Нейросеть на протяжении первых нескольких слоев вообще не получает никакой информации о внешнем мире за пределами маски. К моменту, когда глубокие слои наконец дотягиваются до краев маски, физически может быть уже слишком поздно для качественного восстановления структуры.

Быстрые свертки Фурье (Fast Fourier Convolutions, FFC) решают эту проблему радикально, позволяя сети анализировать глобальный контекст на каждом слое. Преобразование Фурье переводит пространственный сигнал (пиксели) в частотную область. Каждая компонента в спектре Фурье содержит информацию обо всем изображении целиком. Самая низкая частота отвечает за глобальные очертания, более высокие — за быстрые изменения и мелкие текстуры.

Янник Кильхер подчеркивает концептуальную разницу:

> В то время как регулярная свертка локализована в пространстве пикселей, свертка Фурье локализована в частотном пространстве, но является глобальной в пространстве пикселей.

Поскольку дискретное преобразование Фурье базируется на операциях линейной алгебры, существуют его экстремально быстрые реализации (FFT), что делает операцию вычислительно доступной.

## 🏗️ Архитектура сети и структура блока Fast Fourier Convolution
[[JUMP:12:49]]

Архитектура LaMa является полностью сверточной, что и обеспечивает ее способность адаптироваться к любому разрешению. Во время обучения модель обрабатывает небольшие кропы размером $256 \times 256$ пикселей, однако обученная сеть способна без деградации качества обрабатывать HD-изображения (например, $1920 \times 1080$) и выше.

Базовая архитектура состоит из этапа уменьшения дискретизации (downsampling) и 9 остаточных блоков (residual blocks) на основе быстрых сверток Фурье (в расширенной версии модели используется 18 блоков).

Каждый FFC-блок параллельно обрабатывает два потока информации:

1.  **Локальная ветвь:** работает в привычном пространстве пикселей, отвечая за локальные корреляции и геометрию соседей.
2.  **Глобальная ветвь:** обрабатывает данные в частотной области, отвечая за макроструктуру кадра.

На каждом слое эти ветви обмениваются информацией. Глобальный поток направляется в блок спектрального преобразования (Spectral Transform).

Внутри блока спектрального преобразования выполняются следующие шаги:

* Входные данные пропускаются через попиксельную свертку $1 \times 1$, пакетную нормализацию (Batch Normalization) и активацию ReLU.
* Выполняется двухмерное быстрое преобразование Фурье (2D FFT), переводящее сигнал в комплексное пространство.
* Поскольку FFT возвращает комплексные числа ($a + ib$), вещественная и мнимая части разделяются и объединяются в единый вещественный вектор. Таким образом, количество каналов удваивается.
* В частотной области над отдельными частотами выполняется блок операций «Свертка $1 \times 1$ — Batch Norm — ReLU».
* Полученный результат трансформируется обратно в комплексные числа, и применяется обратное преобразование Фурье (Inverse FFT).

Такое чередование пространственных и спектральных трансформаций позволяет эффективно объединять локальные детали с глобальным пониманием сцены.

## ⚖️ Монструозная функция потерь: как заставить модель рисовать реалистично
[[JUMP:21:03]]

Простое требование попиксельно воссоздать исходное изображение при работе с большими масками неэффективно. Для широкой пустой области существует огромное множество логичных вариантов заполнения. Если сеть будет штрафоваться за несовпадение с конкретным оригиналом, она начнет усреднять все возможные исходы, выдавая размытое серое пятно. Модели необходима свобода выбора одного из реалистичных вариантов без жесткой привязки к исходным пикселям.

Чтобы решить эту проблему, инженеры применили комплексную функцию потерь, состоящую из множества компонентов:

* **Перцептивный лосс с большим рецептивным полем (High Receptive Field Perceptual Loss):** оригинальное и сгенерированное изображения пропускаются через предобученную нейросеть, после чего сравниваются их карты признаков на глубоких слоях.
* **Состязательный лосс (Adversarial Loss):** классический механизм GAN, где дискриминатор пытается отличить работу генератора от реального фото.
* **Регуляризация градиентов:** используется для стабилизации обучения GAN.
* **Перцептивный лосс на основе дискриминатора (Feature Matching Loss):** сравнение промежуточных признаков самого дискриминатора, помогающее сбалансировать силы генератора и дискриминатора.

Разработчики совершили важное открытие в области перцептивного лосса. Традиционно для него используют сеть VGG, обученную на задачу классификации (ImageNet). Однако авторы заметили, что классификационные сети излишне фокусируются на текстурах, игнорируя глобальную структуру. Вместо этого они обучили суррогатную модель на задачу семантической сегментации, внедрив туда слои с Фурье-свертками и раздутыми (dilated) свертками. Сегментационная сеть лучше оценивает границы объектов и глобальную геометрию сцены, что значительно повысило качество финального инпейнтинга.

## 🎭 Стратегия генерации масок при обучении
[[JUMP:24:24]]

При обучении нейросети невозможно размечать маски вручную, поэтому авторы создали продвинутый эвристический алгоритм генерации синтетических масок. Исследователи использовали комбинацию двух типов геометрии, заимствованную и развитую на базе алгоритма DeepFill v2:

* **Широкие маски (Wide masks):** произвольные полигоны со сглаженными углами.
* **Блочные маски (Box masks):** случайно сгенерированные прямоугольники или целые стеки перекрывающих друг друга блоков.

Такие маски могут закрывать более половины площади кадра. По словам исследователей, большая ширина маски критически важна: она заставляет генератор передавать информацию на огромные расстояния внутри сети. Если маски будут состоять из тонких линий, задача превратится в аналог супер-разрешения (super-resolution), где для восстановления достаточно изучить соседний ряд пикселей, а глобальные Фурье-связи останутся незадействованными.

## 🗣️ Интервью с создателями: от Pix2Pix до мирового признания
[[JUMP:28:27]]

Во второй половине видео к Яннику Кильхеру присоединяются авторы исследования — Роман Суворов и Елизавета Логачёва. Они подтверждают корректность выводов ведущего и подчеркивают, что успех LaMa — это комбинация трех равнозначных столпов: архитектуры нейросети, алгоритма генерации данных (масок) и сложной оптимизации лосс-функций.

Роман Суворов делится историей создания проекта: изначально команда взяла за основу стандартную модель Pix2Pix и начала итеративно искать ее слабые места. Исследователи протестировали множество существующих блоков из других научных работ по инпейнтингу и обнаружили, что ни одна архитектура не способна адекватно обрабатывать повторяющиеся и периодические паттерны. Идея использовать преобразование Фурье возникла как самый естественный математический ответ на проблему периодичности сигналов. В процессе поиска авторы наткнулись на концепцию Fast Fourier Convolution, которая изначально предлагалась другими учеными для задач распознавания образов, адаптировали и доработали ее под инпейнтинг.

Елизавета Логачёва рассказывает, что изначально они пытались тестировать другие алгоритмы на своем валидационном наборе данных, но все классические модели терпели крах при попытке заполнить масштабные пустоты (так называемые flesh holes). Это подтолкнуло команду к глубокой переработке механизмов интеграции глобального контекста.

В ходе беседы ученые раскрывают любопытную техническую деталь: в процессе экспериментов выяснилось, что локальная ветвь в блоках FFC практически не влияет на итоговый результат инпейнтинга — спектральный Фурье-блок берет на себя почти всю работу. Тем не менее, локальную ветвь решили сохранить в финальной архитектуре, так как она обеспечивает стабильность работы нейросети, когда модель обучают на низком разрешении, а затем заставляют обрабатывать экстремально большие изображения в продакшене.

## 🔍 Слабые места технологии и планы на будущее
[[JUMP:44:15]]

Янник Кильхер поинтересовался у гостей, на каких типах данных их система выдает наихудший результат. Авторы признают наличие фундаментальных ограничений у текущей версии LaMa.

По словам Романа Суворов, нейросеть обучалась преимущественно на восстановление фоновых текстур и геометрии окружения. Из-за этого модель не способна качественно регенерировать сложные объекты переднего плана — например, она не сможет достоверно дорисовать половину человеческого лица или объект, требующий глубоких семантических знаний об устройстве мира.

Елизавета Логачёва добавляет, что модель LaMa получилась очень компактной по числу параметров по сравнению с конкурентами. С одной стороны, это огромный плюс, позволяющий легко запускать сеть в веб-интерфейсах и на мобильных устройствах. С другой стороны, из-за малого объема памяти генератор физически не способен «помнить все на свете» и создавать сложные смысловые объекты из ничего.

Собеседники сходятся во мнении, что LaMa работает скорее как невероятно продвинутый интеллектуальный инструмент «Штамп» (Clone Stamp) из Photoshop: она виртуозно находит подходящие паттерны в открытых частях кадра и переносит их в закрытые маской зоны.

Отвечая на вопрос о будущем проекта, авторы выделили два главных направления:

1.  Дальнейшее улучшение генерализации при масштабировании на сверхвысокие разрешения.
2.  Упрощение и очистка функции потерь.

Елизавета Логачёва признается, что текущий лосс избыточен и требует долгой ручной балансировки множества гиперпараметров. Цель ученых — создать красивую и простую систему с «одной кнопкой», которая будет идеально работать без долгой настройки коэффициентов.