Warning: Undefined array key 0 in /var/www/tgoop/function.php on line 65

Warning: Trying to access array offset on value of type null in /var/www/tgoop/function.php on line 65
187 - Telegram Web
Telegram Web
On Discrete Prompt Optimization for Diffusion Models
ICML’24

Современные text-to-image модели учатся на больших корпусах пар картинка-текст, что позволяет им генерировать произвольные изображения в хорошем качестве. Однако, распределение промтов в датасетах в среднем отличается от пользовательских вводов и в результате модель может выдавать субоптимальное качество. Борьба с этим порождает prompt engineering - ручной процесс подбора промта для достижения лучшего результата.

Общепринятый метод борьбы с проблемой - переформулировка пользовательского ввода с помощью LLM. Практика показывает, что реализация этого подхода требует существенных инженерных усилий и дает не идеальный результат. Заметив проблему, авторы предлагают:

1️⃣ Discrete Prompt Optimization - метод улучшения промтов как для максимизации качества, так и для поиска адверсариальных вариантов, ломающих генерацию.
Метод:
- Делаем генерацию по user prompt
- Считаем графиенты по prompt имея картинку (генерацию), стартуая с пользовательского промта.
- Минимизируем лосс (CLIP score) между итоговой генерацией и пользовательским промтом.
- Для получения adversarial делаем то же самое, но с обратным знаком.

2️⃣ Процедуру тюнинга негатив промтов для моделей с classifier-free guidance. Метод работает аналогично, но авторы показывают показывают, что это может быть даже более эффективно чем тюнинг “позитивных” промтов.

3️⃣ Трюки-хаки для того чтобы сделать вычисления посильными:
- В идеале, нам нужно посчитать градиенты на всех шагах семплирования. Это слишком тяжело по VRAM, поэтому предлагается эвристика того где их считать, а где - нет.
- Прокидываем градиенты через lookup таблицу токенайзера с помощью Gumbel softmax trick.

Экспы на SD с промтами DiffusionDB/ChatGPT/COCO показывают рост по human eval. Основная проблема - нужно несколько доп. форвардов через диффузионку на каждый промт. Кода нет.
👍2
Residual Learning in Diffusion Models
CVPR’24

Известная проблема диффузионной генерации - отклонение траектории обратного процесса (семплирования) от прямого (обучение). Отклонение вызвано не идеальностью оценки скор функции (диффузионной модели) и накоплением ошибки дескритизации. Ранее феномен обсуждался в статьях по exposure bias, где было показано, что его уменьшение снижает артефактность генераций. В качестве методов снижения exposure bias использовали шумовые агументации во время обучения, адаптацию расписания семплирования, корректировку норм шума обратного процесса.

В этой работе авторы никак не используют термин exposure bias и не ссылаются на работы выше. Проблему они называют sampling gap и в качестве метода её решения предлагают учить correction function, цель которой - исправлять траекторию семплирования уже обученных моделей. Утверждается, что метод позволяет выучивать универсальную добавку, которую далее можно использовать для +- любой модели.

Метод нагляднее всего разбирать на приложенной диаграмме:
- Семплируем x_t так, чтобы t соответствовала точке в расписании семплера;
- Делаем k-1 шагов ODE семплера, где k - количество шагов для получения приближения x_0 (генерации). То есть заканчиваем, когда нам остался один шаг семплирования;
- Учим correction function предсказывать x_0;
- Во время семплирования, используем correction function только на последнем шаге семплирования.

На практике correction function представляет собой диффузионку, которую можно либо инициализировать исходной моделью и дообучать, либо учить с нуля. Во втором случае модель может быть в 4-64 раза меньше исходной.

Эксперименты с несколькими диффузионками (ADM, EDM) показывают стабильное понижение FID на широком диапазоне NFE с DMP++ солвером. Статье очень не хватает визуализаций с/без коррекции и, конечно, открытых весов/кода.
👍2
MJ-BENCH: Is Your Multimodal Reward Model Really a Good Judge for Text-to-Image Generation?
[страница проекта (код, бенч)]

