КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

DALL·E 2 попробовать

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

В России ищут специалистов по ChatGPT, DALL-E 2, Midjourney

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

— Подходящий VPN

— Сайт для покупки иностранного номера телефона для OpenAI

Время на прочтение

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

В Январе 2021 года Open AI показали DALL-E, генерирующую любые изображения по текстовому описанию, на хабре уже успели разобрать тему генерации изображений нейросетями, но мне захотелось разобраться в теме более детально и показать всё в коде.

Сейчас мы разберём, как работает Text2Image нейросеть DALL-E, посмотрим на хардкор математики, а также убедимся, что это сможет повторить каждый, написав реализацию DALL-E почти с нуля.

Работа Open AI над первой версией DALL-E дала толчок к бурному развитию Text-to-image, и позволило нам уже сейчас увидеть реально эффективные модели с разными подходами, приспособленные к коммерческому использованию:

DALL-E 2, Midjourney, Imagen, Stable Diffusion и т.д.

Сегодня мы рассмотрели эту модель со всех сторон и получили чуть больше ответов на ваши вопросы, которые вы не могли найти.

Потыкать код и обучить модельку можно в этом колабе
.

image

Результат из очень большой модели RuDALL-E от Сбера

Играй в наш скролл-шутер прямо в Telegram и получай призы! 🕹️🎁

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Aditya Ramesh, Prafulla Dhariwal, Alex Nichol, Casey Chu, Mark Chen

Engineering, Design, Product, and Prototyping

Jeff Belgum, Dave Cummings, Jonathan Gordon, Chris Hallacy, Shawn Jain, Joanne Jang, Fraser Kelton, Vishal Kuo, Joel Lehman, Rachel Lim, Bianca Martin, Evan Morikawa, Rajeev Nayak, Glenn Powell, Krijn Rijshouwer, David Schnurr, Maddie Simens, Kenneth Stanley, Felipe Such, Chelsea Voss, Justin Jay Wang

Comms, Policy, Legal, Ops, Safety, and Security

Steven Adler, Lama Ahmad, Miles Brundage, Kevin Button, Che Chang, Fotis Chantzis, Derek Chen, Frances Choi, Steve Dowling, Elie Georges, Shino Jomoto, Aris Konstantinidis, Gretchen Krueger, Andrew Mayne, Pamela Mishkin, Bob Rotsted, Natalie Summers, Dave Willner, Hannah Wong

image

VQ-GAN способна сжимать изображение в сетку векторов (токенов) и реконструировать обратно в изображение. Нейросеть состоит из энкодера, декодера и дискриминатора.

VQ-GAN является совмещением идей VQVAE и GAN.

▍ VQ-VAE (Vector Quantized Variational Autoencoder)

Идея VQ-VAE в том, чтобы научится эффективно сжимать изображение в более низкоразмерное скрытое пространство и разжимать в скрытое пространство изображения с наименьшими потерями.

Энкодер берёт изображение размером 512×512 и сжимает (чаще всего обычными свёрточными сетями) до 256×1, ищет ближайший вектор от получившегося в скрытом пространстве, а после декодер пытается такой маленький вектор разжать обратно в изображение 512×512.

▍ VQ-VAE + GAN = VQ-GAN

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

Тут в игру входит частичка GAN, а именно дискриминатор. Дискриминатор в процессе обучения сравнивает, насколько исходное изображение похоже на реконструированное и возвращает градиент потерь реконструкции, это помогает в дальнейшем понять Энкодеру и Декодеру, как обмануть Дискриминатор и в разы повысить качество конечных изображений.

DALL-E состоит из двух нейросетей, одна из них — это GPT.

GPT пытается предсказывать последовательность токенов, на основе данной ей последовательности. Модель представляет собой архитектуру Transformers, состоящую только из Декодера. G PT учится фокусировать внимание на предыдущих словах, которые наиболее важны для предсказания следующего слова в предложении, используя механизм внимания.

Механизм Attention является аналогом когнитивного внимания и позволяет находить связи между токенами, а также предсказывать продолжение этих токенов.

Для каждого токена создаётся набор векторов:

  1. Key — значимость токена в последовательности, если мы смотрим извне.
  2. Query — значимость токена в последовательности, если мы смотрим из этого токена.
  3. Value — репрезентация токена

Умножение вектора Query
последнего токена на каждый вектор Key
последовательности токенов с применением функции SoftMax
даст коэффициенты значимости каждого токена.

Умножив Value
каждого токена на его коэффициент, мы получим сумму Внимания всей последовательности.

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

image

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

image

Core Research and Execution


Gabriel Goh, James Betker, Li Jing, Aditya Ramesh

Research Contributors—Primary


Tim Brooks, Jianfeng Wang, Lindsey Li, Long Ouyang, Juntang Zhuang, Joyce Lee, Prafulla Dhariwal, Casey Chu, Joy Jiao

Research Contributors—Secondary


