Как нейросеть TUNIT научилась переносить стили изображений без разметки

Yannic Kilcher 12,5 тыс. 49 мин 6 мин 16.06.2020
Главное

В детальном разборе от известного IT-исследователя Янника Килхера (Yannic Kilcher) рассматривается революционная научная работа под названием TUNIT, которая предлагает принципиально новый взгляд на задачу неуправляемого переноса стилей изображений. Авторы исследования — Кён Джин Бэк (Kyung Jin Baik), Джун Джэ Чхве (Jun Jae Choi), Ён Джун У (Yong Jung Woo), Джа Джун Ю (Ja Joon Yoo) и Хён Джун Шин (Hyun Joon Shin) — разработали архитектуру, способную самостоятельно группировать изображения по стилям без привлечения ручной разметки. Этот подход позволяет объединить кластеризацию датасета и генерацию изображений в единый цикл взаимного обучения.

🖼️ Эволюция переноса стилей: от жестких пар к полной свободе 1:24

Перенос стиля или перевод изображений из одного домена в другой (image-to-image translation) долгое время оставался вызовом для машинного обучения. Суть процесса заключается в том, чтобы изменить внешний вид («стиль») объекта на картинке, полностью сохранив его геометрическую структуру («контент»), например, позу кота на исходной фотографии. По словам Янника Килхера, механизмы такого переноса долгое время оставались для него загадкой, однако авторы TUNIT смогли элегантно решить главную проблему технологии — зависимость от размеченных данных.

Исторически эта технология прошла три ключевых этапа:

Янник Килхер отмечает, что простая последовательная кластеризация с последующим обучением генеративно-состязательной сети (GAN) дает низкое качество. Главное открытие авторов TUNIT заключается в том, что процессы саморазметки (self-labeling) и переноса стилей необходимо запускать одновременно, чтобы они помогали друг другу в процессе оптимизации.

🧩 Архитектура TUNIT: Святая троица нейросетей 7:08

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

Устройство и функции компонентов сети:

Поскольку разметки изначально нет, количество классов $K$ приходится угадывать. Янник Килхер рекомендует использовать стратегию умышленного завышения (over guess). Если в реальности ожидается от 10 до 15 классов, то в параметрах модели лучше выставить $K = 20$, так как недооценка количества доменов навредит обучению сильнее.

Важная деталь архитектуры дискриминатора заключается в его условной (conditional) структуре. Вместо одной головы классификации он имеет отдельную «голову» под каждый из $K$ предполагаемых классов. Каждая такая голова обучается отличать настоящие изображения конкретного домена (например, настоящих рыжих котов) от подделок генератора. Часть слоев дискриминатора остается общей для извлечения базовых признаков, что, как считает ведущий, полезно, хотя и не критично для работы концепта. При этом псевдо-метка от кодировщика жестко фиксируется (применяется операция argmax и detach), отсекая прохождение градиента по этой ветке назад.

📉 Магия лосс-функций: как обучить систему без разметки 14:02

Самая сложная и комплексная часть TUNIT — это её система функций потерь (losses). Поскольку прямого сигнала из GAN для обучения классификатора в кодировщике нет, авторы применили методы самообучения (self-supervised learning).

Для обучения кодировщика берется исходное изображение и его случайно аугментированная версия (с измененной яркостью, перевернутая или обрезанная). Модель максимизирует взаимную информацию (Mutual Information) между распределениями классов оригинальной и измененной картинки. Это уравнение включает два элемента:

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

Для вектора стиля применяется контрастивный лосс (Style Contrastive Loss). Система поддерживает динамическую очередь (очередь FIFO из прошлых изображений). Вектор стиля текущего изображения притягивается к стилю своей аугментированной копии и отталкивается от чужих стилей из очереди. По данным статьи, этот метод радикально повысил точность классификации морд животных по сравнению со старыми подходами.

Антагонистический лосс (Adversarial Loss) связывает систему воедино. Дискриминатор пытается поймать генератор на лжи, зная класс картинки от кодировщика. Генератор же пытается обмануть дискриминатор, имея на руках только исходное изображение и вектор стиля референса. Генератор намеренно лишен доступа к псевдо-метке класса. Из-за этого, как объясняет Килхер, генератор вынужден расшифровывать вектор стиля и самостоятельно связывать его с конкретным классом. В итоге градиент идет обратно в кодировщик, заставляя его упаковывать информацию о породе или цвете шерсти прямо внутрь непрерывного вектора стиля.

Чтобы генератор не начал игнорировать стиль и не выдавал случайные качественные картинки из домена, авторы ввели еще два защитных лосса:

📊 Результаты экспериментов: сила совместного обучения 42:11

Чтобы доказать преимущество сквозного совместного обучения, авторы провели визуализацию пространства стилей с помощью алгоритма t-SNE. На графиках тестовые изображения раскрасили в соответствии с реальными классами (хотя сама модель TUNIT этих истинных меток никогда не видела). При раздельном обучении кодировщика кластеры стилей сильно размыты и пересекаются. Однако при совместном обучении с GAN на t-SNE графике отчетливо видны изолированные, плотные группы, идеально совпадающие с реальными биологическими видами животных.

Показатель качества генерации FID (Fréchet Inception Distance), где меньшее значение означает лучший результат, при совместном обучении оказался в разы ниже, чем при раздельном. Более того, благодаря непрерывности пространства стилей, даже при завышенном количестве классов ($K$) сеть способна объединять похожие сущности. Например, разные ложные кластеры, содержащие львов или гепардов, на карте стилей все равно притягиваются друг к другу.

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

Ведущий обращает внимание на ограничения текущей версии TUNIT:

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

💬 Цитаты

«Что вообще происходит с этой лисой? Помогите ей кто-нибудь.»

Янник Килхер 47:50

«Если мы обучаем всё вместе, это работает намного лучше.»

Янник Килхер 42:37
👥 Спикер
📖 Термины
Image-to-image translation
Задача перевода изображений из одного домена в другой с сохранением контента и изменением стиля.
Unsupervised fashion
Режим обучения нейросети без использования предварительно размеченных человеком данных.
t-SNE
Метод нелинейного снижения размерности для визуализации многомерных векторов на плоскости.
FID (Fréchet Inception Distance)
Метрика оценки качества работы генеративно-состязательных сетей, измеряющая схожесть распределений реальных и фейковых картинок.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект TUNIT Yannic Kilcher image-to-image translation t-SNE