Вот допустим обучили вы text-to-image модель и теперь радостно генерируете картинки. Как понять, что они хорошие? Нужна какая-то метрика. Например, можно использовать традиционные подходы вроде FID/IS/PR, можно доверить работу людям и организовать разметку по нужным критериям. Основной минус первого метода - плохая корреляция с результатами второго. Разметка же плоха дороговизной и требованиями к инфраструктуре.

Альтернативные варианты метрик - более легковесные CLIP-like модели (CLIP, BLIP-2, PickScore-v1, HPS-v2.1) и модные VLM типа LLaVA, GPT-4o, Claude 3. Только вот не понятно насколько они хорошо справляются. Нужна метрика на метрику! Для этого авторы собирают датасет триплетов:
1️⃣ Промт
2️⃣ Картинка
3️⃣ Предпочтение пользователя

При этом, все триплеты размечены по четырём критериям:
1️⃣ Text-image alignment: степень соответствия объектов, их атрибутов, взаимного расположения и числа текстовому описанию;
2️⃣ Safety: наличие токсичного (разного рода жесть) и NSFW (порно/эротика) контента на сгенеренной картинке;
3️⃣ Quality: техническое качество изображения (блюр, артефакты);
4️⃣ Generation bias: следование промту в случаях, когда явно указаны пол, возраст, раса, социальный статус.

Помимо подсчета accuracy, авторы предлагают еще два метода оценки качества с помощью своего бенчмарка:
GES (Gini-based Equality Score)
NDS (Normalized Dispersion Score)

Метрики (CLIP-like и VLM модели) оценивают в двух сценариях:
⓵ Ответы моделей сравнивают с пользовательской разметкой, почти везде побеждают проприетарные VLM (GPT-4o, Gemini Ultra)
⓶ Файнтюнят SDv1.5 на выбранных разными моделями парах в RLHF режиме, после чего оценивают генерации людьми. Здесь тоже, в основном, побеждают GPT модели, но и HPS-v2.1 показывает себя неплохо.

В статье есть более детальный анализ плюсов и минусов открытых/закрытых моделей, но, в среднем, закрытые побеждают.
🔥1🤡1
Inf-DiT: Upsampling Any-Resolution Image with Memory-Efficient Diffusion Transformer
[репо с кодом и весами]

Архитектурная статья с очередной попыткой завести трансформеры для задачи Super Resolution (SR). В этот раз, основная проблема отмеченная авторами - высокое потребление VRAM при генерации картинок в ультра-высоком (2к/4к) разрешении. Действительно, обычные U-Net-подобные свёрточные сети размерами в малые сотни миллионов параметров требуют >= 80Gb VRAM для 1к -> 4к апсемпла.

В статье предлагается вариант DiT, включающий в себя следующие модификации.

Unidirectional Block Attention (UniBA). Основной источник потребления памяти в современных SR моделях - self-attention, который “смотрит” на все патчи при генерации текущего патча. В слоях с высоким разрешением активаций это требует много VRAM, поэтому предлагаемое решение - смотреть не на все, а только на часть соседних патчей. Авторы предлагают хранить KV-кеш только для трех соседних (левый, верхний и левый-верхний) блоков активаций.

Если визуализировать процесс инференса (Fig. 3), то складывается впечатление, что модель последовательно, авторегрессионно генерит патчи, что и даёт название методу. На самом деле это не так. Архитектура позволяет генерить много патчей одновременно, но для каждого из них принцип тот же.

Адаптации DiT под задачу SR.
Помимо изменения self-attention, авторы:
- Конкатят к входным патчам сумму time-embedding и картиночного эмбеда CLIP. Использование последнего - уже стандартная практика для обеспечения глобальной консистентности генерации по патчам.
- Добавляют cross-attention на исходную low-rez картинку между траснформерными блоками.
- Адаптируют Rotary Positional Encoding (RoPE) под 2D (картиночную) генерацию.

Метод обучают с Real-ESRGAN аугментациями и проверяют на задачах 4х апсемплинга реальных картинок из DIV2k и 1к генераций SDXL. Для первых репортят FID/PSNR/SSIM, для вторых - результаты human eval.

