ruDALL-E: генерируем изображения по текстовому описанию, или Самый большой вычислительный проект в России |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2021-11-03 07:00 2021 год в машинном обучении ознаменовался мультимодальностью — активно развиваются нейросети, работающие одновременно с изображениями, текстами, речью, музыкой. Правит балом, как обычно, OpenAI, но, несмотря на слово «open» в своём названии, не спешит выкладывать модели в открытый доступ. В начале года компания представила нейросеть DALL-E, генерирующую любые изображения размером 256?256 пикселей по текстовому описанию. В качестве опорного материала для сообщества были доступны статья на arxiv и примеры в блоге. С момента выхода DALL-E к проблеме активно подключились китайские исследователи: открытый код нейросети CogView позволяет решить ту же проблему — получать изображения из текстов. Но что в России? Разобрать, понять, обучить — уже, можно сказать, наш инженерный девиз. Мы нырнули с головой в новый проект и сегодня рассказываем, как создали с нуля полный пайплайн для генерации изображений по описаниям на русском языке. В проекте активно участвовали команды SberAI, SberDevices, Самарского университета, AIRI и SberCloud. Мы обучили две версии модели разного размера и дали им имена великих российских абстракционистов — Василия Кандинского и Казимира Малевича:
Некоторые версии наших моделей доступны в open source уже сейчас:
Две последние модели встроены в пайплайн генерации изображений по тексту (об этом расскажем ниже). Версии моделей ruDALL-E Malevich (XL), ruDALL-E Kandinsky (XXL), ruCLIP Small, ruCLIP Large, Super Resolution (Real ESRGAN) также скоро будут доступны в DataHub. Обучение нейросети ruDALL-E на кластере Christofari стало самой большой вычислительной задачей в России:
Таким образом, суммарно обучение обеих моделей заняло 24 256 GPU-дней. Разберём возможности наших генеративных моделей. «Озеро в горах, а рядом красивый олень пьёт воду» — генерация ruDALL-E Malevich (XL) Почему Big Tech изучает генерацию изображений Долгосрочная цель нового направления — создание «мультимодальных» нейронных сетей, которые изучают концепции в нескольких модальностях, в первую очередь в текстовой и визуальной областях, чтобы лучше понимать мир. Генерация изображений может показаться достаточно избыточной задачей в век больших данных и доступа к поисковикам. Однако, она решает две важных потребности, которые пока не может решить информационный поиск:
Первые очевидные применения генерации изображений:
«Лиса в лесу» «Орел сидит на дереве, вид сбоку» «Автомобиль на дороге среди красивых гор»
«Кот на Луне» «Кошка которая сделана из белого облака» «Енот с пушкой» «Красивое озеро на закате» Архитектура модели В основе архитектуры DALL-E — так называемый трансформер, он состоит из энкодера и декодера. Общая идея состоит в том, чтобы вычислить embedding по входным данным с помощью энкодера, а затем с учетом известного выхода декодировать вектор для сопоставления с ожидаемым выходом. В трансформере энкодер и декодер состоят из ряда идентичных блоков, которые основываются на механизме Attention. Механизм Self-attention — основа архитектуры трансформера. Он позволяет модели понять, какие фрагменты входных данных важны и насколько важен каждый фрагмент входных данных для других фрагментов. Концептуально слой Self-attention позволяет обновлять элементы входной последовательности за счёт включения глобальной информации обо всех элементах последовательности. Как и LSTM-модели, трансформер позволяет естественным образом моделировать связи «в долгую». Однако, в отличие от LSTM-моделей, он подходит для распараллеливания и, следовательно, эффективных реализаций. Первым шагом при вычислении Self-attention является создание трёх векторов для каждого входного вектора энкодера (для каждого элемента входной последовательности). То есть для каждого элемента мы создаем векторы Query, Key и Value. Эти векторы получаются путем перемножения embedding’а и трех матриц, которые мы получаем в процессе обучения. Далее мы используем полученные векторы для формирования Self-attention-представления каждого embedding’а, что дает возможность оценить возможные связи в элементах входных данных, а также определить степень «полезности» каждого элемента. Трансформер также характеризует наличие словаря. Каждый элемент словаря — это токен. В зависимости от модели размер словаря может меняться. Таким образом, входные данные сначала превращаются в последовательность токенов, которая далее конвертируется в embedding с помощью энкодера. Для текста используется свой токенизатор, для изображения сначала вычисляются low-level-фичи, а затем в скользящем окне вычисляются визуальные токены. Применение механизма Attention позволяет извлечь контекст из входной последовательности токенов в ходе обучения. Следует отметить, что для обучения трансформера требуются большие объёмы (желательно «чистых») данных, о которых мы расскажем ниже. Как устроен ruDALL-E Цель архитектуры — обучение трансформера авторегрессивно моделировать токены текста и изображения как единый поток данных. Однако использование пикселей непосредственно в качестве признаков изображений потребует чрезмерного количества памяти, особенно для изображений с высоким разрешением. Чтобы не учить только краткосрочные зависимости между пикселями и текстами, а делать это более высокоуровнево, обучение модели проходит в 2 этапа:
Трудности, возникшие при обучении и генерации:
Вот не совсем удачные генерации объектов на примере котиков, сгенерированные по запросу «котик с красной лентой»: Картинка 1 — у кота 3 уха; второй не вышел формой; третий немного не в фокусе. А вот «Автомобиль на дороге среди красивых гор». Автомобиль слева въехал в какую-то трубу, а справа — странноватой формы. «Автомобиль на дороге среди красивых гор» Пайплайн генерации изображений Сейчас генерация изображений представляет из себя пайплайн из 3 частей: генерация при помощи ruDALL-E — ранжирование результатов с помощью ruCLIP — и увеличение качества и разрешения картинок с помощью SuperResolution. При этом на этапе генерации и ранжирования можно менять различные параметры, влияющие на количество генерируемых примеров, их отбор и абстрактность. Пайплайн генерации изображений по тексту GitHub + Colab В Colab можно запускать инференс модели ruDALL-E Malevich (XL) с полным пайплайном: генерацией изображений, их автоматическим ранжированием и увеличением: Рассмотрим его на примере с оленями выше: Шаг 1. Установка и импорт библиотек
Шаг 2. Генерация вариантов по тексту
Результат: Генерация изображений по тексту Шаг 3. Автоматическое ранжирование изображений, выбор лучших
Результат ранжирование ruCLIP-ом (топ6) Можно заметить, что один из оленей получился достаточно «улиточным». На этапе генерации можно делать перебор гиперпараметров для получения наиболее удачного результата именно под ваш домен. Опытным путем мы установили, что параметры top_p и top_k контролируют степень абстрактности изображения. Их общие рекомендуемые значения: top_k=2048, top_p=0.995; top_k=1536, top_p=0.99; top_k=1024, top_p=0.99. Шаг 4. Делаем SuperResolution
Super Resolution версии генерации Для запуска пайплайна с моделью ruDALL-E Kandinsky (XXL) или Malevich (XL) можно будет также использовать каталог моделей DataHub (ML Space Christofari). Будущее мультимодальных моделей Мультимодальные исследования становятся всё более популярны для самых разных задач: прежде всего, это CV + NLP (о первой такой модели для русского языка, ruCLIP, мы рассказали ранее), а также NLP + программный код, и даже много источников данных одновременно. В конкурсе Fusion Brain Challenge конференции AI Journey единой моделью нужно решить 4 задачи:
По условиям соревнования (которое продлится до 5 ноября) на общие веса нейросети должно приходиться как минимум 25% параметров! Совместное использование весов для разных задач делает модели более экономичными в сравнении с их мономодальными аналогами. Организаторами также был предоставлен бейзлайн решения, который можно найти на официальном GitHub. И пока команды соревнуются за первые места, а компании наращивают вычислительные мощности для обучения закрытых моделей, нашим интересом остается open source и большое сообщество. Будем рады вашим прототипам, неожиданным находкам, тестам и предложениям по улучшению моделей!
Коллектив авторов: @rybolos, @ollmer, @shonenkov, @kuznetsoff87, @oulenspeigel, @achertok, @da0c, @mboyarkin, @boomb0om Источник: habr.com Комментарии: |
|