Erasing Concepts from Diffusion Models
[ICCV’23, проект, код]
Во время обучения, text-to-image модели видят огромное количество пар картинка-текст, часть из которых может содержать нежелательный контент. Проблема осложняется тем что модель также учится обобщать и интерполировать концепты, что на практике приводит к мультипликативному эффекту: если в данные попали “плохие” концепты, то хорошо обученная модель научится генерировать еще и их сочетания.
Авторы предлагают использовать собственные знания модели о не нужных нам концептах. Для этого подготовим набор соответствующих промтов и зафайнтюним уже обученную модель. В статье упоминается подготовка коротких промтов длиной в 1-2 слова. Предположительно, делается это для того чтобы минимизировать забывание лишнего.
Метод
1️⃣ Берём предобученную модель, создаём и “замораживаем” её копию. Об этой копии можно думать как об учителе в терминах дистилляции
2️⃣ Предсказываем шум “замороженной” моделью используя и не используя промт, после чего считаем разницу между ними. По сути, нам интересно получить разницу условной и безусловной генерации модели. Эта разница - направление, в которое нам хотелось бы заставить двигаться дообучаемую модель
3️⃣ Дообучаем “размороженную” копию модели стандартным диффузионным train loop’ом:
- Семплируем время
- Семплируем шум для это времени
- Накладываем шум на исходную картинку
- Учимся предсказывать шум (тут модификация)
4️⃣ Модифицируем лосс. Вместо предсказания наложенного случайного нормального шума, будем предсказывать разницу из п.2
Частичное дообучение
На практике есть три основные опции: дообучать всю модель, self-attention и/или cross-attention. Авторы показывают, что дообучать только cross-attention оптимально с точки зрения производительности и визуального качества. А еще есть параметр, регулирующий силу забывания, его тоже нужно будет подобрать, он важен.
Ограничения и вариации
Важно, что на практике метод может приводить к искажению остальных концептов и снижению качества генераций. А еще, если вместо безусловного сигнала использовать условный с другим промтом, то можно произвести замену концепта вместо его удаления.
В следующем посте поговорим про развитие этого метода, который будет представлен на ECCV’24 уже на следующей неделе!
[ICCV’23, проект, код]
Во время обучения, text-to-image модели видят огромное количество пар картинка-текст, часть из которых может содержать нежелательный контент. Проблема осложняется тем что модель также учится обобщать и интерполировать концепты, что на практике приводит к мультипликативному эффекту: если в данные попали “плохие” концепты, то хорошо обученная модель научится генерировать еще и их сочетания.
Авторы предлагают использовать собственные знания модели о не нужных нам концептах. Для этого подготовим набор соответствующих промтов и зафайнтюним уже обученную модель. В статье упоминается подготовка коротких промтов длиной в 1-2 слова. Предположительно, делается это для того чтобы минимизировать забывание лишнего.
Метод
1️⃣ Берём предобученную модель, создаём и “замораживаем” её копию. Об этой копии можно думать как об учителе в терминах дистилляции
2️⃣ Предсказываем шум “замороженной” моделью используя и не используя промт, после чего считаем разницу между ними. По сути, нам интересно получить разницу условной и безусловной генерации модели. Эта разница - направление, в которое нам хотелось бы заставить двигаться дообучаемую модель
3️⃣ Дообучаем “размороженную” копию модели стандартным диффузионным train loop’ом:
- Семплируем время
- Семплируем шум для это времени
- Накладываем шум на исходную картинку
- Учимся предсказывать шум (тут модификация)
4️⃣ Модифицируем лосс. Вместо предсказания наложенного случайного нормального шума, будем предсказывать разницу из п.2
Частичное дообучение
На практике есть три основные опции: дообучать всю модель, self-attention и/или cross-attention. Авторы показывают, что дообучать только cross-attention оптимально с точки зрения производительности и визуального качества. А еще есть параметр, регулирующий силу забывания, его тоже нужно будет подобрать, он важен.
Ограничения и вариации
Важно, что на практике метод может приводить к искажению остальных концептов и снижению качества генераций. А еще, если вместо безусловного сигнала использовать условный с другим промтом, то можно произвести замену концепта вместо его удаления.
В следующем посте поговорим про развитие этого метода, который будет представлен на ECCV’24 уже на следующей неделе!
🔥5🤯1
R.A.C.E. Robust Adversarial Concept Erasure for Secure Text-to-Image Diffusion Model
[ECCV’24, код есть]
Prior work
Пусть у нас есть text-to-image модель, научившаяся генерировать нежелательные концепты и их сочетания. Erasing Concepts from Diffusion Models (ECDM) предлагает делать Machine Unlearning. Модель дообучают генерировать что угодно кроме проблемного концепта в случае, если на вход подаётся отвечающий за проблемный концепт промт. Например, если раньше по запросу “nudity” вы получали релевантную генерацию, то теперь конкретно для этого промта генерация станет не релевантной.
Ограничения prior work
Наверняка существуют синонимы или просто наборы токенов, дающие эмбеды близкие к эмбеду нежелательного концепта. Заранее предугадать все подобные варианты не возможно, а если у системы большая база пользователей, то они наверняка найдут лазейку. В общем, на практике нужна более высокая общность забывания концептов.
Интуиция к методу
Известно, что текстовая инверсия позволяет получать промты, заставляющие SD генерировать ранее забытые концепты. А еще, ранее мы разбирали подход с дискретной оптимизацией промтов, который также можно использовать с целью генерации адверсариальных примеров. Давайте используем эти трюки для усиления базового метода удаления концептов ECDM
Метод
Для расширения области забывания концепта будем использовать механизм PGD адверсариал атаки. Для этого:
1️⃣ Выберем проблемный концепт и сформулируем для него короткий промт как в ECDM
2️⃣ Соберем картинок этого концепта, не обязательно соответствующих промту
3️⃣ Найдем минимальную по норме добавку шума к тестовому эмбедингу, такую что результатом генерации станет другая картинка проблемного концепта
4️⃣ Модифицируем ECDM лосс на adversarial training: теперь модель будет учиться генерировать не проблемную картинку даже если ей на вход подали промт с адверсариальным шумом
Доп. хаки
Авторы отмечают, что сила забывания пропорциональна общему падению качества генерации. Для уменьшения эффекта предлагает использовать в лоссе доп. слагаемое, приближающее веса дообученной модели к исходным весам SD. А еще предлагается самостоятельно попридумывать синонимы к промтам на обучении для увеличения вариативности😐
Выглядит как прогресс, но не решение всех проблем. Планирую найти постер авторов на конфе и понабрасывать лично :)
[ECCV’24, код есть]
Prior work
Пусть у нас есть text-to-image модель, научившаяся генерировать нежелательные концепты и их сочетания. Erasing Concepts from Diffusion Models (ECDM) предлагает делать Machine Unlearning. Модель дообучают генерировать что угодно кроме проблемного концепта в случае, если на вход подаётся отвечающий за проблемный концепт промт. Например, если раньше по запросу “nudity” вы получали релевантную генерацию, то теперь конкретно для этого промта генерация станет не релевантной.
Ограничения prior work
Наверняка существуют синонимы или просто наборы токенов, дающие эмбеды близкие к эмбеду нежелательного концепта. Заранее предугадать все подобные варианты не возможно, а если у системы большая база пользователей, то они наверняка найдут лазейку. В общем, на практике нужна более высокая общность забывания концептов.
Интуиция к методу
Известно, что текстовая инверсия позволяет получать промты, заставляющие SD генерировать ранее забытые концепты. А еще, ранее мы разбирали подход с дискретной оптимизацией промтов, который также можно использовать с целью генерации адверсариальных примеров. Давайте используем эти трюки для усиления базового метода удаления концептов ECDM
Метод
Для расширения области забывания концепта будем использовать механизм PGD адверсариал атаки. Для этого:
1️⃣ Выберем проблемный концепт и сформулируем для него короткий промт как в ECDM
2️⃣ Соберем картинок этого концепта, не обязательно соответствующих промту
3️⃣ Найдем минимальную по норме добавку шума к тестовому эмбедингу, такую что результатом генерации станет другая картинка проблемного концепта
4️⃣ Модифицируем ECDM лосс на adversarial training: теперь модель будет учиться генерировать не проблемную картинку даже если ей на вход подали промт с адверсариальным шумом
Доп. хаки
Авторы отмечают, что сила забывания пропорциональна общему падению качества генерации. Для уменьшения эффекта предлагает использовать в лоссе доп. слагаемое, приближающее веса дообученной модели к исходным весам SD. А еще предлагается самостоятельно попридумывать синонимы к промтам на обучении для увеличения вариативности
Выглядит как прогресс, но не решение всех проблем. Планирую найти постер авторов на конфе и понабрасывать лично :)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1👏1
RegionDrag: Fast Region-Based Image Editing with Diffusion Models
ECCV’24
Очень эффективный, почти real-time image editing с помощью предобученной text-to-image диффузии.
Метод
1️⃣ Пользователь выделяет регионы изображения для эдитинга (исходный, целевой). Например, для того чтобы удлинить юбку, поменять положение ног или внести ещё какие-то не слишком масштабные изменения
2️⃣ Делаем N шагов диффузии вперед для получения сильно зашумленного изображения. На самом деле, значение
3️⃣ На каждом шаге запоминаем KV матрицы из self-attention исходного региона. То есть берем маску картинки, получаем маску для лантента энкодером VAE, получаем латентную маску
4️⃣ Делаем N шагов семплирования из этого шума, подставляя запомненные KV значения в целелевой регион
На выходе получают отредактированное изображение примерно за ту же стоимость что и генерация с нуля, что очень и очень хорошо.
Ограничения от авторов
- Регионы должны быть не слишком далеки иначе могут возникать заметные артефакты
- Авторы не пробовали применять метод для дистильнутых моделей, не понятно могут ли возникнуть проблемы. А ведь это самый желанный практический кейс для достижения real-time редактирования.
От себя отмечу, что поскольку авторы используют DDIM инверсию, генерация будет уходить в сторону и в любом случае порождать небольшие изменения там где мы их не хотим. Диффузию нужно отдельно контролировать чтобы такого не происходило, для этого уже есть методы😉
ECCV’24
Очень эффективный, почти real-time image editing с помощью предобученной text-to-image диффузии.
Метод
1️⃣ Пользователь выделяет регионы изображения для эдитинга (исходный, целевой). Например, для того чтобы удлинить юбку, поменять положение ног или внести ещё какие-то не слишком масштабные изменения
2️⃣ Делаем N шагов диффузии вперед для получения сильно зашумленного изображения. На самом деле, значение
t до которого зашумлять - это важный параметр. На практике, авторы советуют сашумлять примерно до половины, то есть до t~=0.53️⃣ На каждом шаге запоминаем KV матрицы из self-attention исходного региона. То есть берем маску картинки, получаем маску для лантента энкодером VAE, получаем латентную маску
4️⃣ Делаем N шагов семплирования из этого шума, подставляя запомненные KV значения в целелевой регион
На выходе получают отредактированное изображение примерно за ту же стоимость что и генерация с нуля, что очень и очень хорошо.
Ограничения от авторов
- Регионы должны быть не слишком далеки иначе могут возникать заметные артефакты
- Авторы не пробовали применять метод для дистильнутых моделей, не понятно могут ли возникнуть проблемы. А ведь это самый желанный практический кейс для достижения real-time редактирования.
От себя отмечу, что поскольку авторы используют DDIM инверсию, генерация будет уходить в сторону и в любом случае порождать небольшие изменения там где мы их не хотим. Диффузию нужно отдельно контролировать чтобы такого не происходило, для этого уже есть методы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Еще несколько достойных внимания постеров с ECCV.
To Generate or Not? Safety-Driven Unlearned Diffusion Models Are Still Easy To Generate Unsafe Images ... For Now
Появившаяся на архиве год назад и явно принятая с ресабмита аналитическая работа про то что методы удаления небезопасных данных (например NSFW контент) из диффузионок все еще несовершенны. Авторы показывают, что с помощью адверсариал атак можно доставать из моделей нежелательный контент даже если они был удален ранее каким-то простым методом.
Занятно, что совсем недавно мы разбирали статью, в которой авторы как раз предложили дообучать модели на семплах полученных адверсариал атаками, за счет чего лучше удаляли небезопасные данные и увеличивали робастность модели к генерациям подобного контента.
You Only Need One Step: Fast Super-Resolution with Stable Diffusion via Scale Distillation
Мы уже делали разбор этой статьи сразу после её выхода. На конфе удалось пообщаться с автором и узнать почему они все-таки делают диффузионный Super Resolution, а не дальше учат GAN’ы, ведь для этой задачи разнообразие генераций и равномерное покрытие мультимодальных распределений как будто не обязательно.
Интуиция в том что исходно диффузия дает более смазанные картинки. При этом, они могут выглядеть более естественно, особенно SR in the wild задачах где модель деградации сложная или неизвестная. Автор топит за то чтобы использовать диффузию для начального обучения и потом дотюнивать с GAN лоссом для комбинирования лучшего из двух миров, что звучит весьма разумно.
TIBET: Identifying and Evaluating Biases in Text-to-Image Generative Models
Метод оценки и выявления байесов генеративной модели. Основан на генерации концептных промтов LLM’кой и выглядит примерно так:
1. Определяем набор концептов (как правило, существительные)
2. Промптим LLM сделать нам промты для генераций с использованием концептов
3. Оцениваем результаты генераций с помощью VQA модели.
От себя добавлю, что с практической точки зрения перед тем как использовать VQA модель как метрику, хорошо бы убедиться, что она сама знает все нужные концепты :)
Это и подобные исследования интересны тем что помогают понять чему выучилась модель обучавшаяся на сотнях миллионах пар картинка-текст.
To Generate or Not? Safety-Driven Unlearned Diffusion Models Are Still Easy To Generate Unsafe Images ... For Now
Появившаяся на архиве год назад и явно принятая с ресабмита аналитическая работа про то что методы удаления небезопасных данных (например NSFW контент) из диффузионок все еще несовершенны. Авторы показывают, что с помощью адверсариал атак можно доставать из моделей нежелательный контент даже если они был удален ранее каким-то простым методом.
Занятно, что совсем недавно мы разбирали статью, в которой авторы как раз предложили дообучать модели на семплах полученных адверсариал атаками, за счет чего лучше удаляли небезопасные данные и увеличивали робастность модели к генерациям подобного контента.
You Only Need One Step: Fast Super-Resolution with Stable Diffusion via Scale Distillation
Мы уже делали разбор этой статьи сразу после её выхода. На конфе удалось пообщаться с автором и узнать почему они все-таки делают диффузионный Super Resolution, а не дальше учат GAN’ы, ведь для этой задачи разнообразие генераций и равномерное покрытие мультимодальных распределений как будто не обязательно.
Интуиция в том что исходно диффузия дает более смазанные картинки. При этом, они могут выглядеть более естественно, особенно SR in the wild задачах где модель деградации сложная или неизвестная. Автор топит за то чтобы использовать диффузию для начального обучения и потом дотюнивать с GAN лоссом для комбинирования лучшего из двух миров, что звучит весьма разумно.
TIBET: Identifying and Evaluating Biases in Text-to-Image Generative Models
Метод оценки и выявления байесов генеративной модели. Основан на генерации концептных промтов LLM’кой и выглядит примерно так:
1. Определяем набор концептов (как правило, существительные)
2. Промптим LLM сделать нам промты для генераций с использованием концептов
3. Оцениваем результаты генераций с помощью VQA модели.
От себя добавлю, что с практической точки зрения перед тем как использовать VQA модель как метрику, хорошо бы убедиться, что она сама знает все нужные концепты :)
Это и подобные исследования интересны тем что помогают понять чему выучилась модель обучавшаяся на сотнях миллионах пар картинка-текст.
🔥6👍1
Сегодня поговорим про масштабирование моделей и данных в диффузии.
Scaling Laws For Diffusion Transformers
Несколько предыдущих работ (раз, два, три) уже в том или ином виде обсуждали масштабирование диффузионок в целом и DiT в частности. Однако построением предсказаний того как будет улучшаться модель при масштабировании они не занимались, то есть power law кривульки отсутствуют.
Зато они являются основным вкладом этой работы. Вдохновившись Шиншиллой, авторы проводят ряд экспериментов на небольших выч. бюджетах и строят sns.color_palette("mako”)🌿 isoFLOP кривые по числу параметров и лоссам, из которых далее получают кривые зависимости размеров моделей и необходимого на их обучение компьюта. Экстраполяцией графиков получают предсказание того каким будет лосс обучения (сравнительно скромного) 1B DiT.
Проблемой таких работ является опора на FID как основную метрику. Его корреляция с лоссом зависит от CFG scale, да и корреляция с оценками пользователей уже много раз ставилась под сомнение. Но анализ интересный.
Pruning then Reweighting: Towards Data-Efficient Training of Diffusion Models
Можно масштабировать модели по параметрам и компьюту, а можно по данным и их качеству. Авторы утверждают, что делают второе первыми в мире, что не совсем правда потом что есть Broken Neural Scaling Laws и исследование в YaART.
Интересна эта работа тем что авторы смотрят не только на увеличение красивости генераций в терминах FID или каких-то визуальных сравнений, а еще и стараются сохранить полноту знаний за счет поддержания баланса классов. На экспы с CIFAR не тригеримся, дальше есть SD и MDT хотя бы на ImageNet.
EvolveDirector: Approaching Advanced Text-to-Image Generation with Large Vision-Language Models
Известно, что если подмешать в обучающий/файнтюновый датасет немного синтетики из какой-нибудь JourneyDB, то это улучшит качество итоговой модели. Эффект похож на дистилляцию, только вместо прямого сигнала из модели-учителя вы используете результаты её работы.
Авторы спрашивают: если задаться целью обучить модель на синтетике порожденной другой моделью, сколько её понадобится и можно ли превзойти учителя по качеству? Сразу вспоминается работа про self-distill, где показывалось, что если делать self-distill итеративно, то модели коллапсируют.
Так вот, сначала авторы пробуют взять 11М промтов из SAM и нагенерить по ним синтетики через PixART. Так получается догнать сам PixART, учившийся на 14М пар. Проблема такой неэффективности в неинформативных и сильно повторяющихся промтах. Для устранения проблемы берут VLM, кепшенят картинки и по кепшенам снова деляют генерации. Показывают, что теперь уже 100к семплов становится достаточно чтобы догнать учителя. А если взять несколько топ моделей, сделать генерации каждой из них, а потом отобрать лучшие VLM’кой, то можно превзойти каждую из моделей в отдельности👀
Scaling Laws For Diffusion Transformers
Несколько предыдущих работ (раз, два, три) уже в том или ином виде обсуждали масштабирование диффузионок в целом и DiT в частности. Однако построением предсказаний того как будет улучшаться модель при масштабировании они не занимались, то есть power law кривульки отсутствуют.
Зато они являются основным вкладом этой работы. Вдохновившись Шиншиллой, авторы проводят ряд экспериментов на небольших выч. бюджетах и строят sns.color_palette("mako”)
Проблемой таких работ является опора на FID как основную метрику. Его корреляция с лоссом зависит от CFG scale, да и корреляция с оценками пользователей уже много раз ставилась под сомнение. Но анализ интересный.
Pruning then Reweighting: Towards Data-Efficient Training of Diffusion Models
Можно масштабировать модели по параметрам и компьюту, а можно по данным и их качеству. Авторы утверждают, что делают второе первыми в мире, что не совсем правда потом что есть Broken Neural Scaling Laws и исследование в YaART.
Интересна эта работа тем что авторы смотрят не только на увеличение красивости генераций в терминах FID или каких-то визуальных сравнений, а еще и стараются сохранить полноту знаний за счет поддержания баланса классов. На экспы с CIFAR не тригеримся, дальше есть SD и MDT хотя бы на ImageNet.
EvolveDirector: Approaching Advanced Text-to-Image Generation with Large Vision-Language Models
Известно, что если подмешать в обучающий/файнтюновый датасет немного синтетики из какой-нибудь JourneyDB, то это улучшит качество итоговой модели. Эффект похож на дистилляцию, только вместо прямого сигнала из модели-учителя вы используете результаты её работы.
Авторы спрашивают: если задаться целью обучить модель на синтетике порожденной другой моделью, сколько её понадобится и можно ли превзойти учителя по качеству? Сразу вспоминается работа про self-distill, где показывалось, что если делать self-distill итеративно, то модели коллапсируют.
Так вот, сначала авторы пробуют взять 11М промтов из SAM и нагенерить по ним синтетики через PixART. Так получается догнать сам PixART, учившийся на 14М пар. Проблема такой неэффективности в неинформативных и сильно повторяющихся промтах. Для устранения проблемы берут VLM, кепшенят картинки и по кепшенам снова деляют генерации. Показывают, что теперь уже 100к семплов становится достаточно чтобы догнать учителя. А если взять несколько топ моделей, сделать генерации каждой из них, а потом отобрать лучшие VLM’кой, то можно превзойти каждую из моделей в отдельности
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🗿1
Sample what you can’t compress
[Google и xAI код не выкладывают]
Картиночные автоэнкодеры (АЕ) используются для обучения диффузионных и авторегрессионных моделей на их скрытых представлениях. При этом, для обучения самих АЕ, обычно используют комбинацию реконструкционных лоссов (L1, L2, LPIPS, DreamSIM, DISTS etc.) и GAN лосса. Добавление GAN лосса делают для увеличения четкости и реалистичности, без него реконструкции получаются размытыми.
Авторы задаются вопросом: если диффузия сейчас основная генеративная парадигма, почему мы все еще учим АЕ с GAN лоссом?
Может показаться, что статья просто про замену GAN на диффузию -> stonks📈 (зумеры переизобрели писксельную диффузию в пространстве высокой размерности).
На самом деле это не совсем так. Обратим внимание на основную схему: на ней есть два декодера и оба важны для качества и сходимости. D_refine - это U-Net, действительно представляющий собой пиксельную диффузию. Но важно, что он также обуславливается на выход D_refine, то есть на результат кодирования-декодирования AE. Мне это напоминает то как работают диффузионные SR модели (SR3), в которых к основному входу x_t приконкачивают бикубик апскейл LR картинки y.
Использование условия на выход D_init имеет и другой плюс - можно использовать CFG. Для этого в ходе обучения условие дропают в 10% случаев, а на инференсе экспериментально подбирают оптимальный CFG scale, что в итоге улучшает качество.
В экспериментах авторы проверяют, что их AE приводит:
- К более хорошим реконструкциям, особенно на высоких степенях компрессии (когда мало каналов в латентах);
- К более качественным (по FID) class-cond диффузионкам, обученным на этих латентах.
У подхода есть очевидный минус связанный с применением диффузии - увеличение стоимости обучения и инференса. А еще совершенно не ясно почему такое обучение даёт более хорошие латенты.
[Google и xAI код не выкладывают]
Картиночные автоэнкодеры (АЕ) используются для обучения диффузионных и авторегрессионных моделей на их скрытых представлениях. При этом, для обучения самих АЕ, обычно используют комбинацию реконструкционных лоссов (L1, L2, LPIPS, DreamSIM, DISTS etc.) и GAN лосса. Добавление GAN лосса делают для увеличения четкости и реалистичности, без него реконструкции получаются размытыми.
Авторы задаются вопросом: если диффузия сейчас основная генеративная парадигма, почему мы все еще учим АЕ с GAN лоссом?
Может показаться, что статья просто про замену GAN на диффузию -> stonks
На самом деле это не совсем так. Обратим внимание на основную схему: на ней есть два декодера и оба важны для качества и сходимости. D_refine - это U-Net, действительно представляющий собой пиксельную диффузию. Но важно, что он также обуславливается на выход D_refine, то есть на результат кодирования-декодирования AE. Мне это напоминает то как работают диффузионные SR модели (SR3), в которых к основному входу x_t приконкачивают бикубик апскейл LR картинки y.
Использование условия на выход D_init имеет и другой плюс - можно использовать CFG. Для этого в ходе обучения условие дропают в 10% случаев, а на инференсе экспериментально подбирают оптимальный CFG scale, что в итоге улучшает качество.
В экспериментах авторы проверяют, что их AE приводит:
- К более хорошим реконструкциям, особенно на высоких степенях компрессии (когда мало каналов в латентах);
- К более качественным (по FID) class-cond диффузионкам, обученным на этих латентах.
У подхода есть очевидный минус связанный с применением диффузии - увеличение стоимости обучения и инференса. А еще совершенно не ясно почему такое обучение даёт более хорошие латенты.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2
Deep Compression Autoencoder for Efficient High-Resolution Diffusion Models
[код обучения и инференса, веса]
Вслед за КПД, уже разобравшим эту работу с акцентом на мотивацию и эксперименты, предлагаю свой взгляд.
Прежде, основной фокус диффузионных команд был направлен на улучшение генеративной модели, а латентное пространство всегда формировали с помощью x8 SD-like автоэнкодера (АЕ). Вообще, х8 - это уже довольно много, но все же 4к генерации не сделаешь из-за того что латентной диффузии прийдется работать в разрешении 512, что долго/дорого.
Работа хороша тем что предлагаются фиксы конкретных проблем, а не просто yet another модель, которая почему-то магически работает.
Хотелки, проблемы и решения
1️⃣ Хотим х32, х64, х128 АЕ
Проблема: если наивно настакать слоёв, возникают проблемы с оптимизацией: добавление каждого следующего блока ухудшает качество реконструкции по rFID
Решение: добавим space-to-channel операцию и residual connection.
Суть в том что обычный residual connection - это сложение или конкатенация с активацией с тем же пространственным разрешением. Но в AE разрешение изменяется х2 после каждого upsample/downsample блока. Поэтому предлагается делать reshape + поканальное усреднение чтобы получить отображение:
2️⃣ Хотим хорошую обобщаемость между разрешениями. То есть наш АЕ должен одинаково хорошо реконструировать и 512 и 4к картинки
Проблема: дорого (или даже невозможно) адаптировать через обучение на 4к картинках, а по-другому не обобщается (низкое качество реконструкции)
Решение: разобьем обучение на три стадии:
- Учим всю сеть С L1 + perceptual лоссами на low rez картинках
- Учим всю нижние блоки АЕ с L1 + perceptual лоссами на high rez картинках
- Учим последнюю свертку декодера с GAN лоссом
У каждой стадии своя цель, но сводится всё к тому чтобы избежать обучения всей модели с GAN лоссом потому что, по утверждениям авторов, это плохо влияет на латентное пространство.
В экспериментах, авторы учат class-cond и text-cond генерацию на разрешениях 512 и 1024, получают не идеальные, но достойные картинки при ускорении up to x19 за счет снижения размерности лантентов. Особенно сильно это бустит трансформерные архитектуры денойзеров, ведь теперь не нужно выбрать большой patch size для того чтобы удешевить attention.
Очень любопытно сменит ли эта модель тренд на то за счет чего достигается ускорение в диффузионках.
[код обучения и инференса, веса]
Вслед за КПД, уже разобравшим эту работу с акцентом на мотивацию и эксперименты, предлагаю свой взгляд.
Прежде, основной фокус диффузионных команд был направлен на улучшение генеративной модели, а латентное пространство всегда формировали с помощью x8 SD-like автоэнкодера (АЕ). Вообще, х8 - это уже довольно много, но все же 4к генерации не сделаешь из-за того что латентной диффузии прийдется работать в разрешении 512, что долго/дорого.
Работа хороша тем что предлагаются фиксы конкретных проблем, а не просто yet another модель, которая почему-то магически работает.
Хотелки, проблемы и решения
1️⃣ Хотим х32, х64, х128 АЕ
Проблема: если наивно настакать слоёв, возникают проблемы с оптимизацией: добавление каждого следующего блока ухудшает качество реконструкции по rFID
Решение: добавим space-to-channel операцию и residual connection.
Суть в том что обычный residual connection - это сложение или конкатенация с активацией с тем же пространственным разрешением. Но в AE разрешение изменяется х2 после каждого upsample/downsample блока. Поэтому предлагается делать reshape + поканальное усреднение чтобы получить отображение:
[H, W, C] -> [H/2, W/2, 2C]. Сами по себе residuals добавлять нужно, но открытым остаётся вопрос насколько важно использовать именно такую реализацию (ablations нету)2️⃣ Хотим хорошую обобщаемость между разрешениями. То есть наш АЕ должен одинаково хорошо реконструировать и 512 и 4к картинки
Проблема: дорого (или даже невозможно) адаптировать через обучение на 4к картинках, а по-другому не обобщается (низкое качество реконструкции)
Решение: разобьем обучение на три стадии:
- Учим всю сеть С L1 + perceptual лоссами на low rez картинках
- Учим всю нижние блоки АЕ с L1 + perceptual лоссами на high rez картинках
- Учим последнюю свертку декодера с GAN лоссом
У каждой стадии своя цель, но сводится всё к тому чтобы избежать обучения всей модели с GAN лоссом потому что, по утверждениям авторов, это плохо влияет на латентное пространство.
В экспериментах, авторы учат class-cond и text-cond генерацию на разрешениях 512 и 1024, получают не идеальные, но достойные картинки при ускорении up to x19 за счет снижения размерности лантентов. Особенно сильно это бустит трансформерные архитектуры денойзеров, ведь теперь не нужно выбрать большой patch size для того чтобы удешевить attention.
Очень любопытно сменит ли эта модель тренд на то за счет чего достигается ускорение в диффузионках.
👍3🔥2❤1
До начала октября 2024, генерация картинок и видео существовали как области, которые не объединяло ничего кроме вялого перетекания идей. Одновременное появление сразу трёх работ на стыке модальностей намекает на актуальность. Подходы разные, давайте разбираться.
Movie Gen: A Cast of Media Foundation Models
Топовый тех. репорт от экстремистов с кучей технических подробностей. Детали разобраны тут и в подробном повторении не нуждаются. Сейчас нам интересно, что этот подход наиболее простой и естественный: чуть адаптируем LLAMA трансформер, обучаем Video-VAE, а дальше учим end-to-end диффузию сначала на картинках (воспринимая их как видео из одного кадра), потом на видео с постепенным увеличением разрешения. Минус в том что подход для богатых: предлагается учить 30В модельки на 6500 H100.
JVID: Joint Video-Image Diffusion for Visual-Quality and Temporal-Consistency in Video Generation
Академические исследователи предлагают разменять баснословный компьют на усложнение семплирования. Вместо обучения единой модели предлагается отдельно учить картиночную и видео модели и комбинировать за счет предложенного механизма попеременного семплирования. Работает это в случае если для обеих моделей прямой процесс задан одинаково. Для обучения используют всего 64 A100, но и качество/разрешение тут более скромные. Насколько хорошо подход обобщается на масштабы SOTA моделей не ясно.
Pyramidal Flow Matching for Efficient Video Generative Modeling
[код, веса]
Вижу флоу матчинг - ставлю лайк. Хайпанувшая работа где китайский студент за плошка риса 20к ГПУ часов собирает космолёт, порождающий весьма консистентные видосики. В методе есть всё:
- Модная диффузия позволяет интерполировать между разрешениями. Это позволяет экономить на расшумлении близких к полному шуму латентов низком разрешении и только финальных шагах в высоком
- Авторегрессионная компонента позволяет лучше сохранять консистентность кадров. Для этого прошлые кадры в низком разрешении используются в качестве условия для генерации текущего кадра.
Благодаря такой архитектуре можно воспринимать отдельные кадры как картинки или подавать в модель в качестве первого кадра произвольное изображение и делать image-to-video.
- Трансформеры, эффективность, код, аблейшены.
Опыт говорит, что простота метода побеждает оптимизацию вычислительной сложности, но время покажет.
Movie Gen: A Cast of Media Foundation Models
Топовый тех. репорт от экстремистов с кучей технических подробностей. Детали разобраны тут и в подробном повторении не нуждаются. Сейчас нам интересно, что этот подход наиболее простой и естественный: чуть адаптируем LLAMA трансформер, обучаем Video-VAE, а дальше учим end-to-end диффузию сначала на картинках (воспринимая их как видео из одного кадра), потом на видео с постепенным увеличением разрешения. Минус в том что подход для богатых: предлагается учить 30В модельки на 6500 H100.
JVID: Joint Video-Image Diffusion for Visual-Quality and Temporal-Consistency in Video Generation
Академические исследователи предлагают разменять баснословный компьют на усложнение семплирования. Вместо обучения единой модели предлагается отдельно учить картиночную и видео модели и комбинировать за счет предложенного механизма попеременного семплирования. Работает это в случае если для обеих моделей прямой процесс задан одинаково. Для обучения используют всего 64 A100, но и качество/разрешение тут более скромные. Насколько хорошо подход обобщается на масштабы SOTA моделей не ясно.
Pyramidal Flow Matching for Efficient Video Generative Modeling
[код, веса]
- Модная диффузия позволяет интерполировать между разрешениями. Это позволяет экономить на расшумлении близких к полному шуму латентов низком разрешении и только финальных шагах в высоком
- Авторегрессионная компонента позволяет лучше сохранять консистентность кадров. Для этого прошлые кадры в низком разрешении используются в качестве условия для генерации текущего кадра.
Благодаря такой архитектуре можно воспринимать отдельные кадры как картинки или подавать в модель в качестве первого кадра произвольное изображение и делать image-to-video.
- Трансформеры, эффективность, код, аблейшены.
Опыт говорит, что простота метода побеждает оптимизацию вычислительной сложности, но время покажет.
🔥11❤2❤🔥1👍1
Cosmos Tokenizer: A suite of image and video neural tokenizers
[код, веса]
В интересное время живем: исследователи из NVIDIA с Fitsum Reda в качестве первого автора выкладывают код, веса и блогпост о своих новых SOTA автоэнкодерах и даже не запариваются писать статью. Чтож, пока призрение к шаблонным pdf’кам становится мейнстримом, разберем описание из блогпоста.
Основная мотивация авторов - предложить общий фреймворк для получения автокодировщиков на все случаи жизни. Вообще, автоэнкодеры бывают:
1️⃣ Дискретные и непрерывные.
Первые (а-ля VQ-VAE) используются, в основном, для авторегрессии. Вторые - для всяких диффузий.
2️⃣ Картиночные, видео и совмещенные.
Первые принимают на вход один кадр, вторые - последовательность кадров и, как правило, имеют дополнительные фишки для темпоральной связанности кадров. Третьи начали появляться совсем недавно (e.g. Movie Gen) и основаны на интерпретации картинки как видео из одного кадра.
3️⃣ Глубокие и не очень
Стандартный даунскейл фактор сегодня - х8, но благодаря той же NVIDIA мы недавно получили DC AE с даунскейлами вплоть до х128.
Что релизнули сейчас?
х8 и х16 дискретные и непрерывные, полностью совмещенные (image+video) AE
Основные фишки
➡ Wavelets: сама идея использовать wavelet transform для разного рода реконструкционных задач стара как мир. Здесь нам важно, что вейвлет разложение используется вместо классического даунсемплинга: карты разложения получаются в 4 раза меньшего разрешения и стакаются поканально. В вейвлет пространстве работает вся модель благодаря Haar Wavelet 3D операции сразу на входе модели
➡ Causality: зависимость реконструкции текущего кадра от предыдущих. Группа текущих кадров после вейвлет разложения процессится факторизованной 3D свёрткой, после чего фичи текущей и всех предыдущих групп кадров связываются темпоральным self-attention
➡ Training: разделяется на два этапа, оба на смеси картинок и видео:
- L1 + L1 Perceptual loss
- Optical flow + Gramm matrix perceptual loss
- Регуляризации латентов/кодов (например KL) не используются
Модели показывают убедительную победу на публичных бенчмарках, а еще предлагается новый бенчмарк Token Bench с фокусом на относительно длинные (10 сек) видео.
[код, веса]
В интересное время живем: исследователи из NVIDIA с Fitsum Reda в качестве первого автора выкладывают код, веса и блогпост о своих новых SOTA автоэнкодерах и даже не запариваются писать статью. Чтож, пока призрение к шаблонным pdf’кам становится мейнстримом, разберем описание из блогпоста.
Основная мотивация авторов - предложить общий фреймворк для получения автокодировщиков на все случаи жизни. Вообще, автоэнкодеры бывают:
1️⃣ Дискретные и непрерывные.
Первые (а-ля VQ-VAE) используются, в основном, для авторегрессии. Вторые - для всяких диффузий.
2️⃣ Картиночные, видео и совмещенные.
Первые принимают на вход один кадр, вторые - последовательность кадров и, как правило, имеют дополнительные фишки для темпоральной связанности кадров. Третьи начали появляться совсем недавно (e.g. Movie Gen) и основаны на интерпретации картинки как видео из одного кадра.
3️⃣ Глубокие и не очень
Стандартный даунскейл фактор сегодня - х8, но благодаря той же NVIDIA мы недавно получили DC AE с даунскейлами вплоть до х128.
Что релизнули сейчас?
х8 и х16 дискретные и непрерывные, полностью совмещенные (image+video) AE
Основные фишки
➡ Wavelets: сама идея использовать wavelet transform для разного рода реконструкционных задач стара как мир. Здесь нам важно, что вейвлет разложение используется вместо классического даунсемплинга: карты разложения получаются в 4 раза меньшего разрешения и стакаются поканально. В вейвлет пространстве работает вся модель благодаря Haar Wavelet 3D операции сразу на входе модели
➡ Causality: зависимость реконструкции текущего кадра от предыдущих. Группа текущих кадров после вейвлет разложения процессится факторизованной 3D свёрткой, после чего фичи текущей и всех предыдущих групп кадров связываются темпоральным self-attention
➡ Training: разделяется на два этапа, оба на смеси картинок и видео:
- L1 + L1 Perceptual loss
- Optical flow + Gramm matrix perceptual loss
- Регуляризации латентов/кодов (например KL) не используются
Модели показывают убедительную победу на публичных бенчмарках, а еще предлагается новый бенчмарк Token Bench с фокусом на относительно длинные (10 сек) видео.
👍5❤3🔥2❤🔥1💩1
REDUCIO! Generating 1024×1024 Video within 16 Seconds using Extremely Compressed Motion Latents
[код, веса]
Демократизация генерации видео и одновременной генерации картинок и видео (text-to-image+video) продолжают набирать обороты. В прошлой серии, Cosmos AE уже существенно пробил бейзлайн скорости и качества за счет х16 scale factor (SF) при высокой консистентности реконструкций.
В этой работе, авторы предлагают модель с х32 spatial SF и x4 temporal SR, которая бьет (хоть и по не очень информативномым PSNR/SSIM) Cosmos AE в х16 постановке.
Интуиция:
Метод вдохновлен наблюдением: как правило, изменения между кадрами видео незначительны, а значит видео, по природе своей, крайне избыточны. Это значит, что их можно кодировать намного сильнее чем в среднем х8, ускоряя тем самым обучение и генерацию. Наблюдение аналогично сделанному ранее для картиночных AE, которые успешно научились сильно сжимать high-rez картинки.
Другое наблюдение относится к тому как устроена традиционная text-to-video генерация: первый кадр получают из text-to-image модели, после чего “экстраполируют” text-to-video моделью. Логичнее за основу брать не первый кадр, а средний, что и делается в работе.
Основные фишки метода:
- Обуславливание AE на средний кадр из видео последовательности
- Не равномерный SF: х32 spatial SF, x4 temporal SF
- В отличие от Cosmos с их факторизованными 3D свертками, используют ванильные 3D свертки
На полученном AE авторы обучают PixArt-like video DiT со стандартным T5-XXL энкодером, L_simple epsilon prediction лоссом, full 3D attention’ом и трёхстадийным обучением (256->512->1024 multi-AR), а 400к видео для такого праздника берут у Pexels.
Наблюдения:
Среди прочего мне понравилось наблюдение о том что 1x1 patch size даёт наилучшее качество. Разделение обязанностей (downscaling, generation) уже обсуждалось в SANA для картинок и подтверждается тут для видео.
Limitations:
Важное ограничение метода - пока получается генерировать только короткие видео (всего 16 кадров). Таким образом, у авторов пока получилась не совсем полноценная видео модель, а то как расширить конкретный метод для генерации длинных видео - открытый вопрос.
[код, веса]
Демократизация генерации видео и одновременной генерации картинок и видео (text-to-image+video) продолжают набирать обороты. В прошлой серии, Cosmos AE уже существенно пробил бейзлайн скорости и качества за счет х16 scale factor (SF) при высокой консистентности реконструкций.
В этой работе, авторы предлагают модель с х32 spatial SF и x4 temporal SR, которая бьет (хоть и по не очень информативномым PSNR/SSIM) Cosmos AE в х16 постановке.
Интуиция:
Метод вдохновлен наблюдением: как правило, изменения между кадрами видео незначительны, а значит видео, по природе своей, крайне избыточны. Это значит, что их можно кодировать намного сильнее чем в среднем х8, ускоряя тем самым обучение и генерацию. Наблюдение аналогично сделанному ранее для картиночных AE, которые успешно научились сильно сжимать high-rez картинки.
Другое наблюдение относится к тому как устроена традиционная text-to-video генерация: первый кадр получают из text-to-image модели, после чего “экстраполируют” text-to-video моделью. Логичнее за основу брать не первый кадр, а средний, что и делается в работе.
Основные фишки метода:
- Обуславливание AE на средний кадр из видео последовательности
- Не равномерный SF: х32 spatial SF, x4 temporal SF
- В отличие от Cosmos с их факторизованными 3D свертками, используют ванильные 3D свертки
На полученном AE авторы обучают PixArt-like video DiT со стандартным T5-XXL энкодером, L_simple epsilon prediction лоссом, full 3D attention’ом и трёхстадийным обучением (256->512->1024 multi-AR), а 400к видео для такого праздника берут у Pexels.
Наблюдения:
Среди прочего мне понравилось наблюдение о том что 1x1 patch size даёт наилучшее качество. Разделение обязанностей (downscaling, generation) уже обсуждалось в SANA для картинок и подтверждается тут для видео.
Limitations:
Важное ограничение метода - пока получается генерировать только короткие видео (всего 16 кадров). Таким образом, у авторов пока получилась не совсем полноценная видео модель, а то как расширить конкретный метод для генерации длинных видео - открытый вопрос.
❤2🔥2❤🔥1👍1🤮1💩1
On Improved Conditioning Mechanisms and Pre-training Strategies for Diffusion Models
[NeurIPS’24, кода/весов нет]
Одна из основных проблем в исследовании диффузионок - отсутствие полноценных сравнений между компонентами разных подходов. Большинство крупных релизов (SD разных версий, EMU, Imagen etc.) сопровождается тех. репортом, в котором поменяно всё сразу. В DL мы занимаемся построением моделей по данным и понятно, что они оказывают ключевое влияние. Но как быть с остальными компонентами системы: архитектурой, постановкой диффузии, кондишенингом?
Авторы воспроизводят кучу моделей для “наведения порядка” хотя бы на публичных датасетах, фиксируя компьют, постановку диффузии и гиперпараметры для честного сравнения. Далее основные выводы.
Архитектура
Сравнивали, выровняв по параметрам:
— U-Net из SDXL
— Ванильный DiT
— Masked DiT (mDiT-v2)
— PixArt DiT
— mmDiT из SD3
Все модели текст-кондишенили на CLIP ViT-L/14, обучение DiT’ов стабилизировали используя RMSNorm.
По FID почти всюду победила архитектура mmDiT. Интересно, что ранее в работе по Scaling Laws уже отмечали эффективность SDXL U-Net’a. Видимо, в Stability годные спецы по архитектурам.
Кондишенинг
Тут авторы наворотили знатно, адресуя сразу несколько вопросов:
1️⃣ Использование control conditions (это когда в модель подаётся доп инфа про размер картинки/кропа и тд).
— Лучше подавать не бинарно (обычно вес выставляют в 0 или 1), а по косинусному расписаню, где ближе к шуму вес максимальный
— Лучше не использовать сомнительные аугментации вроде флипов даже если вы явно даёте это знание модели потому что может ломаться сответствие картинки с текстом
— Аугментации кроппингом могут быть полезны если размер явно подать согласно расписанию
2️⃣ Текстовый conditioning.
— Стандартно CLIP кодирует в 77 токенов, некоторые тексты могут быть короче. Обычно, в таких случаях последовательность падят нулями. Предлагается noisy replicate padding - копируем (часть) токенов, чуть зашумляем, stonks📈
Обучение
— Файнтюниться под целевое распределение полезно даже если у вас самый широкий и разнообразный претрен (ImageNet22k)
— Полезно разбивать претрен на стадии по разрешению: сначала учимся на лоу резах, потом на хай резах🎵
— Кропать лоу резах и хай резах нужно по-разному из-за разного среднего размера объектов на картинке
— Для высоких разрешений полезно пошатать расписание шума (вспомнилась Simple Diffusion)
— Подбор позиционных эмбедингов улучшает динамику обучения
Итого
Аккуратное, в меру интересное сравнение разных компонентов диффузионного пайплайна. Как всегда не понятно насколько это переносимо на обучения с датасетами из О(1В) семплов и замерами на human eval вместо FID.
[NeurIPS’24, кода/весов нет]
Одна из основных проблем в исследовании диффузионок - отсутствие полноценных сравнений между компонентами разных подходов. Большинство крупных релизов (SD разных версий, EMU, Imagen etc.) сопровождается тех. репортом, в котором поменяно всё сразу. В DL мы занимаемся построением моделей по данным и понятно, что они оказывают ключевое влияние. Но как быть с остальными компонентами системы: архитектурой, постановкой диффузии, кондишенингом?
Авторы воспроизводят кучу моделей для “наведения порядка” хотя бы на публичных датасетах, фиксируя компьют, постановку диффузии и гиперпараметры для честного сравнения. Далее основные выводы.
Архитектура
Сравнивали, выровняв по параметрам:
— U-Net из SDXL
— Ванильный DiT
— Masked DiT (mDiT-v2)
— PixArt DiT
— mmDiT из SD3
Все модели текст-кондишенили на CLIP ViT-L/14, обучение DiT’ов стабилизировали используя RMSNorm.
По FID почти всюду победила архитектура mmDiT. Интересно, что ранее в работе по Scaling Laws уже отмечали эффективность SDXL U-Net’a. Видимо, в Stability годные спецы по архитектурам.
Кондишенинг
Тут авторы наворотили знатно, адресуя сразу несколько вопросов:
1️⃣ Использование control conditions (это когда в модель подаётся доп инфа про размер картинки/кропа и тд).
— Лучше подавать не бинарно (обычно вес выставляют в 0 или 1), а по косинусному расписаню, где ближе к шуму вес максимальный
— Лучше не использовать сомнительные аугментации вроде флипов даже если вы явно даёте это знание модели потому что может ломаться сответствие картинки с текстом
— Аугментации кроппингом могут быть полезны если размер явно подать согласно расписанию
2️⃣ Текстовый conditioning.
— Стандартно CLIP кодирует в 77 токенов, некоторые тексты могут быть короче. Обычно, в таких случаях последовательность падят нулями. Предлагается noisy replicate padding - копируем (часть) токенов, чуть зашумляем, stonks
Обучение
— Файнтюниться под целевое распределение полезно даже если у вас самый широкий и разнообразный претрен (ImageNet22k)
— Полезно разбивать претрен на стадии по разрешению: сначала учимся на лоу резах, потом на хай резах
— Кропать лоу резах и хай резах нужно по-разному из-за разного среднего размера объектов на картинке
— Для высоких разрешений полезно пошатать расписание шума (вспомнилась Simple Diffusion)
— Подбор позиционных эмбедингов улучшает динамику обучения
Итого
Аккуратное, в меру интересное сравнение разных компонентов диффузионного пайплайна. Как всегда не понятно насколько это переносимо на обучения с датасетами из О(1В) семплов и замерами на human eval вместо FID.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🔥2❤🔥1👍1
Давайте поговорим про GAN.
В последнее время принято друг за другом повторять: GAN — парадигма прошлого, диффузия и авторегрессия рулят. Тем не менее, даже сейчас, не смотря на доминирование диффузии в text-to-image, GAN находят применение в Super Resolution и обучениях VAE, а также используются в методах дистилляции (ADD) и альтернативных архитектурах диффузии (PaGoDa). При этом, GAN имеют очевидные проблемы. Работы ниже конректизируют проблемы и предлагают способы их решения.
Towards a Better Global Loss Landscape of GANs
[NeurIPS 2020, код/веса]
Авторы выделяют две основные проблемы при обучении GAN:
1. Mode collapse —падение разнообразия генераций)
2. Divergence — расхождение процесса обучения
Для этого проводят анализ поверхности лоссов наиболее популярных вариантов GAN.
Предлагается поделить все GAN на два семейства по типу используемых лосс функций:
1. Separable-GAN — почти все популярные GAN, где
2. Relativistic-GAN — модели, в которых
Авторы показывают, что эта разница принципиальна. Separable-GAN работает в предположении, что все real и fake данные можно разделить одной границей. Тогда задачей
The GAN is dead; long live the GAN!
A Modern Baseline GAN
[NeurIPS 2024, код]
Всё сказанное выше правда, все минимумы - глобальные, вот только никто не сказал, что градиентный спуск может легко найти их. На практике, RpGAN без доп регуляризаций не всегда сходится.
Вклад этой работы в том что авторы:
1️⃣ Анализируют то какие именно регуляризации полезны для RpGAN, получается, что это комбинация R1 + R2 (gradient penalty для
2️⃣ Обнуляют все трюки из StyleGAN2, после чего заново подбирают и аблейтят архитектуру
На выходе получают модель с ResNeXt-ify архитектурой для
Итог
Очень нравятся работы про раздебаг и упрощение систем, когда вместо yet another заплатки находят и устраняют проблему. Переносимость результатов на смежные задачи и бОльшие масштабы требует доп. проверки.
В последнее время принято друг за другом повторять: GAN — парадигма прошлого, диффузия и авторегрессия рулят. Тем не менее, даже сейчас, не смотря на доминирование диффузии в text-to-image, GAN находят применение в Super Resolution и обучениях VAE, а также используются в методах дистилляции (ADD) и альтернативных архитектурах диффузии (PaGoDa). При этом, GAN имеют очевидные проблемы. Работы ниже конректизируют проблемы и предлагают способы их решения.
Towards a Better Global Loss Landscape of GANs
[NeurIPS 2020, код/веса]
Авторы выделяют две основные проблемы при обучении GAN:
1. Mode collapse —падение разнообразия генераций)
2. Divergence — расхождение процесса обучения
Для этого проводят анализ поверхности лоссов наиболее популярных вариантов GAN.
Предлагается поделить все GAN на два семейства по типу используемых лосс функций:
1. Separable-GAN — почти все популярные GAN, где
D независимо оценивает правильность real/fake примеров. Сюда относят классические JS-GAN, W-GAN2. Relativistic-GAN — модели, в которых
D оценивает реальность fake примера относительно соответствующего ему real примера. Основной пример - RpGAN.Авторы показывают, что эта разница принципиальна. Separable-GAN работает в предположении, что все real и fake данные можно разделить одной границей. Тогда задачей
G становится минимальный перенос fake примеров за эту границу. Таких решений экспоненциально много, многие из них вырождены, что и приводит к проблемам. В то же время, авторы показывают, что обучение Relativistic-GAN такой проблемой не обладает, а каждый минимум является глобальным.The GAN is dead; long live the GAN!
A Modern Baseline GAN
[NeurIPS 2024, код]
Всё сказанное выше правда, все минимумы - глобальные, вот только никто не сказал, что градиентный спуск может легко найти их. На практике, RpGAN без доп регуляризаций не всегда сходится.
Вклад этой работы в том что авторы:
1️⃣ Анализируют то какие именно регуляризации полезны для RpGAN, получается, что это комбинация R1 + R2 (gradient penalty для
D и G), называют модель R3GAN2️⃣ Обнуляют все трюки из StyleGAN2, после чего заново подбирают и аблейтят архитектуру
На выходе получают модель с ResNeXt-ify архитектурой для
G и D и отстутствием каких-либо трюков кроме RpGAN + R1 + R2 лосса. Финальная версия улучшает FID на FFHQ 256 c 7.52 до 7.05 при сохранении размеров G и D.Итог
Очень нравятся работы про раздебаг и упрощение систем, когда вместо yet another заплатки находят и устраняют проблему. Переносимость результатов на смежные задачи и бОльшие масштабы требует доп. проверки.
🔥9❤4❤🔥1👍1
Reconstruction vs. Generation: Taming Optimization Dilemma in Latent Diffusion Models
[код и веса]
Выбор представления для обучения латентной диффузии - важнейший фактор качества и скорости обучения модели.
Более высокая размерность
латентного пространства улучшает качество реконструкции. Обычно она достигается путём увеличения числа каналов. VAE первых моделей семейства SD имели 4 канала, у FLUX и SD3 уже 16, а SANA - 32.
Более низкая размерность
латентного пространства упрощает задачу обучения генеративной модели. Если размерность все-таки хочется держать высокой, то можно компенсировать сложность увеличением модели и компьюта, но это дорого.
Интересно, что проблемы связанные с большой размерностью ранее обсуждали в основном для дискретных токенизаторов. Для них известно, что большие кодбуки плохо утилизируются. Авторы этой работы анализируют распределение латентов непрерывных VAE и приходят к такому же выводу. Идея работы в том чтобы заалайнить латенты с фичами visual foundation model, тем самым улучшив их качество с точки зрения обучения на них генеративных моделей.
Метод
Основной вклад работы - двухкомпонентный лосс, который алайнит VAE латенты
1️⃣ Поэлементно минимизируют косинусное расстояние между
2️⃣ Минимизируют разницу косинусных расстояний между элементами
Оба компонента считают с отступом так, чтобы только большие отклонения вносили вклад в лосс, а между собой компоненты взвешивают пропорционально их вкладу.
Эксперименты
За основу берут ванильный LDM сетап с VQ-GAN токенизатором (f16d32, f16d16), но без квантизации. На его латентах учат DiTы от 0.1B до 1.6В c полным фаршем из RF, подбора adam.beta2, bfloat16 и RMSNorm для стабилизации, SwiGLU и RoPE. Полученная серия моделей LightningDiT сходится к FID 1.35 на ImageNet 256, причем значение 2.11 получается всего за 64 эпохи.
Выводы
В статье настораживает почти полное отсутствие примеров реконструкций предложенных VAE и аблейшенов влияния примочек для DiT на рост качества относительно бейзлайнов. Нравится движение в сторону недоизученной темы оптимальных пространств для обучения генеративок
[код и веса]
Выбор представления для обучения латентной диффузии - важнейший фактор качества и скорости обучения модели.
Более высокая размерность
латентного пространства улучшает качество реконструкции. Обычно она достигается путём увеличения числа каналов. VAE первых моделей семейства SD имели 4 канала, у FLUX и SD3 уже 16, а SANA - 32.
Более низкая размерность
латентного пространства упрощает задачу обучения генеративной модели. Если размерность все-таки хочется держать высокой, то можно компенсировать сложность увеличением модели и компьюта, но это дорого.
Интересно, что проблемы связанные с большой размерностью ранее обсуждали в основном для дискретных токенизаторов. Для них известно, что большие кодбуки плохо утилизируются. Авторы этой работы анализируют распределение латентов непрерывных VAE и приходят к такому же выводу. Идея работы в том чтобы заалайнить латенты с фичами visual foundation model, тем самым улучшив их качество с точки зрения обучения на них генеративных моделей.
Метод
Основной вклад работы - двухкомпонентный лосс, который алайнит VAE латенты
Z с фичами DINOv2 F. Для этого Z линейно отображают в размерность F получая Z’, после чего:1️⃣ Поэлементно минимизируют косинусное расстояние между
Z’ и F2️⃣ Минимизируют разницу косинусных расстояний между элементами
Z’ и FОба компонента считают с отступом так, чтобы только большие отклонения вносили вклад в лосс, а между собой компоненты взвешивают пропорционально их вкладу.
Эксперименты
За основу берут ванильный LDM сетап с VQ-GAN токенизатором (f16d32, f16d16), но без квантизации. На его латентах учат DiTы от 0.1B до 1.6В c полным фаршем из RF, подбора adam.beta2, bfloat16 и RMSNorm для стабилизации, SwiGLU и RoPE. Полученная серия моделей LightningDiT сходится к FID 1.35 на ImageNet 256, причем значение 2.11 получается всего за 64 эпохи.
Выводы
В статье настораживает почти полное отсутствие примеров реконструкций предложенных VAE и аблейшенов влияния примочек для DiT на рост качества относительно бейзлайнов. Нравится движение в сторону недоизученной темы оптимальных пространств для обучения генеративок
👍4❤2❤🔥1🔥1
Forwarded from CV Time
Недавно инженеры из Яндекса вместе со Школой анализа данных провели открытый онлайн-интенсив по компьютерному зрению и рассказали о генеративных диффузионных моделях.
Получилась крепкая база для ML`щика — с понятными видеолекциями и практическими разборами.
Делимся этими материалами с вами — на лендинге они удобно сгруппированы по темам. А в карточках наши спикеры рассказывают, чем вам может быть полезна каждая из освещённых тем.
Приятного чтения и увлекательного просмотра!
Получилась крепкая база для ML`щика — с понятными видеолекциями и практическими разборами.
Делимся этими материалами с вами — на лендинге они удобно сгруппированы по темам. А в карточках наши спикеры рассказывают, чем вам может быть полезна каждая из освещённых тем.
Приятного чтения и увлекательного просмотра!
🔥7👍6❤3❤🔥1