Отдельно хочется отметить отсутствие в репозитории проекта issues про блочные артефакты. Неужели трансформеры наконец заняли достойное место в задаче SR?
👍2
Consistency-diversity-realism Pareto fronts of conditional image generative models

Аналитическая статья от Meta, в которой авторы рассматривают мультимодальные (image/text) модели в контексте баланса трёх критериев: реализм, консистентность, разнообразие. Внимания заслуживают сами критерии и метрики их оценки в купе с выводами об открытых моделях.

Критерии.
В этой работе консистентность - это соответствие промта и изображения. В случае генеративных моделей это буквально prompt following, который можно оценивать CLIP-like моделями, а можно Visual Question Answering (VQA) подходами. Авторы придерживаются второго сценария и определяют консистентность как долю правильных ответов, которые VQA модель может сделать по (сгенерированной) картинке.

С реализмом и разнообразием чуть сложнее. Для них авторы определяют два случая: условный и безусловный.

В условном случае учитывается влияние промта на результат генерации изображения. Разнообразие определяют как среднее попарное косинусное расстояние между DreamSIM фичами N генераций по одному и тому же промту, а реализм - как то же самое косинусное расстояние между DreamSIM фичами, но теперь для пары реальная-сгенерированная картинка, соответствующей одному и тому же промту.

В безусловном случае всё просто: разнообразие это Recall, а реализм - FID.

Выводы.
Основной результат работы - Парето кривые для всех пар обозначенных кривых (скрин). На них видно, что реализм и консистентность можно одновременно улучшать и для text-to-image моделей, лучший результат по ним у SDXL. Однако даётся это не бесплатно, а в ущерб разнообразию, чемпионами по которой являются ранние версии SD (v1.4, v1.5).

В целом, прогресс в text-to-image и image+text-to-image моделях в разных доменах, в основном, достигается за счет потери разнообразия. Это интересный результат, учитывая то насколько сильным аргументом в пользу диффузии всегда выступает именно разнообразия её генерации.

В статье также подтверждается несколько известных наблюдений о влиянии CFG, RAG и фильтраций на разнообразие.
👍2
PaGoDA: Progressive Growing of a One-Step Generator from a Low-Resolution Diffusion Teacher
[кода нет]

Основная проблема диффузионок - скорость и решается она, как правило, дистилляцией. Если конкретнее - дистилляцией по шагам, когда выучивается модель-студент, примерно достигающая качества учителя за меньшее число шагов семплирования.

Авторов этой работы не устраивает тот факт, что во всех методах дистилляции разрешение картинок на выходе студента и учителя совпадает. Так получается из-за того что все модные методы предложены для латентной диффузии, где генерация происходит в низком разрешении, а финальный размер картинки ограничен скейлинг фактором предобученного декодера VAE (как правило, x8 от разрешения латента). Каскадная схема в этом плане является более гибкой, но она не распространена в академических кругах и методы дистилляции для неё особо не предлагались.

И тут авторы вспоминают про Progressive Growing of GANs (PGG) 😬
Комбинируя это с дистилляцией, получают алгоритм:
1️⃣ Берем предобученную пиксельную диффузионку, работающую в низком базовом разрешении (допустим 64);
2️⃣ Берем набор реальных изображений в произвольном разрешении;
3️⃣ Даунсемплим картинки в одинаковое базовое разрешение;
4️⃣ Получаем из картинок шум с помощью inverse-DDIM, получаем пары картинка-шум;
5️⃣ Инициализиуем новую модель диффузионкой, называем её декодером;
6️⃣ Учим декодер генерировать картинки:
- Из шума полученного нашим inverse-DDIM, используя L2 loss;
- Из случайного шума используя adversarial loss;
7️⃣ После того как обучение сходится, увеличиваем разрешение в 2 раза, приделываем к нашему декодеру несколько слоёв (как в PGG) и повторяем пункты 1️⃣-6️⃣.

