«Кот-астронавт ныряет в море, полное милых рыб, элегантный, высокая детализация, плавный, резкий фокус, красивый, полное тело, кинематографический, 8k» by 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, поэтому в этой части я не буду подробно останавливаться на её описании, но приведу схематический вид модели и опишу внесённые изменения.

Рисунок 2. Слева — принцип обучения Image Prior модели (Diffusion Mapping); справа — принцип генерации изображения по тексту (Kandinsky 2.2)

Основным изменением в рамках базовой архитектуры является замена визуального энкодера для обучения Image Prior модели на больший CLIP-ViT‑G, что позволило увеличить качество генерируемых изображений. Ввиду замены энкодера пришлось переучить Image Prior (Diffusion Mapping) модель (1 млн итераций) и далее выполнить файнтюнинг диффузионной части U-Net (200 тыс. итераций). В ходе обучения мы использовали данные различного разрешения от 512 до 1536 пикселей и различным соотношением сторон.

Принцип работы некоторых других режимов Kandinsky 2.2 можно изучить на следующей схеме:

Рисунок 3. Слева — принцип генерации изображения, похожего на заданное (вариация изображения); по центру — принцип смешивания двух изображений; справа — принцип смешивания изображения и текста

Новая версия модели содержит 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 млрд пар 

Качество изображения

Хорошее
(768×768)

Очень хорошее
(1024×1024), разные соотношения сторон

Релиз

4 апреля 2023

12 июля 2023

Для того, чтобы каждый мог оценить качество новой модели Kandinsky 2.2, мы по традиции выкладываем веса в open source на следующих источниках:

Возможности ControlNet

Как уже было отмечено выше, одним из преимуществ новой версии является возможность использования функционала ControlNet. В чем же сила и особенность этой доработки?

Ключевым недостатком всех генеративных моделей является невозможность контролировать процесс синтеза. Это означает, что вы можете долго мучаться с подбором промпта для создания сцены (которую вы себе уже возможно даже нарисовали в голове), но в точности попасть в ваши ожидания модель не в силах по ряду причин. Для решения этой проблемы учёные из Стэнфорда предложили ввести дополнительные ограничениям на генерацию с помощью добавления входных условий в состав condition части модели. Таким образом можно управлять положением какого‑то объекта, его формой, позой, контурами/границами. Пример показан на рисунке ниже — здесь авторы показывают как можно использовать результат выделения контуров алгоритмом Канни для создания дополнительного входного условия на состав сцены.

Рисунок 4. ControlNet на основе карты контуров исходного изображения.

Как можно видеть из рисунка, положение и форма оленя на картинке не изменились, но изменился внешний вид объектов. Как будто мы взяли несколько копий одной раскраски и попросили художника нарисовать оленя на рассвете в горах, оленя на зелёном лугу, белого оленя в зимнем лесу и пятнистого оленя на фоне деревьев в лесу.

С целью имплементации этого функционала в новой версии Kandinsky 2.2 мы встроили дополнительный слой перед диффузионным блоком U-Net, который сворачивает дополнительный condition (карта глубины, контуры Канни и т. д.) к shape входного шума. После создания такого вектора, он конкатенируется с основным шумом, и дальше U-Net учится учитывать это дополнительное условие в модели. Наиболее интересным входным ограничением на наш взгляд является карта глубины, которая позволяет лучшим образом контролировать структуру сцены. Для построения такой карты мы использовали модель оценки depth map по изображению — MiDaS. Внедрение этого режима потребовало 100 тыс. итераций в режиме файнтюнинга на 8 GPU.

Рисунок 5. Принцип работы ControlNet (Kandinsky 2.2) на основе карты глубины

Сравнение версий Kandinsky 2.X

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

Рисунок 6. Сравнение трёх версий Kandinsky: 2.0, 2.1 и 2.2

Примеры генераций Kandinsky 2.2

В этом разделе показаны различные генерации модели Kandinsky 2.2 из совершенно разных доменов в самых разных стилевых окрасах: люди, пейзажи, абстракции, объекты, взаимодействующие объекты и др. Описания для генерации на двух языках, а что самое интересное — модель может синтезировать изображения по смайликам — призываю всех обязательно с этим поэкспериментировать :)

Telegram-бот

Обновленная модель Kandinsky 2.2 доступна для использования в Telegram‑боте по ссылке. В боте доступны 6 режимов работы с моделью:

  1. Синтез изображений по тексту

  2. Смешивание двух изображений.

  3. Смешивание изображения и текста.

  4. Синтез изображений, похожих на референсное.

  5. Генерация стикеров.

  6. Изменение изображения с сохранением карты глубины (ControlNet).

При генерации изображений доступны 3 базовых стиля, которые получаются добавлением соответствующего текстового промпта к основному промпту:

  1. Artstation — генерация в стиле цифровой графики;

  2. 4k — генерация в высоком разрешении;

  3. 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.

Коллектив авторов: Андрей Кузнецов, Арсений Шахматов*, Антон Разжигаев, Владимир Архипкин, Игорь Павлов, Ангелина Куц, Татьяна Паскова, Михаил Шойтов, Сергей Нестерук, Анастасия Лысенко, Юлия Агафонова, Сергей Марков, Денис Димитров.

* — главный контрибьютор

Контакты для коммуникации

По всем возникающим вопросам и предложениям по развитию модели и сотрудничеству в части её внедрения можно и нужно смело писать в ТГ мне или Андрею.

Полезные ссылки