Jong Wook Kim, Alex Nichol, Yang Song, Lijuan Wang, Tao Xu

Inference Optimization


Connor Holmes, Arash Bakhtiari, Umesh Chand, Zhewei Yao, Samyam Rajbhandari, Yuxiong He

Product—Primary


Yufei Guo, Luke Miller, Joyce Lee, Wesam Manassra, Anton Tananaev, Chester Cho, Rachel Lim, Meenaz Merchant

Product—Secondary


Dave Cummings, Rajeev Nayak, Sriya Santhanam

Safety—Primary


Sandhini Agarwal, Michael Lampe, Katarina Slama, Kim Malfacini, Bilva Chandra, Ashyana-Jasmine Kachra, Rosie Campbell, Florencia Leoni Aleman, Madelaine Boyd, Shengli Hu, Johannes Heidecke

Safety—Secondary


Lama Ahmad, Chelsea Carlson, Henry Head, Andrea Vallone, CJ Weinmann, Lilian Weng

Communications


Alex Baker-Whitcomb, Ryan Biddy, Ruby Chen, Thomas Degry, Niko Felix, Elie Georges, Lindsey Held, Chad Nelson, Kendra Rimbach, Natalie Summers, Justin Wang, Hannah Wong, Kayla Wood

Legal and Public Policy


Che Chang, Jason Kwon, Fred von Lohmann, Ashley Pantuliano, David Robinson, Tom Rubin, Thomas Stasi

Special Thanks


Alec Radford, Mark Chen, Katie Mayer, Misha Bilenko, Mikhail Parakhin, Bob McGrew, Mira Murati, Greg Brockman, Sam Altman

Время на прочтение

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

2 ноября 2021 года «Сбер» открыл
в общий доступ первую в мире нейросеть ruDALL-E
, которая способна создавать изображения на основе текстового описания на русском языке. По заявлению разработчиков, ее можно использовать для создания вариантов дизайна интерьера, стоковых изображений или векторных иллюстраций, материалов для рекламы, копирайтинга, архитектурного и промышленного дизайна.


«Сбер» уточнил, что ruDALL-E одновременно обучена на двух видах данных — картинках и текстах, что позволяет ей создавать неограниченное число новых изображений по заданному описанию.

В настоящее время есть два варианта модели этой нейросети ruDALL-E XL (содержит 1,3 млрд параметров) и ruDALL-E 12B (12 млрд параметров).

Моделью ruDALL-E XL уже сейчас можно воспользоваться бесплатно. Она выложена
в Github под лицензией Apache License 2.0. Обе модели также вскоре будут доступны на платформе ML Space в хабе предобученных моделей и датасетов DataHub от SberCloud.

7 сентября 2021 года «Сбер» представил
нейросетевой продукт под названием AI-копирайтер. По словам разработчиков, это первый русскоязычный сервис по созданию уникальных описаний товаров для онлайн-магазинов и маркетплейсов.

В октябре «Сбер» рассказал
, что научил свою нейросеть узнавать домашних животных по мордочкам.

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
Картинка, которую создала эта нейросеть на запрос » Хабр компьютер ноутбук клавиптура
«.

Вот еще опусы: » программистка за работой
» и » программист за компьютером
«, » Курсор, язык программирования, разработчик
«, » банкомат Сбера
«, » Рогозин на Луне
«.

Можете опубликовать картинки в комментариях, которые вам выдала нейросеть ruDALL-E
в демо-режиме.

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

DALLE 2 создает удивительные изображения благодаря детальному текстовому описанию. Просто попробуйте.

DALLE 2 — это представленная компанией OpenAI нейросеть, которая генерирует изображения, используя современные алгоритмы глубокого обучения

Нейросеть рисует картины с использованием таких параметров, как тема, цвет и стиль, что позволяет моментально получить уникальный графический контент

Теперь использование технологии DALLE стало возможно в России. Интерфейс теперь доступен на русском языке и позволяет творить без преград

За несколько секунд создавайте привлекательный визуальный контент с помощью нейросетей

Получите ассистента для бизнеса, который поможет в создании визуальных материалов

Упрощайте поиск визуала при помощи платформы, учитывающей все требования

Находите вдохновение при помощи изображений, идеально подходящим по любым запросам

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

3D-рендер левитирующего футуристического замка в небе, цифровое искусство

Ковбой, прогуливающийся по освещенным неоновым светом улицам и переулкам футуристического Токио, окутанного густым туманом

Шэгги из «Скуби-ду» в стиле киберпанка

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

Мы единственные, кто по-настоящему заинтересован в том, чтобы продукты искусственного интеллекта были открыты каждому, независимо от страны пользователя.

○ Оплата рублями

○ Без VPN

○ Без водяных знаков

○ Без страновых ограничений

Получите доступ к DALLE

на полгода

○ Оплата рублями

○ Без VPN

○ Без водяных знаков

○ Без страновых ограничений

Получите доступ к DALLE