В статье есть глубокий теоретический анализ того почему это лучше чем учить какой-нибудь StyleGAN с нуля. Интуиция в том что процесс сильно стабилизируется за счет хорошей инициализации и того что отображение шум-картинка существует и известно из диффузии. Фреймворк о,общается на text-to-image, можно добавить CFG. Получают одношаговую соту на ImageNet на всех разрешениях от 64 до 512.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Fast Training of Diffusion Models with Masked Transformers
[Код, веса]

Современные диффузионные модели имеют SOTA качество в задаче text-to-image генерации. Главный минус - учить их долго и дорого. Например, SDv2.1 учили 200к ГПУ часов A100 (еще и получилось не очень 😂).

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

В этой статье авторы предлагают переиспользовать достижения области representation learning и внедрить механизм маскирования патчей в архитектуру и лосс DiT для повышения эффективности обучения. Подход включает следующие компоненты:

1️⃣ Image masking.
Во время обучения, изображения x зашумляют до некоторых x_t согласно расписанию прямого диффузионного процесса, после чего учатся их расшумлять. Для использования x_t в трансформерах их разрезают на квадратные патчи, которые подаются в модель.

Больше патчей - выше вычислительная сложность. Предлагается маскировать, то есть просто не использовать некоторую долю патчей r, предполагая, что диффузионки достаточно общие чтоб восстановить недостающую информацию. Авторы используют костантую r для всех t.

2️⃣ Asymmetric encoder-decoder backbone.
Авторы используют идею асимметричной архитектуры из MAE:
- В качестве энкодера оставляют почти ванильный DiT (за исключением projection layer в конце). Он работает только на не маскированных патчах.
- Берут маленький декодер из MAE, в котором обработанные эмбеды из энкодера смешиваются через cross-attention с некоторым выучиваемым вектором, замещающим маскированные патчи.

3️⃣ Training objective.
Обучать такую систему только с диффузионным лоссом оказывается сложно из-за нетривиальности предсказания скоров для маскированных патчей. Поэтому диффузионный лосс считают только для не маскированных токенов, а для маскированных - обычный L2.

4️⃣ Unmasking tuning.
В конце модель совсем не много (6% от общего вычислительного бюджета) тюнят без маскирования для максимизации качества.

Результаты.
Авторам удаётся побежать DiT в conditional/unconditional сетапе на вариациях ImageNet по FID используя 30-50% исходного компьюта.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤‍🔥11👍1
Stretching Each Dollar: Diffusion Training from Scratch on a Micro-Budget
[Код и модели обещают тут]

Продолжаем тему минимизации костов на обучение text-to-image диффузии. В предыдущей серии, подход MaskedDiT позволил срезать 30-50% компьюта по сравнению с обучением DiT в аналогичном (LDM) сетапе. В этот раз, авторы предлагают набор трюков, позволяющих обучить сравнительно большую (1.16В) модель до уровня ~SDv1.5 по FID (а по черипикам даже лучше) за ~500 ГПУ часов H100 🤔.

1️⃣ Training with Patch-mixing.
Маскирование 50% патчей в MaskDiT - это предел, после которого качество начинает проседать. Причина в том что каждый патч хранит информацию только о самом себе, соседние патчи исходно не знаю про контент друг друга. Patch-mixer - это доп модуль на входе MaskDiT, цель которого - фьюзить входные патчи. Иначе говоря, выходные эмбеды этого модуля должны содержать информацию друг о друге. Это позволяет довести маскирование до 70% и убрать MAE компоненту в лоссе. Модель состоит из всего нескольких слоев и обучается вместе с основной тушкой на обычный диффузионный денойзинг не маскированных патчей. В конце модель немного тюнят без маскирования.

2️⃣ MOE & Layer-wise scaling.
Mixture-of-Experts (MOE) давно используются в LLM и потихоньку проникают в t2i модели. LWS также недавно предложили для LLM. Авторы не стесняясь просто добавляют эти компоненты в свою модель.

3️⃣ Synthetic data in training.
Не является основным контрибьюшеном статьи, но является важной фичей на пути к micro budget training. Авторы показывают, что если 40% трейна состоит из генераций публичных моделей (SDXL, SD3), то качество в терминах FID и CLIP Score. Существенно увеличивается

