gonzo-обзоры ML статей – Telegram
gonzo-обзоры ML статей
24.1K subscribers
2.72K photos
2 videos
3 files
1.34K links
Авторы:
Гриша Сапунов, ранее руководитель разработки Яндекс-Новостей, ныне CTO Intento. Области интересов: AI/ML/DL, биоинформатика.
Лёша Тихонов, ранее аналитик в Яндексе, автор Автопоэта, Нейронной Обороны... Области интересов: discrete domain, NLP, RL.
Download Telegram
[Google Imagen] Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding
Chitwan Saharia, William Chan, Saurabh Saxena, Lala Li, Jay Whang, Emily Denton, Seyed Kamyar Seyed Ghasemipour, Burcu Karagol Ayan, S. Sara Mahdavi, Rapha Gontijo Lopes, Tim Salimans, Jonathan Ho, David J Fleet, Mohammad Norouzi
Статья: https://arxiv.org/abs/2205.11487
Демо: https://imagen.research.google/
Код: нет
API: нет

Google сделали свою систему по типу DALL·E 2 под названием Imagen. Тоже диффузионная модель для генерации картинки и апсемплинга, тоже предобученная языковая модель (только другого типа). Качество генерации лучше, чем у DALL·E 2. Заодно собрали бенчмарк для оценки генеративных картиночно-текстовых моделей.

Imagen использует замороженный энкодер T5-XXL (11B параметров всего в модели, в энкодере 4.6B, подробнее про семейство T5 здесь: https://news.1rj.ru/str/gonzo_ML/442). Что интересно, это чисто текстовая модель, натренированная на большом корпусе текстов (750Гб) для решения задач seq2seq (напомним, что все задачи сводились к генерации текстовой последовательности по текстовому входу, будь то классификация, перевод или что-то ещё). CLIP же, использовавшийся в DALL·E 2, был текстово-картиночной моделью, обученной контрастным обучением на датасете c 400М пар картинка-текст (тут правда не до конца понятно как именно обучался CLIP из DALL·E 2, он всё же побольше и датасет возможно там был на 650М пар, но из текста это недостаточно понятно). Ну то есть задачи обучения у моделей разные, датасеты разные, эмбеддинги скорее всего содержат что-то разное.

Авторы попробовали три разных предобученных текстовых энкодера: BERT (base, large), T5 и CLIP. Все с замороженными весами (то есть не обучались). BERT правда мелкий по сравнению с остальными и датасет его был ощутимо меньше. CLIP не совсем понятно какой именно взяли, если от оригинального CLIP, то там в текстовом энкодере был трансформер на 12 слоёв, а если из DALL·E 2 (что вряд ли), то там стоял более тяжёлый на 24 слоя, но вероятно это всё равно порядка 340M параметров, то есть далеко до энкодера из T5-XXL. Так что результат имхо заранее ожидаем. В работе написано ViT-L/14, но это визуальная часть CLIP, отвечающая за визуальные эмбеддинги, а не текстовые, либо я чего-то не понял.

Эта модель по входному тексту генерит последовательность эмбеддингов. Далее делается пулинг эмбеддингов (видимо, пробовали mean pooling и attention pooling) и добавляется эмбеддинг временного шага диффузии.

Архитектура диффузионной модели — U-Net (из работы https://arxiv.org/abs/2102.09672) с обусловливанием полученным из текста эмбеддингом. Интересно, что также на разных разрешениях есть обусловливание на всю последовательность токенов через cross-attention. Дефолтный вариант этой модели с 2B параметров.

В диффузионной модели используется сlassifier-free guidance, где во время обучения в 10% случаев убирается информация об обусловливании текстом, а во время сэмплинга используется микс обусловленного и необусловленного предсказания, замешанных с гиперпараметром guidance weight (w=1 отключает classifier-free guidance, а по мере увеличения w увеличивается и эффект guidance). Есть проблемы, когда при высоком значении guidance weight получаются ненатуральные или очень насыщенные картинки. Авторы обнаружили, что это происходит из-за возникновения train-test mismatch, когда генерируемые пиксели вылезают за значения диапазона, который был при обучении, и модель в итоге итеративно начинает генерить нереальные картинки или вообще расходится. Для борьбы с этим предложили два варианта thresholding, статический (по сути клиппинг значений на границе диапазона) и динамический (когда очень насыщенные пиксели “отталкивают” обратно внутрь диапазона). Динамический вариант даёт более высокое качество.
👍41🤔1
Диффузионная модель генерит картинку 64x64. Затем две модели апсемплинга/super-resolution (на 600M и 400M параметров соответственно) повышают разрешение сначала до 256x256 и потом до 1024x1024. Это прям как в DALL·E 2 (там модели были по 700M и 300M). В отличие от него теперь все модели обуславливаются текстом через cross-attention (в DALL·E 2 только основная диффузионная модель). Обе модели super-resolution используют т.н. noise conditioning augmentation (когда картинка низкого разрешения аугментируется шумом и модели известно как много шума было добавлено), который существенно повышает качество.

Архитектурно модели super-resolution это Efficient U-Net с набором улучшений по памяти, скорости инференса и времени схождения. Подробности в приложении B.1, кому интересно.

Основная диффузионная модель обучалась на 256 TPUv4, апсемплеры на 128 TPUv4. Для основной модели использовали Adafactor, потому что качество оказалось примерно такое же как у Adam, зато memory footprint меньше. Для апсемплеров наоборот, потому что страдало качество.

Обучали на комбинации внутренних датасетов с ~460M пар картинка-текст, и публичном датасете Laion с 400M пар.

Один из стандартных методов оценки моделей это валидационный датасет COCO. Автоматически на нём оценивают через FID (качество изображения) или CLIP score (соответствие изображения тексту). В данной работе представили Парето-фронт между этими двумя метриками, потому что многое зависит от значения параметра guidance weight. Но поскольку скоры это неполная картина, результаты также оценивались людьми по качеству изображения и на соответствие тексту.

Также для более сложного оценивания авторы предложили свой бенчмарк DrawBench с коллекцией в 200 сложных промптов (https://docs.google.com/spreadsheets/d/1y7nAbmR4FREi6npB1u-Bo3GFdwdOPYJc617rBOxIRHY/htmlview?pru=AAABgRlmt-c*6FeL6cHU75qZUKNakVqB3A#) с разбивкой на 11 категорий, сфокусированных на различных типичных проблемах таких моделей. Отдельная прекрасная категория “Gary Marcus et al.” :)

На COCO Imagen установил новую SoTA по zero-shot FID, побив DALL·E 2, а также модели, обучавшиеся на COCO. По человеческим оценкам добились 39.5% (или 39.2%? В разных местах статьи по-разному) предпочтения по фотореалистичности относительно оригинальных изображений. На отфильтрованном датасете без фотографий людей получили 43.6% (43.9%?). По соответствию текстовому описанию Imagen наравне с оригинальными парами.

На DrawBench сравнили с DALL·E 2, GLIDE, Latent Diffusion и CLIP-guided VQ-GAN. Imagen заметно лучше всех.

Из находок:

1. Более тяжёлый текстовый энкодер стабильно рулит. Кажется, это не предел.
2. Скейлинг текстового энкодера рулит сильнее, чем скейлинг U-Net’а.
3. Динамический thresholding лучше статического.
4. На простых бенчмарках текстовые энкодеры T5-XXL и CLIP работали примерно одинаково, а на более сложных задачах из DrawBench человеки предпочитали T5.
5. Аугментация с noise conditioning рулит.
6. Обусловливание полной последовательностью текста через cross-attention рулит по сравнению с пулингом эмбеддингов. Кажется, это сходная история с появлением attention внутри encoder-decoder RNN’ок, там по сути ведь то же самое произошло с отказом от узкого места в виде единого эмбеддинга.
7. Efficient U-Net рулит. Он быстрее, выше, сильнее.

Такие в общем дела.

Я бы сказал, в сухом остатке:

* Качество генерации выше, чем у недавнего лидера DALL·E 2. И примеры действительно супер. Но! Поскольку здесь вход чисто текстовый, а у DALL·E 2 был по сути unCLIP, то у DALL·E 2 из коробки есть сильная способность в виде принятия на вход других картинок и генерации их модификаций. Что само по себе сильный юскейс, не поддерживаемый Imagen.
👍91
* Хорошие предобученные модели рулят и их отлично использовать как готовые строительные блоки. Также это довольно простой способ устранения обнаруженных в имеющихся моделях проблем. Не умеет, скажем, CLIP считать объекты или привязывать признаки к объектам, ок, делаем модель, которая умеет, и собираем на ней. Не проходят примеры Гэри Маркуса на одной модели, делаем другую, на которой проходят. Так и до модульного AGI недалеко :)

* По имеющимся примерам есть ощущение, что Imagen лучше работает с запросами, где надо сгенерить картинку с текстом. Возможно, T5 в этом смысле даёт эмбеддинги получше. Но может и другие факторы играют.

* Теперь было бы интересно отскейлить на какую-нибудь гигантскую модель (PaLM https://arxiv.org/abs/2204.02311, GLaM https://news.1rj.ru/str/gonzo_ML/840, …) обученную по последнему слову техники (aka Chinchilla https://arxiv.org/abs/2203.15556). Там, правда, в основном декодеры, но наверное это не помеха. Скейлить точно есть куда, и даже не важно, is scaling all what you need or not.

* Интересно, что было бы, если бы получилось обучить сильно больший CLIP с большой текстовой частью, хоть как-то сравнимой по размеру с энкодером T5. Или взять какой-нибудь CoCa (https://arxiv.org/abs/2205.01917, хотя он меньше, но тоже можно обучить…), или тот же мультимодальный Flamingo (https://news.1rj.ru/str/gonzo_ML/941). Если бы отдельные блоки были доступны, было бы проще попробовать.
👍6