на один месяц

Получите доступ к DALLE

на двенадцать месяцев

○ Оплата рублями

○ Без VPN

○ Без водяных знаков

○ Без страновых ограничений

Начните создавать с DALLE

Еще в прошлом году я в свое время подавался в лист ожидания для того чтобы опробовать нейросеть GPT3 для генерации текстов, и спустя достаточно длительное ожидание она попала ко мне в руки, и даже в рабочем проекте мы с ней поэкспериментировали.

И когда Open AI открыли возможность получить доступ к их новой нейросети DALL·E 2 я конечно же воспользовался возможностью и вот на прошлой неделе и она попала мне в руки.

Сразу предупреждаю — в статье я не буду погружаться в технические детали, а просто покажу результаты тестов, причем без выбора самых лучших вариантов, а только то что получил в первых результатах


Введение — а что это за DALL·E 2 такая?

Немного про саму нейросеть DALL·E 2 — она создана для генерации изображений на основе пользовательского описания.

https://openai.com/dall-e-2/

 — на сайте проекта достаточно подробно и с примерами показывается что эта штука уже может, но я добавлю пару примеров в статью, чтобы у вас как у читателя сразу был некоторый контекст.

Астронавт отдыхающий в тропическом отеле в космосе в фотореалистичном стиле
Астронавт отдыхающий в тропическом отеле в космосе в фотореалистичном стиле
Тарелка супа которая является порталом в другое измерение как «digital art» («цифровое искусство»)
Тарелка супа которая является порталом в другое измерение как «digital art» («цифровое искусство»)
Астронавт верхом на лошади как карандашный рисунок
Астронавт верхом на лошади как карандашный рисунок

Также кроме создания изображений с нуля, данная нейросеть способна модифицировать изображения дорисовывая что-то на них, так и создавать варианты исходного изображения.

Пример создания вариантов из исходного изображения
Пример создания вариантов из исходного изображения
Пример модификации изображения — нейросеть попросили дорисовать диван
Пример модификации изображения — нейросеть попросили дорисовать диван

Итак, после того как все мы поняли что же эта штука умеет, настало время проверить это на практике.

Тесты нейросети

Этот вариант генерации вышел несколько абстрактным, но в целом неплохо

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
Unreal engine 5 space station background inspired with space games and films
Unreal engine 5 space station background inspired with space games and films

Viewst team (developers, designers, managers and so on) making coding and sales of they wysiwyg software what helps create animated banners in Leonardo da Vinci styles

Как видно получается неплохо, задумка похожа на стоковые фотографии о командах которые делают свои дизайнерско\разработческие и прочие дела, но вот качество лиц конечно подкачало на «фотореалистичных вариантах»

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Теперь перейдем к другим стилям

Realistic oil painting of Doggy in medieval armor with viewst chameleon logo on shield fighting with dragon of low sales

(Реалистичная масляная живопись изображающую Догги в средневековой броне с Viewst логотипом хамелеоном на щите сражающейся с драконом низких цен)

А вот это уже весьма круто выглядит и более чем соответствует запросу — не считая отсутствия дракона низких цен :)

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Photo of cosplayers with costumes from games, films, anime before they go on stage to show whey work and performance

(Фото косплееров с костюмами по играм, фильмам и аниме перед тем как они выйдут на сцену показать свою работу и выступление)

Опять мы видим проблему с лицами людей (и любовь по всей видимости к аниме у нейросети :)
)

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

А теперь попробуем поменять стиль для такого запроса

Digital art of cosplayers with costumes from games, films, anime before they go on stage to show whey work and performance

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

И для картинки с девушкой с фиолетовыми волосами я решил посмотреть как сработает функция создания вариантов — и получилось более чем достойно

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Pixel art of cosplayers with costumes from games, films, anime before they go on stage to show whey work and performance

И пиксель арт получается достаточно интересный

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

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

An impressionist watercolor painting of Rybinsk with view from water on bridge, museum and church at summer time

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

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

И для примера фотография

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Затем для того же запроса я попросил сделать еще вариантов, и вот что получилось

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

А затем я решил посмотреть на варианты пейзажей с осенью вместо лета и сменить стиль с акварели на масло

An impressionist oil painting painting of Rybinsk with view from water on bridge, museum and church at autumn time

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Затем я решил попробовать режим работы с созданием вариантов по готовому изображению.

Я взял картинку медведя-пивовара из моего туристического пэт-проекта, и запросил нейросеть создать другие варианты эскиза.
 И получилось на удивление не плохо

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Затем я опробовал вариант дорисовки\перерисовки изображения — взял картинку медведя, и запросил  Bear in engineering helmet and blueprints in hands 
и разметив область головы и рук (вместо секиры)

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Далее я решил посмотреть, что будет если разметить все изображение как возможное место для перерисовки с запросом  Bear in watercolor type with Rybinsk museum background

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

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

Время на прочтение