Помимо прочего, модель учат в 2 стадии: на генерации 256х256 и далее 512х512, компоненты пайплайна аблейтят, SOTA с использованием довольно небольшого датасета (37M) среди выбранных бейзлайнов небольшого размера показывают.
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
On the Scalability of Diffusion-based Text-to-Image Generation
[Кода нет и не ожидается]

Уже давно популярный в области LLM жанр Scaling Laws статей добрался и до text-to-image. Кстати, 2 из 3 мини-разборов в первом посте на этом канале были посвящены именно этой теме!

Ранее мы уже разбирали тех. репорт YaART, в котором изучали баланс между размером модели, количеством и качеством данных и компьютом для каскадной диффузии. В этой, одновременно вышедшей работе, авторы делают акцент на латентной парадигме с чуть большим упором на исследование архитектуры денойзера в ущерб меньшему исследованию влияния данных.

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

1️⃣ Scaling Denoising Backbone.
Сейчас в LDM используется целый зоопарк архитектур:
- U-Net был исторически первым, но за последние годы претерпел существенные изменения. Сейчас это гибрид, сочетающий свёрточную основу и вставки трансформерных блоков.
- DiT и U-ViT - путь адаптации ViT и языковых трансформеров с всеми их фишками для генерации изображений
- MDT с patch-mixer и другие вариации популярны в последнее время из-за стабильных клеймов в сторону высокой эффективности обучения.

В этой работе авторы перебирают параметры U-Net при фиксированных данных/компьюте и обнаруживают, что:
- Архитектура денойзера в SDXL подобрана лучше чем в SD2 и DeepFloyd-IF (выше качество за тот же компьют)
- Если хочется отмасштабировать модель вверх, то выгоднее увеличивать число трансформерных блоков, а не ширину свёрточных слоев (число каналов)
- Большие модели лучше чем маленькие модели 🤪, масштабируйтесь

2️⃣ Scaling Training Data.
Все экспы по данным проводят на проприетарных 250М и 350М датасетах, полученных чисткой ~1B пар на NSFW и неэстетичный контент. Основной вывод довольно очевиден и уже несколько раз обсуждался - учиться на почищенных данных лучше чем на всём подряд.

3️⃣ More Scaling Properties.
По остаточному принципу выписаны остальные наблюдения:
- Важно дообучать модель до конца, то есть качество сильно зависит от влитого компьюта
- Большие модели более sample efficient, малые - более compute efficient
- На основании экспов по генерации/тюнингу в разных разрешениях утверждается, что основные навыки compositional generation модель учит в низких разрешениях, а значит можно пробовать проверять гипотезы о моделях в low-res сетапе обучения.

Важно отметить, что все выводы в статье сделаны основании ранжирования моделей по метрике. TIFA. Это, конечно, не FID, но и не общепринятая на сегодняшний день метрика.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
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 уже на следующей неделе!
🔥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. А еще предлагается самостоятельно попридумывать синонимы к промтам на обучении для увеличения вариативности 😐

Выглядит как прогресс, но не решение всех проблем. Планирую найти постер авторов на конфе и понабрасывать лично :)
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 шагов диффузии вперед для получения сильно зашумленного изображения. На самом деле, значение t до которого зашумлять - это важный параметр. На практике, авторы советуют сашумлять примерно до половины, то есть до t~=0.5
3️⃣ На каждом шаге запоминаем 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 модель как метрику, хорошо бы убедиться, что она сама знает все нужные концепты :)

Это и подобные исследования интересны тем что помогают понять чему выучилась модель обучавшаяся на сотнях миллионах пар картинка-текст.
🔥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’кой, то можно превзойти каждую из моделей в отдельности 👀
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 диффузионкам, обученным на этих латентах.

У подхода есть очевидный минус связанный с применением диффузии - увеличение стоимости обучения и инференса. А еще совершенно не ясно почему такое обучение даёт более хорошие латенты.
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 + поканальное усреднение чтобы получить отображение: [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🔥21
2025/07/13 07:46:22
Back to Top
HTML Embed Code: