Разработка
Нейросеть Stable Diffusion была разработана в 2022 году командой исследователей из группы CompVis Мюнхенского университета Людвига-Максимилиана и компании Runway. Проект был финансирован и формировался начинающей компанией Stability AI, которая также предоставила вычислительные ресурсы для обучения модели.
Разработку Stable Diffusion возглавили Патрик Эссер из Runway и Робин Ромбах из CompVis. Они являются одними из авторов архитектуры модели скрытой диффузии, используемой Stable Diffusion.
Кроме того, в разработке модели участвовали EleutherAI и LAION, немецкая некоммерческая организация, которая собрала набор данных для обучения Stable Diffusion.
В октябре 2022 года Stability AI привлекла $101 000 000 в рамках раунда финансирования, проведенного Lightspeed Venture Partners и Coatue Management. Эти средства будут использоваться для дальнейшего развития Stable Diffusion и расширения ее возможностей.
Технологии ↓
Stable Diffusion – это модель искусственного интеллекта, способная генерировать изображения из текста. Она была представлена в 2022 году и использует метод диффузии для создания фотореалистичных картинок.
Архитектура
Stable Diffusion использует архитектуру скрытой диффузии (LDM), разработанную группой CompVis в Мюнхенском университете Людвига-Максимилиана. LDM состоит из трех частей:
- Вариационный автокодировщик (VAE), который сжимает изображение из пространства пикселей в скрытое пространство меньшего размера, улавливая более фундаментальное семантическое значение изображения.
- Блок U-Net, который удаляет шум из скрытого представления во время прямой диффузии.
- Дополнительный кодировщик текста, который преобразует текстовые подсказки в пространство для встраивания.
Шаг шумоподавления может быть гибко обусловлен строкой текста, изображением или другой модальностью. Закодированные данные кондиционирования подвергаются шумоподавлению U-Nets с помощью механизма перекрестного внимания.
Преимущества архитектуры LDM
LDM имеет ряд преимуществ по сравнению с другими моделями диффузии:
- Повышенная вычислительная эффективность для обучения и генерации.
- Относительно небольшая модель, что позволяет ей работать на потребительских графических процессорах.
Параметры модели
Стабильная диффузия имеет 860 000 000 параметров в U-Net и 123 000 000 в кодировщике текста. Это относительно мало по сравнению с другими моделями диффузии, что делает ее более доступной для разработки и использования.
Данные обучения ↓
Модель Stable Diffusion обучалась на наборе данных LAION-5B, который содержит 5 миллиардов пар изображений и подписей, извлеченных из Интернета. Данные были классифицированы по языку, разрешению, вероятности наличия водяного знака и «эстетической» оценке.
Модель была обучена на трех подмножествах LAION-5B:
- LAION2B-en — 12 миллионов изображений с английскими описаниями
- LAION-high-resolution — 12 миллионов изображений с разрешением более 512×512 пикселей
- LAION-Aesthetics v2 5+ — 600 миллионов изображений, которые были признаны эстетически привлекательными людьми
Сторонний анализ данных обучения показал, что из 12 миллионов изображений в подмножестве laion2B-en примерно 47% поступили из 100 различных доменов. Основным источником изображений был Pinterest, за которым следовали WordPress, Blogspot, Flickr, DeviantArt и Wikimedia Commons.
Расследование Bayerischer Rundfunk показало, что наборы данных LAION, размещенные на Hugging Face, содержат большое количество частных и конфиденциальных данных. В частности, в них были обнаружены изображения людей без их согласия, а также изображения, защищенные авторским правом.
Процедуры обучения
Модель Stable Diffusion обучалась в несколько этапов. Изначально она обучалась на двух подмножествах LAION-5B:
- LAION2B-en — 12 миллионов изображений с английскими описаниями.
- LAION-high-resolution —12 миллионов изображений с разрешением более 512×512 пикселей.
После этого модель была дополнительно обучена на подмножестве LAION-Aesthetics v2 5+, которое состояло из 600 миллионов изображений, которые были признаны эстетически привлекательными людьми. Это подмножество также исключало изображения с низким разрешением и изображения, которые были помечены как содержащие водяной знак.
В заключительных раундах обучения модель была дополнительно настроена для уменьшения зависимости от обработки текста. Это было сделано для улучшения качества генерации изображений без использования классификаторов.
Обучение модели Stable Diffusion было проведено с использованием 256 графических процессоров Nvidia A100 в Amazon Web Services. Оно заняло в общей сложности 150 000 графо-часов и обошлось в $600 000.
Ограничения
Stable Diffusion — это мощная модель преобразования текста в изображение, но она имеет ряд ограничений.
Деградация и неточности
Первоначальные выпуски модели были обучены на наборе данных, состоящем из изображений с разрешением 512×512. Это означает, что качество создаваемых изображений заметно ухудшается, когда пользовательские спецификации отклоняются от «ожидаемого» разрешения 512×512.
Версия 2.0 модели Stable Diffusion позже получила возможность генерировать изображения с разрешением 768×768. Однако даже при этом разрешении модель может создавать изображения с шумом и артефактами.
Другая проблема заключается в создании человеческих конечностей из-за низкого качества данных о конечностях в базе данных LAION. Модель недостаточно обучена, чтобы понимать человеческие конечности и лица из-за отсутствия репрезентативных особенностей в базе данных.
Версия 1.0 Stable Diffusion XL (SDXL), выпущенная в июле 2023 года, представила собственное разрешение 1024×1024 и улучшенную генерацию конечностей и текста. Однако эта версия модели все еще находится в разработке и ее возможности еще не полностью изучены.
Доступность для отдельных разработчиков
Чтобы настроить модель для новых вариантов использования, таких как генерация аниме-персонажей, требуются новые данные и дальнейшее обучение.
Точные адаптации Stable Diffusion, созданные посредством дополнительной переподготовки, использовались для множества различных случаев использования, от медицинских изображений до алгоритмически генерируемой музыки. Однако этот процесс тонкой настройки чувствителен к качеству новых данных. Изображения с низким разрешением или разрешения, отличные от исходных данных, могут не только не справиться с новой задачей, но и ухудшить общую производительность модели.
Даже если модель дополнительно обучена на изображениях высокого качества, людям сложно запускать модели в бытовой электронике. Например, процесс обучения вайфу-диффузии требует минимум 30 ГБ видеопамяти, что превышает обычный ресурс, предусмотренный в таких потребительских графических процессорах, как серия Nvidia GeForce 30, у которой всего около 12 ГБ.
Алгоритмическая предвзятость
Создатели Stable Diffusion признают возможность алгоритмической предвзятости, поскольку модель в первую очередь обучалась на изображениях с английскими описаниями. В результате сгенерированные изображения усиливают социальные предубеждения и отражают западную точку зрения.
Модель дает более точные результаты для подсказок, написанных на английском языке, по сравнению с подсказками, написанными на других языках. Западная или белая культура часто является представлением по умолчанию.
Тонкая настройка для конечного пользователя
Стабильная диффузия — это мощная модель преобразования текста в изображение, но она имеет ряд ограничений. Чтобы устранить эти ограничения, конечные пользователи могут выбрать дополнительное обучение для точной настройки результатов генерации в соответствии с более конкретными сценариями использования. Этот процесс также называется персонализацией.
Существует три метода, с помощью которых доступная пользователю точная настройка может быть применена к контрольной точке модели стабильной диффузии:
- Embedding — это метод, при котором модель обучается на коллекции изображений, предоставленных пользователем. Это позволяет модели генерировать визуально похожие изображения всякий раз, когда имя встраивания используется в подсказке создания. Встраивания основаны на концепции «текстовой инверсии», где векторные представления для конкретных токенов, используемых кодировщиком текста модели, связаны с новыми псевдословами. Внедрения можно использовать для уменьшения искажений в исходной модели или для имитации визуальных стилей.
- Hypernetwork — это небольшая предварительно обученная нейронная сеть, которая применяется к различным точкам внутри более крупной нейронной сети. Гиперсеты направляют результаты в определенном направлении, позволяя моделям на основе стабильной диффузии имитировать художественный стиль конкретных художников, даже если художник не распознается исходной моделью. Гиперсеты обрабатывают изображение, находя ключевые важные области, такие как волосы и глаза, а затем помещают эти области во вторичное скрытое пространство.
- DreamBooth — это модель генерации глубокого обучения, разработанная исследователями из Google Research и Бостонского университета. Она позволяет точно настроить модель для генерации точных персонализированных результатов, изображающих конкретный предмет, после обучения с помощью набора изображений, изображающих этот предмет.
Дополнительные комментарии
- Embedding являются наиболее простым и доступным методом тонкой настройки для конечных пользователей. Они могут быть использованы для создания изображений с определенными визуальными характеристиками, такими как стиль или цветовая гамма.
- Hypernetwork более сложны, но они позволяют добиться более тонкого контроля над результатами генерации. Они могут быть использованы для имитации конкретных художественных стилей или создания изображений с определенными объектами или персонажами.
- DreamBooth является самым мощным методом тонкой настройки, но он также является самым сложным и требует значительных вычислительных ресурсов. Он может быть использован для создания изображений, которые точно соответствуют конкретным требованиям пользователя.
Возможности ↓
Stable Diffusion — это модель преобразования текста в изображение, которая может использоваться для создания новых, перерисованных или измененных изображений.
Создание новых изображений
Stable Diffusion может генерировать новые изображения с нуля, используя текстовую подсказку, описывающую желаемые элементы изображения. Например, пользователь может использовать текстовую подсказку «красивая кошка» для создания изображения кошки, или «кошка с зелеными глазами и белым мехом» для создания более конкретного изображения.
Перерисовка и изменение существующих изображений
Stable Diffusion также может использоваться для перерисовки и изменения существующих изображений. Например, пользователь может использовать текстовую подсказку «добавить собаку на пляж» для добавления собаки на пляжное изображение. Или пользователь может использовать текстовую подсказку «закрасить небо в синий цвет» для изменения цвета неба на изображении.
Для использования Stable Diffusion для перерисовки и изменения существующих изображений необходимо использовать соответствующий пользовательский интерфейс, поддерживающий эти функции. В настоящее время существует множество различных реализаций Stable Diffusion с открытым исходным кодом, которые поддерживают эти функции.
Генерация текста в изображение
Stable Diffusion может генерировать изображения на основе текстового описания. Например, пользователь может использовать текстовую подсказку «красивая кошка» для создания изображения кошки, или «кошка с зелеными глазами и белым мехом» для создания более конкретного изображения.
При использовании Stable Diffusion для генерации текста в изображение можно настроить следующие параметры:
- Тип выборки: определяет, как модель выбирает пиксели для уточнения.
- Размеры выходного изображения: определяют размер выходного изображения.
- Начальные значения: определяют начальное изображение, которое используется в качестве отправной точки для генерации.
Дополнительные возможности
Внешние реализации Stable Diffusion предоставляют дополнительные функции для text2img, которые позволяют пользователям более точно контролировать результаты генерации изображений.
- Маркеры выделения: позволяют пользователям добавлять или уменьшать важность ключевых слов в текстовой подсказке. Это может быть полезно для того, чтобы сделать изображение более или менее конкретным, или чтобы подчеркнуть определенные аспекты изображения.
- Отрицательные подсказки: позволяют пользователям указывать подсказки, которых модель должна избегать во время создания изображения. Это может быть полезно для того, чтобы предотвратить появление нежелательных элементов в изображении, таких как искалеченные человеческие руки.
Модификация изображений
Stable Diffusion также включает в себя сценарий выборки «img2img», который позволяет пользователям изменять существующие изображения с помощью текстовой подсказки.
Для этого сценария требуется три параметра:
- Текстовая подсказка: описывает элементы, которые должны быть добавлены или изменены на изображении.
- Путь к существующему изображению: изображение, которое будет модифицировано.
- Значение силы: определяет, сколько шума будет добавлено к выходному изображению. Более высокое значение силы приводит к более разнообразным изображениям, но может привести к созданию изображений, которые не соответствуют предоставленной текстовой подсказке.
Stable Diffusion может использовать img2img для различных целей, включая:
- Анонимизацию: добавление шума к изображению может сделать его менее узнаваемым.
- Увеличение данных: добавление шума к изображению может создать новые варианты изображения, которые могут быть использованы для обучения моделей машинного обучения.
- Масштабирование: увеличение разрешения изображения с помощью img2img может добавить больше деталей.
- Сжатие: Stable Diffusion экспериментировал с использованием img2img для сжатия изображений, но этот метод имеет ограничения по сохранению мелкого текста и лиц.
Множество внешних реализаций Stable Diffusion предлагают дополнительные варианты использования для модификации изображений.
- Inpainting: позволяет пользователям выборочно изменять части существующего изображения, используя маску слоя. Маска слоя определяет, какие части изображения должны быть изменены.
- Перерисовка: позволяет пользователям расширять изображения за пределы их исходных размеров, заполняя ранее пустое пространство новым содержимым.
- Deep2img: позволяет пользователям контролировать глубину выходного изображения. Эта модель определяет глубину исходного изображения и генерирует новое изображение, которое сохраняет глубину исходного изображения.
ControlNet ↓
Контрольная сеть (ControlNet) — это архитектура нейронной сети, которая позволяет управлять моделями диффузии путем включения дополнительных условий.
ControlNet работает, дублируя веса блоков нейронной сети в две копии: «заблокированную» и «обучаемую». «Заблокированная» копия сохраняет исходную модель, а «обучаемая» копия изучает желаемое условие.
Этот подход позволяет обучать модели диффузии на небольших наборах данных пар изображений, не нарушая целостности исходной модели.
«Нулевая свертка» — это свертка 1×1, в которой вес и смещение инициализируются равными нулю. Перед обучением все нулевые свертки дают нулевой результат, что предотвращает любые искажения, вызванные ControlNet.
ControlNet не обучает ни один слой с нуля. Вместо этого он использует процесс тонкой настройки, который сохраняет исходную модель в безопасности.
Этот метод позволяет проводить обучение на небольших или даже персональных устройствах.
Более подробное объяснение
ControlNet работает следующим образом:
- Сначала исходная модель диффузии разделяется на два блока: «заблокированный» и «обучаемый».
- «Заблокированный» блок сохраняет исходные веса и параметры модели.
- «Обучаемый» блок получает новые веса и параметры, которые будут использоваться для управления моделью.
Чтобы управлять моделью, «обучаемый» блок использует нулевые свертки для включения дополнительных условий. Нулевая свертка — это свертка 1×1, в которой вес и смещение инициализируются равными нулю. Перед обучением все нулевые свертки дают нулевой результат, что предотвращает любые искажения, вызванные ControlNet.
ControlNet обучается с помощью процесса тонкой настройки. Тонкая настройка — это процесс обучения модели с использованием небольшого набора данных. В этом случае небольшой набор данных состоит из пар изображений, где каждое изображение соответствует определенному условию.
ControlNet может использоваться для различных целей, включая:
- Анонимизацию изображений: ControlNet может использоваться для добавления шума к изображениям, чтобы сделать их менее узнаваемыми.
- Увеличение данных: ControlNet может использоваться для создания новых вариантов изображений, которые могут быть использованы для обучения моделей машинного обучения.
- Масштабирование изображений: ControlNet может использоваться для увеличения разрешения изображений.
ControlNet — это мощный инструмент, который может использоваться для управления моделями диффузии. Он позволяет обучать модели диффузии на небольших наборах данных, не нарушая целостности исходной модели.