2021 год в машинном обучении ознаменовался мультимодальностью — активно развиваются нейросети, работающие одновременно с изображениями, текстами, речью, музыкой. Правит балом, как обычно, OpenAI, но, несмотря на слово «open» в своём названии, не спешит выкладывать модели в открытый доступ. В начале года компания представила нейросеть DALL-E, генерирующую любые изображения размером 256×256 пикселей по текстовому описанию. В качестве опорного материала для сообщества были доступны статья

на arxiv и примеры в блоге

.

С момента выхода DALL-E к проблеме активно подключились китайские исследователи: открытый код нейросети CogView

позволяет решать ту же задачу — получать изображения из текстов. Но что в России? Разобрать, понять, обучить
— уже, можно сказать, наш инженерный девиз. Мы нырнули с головой в новый проект и сегодня рассказываем, как создали с нуля полный пайплайн для генерации изображений по описаниям на русском языке.

В проекте активно участвовали команды Sber AI, SberDevices, Самарского университета, AIRI и SberCloud.

Мы обучили две версии модели разного размера и дали им имена великих российских абстракционистов — Василия Кандинского и Казимира Малевича:

  1. ruDALL-E Kandinsky (XXL) с 12 миллиардами параметров;

  2. ruDALL-E Malevich (XL) c 1.3 миллиардами параметров.

Некоторые версии наших моделей доступны в open source уже сейчас:

Две последние модели встроены в пайплайн генерации изображений по тексту (об этом расскажем ниже).

Потестировать ruDALL-E Malevich (XL) или посмотреть на результаты генерации можно здесь:

Версии моделей ruDALL-E Malevich (XL), ruDALL-E Kandinsky (XXL), ruCLIP Small уже доступны в DataHub

. Модели ruCLIP Large и Super Resolution (Real ESRGAN) скоро будут доступны там же.

Обучение нейросети ruDALL-E на кластере
Christofari


стало самой большой вычислительной задачей в России: 

  1. Модель ruDALL-E Kandinsky (XXL) обучалась 37 дней на 512 GPU TESLA V100, а затем ещё 11 дней на 128 GPU TESLA V100 — всего 20 352 GPU-дней;

  2. Модель ruDALL-E Malevich (XL) обучалась 8 дней на 128 GPU TESLA V100, а затем еще 15 дней на 192  GPU TESLA V100 — всего 3 904 GPU-дня.

Таким образом, суммарно обучение обеих моделей заняло 24 256 GPU-дней
.

Разберём возможности наших генеративных моделей.

«Озеро в горах, а рядом красивый олень пьёт воду» — генерация ruDALL-E Malevich (XL)
«Озеро в горах, а рядом красивый олень пьёт воду» — генерация ruDALL-E Malevich (XL)

Почему Big Tech изучает генерацию изображений 

Долгосрочная цель нового направления — создание «мультимодальных» нейронных сетей, которые выучивают концепции в нескольких модальностях, в первую очередь в текстовой и визуальной областях, чтобы «лучше понимать мир». 

Генерация изображений может показаться достаточно избыточной задачей в век больших данных и доступа к поисковикам. Однако, она решает две важных потребности, которые пока не может решить информационный поиск:

  1. Возможность точно описать желаемое — и получить персонализированное изображение, которое раньше не существовало.

  2. В любой момент создавать необходимое количество licence-free иллюстраций в неограниченном объеме.

Первые очевидные применения генерации изображений:

  • Фото-иллюстрации для статей, копирайтинга, рекламы. Можно автоматически (а значит — быстрее и дешевле) создавать иллюстрации к статьям, генерировать концепты для рекламы по описанию:

«Лиса в лесу»
«Лиса в лесу»
«Орел сидит на дереве, вид сбоку»
«Орел сидит на дереве, вид сбоку»
«Автомобиль на дороге среди красивых гор»
«Автомобиль на дороге среди красивых гор»
  • Иллюстрации, свободные от лицензии фотостоков, тоже можно генерировать бесконечно:

    «Векторная иллюстрация с розовыми цветами»
    «Векторная иллюстрация с розовыми цветами»
  • Визуализации дизайна интерьеров — можно проверять свои идеи для ремонта, играть с цветовыми решениями, формами и светом:

    «Шикарная гостиная с зелеными креслами»
    «Шикарная гостиная с зелеными креслами»
    «Современное кресло фиолетового цвета»
    «Современное кресло фиолетового цвета»
  • Visual Art — источник визуальных концепций, соединений различных признаков и абстракций:

    «Темная энергия»
    «Темная энергия»
«Кот на Луне»
«Кот на Луне»
«Кошка, которая сделана из белого облака»
«Кошка, которая сделана из белого облака»
«Енот с пушкой»
«Енот с пушкой»
«Красивое озеро на закате»
«Красивое озеро на закате»
«Радужная сова»
«Радужная сова»
«Ждун с авокадо»
«Ждун с авокадо»

