Kandinsky 2.2 — новый шаг в направлении фотореализма
2023 год можно смело называть годом бурного развития генеративного искусственного интеллекта. Это касается не только привычной нам модальности изображений (Kandinsky 2.1, Stable Diffusion XL, IF, Шедеврум и др.), но и текстовой (ChatGPT, GPT-4, LLaMA, Falcon, GigaChat и др.), аудио (VALL-E, MusicLM и др.), 3D (Magic3D и др.), и даже модальности видео (Gen-2, CogVideo и др.). При этом ни в одном из направлений выделить объективного лидера почти невозможно — все команды стараются равномерно двигаться вперёд и повышать качество синтеза. Текстовые чат‑боты научились взаимодействовать с внешними системами посредством плагинов, синтез изображений вышел на уровень фотореалистичных генераций, длина генерируемых видео постепенно увеличивается с сохранением сюжетной связности между кадрами. И такой прогресс обусловлен уже не только наращиванием вычислительных мощностей, но и большим числом неординарных архитектурных решений, которые позволяют добиваться лучшего качества.
С момента выхода Kandinsky 2.1 (4 апреля 2023 года) прошло чуть больше трёх месяцев, и вот сегодня мы анонсируем новую версию модели в линейке 2.X. И если архитектурно модель не претерпела кардинальных изменений, то в части расширения функционала получила существенное развитие. В первую очередь, мы сделали упор на повышение качества генераций и их разрешения, а также новых возможностях синтеза изображений. Список ключевых изменений включает в себя следующие:
разрешение генераций теперь достигло 1024 px по каждой стороне (в 2.1 было 768 px);
генерация может иметь любое соотношение сторон (в 2.1 были только квадратные генерации);
генерируемые изображения стали более фотореалистичными;
появился функционал ControlNet, что добавляет возможность вносить локальные изменения на картинке, не меняя всей композиции сцены.
появился функционал генерации стикеров (генерация происходит с помощью добавления в конце промпта слова «sticker», после этого специальная модель сегментации удаляет фон); таким образом, можно генерировать стикеры на любую тему и даже собирать целые стикерпаки в ТГ.
Рисунок 1. Слева — генерация стикера по запросу «Игрушечный улыбающийся милый осьминог в чёрной шляпе»; справа — генерация стикера по запросу «Red sport car» (by Kandinsky 2.2)
Немного статистики про версию Kandinsky 2.1 к настоящему времени:
более 70 млн генераций;
1 млн уникальных пользователей был достигнут за первые 4 дня после релиза.
Протестировать модель на своих запросах можно уже известным многим способами:
в Telegram-боте (доступны 6 режимов генерации);
с помощью фреймворка diffusers;
на сайте fusionbrain.ai (доступна генерация по тексту и режимы inpainting/outpainting);
на платформе MLSpace в хабе предобученных моделей и датасетов DataHub;
в навыке Салют «Включи художника»;
на сайте rudalle.ru;
в боте в VK.
Архитектура и детали обучения
Архитектура модели была описана в статье про Kandinsky 2.1, поэтому в этой части я не буду подробно останавливаться на её описании, но приведу схематический вид модели и опишу внесённые изменения.
Основным изменением в рамках базовой архитектуры является замена визуального энкодера для обучения Image Prior модели на больший CLIP-ViT‑G, что позволило увеличить качество генерируемых изображений. Ввиду замены энкодера пришлось переучить Image Prior (Diffusion Mapping) модель (1 млн итераций) и далее выполнить файнтюнинг диффузионной части U-Net (200 тыс. итераций). В ходе обучения мы использовали данные различного разрешения от 512 до 1536 пикселей и различным соотношением сторон.
Принцип работы некоторых других режимов Kandinsky 2.2 можно изучить на следующей схеме:
Новая версия модели содержит 4,6 млрд параметров, а увидеть основные отличия Kandinsky 2.1 и 2.2 можно в таблице ниже.
Kandinsky 2.1 | Kandinsky 2.2 | |
Тип модели | Latent Diffusion | Latent Diffusion |
Число параметров | 3,3 млрд | 4,6 млрд |
Текстовый энкодер | 0,6 млрд | 0,6 млрд |
Diffusion Mapping | 1,0 млрд | 1,0 млрд |
U-Net | 1,2 млрд | 1,2 млрд |
ViT | 0,5 млрд | 1,8 млрд |
MoVQ | 0,08 млрд | 0,08 млрд |
Объем датасета | 1,2 млрд пар | 1,5 млрд пар |
Качество изображения | Хорошее | Очень хорошее |
Релиз | 4 апреля 2023 | 12 июля 2023 |
Для того, чтобы каждый мог оценить качество новой модели Kandinsky 2.2, мы по традиции выкладываем веса в open source на следующих источниках:
Возможности ControlNet
Как уже было отмечено выше, одним из преимуществ новой версии является возможность использования функционала ControlNet. В чем же сила и особенность этой доработки?
Ключевым недостатком всех генеративных моделей является невозможность контролировать процесс синтеза. Это означает, что вы можете долго мучаться с подбором промпта для создания сцены (которую вы себе уже возможно даже нарисовали в голове), но в точности попасть в ваши ожидания модель не в силах по ряду причин. Для решения этой проблемы учёные из Стэнфорда предложили ввести дополнительные ограничениям на генерацию с помощью добавления входных условий в состав condition части модели. Таким образом можно управлять положением какого‑то объекта, его формой, позой, контурами/границами. Пример показан на рисунке ниже — здесь авторы показывают как можно использовать результат выделения контуров алгоритмом Канни для создания дополнительного входного условия на состав сцены.
Как можно видеть из рисунка, положение и форма оленя на картинке не изменились, но изменился внешний вид объектов. Как будто мы взяли несколько копий одной раскраски и попросили художника нарисовать оленя на рассвете в горах, оленя на зелёном лугу, белого оленя в зимнем лесу и пятнистого оленя на фоне деревьев в лесу.
С целью имплементации этого функционала в новой версии Kandinsky 2.2 мы встроили дополнительный слой перед диффузионным блоком U-Net, который сворачивает дополнительный condition (карта глубины, контуры Канни и т. д.) к shape входного шума. После создания такого вектора, он конкатенируется с основным шумом, и дальше U-Net учится учитывать это дополнительное условие в модели. Наиболее интересным входным ограничением на наш взгляд является карта глубины, которая позволяет лучшим образом контролировать структуру сцены. Для построения такой карты мы использовали модель оценки depth map по изображению — MiDaS. Внедрение этого режима потребовало 100 тыс. итераций в режиме файнтюнинга на 8 GPU.
Сравнение версий Kandinsky 2.X
Мы также решили провести сравнение генераций различных версий модели на нескольких промптах, и даже по этому небольшому набору можно сделать вывод о том, как изменяется (улучшается) степень детализации сцены и её композиция.
Примеры генераций Kandinsky 2.2
В этом разделе показаны различные генерации модели Kandinsky 2.2 из совершенно разных доменов в самых разных стилевых окрасах: люди, пейзажи, абстракции, объекты, взаимодействующие объекты и др. Описания для генерации на двух языках, а что самое интересное — модель может синтезировать изображения по смайликам — призываю всех обязательно с этим поэкспериментировать :)
Telegram-бот
Обновленная модель Kandinsky 2.2 доступна для использования в Telegram‑боте по ссылке. В боте доступны 6 режимов работы с моделью:
Синтез изображений по тексту
Смешивание двух изображений.
Смешивание изображения и текста.
Синтез изображений, похожих на референсное.
Генерация стикеров.
Изменение изображения с сохранением карты глубины (ControlNet).
При генерации изображений доступны 3 базовых стиля, которые получаются добавлением соответствующего текстового промпта к основному промпту:
Artstation — генерация в стиле цифровой графики;
4k — генерация в высоком разрешении;
Anime — генерация в стиле аниме.
Выводы и планы
В итоге следует отметить, что новый апдейт принёс нам существенный шаг вперёд в качестве и фотореалистичности. Конечно, ряд проблем со сложными доменами ещё остался, но сейчас мы активно исследуем механики по файнтюнингу с помощью LoRA, адаптации негативных промптов для этих доменов и другие способы решения проблемы. Тем не менее за прошедшие 3 месяца с момента выхода 2.1 новая модель «научилась» генерировать изображения в более высоком разрешении, с различным соотношением сторон и «обросла» большим количеством прикладных фичей (таких как, например, ControlNet). Большим достижением также считаю внедрение модели в самый большой фреймворк генеративных моделей diffusers, что подтверждает заинтересованность и высокую оценку модели в мировом комьюнити.
Извечный вопрос — что дальше? Мы продолжаем исследовать текстовые энкодеры, чтобы научиться понимать всё более сложные текстовые описания, продолжаем оптимизировать архитектуру U-Net, экспериментируем с разными подходами к файнтюнингу Kandinsky и занимаемся оптимизацией инференса. Эти и другие нововведения вы уже увидите в следующей версии :)
И напоследок, не менее важная цель для нас — развитие российского и международного комьюнити Kandinsky, которое уже сейчас радует нас различными интересными проектами, например, Web‑GUI for Kandinsky 2.X.
Следите за новостями в каналах Градиентное погружение, CompleteAI, AbstractDL, Dendi Math&AI и Канал Сергея Маркова
Авторы и контрибьют
Модель Kandinsky 2.2 была разработана и обучена исследователями команды Sber AI при партнёрской поддержке учёных из Института искусственного интеллекта AIRI на объединённом датасете Sber AI и компании SberDevices.
Коллектив авторов: Андрей Кузнецов, Арсений Шахматов*, Антон Разжигаев, Владимир Архипкин, Игорь Павлов, Ангелина Куц, Татьяна Паскова, Михаил Шойтов, Сергей Нестерук, Анастасия Лысенко, Юлия Агафонова, Сергей Марков, Денис Димитров.
* — главный контрибьютор
Контакты для коммуникации
По всем возникающим вопросам и предложениям по развитию модели и сотрудничеству в части её внедрения можно и нужно смело писать в ТГ мне или Андрею.