Более подробно о самой модели и процессе обучения

В основе архитектуры DALL-E — так называемый трансформер

, он состоит из энкодера и декодера. Общая идея состоит в том, чтобы вычислить embedding по входным данным с помощью энкодера, а затем с учетом известного выхода правильным образом декодировать этот embedding.

Совсем верхнеуровневая схема «ванильного» трансформера
Совсем верхнеуровневая схема «ванильного» трансформера

В трансформере энкодер и декодер состоят из ряда идентичных блоков.

Чуть более подробная схема «ванильного» трансформера
Чуть более подробная схема «ванильного» трансформера

Основу архитектуры трансформера составляет механизм Self-attention
. Он позволяет модели понять, какие фрагменты входных данных важны и насколько важен каждый фрагмент входных данных для других фрагментов. Как и LSTM-модели, трансформер позволяет естественным образом моделировать связи «вдолгую». Однако, в отличие от LSTM-моделей, он подходит для распараллеливания и, следовательно, эффективных реализаций.

Первым шагом при вычислении Self-attention является создание трёх векторов для каждого входного вектора энкодера (для каждого элемента входной последовательности). То есть для каждого элемента создаются векторы Query, Key и Value. Эти векторы получаются путем перемножения embedding’а и трех матриц, которые мы получаем в процессе обучения. Далее мы используем полученные векторы для формирования Self-attention-представления каждого embedding’а, что дает возможность оценить возможные связи в элементах входных данных, а также определить степень «полезности» каждого элемента.

Трансформер также характеризует наличие словаря
. Каждый элемент словаря — это токен
. В зависимости от модели размер словаря может меняться. Таким образом, входные данные сначала превращаются в последовательность токенов, которая далее конвертируется в embedding с помощью энкодера. Для текста используется свой токенизатор, для изображения сначала вычисляются low-level-фичи, а затем в скользящем окне вычисляются визуальные токены. Применение механизма Self-attention позволяет извлечь контекст из входной последовательности токенов в ходе обучения. Следует отметить, что для обучения трансформера требуются большие объёмы (желательно «чистых») данных, о которых мы расскажем ниже.

Как устроен ruDALL-E

Глобальная идея состоит в том, чтобы обучить трансформер авторегрессивно моделировать токены текста и изображения как единый поток данных. Однако использование пикселей непосредственно в качестве признаков изображений потребует чрезмерного количества памяти, особенно для изображений с высоким разрешением. Чтобы не учить только краткосрочные зависимости между пикселями и текстами, а делать это более высокоуровнево, обучение модели проходит в 2 этапа:

  1. Предварительно сжатые изображения с разрешением 256х256 поступают на вход автоэнкодера (мы обучили свой SBER VQ-GAN, улучшив метрики для генерации по некоторым доменам, и об этом как раз рассказывали тут

    , причем также поделились кодом

    ), который учится сжимать изображение в матрицу токенов 32х32. Фактор сжатия 8 позволяет восстанавливать изображение с небольшой потерей качества: см. котика ниже.

  2. Трансформер учится сопоставлять токены текста (у ruDALL-E их 128) и 32×32=1024 токена изображения (токены конкатенируются построчно в последовательность). Для токенизации текстов использовался токенизатор YTTM.

    Исходный и восстановленный котик
    Исходный и восстановленный котик

Важные аспекты обучения

  1. На данный момент в открытом доступе нет кода модели DALL-E от OpenAI. Публикация описывает её общими словами, но обходит вниманием некоторые важные нюансы реализации. Мы взяли наш собственный код для обучения ruGPT-моделей и, опираясь на оригинальную статью
    , а также попытки воспроизведения кода DALL-E мировым ds-сообществом, написали свой код DALL-E-модели. Он включает такие детали, как позиционное кодирование блоков картинки, свёрточные и координатные маски Attention-слоёв, общее представление эмбеддингов текста и картинок, взвешенные лоссы для текстов и изображений, dropout-токенизатор.

  2. Из-за огромных вычислительных требований эффективно обучать модель можно только в режиме точности fp16. Это в 5-7 раз быстрее, чем обучение в классическом fp32. Кроме того, модель с таким подходом занимает меньше места. Но ограничение точности представления чисел повлекло за собой множество сложностей для такой глубокой архитектуры:

    a) иногда встречающиеся очень большие значения внутри сети приводят к вырождению лосса в Nan и прекращению обучения;

    b) при малых значениях learning rate, помогающих избежать проблемы а), сеть перестает улучшаться и расходится из-за большого числа нулей в градиентах.

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

    Для распределенного обучения на нескольких DGX мы используем DeepSpeed

    , как и в случае с ruGPT-3

    .

  3.  Сбор данных и их фильтрация: безусловно, когда мы говорим об архитектуре, нововведениях и других технических тонкостях, нельзя не упомянуть такой важный аспект как данные. Как известно, для обучения трансформеров их должно быть много, причем «чистых». Под «чистотой» мы понимали в первую очередь хорошие описания, которые потом нам придётся переводить на русский язык, и изображения с отношением сторон не хуже 1:2 или 2:1, чтобы при кропах не потерять содержательный контент изображений.

    Первым делом мы взялись за те данные, которые использовали OpenAI (в статье указаны 250 млн. пар) и создатели CogView (30 млн пар): Conceptual Captions, YFCC100m, данные русской Википедии, ImageNet. Затем мы добавили датасеты OpenImages, LAION-400m, WIT, Web2M и HowTo как источник данных о деятельности людей, и другие датасеты, которые покрывали бы интересующие нас домены. Ключевыми доменами стали люди, животные, знаменитости, интерьеры, достопримечательности и пейзажи, различные виды техники, деятельность людей, эмоции.

    После сбора и фильтрации данных от слишком коротких описаний, маленьких изображений и изображений с непригодным отношением сторон, а также изображений, слабо соответствующих описаниям (мы использовали для этого англоязычную модель CLIP), перевода всех английских описаний на русский язык, был сформирован широкий спектр данных для обучения — около 120 млн. пар изображение-описание.

  4. Кривая обучения ruDALL-E Kandinsky (XXL): как видно, обучение несколько раз приходилось возобновлять после ошибок и уходов в Nan.

    КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2

    Обучение модели ruDALL-E Kandinsky (XXL) происходило в 2 фазы: 37 дней на 512 GPU TESLA V100, а затем ещё 11 дней на 128 GPU TESLA V100.

  5. Подробная информация об обучении ruDALL-E Malevich (XL):

    Динамика loss на train-выборке
    Динамика loss на train-выборке
    Динамика loss на valid-выборке
    Динамика loss на valid-выборке
    Динамика learning rate
    Динамика learning rate

    Обучение модели ruDALL-E Malevich (XL) происходило в 3 фазы: 8 дней на 128 GPU TESLA V100, а затем еще 6.5 и 8.5 дней на 192  GPU TESLA V100, но с немного отличающимися обучающими выборками.

  6. Хочется отдельно упомянуть сложность выбора оптимальных режимов генерации для разных объектов и доменов. В ходе исследования генерации объектов мы начали с доказавших свою полезность в NLP-задачах подходов Nucleus Sampling и Top-K sampling, которые ограничивают пространство токенов, доступных для генерации. Эта тема хорошо исследована в применении к задачам создания текстов, но для изображений общепринятые настройки генерации оказались не самыми удачными. Серия экспериментов помогла нам определить приемлемые диапазоны параметров, но также указала на то, что для разных типов желаемых объектов эти диапазоны могут очень существенно отличаться. И неправильный их выбор может привести к существенной деградации качества получившегося изображения. Вопрос автоматического выбора диапазона параметров по теме генерации остаётся предметом будущих исследований.

Вот не совсем удачные генерации объектов на примере котиков, сгенерированные по запросу «Котик с красной лентой»

Картинка 1 — у кота 3 уха; второй не вышел формой; третий немного не в фокусе. 
Картинка 1 — у кота 3 уха; второй не вышел формой; третий немного не в фокусе. 

А вот «Автомобиль на дороге среди красивых гор».
Автомобиль слева въехал в какую-то трубу, а справа — странноватой формы.

«Автомобиль на дороге среди красивых гор»
«Автомобиль на дороге среди красивых гор»

Пайплайн генерации изображений

Сейчас генерация изображений представляет из себя пайплайн из 3 частей: генерация при помощи ruDALL-E — ранжирование результатов с помощью ruCLIP — и увеличение качества и разрешения картинок с помощью SuperResolution.

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

Пайплайн генерации изображений по тексту
Пайплайн генерации изображений по тексту

В Colab

можно запускать инференс модели ruDALL-E Malevich (XL)
с полным пайплайном: генерацией изображений, их автоматическим ранжированием и увеличением.

Рассмотрим его на примере с оленями выше.

Шаг 1.
Сначала делаем импорт необходимых библиотек

git clone https://github.com/sberbank-ai/ru-dalle

pip install -r ru-dalle/requirements.txt > /dev/null

from rudalle import get_rudalle_model, get_tokenizer, get_vae, get_realesrgan, get_ruclip

from rudalle.pipelines import generate_images, show, super_resolution, cherry_pick_by_clip

from rudalle.utils import seed_everything
seed_everything

device = 'cuda'

Шаг 2.
Теперь генерируем необходимое количество изображений по тексту

text = 'озеро в горах, а рядом красивый олень пьет воду'

tokenizer = get_tokenizer()

dalle = get_rudalle_model('Malevich', pretrained=True, fp16=True, device=device)

vae = get_vae().to(device)

pil_images, _ = generate_images(text, tokenizer, dalle, vae, top_k=1024, top_p=0.99, images_num=24)

Генерация изображений по тексту

Совсем верхнеуровневая схема «ванильного» трансформера

Шаг 3.
Далее производим автоматическое ранжирование изображений и выбор лучших изображений

ruclip, ruclip_processor = get_ruclip('ruclip-vit-base-patch32-v5')

ruclip = ruclip.to(device)

top_images, _ = cherry_pick_by_clip(pil_images, text, ruclip, ruclip_processor, device=device, count=24)

Результат ранжирование ruCLIP-ом (топ6)
Результат ранжирование ruCLIP-ом (топ6)

Можно заметить, что один из оленей получился достаточно «улиточным». На этапе генерации можно делать перебор гиперпараметров для получения наиболее удачного результата именно под ваш домен. Опытным путем мы установили, что параметры top_p и top_k контролируют степень абстрактности изображения. Их общие рекомендуемые значения:

Шаг 4.
Делаем Super Resolution

realesrgan = get_realesrgan('x4', device=device)

sr_images = super_resolution(top_images, realesrgan)

show(sr_images, 6)

Super Resolution версии генерации
Super Resolution версии генерации

Для запуска пайплайна с моделью ruDALL-E Kandinsky (XXL) или Malevich (XL) можно также использовать каталог моделей DataHub

( ML Space Christofari

).

Будущее мультимодальных моделей

Мультимодальные исследования становятся всё более популярны для самых разных задач: прежде всего, это задачи на стыке CV и NLP (о первой такой модели для русского языка, ruCLIP, мы рассказали ранее

), а также на стыке NLP и Code. Хотя последнее время становятся популярными архитектуры, которые умеют обрабатывать много модальностей одновременно, например, AudioCLIP
. Представляет отдельный интерес Foundation Model
, которая совсем недавно была анонсирована исследователями из Стэнфордского университета.

И Сбер не остается в стороне — так в соревновании Fusion Brain Challenge

конференции AI Journey

предлагается создать единую архитектуру, с помощью которой можно решить 4 задачи:

  • С2С — перевод с Java на Python; 

  • HTR — распознавание рукописного текста на фотографиях;

  • Zero-shot Object Detection — детекция на изображениях объектов, заданных на естественном языке; 

  • VQA — ответы на вопросы по картинкам. 

По условиям соревнования (которое продлится до 5 ноября) на общие веса нейросети должно приходиться как минимум 25% параметров! Совместное использование весов для разных задач делает модели более экономичными в сравнении с их мономодальными аналогами. Организаторами также был предоставлен бейзлайн решения, который можно найти на официальном GitHub

соревнования. 

И пока команды соревнуются за первые места, а компании наращивают вычислительные мощности для обучения закрытых моделей, нашим интересом остается open source и расширение сообщества. Будем рады вашим прототипам, неожиданным находкам, тестам и предложениям по улучшению моделей!

Самые важные ссылки:

Регистрация в DALL·E 2

  1. Подключаемся к VPN
  2. Регистрируем аккаунт на  сайте openAI
  3. При переходе на страницу подтверждения номера покупаем номер  страны

    , в которой находится VPN-сервер 
    и активируем аккаунт купленным номером телефона
  4. Пользуемся

Что по коду?

Сейчас мы воспроизведём все эти математические фокусы в код. Это легче, чем вы думаете!

(Для воспроизведения кода нужно использовать Google Colab)

▍ Установим доступную реализацию GPT

   !pip install datasets &>> install.log
  
  

   !git clone https://github.com/karpathy/minGPT &>> install.log



!cd minGPT; git checkout 3ed14b2cec0dfdad3f4b2831f2b4a86d11aef150
  
  

▍ Установка VQ-GAN
«Ждун с авокадо»

Совсем верхнеуровневая схема «ванильного» трансформера

▍ Настраиваем датасет

«Кошка, которая сделана из белого облака»

«Енот с пушкой»
«Красивое озеро на закате»

Можете попробовать разные параметры обучения, чем больше «Радужная сова»
и
(на этом датасете до 20000) — тем лучше, но дольше обучение.
Так-же советую в будущем попробовать использовать более большие датасеты для лучших результатов.

   block_size=255+max_text_length+1 # Чтобы также установить кондиционирование
mconf = GPTConfig(dset.vocab_size, block_size,
                  n_layer=8, n_head=8, n_embd=512)
model = GPT(mconf)

# Обучение
tconf = TrainerConfig(max_epochs=10, batch_size=32, learning_rate=6e-4,
                      lr_decay=True, warmup_tokens=512*20, final_tokens=2*len(dset)*block_size,
                      num_workers=0) # num_workers=0, чтобы избежать некоторых ошибок многопроцессорной обработки
trainer = Trainer(model, dset, None, tconf)
trainer.train()
  
  

▍ Наконец генерируем картинки

   prompt = 'Green cat' #@param
 
# Закодируйте промт так, как мы это делаем в наборе данных
char_idxs = [encode_char(c) for c in prompt.lower()[:max_text_length]]
while len(char_idxs) < max_text_length:
    char_idxs += [51]
char_idxs += [52]
char_idxs = [c+1024 for c in char_idxs]

# Брррр...
fig, axs = plt.subplots(3, 3, figsize=(12, 12))
for i in tqdm(range):
    x = torch.tensor([dset.stoi[s] for s in char_idxs], dtype=torch.long)[None,...].to(device)
    y = sample(model, x, 256, temperature=1., sample=True, top_k=200)[0]
    completion = [dset.itos[int(i)] for i in y]
    ccc = completion[-256:]
    ccc = [min(c, 1023) for c in ccc]
    with torch.no_grad():
        zs = vqgan_model.quantize.get_codebook_entry(torch.tensor(ccc).to(device), (1, 16, 16, 256))
        axs[i%3, i//3].imshow(vqgan_model.decode(zs).add
.div

.cpu().squeeze().permute(1, 2, 0).clip(0, 1))

Генерация нового изображения DALL·E 2 по запросу

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2


Как видно, картинки получились неплохие, достаточно проработанные и качественные.

Генерация вариаций изображения DALL·E 2

В качестве референсного изображения я выбрал первое из прошлой подборки.

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2


Как это работает внутри

Энкодер преобразует изображение X в сетку скрытых векторов

image

Каждый вектор в сетке подвергается квантованию с использованием функции q(ẑ)

image

Декодер реконструируют квантованную сетку

image

Для обучения VQ-GAN реконструкции картинки нам нужно как-то оценивать его работу и для этого у нас есть целых два Лосса (Функции потерь):

Эта функция потерь высчитывает, насколько хорошо модели удалось реконструировать оригинал.

image

Кстати, дискриминатор позволяет добиться лучшей реконструкции изображений, даже из очень сжатой сетки векторов.

image

Теперь с помощью этой функции мы можем обучить наш декодер:

image

GPT + VQ-GAN = DALL-E

«Мы умеем моделировать последовательность токенов текста с помощью GPT и умеем восстанавливать изображения из набора токенов автоэнкодера, почему бы не совместить?» — подумали разработчики из Open AI и сделали DALL-E.

Далее достаточно было обучить GPT в ответ на входной текст, генерировать токены подобные VQ-GAN соответствующего изображения. На удивление — это сработало, и она научилась «переводить» естественный язык в язык модели синтеза изображений.

Сначала мы собираем датасет в формате: Текст Ӏ Картинка.

Преобразуем картинки обучающего датасета, посредством энкодера VQGAN в матрицу токенов 32*32 и учим GPT сопоставлять 128 токенов текста с соответствующими 1024 токенами изображения.

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

image

По поводу того как работает DALL·E 2

  • В отличие от MidJourney, здесь видно сколько кредитов на аккаунте — по стандарту их  50 
    и ровно спустя месяц они обновляются до  15. 
    То есть, неважно сколько у вас кредитов — их станет  15 
    и дальше каждый месяц будет также.
  • Существуют 3 доступных операции, каждая стоит  1 кредит
    :
  1. Генерация 4 изображений по одному текстовому запросу
  2. Генерация 4 вариаций по созданному изображению или пользовательскому загруженному изображению
  3. Генерация части изображения (4 вариации) по текстовому запросу (или расширение изображения)

Я попробовал каждую, используя запрос из новости про перегенерацию моделей Fallout в stableDiffusion, поскольку я имею некоторые сложности с формулированием подробных запросов.

Woman in metal armor Mad Max Fallout, modern style, detailed face, beautiful face, by Greg Rutkowski and Alphonse Mucha, D&D character, in front of an urban background, digital painting, concept art, smooth, sharp focus illustration, ArtStation HQ

КАК НАЗЫВАЕТСЯ НЕЙРОСЕТЬ DALLE 2
Исходник и результат работы автора Misha_Vozduh с reddit в stableDiffusion

Редактирование изображения по текстовому запросу

На сайте представлен простой редактор — можно вставить свое изображение, нарисовать простые геометрические фигуры или стереть части изображения. Те части, которые остались стёртыми — нейросеть дорисует.

Теперь подробнее о регистрации DALL·E 2

  1. Используйте подходящие VPN сервисы
  2. Регистрируем новый аккаунт, я использовал gmail почту, хоть там и стоят все настройки для РФ и номер привязан соответствующий, все сработало как надо и я добрался до окна подтверждения аккаунта по номеру телефона
  3. Самый «запарный» момент, получить номер  иностранной
    страны, которой я «нахожусь». 
    В моём случае — США. Я перепробовал много «бесплатных» номеров в открытом доступе, но ни один из них не сработал. Некоторые уже были использованы для создания аккаунтов на сайте, другие просто не принимали SMS.

    Тогда я воспользовался  популярным 
    сервисом по покупке временных номеров

    для активации аккаунтов.

    Номер успешно подошёл, код активации пришёл и я подтвердил аккаунт.

  4. Все заработало.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *