Процесс обучения с подкреплением, который OpenAI использует для улучшения модели, неявно уменьшает негативное поведение в результате позитивного человеческого взаимодействия.
В этой статье авторы применяют новый практический подход: используют негативное взаимодействие между людьми (т.е. намеренно выбирают изображения низкого качества) для неявного усиления позитивного поведения.
С Dreambooth LoRA для достижения этой цели практически нет необходимости готовить столько же входных данных, сколько обучать большую языковую модель.
"Бургер в форме пришельца ()" с разными уровнями оптимизации
Автор представляет две основные функции, выпущенные в Stable Diffusion XL 1.0: быстрое взвешивание слов и обучение и рассуждение Dreambooth LoRA, а также сочетает метод Textual Inversion (инверсия текста) для обучения Lora, делая Lora умнее и проще в использовании.
Об авторе: Макс Вульф (@minimaxir) — специалист по данным в BuzzFeed, работающий над инструментами искусственного интеллекта и машинного обучения и различными проектами с открытым исходным кодом.
Оригинальная ссылка:
Ниже приводится содержание статьи под редакцией Founder Park.
Краткое введение в SDXL
В прошлом месяце Stability AI выпустила Stable Diffusion XL 1.0 (SDXL) и сделала его открытым исходным кодом, что позволяет пользователям получать к нему доступ без каких-либо специальных разрешений.
Пример вывода SDXL 1.0
SDXL на самом деле представляет собой две модели: базовую модель и дополнительную уточненную модель, которая значительно улучшает представление деталей без увеличения скорости.
Сравнение относительного качества моделей различных версий Stable Diffusion
Обратите внимание на значительное улучшение качества после использования утонченной модели.
Функции SDXL 1.0
Стоит отметить, что эта версия (SDXL 1.0) является одной из первых моделей с открытым исходным кодом, которая может генерировать изображения с разрешением 1024x1024 без специальных мер, при этом сгенерированные изображения являются более подробными.
Библиотека Python диффузоров Hugging Face теперь полностью поддерживает эту модель с некоторой оптимизацией производительности.
В то же время в диффузорах также реализована поддержка двух новых функций: быстрого взвешивания слов и обучения и вывода Dreambooth LoRA. Так что планирую попробовать (демо-код SDXL в диффузорах можно посмотреть в конце статьи).
Поддержка быстрого взвешивания слов для диффузоров использует библиотеку Python под названием compel для взвешивания терминов более математическим способом. Вы можете добавить любое количество + или - к данному слову, чтобы увеличить или уменьшить его «важность» при встраивании сгенерированного позиционного текста и, таким образом, повлиять на конечный результат.
По тому же принципу вы также можете обертывать фразы: например, если вы создали «Пейзаж Сан-Франциско Сальвадора Дали, холст, масло» и получилось реалистичное фото Сан-Франциско, то вы могли бы создать художественную форму и стать Введите «Пейзаж Сан-Франциско Сальвадора Дали (холст, масло) +++», позвольте Stable Diffusion добиться ожидаемого эффекта.
Подготовка среды
Я запустил облачную виртуальную машину, снабдил ее новым графическим процессором Nvidia L4 среднего класса (0,24 доллара США в час за спотовый экземпляр на Google Cloud Platform) и приступил к работе.
При использовании одного графического процессора L4 для создания каждого изображения размером 1024x1024 требуется около 22 секунд; и в отличие от предыдущего режима Stable Diffusion, теперь графический процессор среднего уровня может генерировать только одно изображение за раз, поскольку загрузка его графического процессора уже заполнена, поэтому вам просто нужно быть более терпеливым. Понижение разрешения может ускорить сборку, но я настоятельно не советую этого делать, так как результат будет ужасен.
** Немного персонализированной конфигурации **
В моих тестах он исправляет большинство проблем с подсказками, возникших после Stable Diffusion 2.0, особенно с установленными более высокими значениями руководства без классификатора (по умолчанию для guiding_scale установлено значение 7,5; мне нравится изменить его на 13 ).
Guiding_scale равен 13 для всех примеров, созданных моделью LoRA в этой статье.
Начало работы 丨Изучите LoRA
Самым важным обновлением SDXL 1.0 на самом деле является поддержка Dreambooth LoRA, которая позволяет нам настраивать модель Stable Diffusion.
Dreambooth — это метод тонкой настройки Stable Diffusion, основанный на очень небольшом наборе исходных изображений и ключевом слове-триггере, так что «концепции» в этих изображениях можно использовать в других контекстах с учетом ключевого слова.
Принципиальная диаграмма принципа работы Dreambooth
Преимущество LoRA: «маленькие модели» для конкретной предметной области
При обучении самой Stable Diffusion даже небольшая модель требует многих часов обучения на многих дорогих графических процессорах.
Вот тут-то и пригодится LoRA: он обучает небольшое подмножество модели зрения, так что для вывода результатов за 10 минут требуется всего лишь дешевый графический процессор, а качество конечной модели + LoRA сравнимо с полностью доработанной моделью. (Вообще говоря, когда люди говорят о тонкой настройке стабильной диффузии, они часто имеют в виду создание LoRA).
Обученный LoRA — это небольшой автономный двоичный файл, которым можно легко поделиться с другими или загрузить в репозиторий, например Civitai.
Небольшим недостатком LoRA является то, что одновременно может быть активен только один: мы можем объединить несколько LoRA, чтобы объединить их преимущества, но на практике это не так просто.
До того, как Stable Diffusion LoRA стал широко популярен, существовал метод, называемый текстовой инверсией, который позволял кодировщикам текста изучать концепции, но обучение занимало много часов, и результаты могли быть ужасными.
Я обучил инверсию текста в предыдущей публикации в блоге: Ugly Sonic (Sonic), и поскольку ее не было в исходном наборе данных для Stable Diffusion, результаты были уникальными. Полученные результаты являются следующими, со смешанными результатами.
(Уродливый) Соник, но чертовски уродливый
На этот раз я думаю, что использование Ugly Sonic для обучения LoRA будет хорошим примером для проверки потенциала SDXL.
Так уж получилось, что Hugging Face предоставляет скрипт train_dreambooth_lora_sdxl.py, который может использовать базовую модель SDXL для обучения LoRA; этот скрипт все еще готов к использованию, но я немного скорректировал параметры.
Не будет преувеличением сказать, что изображения Ugly Sonic, созданные обученным LoRA под различными подсказками, выглядят красивее и более организованы.
Соник, но на этот раз с зубами
Advanced 丨 Глубокая текстовая инверсия
После успеха этого эксперимента я решил повторить другой эксперимент, который я проводил ранее, с инверсией текста: добавив неправильное ключевое слово, чтобы получить более качественные изображения.
На этот раз метод состоит в том, чтобы обучить LoRA с помощью некоторых сильно искаженных изображений низкого качества, и указанное слово-подсказка неверно. Я надеюсь, что LoRA сможет трактовать неправильное как «негативное подсказку» и избежать этой ситуации, генерируя изображения с меньшими искажениями.
Я написал Jupyter Notebook и использовал SDXL для создания множества «неправильных» составных изображений, на этот раз также используя различные веса подсказок для создания более очевидных примеров неудачных изображений, таких как размытые (размытые) и плохие руки (неправильный рисунок) руки) .
По иронии судьбы, нам нужно использовать SDXL для создания неудачных изображений с высоким разрешением.
Выше приведены несколько примеров синтетических неправильных изображений.
В него непреднамеренно включены элементы обложек панк-рок-альбомов 2000-х годов.
Я обучил этот LoRA и загрузил его в базовую модель Stable Diffusion XL (LoRA не требуется для точной настройки модели) и написал Jupyter Notebook для сравнения следующих результатов для заданных слов подсказки:
Базовая модель + конвейер без LoRA. (Основа)
Нет конвейера LoRA, используйте неправильное значение в качестве отрицательной подсказки (добавьте отрицательную подсказку)
Используйте конвейер LoRA, используйте неправильное как отрицательный намек (идеальная цель)
Исходные данные каждого сгенерированного результата одинаковы, поэтому композиция трех выходных фотографий должна быть одинаковой, а разница между эффектом неправильных негативных намеков и LoRA и конвейером базовой модели должна быть очень очевидной.
Тестовый пример SDXL 0.9
Давайте воспользуемся SDXL 0.9, чтобы продемонстрировать простой запрос на начало тестирования:
「Волк в Йосемитском национальном парке, документальная пленочная фотография о холодной природе」
Внимательно взглянув на картинку выше, нетрудно обнаружить, что неправильный намек на базовую модель добавляет немного листьев и глубины фоновому лесу, но LoRA добавляет больше вещей: более мощное освещение и тени, более детализированные листья и изменения в как волки выглядят.Ракурс выглядит интереснее.
Затем я добавил к слову-подсказке «крайний крупный план (очень крупный план)», и после повторного использования предыдущих семян я получил крупные планы волков в разных ракурсах под одинаковой фотокомпозицией.
「Очень крупный план волка в Йосемитском национальном парке, документальная пленочная фотография о холодной природе」
В настоящее время текстура и четкость LoRA намного лучше, чем у других моделей, а изображение более яркое. Однако учтите, что добавление всего лишь одного неверного ключевого слова изменит перспективу.
Еще один хороший пример — фотография еды, и странные снимки еды, которые я сделал с помощью DALL-E 2, особенно хороши. Может ли SDXL + неправильный LoRA генерировать странные на вид неевклидовы гамбургеры с некоторым взвешиванием подсказок?
「большой вкусный гамбургер (в форме пятимерной геометрии пришельцев)++++, профессиональная фуд-фотосъемка」
"Вкусный большой бургер (5D инопланетная геометрия)++++, профессиональная фуд-съемка"
Ответ в том, что не может, даже если слово-подсказка будет изменено много раз. Тем не менее, вывод интересен: базовый SDXL, похоже, воспринял «инопланетную» часть подсказки более буквально, чем я думал (и дал ей симпатичный котелок!), но LoRA работает лучше. Он ясно понял смысл подсказок и сделал «инопланетный» бургер, который людям трудно есть, а стиль изображения стал более ярким.
Что будет с художником? Сможет ли LoRA ошибочно решить пресловутую проблему искусственного интеллекта, не рисующего руки? И мы также включили множество таких примеров в обучающие данные LoRA. Давайте изменим подсказку, которую я использовал, когда впервые попробовал Stable Diffusion 2.0, чтобы нарисовать президента Тейлора Свифта:
「Президент США Тейлор Свифт (подписывает документы)++++, фото Associated Press」
"Президент США Тейлор Свифт (подписывающий документ)++++, фото AP"
Взгляните на правую руку Тейлора: модель SDXL по умолчанию выдает сумасшедшие результаты, а если ошибаться, то еще хуже, но в LoRA это исправлено! Цветовая гамма Лоры намного лучше: ее куртка становится более заметной белой, а не желто-белой. Но ее руки по-прежнему не видно внимательно: рисовать символы в SDXL 1.0 по-прежнему громоздко и ненадежно!
Теперь вывод очевиден: результат неправильного + LoRA в каждом случае более интересен, чем результат простого добавления неправильных негативных сигналов, поэтому ниже мы сравниваем только базовый результат и выход LoRA. Вот пример базовой модели по сравнению с неправильным LoRA:
「реалистичный человек-шрек, ведущий блог за компьютером, гиперреалистичная фотография, отмеченная наградами для Vanity Fair」
(реалистичный блог Шрека на компьютерной рабочей станции, сюрреалистические фотографии с Vanity Fair, отмеченные наградами) — LoRA нарисована от руки и освещена лучше. Костюмы более детализированы, а фоны интереснее. *
「пицца пепперони в форме сердца, гиперреалистичная профессиональная фотография еды, отмеченная наградами」
(пицца пепперони в форме сердца, ультрареалистичная, отмеченная наградами профессиональная фотография еды) — более детализированная пепперони, горячие пузырьки, меньше избытка пепперони по краям пиццы, корочка выглядит более жесткой
LoRA с ошибкой доступна здесь, но я не могу ручаться за ее производительность на интерфейсах, отличных от диффузоров.
Все блокноты, использованные для создания этих изображений, находятся в этом репозитории GitHub, включая стандартную модель SDXL 1.0 + тонкую настройку + блокноты Colab LoRA с неправильной версией. Вы можете запустить эти блокноты на бесплатном графическом процессоре T4. Если вы хотите увидеть версию сгенерированных изображений, использованных в этой статье, в более высоком разрешении, вы можете посетить исходный код статьи.
Неправильно Что, черт возьми, происходит?
LoRA с неправильным Этот трюк только улучшает качество и четкость создаваемого изображения, но LoRA, похоже, заставляет SDXL вести себя умнее и лучше отражать дух подсказок.
На техническом уровне этот негативный сигнал устанавливает область скрытого пространства, в которой диффузия генерирует изображения; эта область одинакова как для неправильной базовой модели, так и для LoRA.
Моя интуиция подсказывает, что LoRA изменяет форму этой нежелательной области в огромном многомерном скрытом пространстве, чтобы она была более похожа на начальную область, поэтому вероятность попадания нормальных результатов генерации в эту область становится меньше, а качество снижается. Оно было улучшено. (См. процесс изменения Alien Burger выше)
Обучение SDXL с помощью изображений низкого качества для его улучшения технически является формой обучения с подкреплением с обратной связью от человека (RLHF): этот подход также является путем к успеху ChatGPT. Процесс обучения с подкреплением, используемый OpenAI для улучшения модели, заключается в неявном уменьшении негативного поведения за счет позитивного взаимодействия с пользователем, тогда как здесь я использую негативное взаимодействие с пользователем (т. е. намеренно выбираю изображения низкого качества) для неявного увеличения позитивного поведения.
Но с Dreambooth LoRA вам практически не нужно готовить столько входных данных, сколько нужно для обучения большой языковой модели.
Потенциал «Негативного LoRA» по-прежнему велик: мои параметры генерации синтетического набора данных имеют много возможностей для улучшения, а LoRA также можно обучать в течение более длительного периода времени. Но на данный момент я очень доволен результатами и хотел бы провести больше тестов с отрицательным LoRA, например, слияние с другими LoRA, чтобы посмотреть, сможет ли оно улучшить последний (особенно неправильный LoRA + Ugly Sonic LoRA!)
Приложение: демонстрация SDXL в диффузорах
импортный фонарь
из импорта диффузоров DiffusionPipeline, AutoencoderKL
поколение с использованием обеих моделей (смесь экспертов)
высокий_шум_frac = 0,8
= "космонавт верхом на лошади"
отрицательный_ = "размытые, плохие руки"
изображение = база(
"="
отрицательный_=отрицательный_,
шумоподавление_end=high_noise_frac,
вывод_type="скрытый",
).изображений
изображение = рафинер(
"="
отрицательный_=отрицательный_,
шумоподавление_start=high_noise_frac,
изображение = изображение,
).изображений [0]
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Плохие изображения, созданные ИИ, действительно могут «настроить модель» в обратном порядке?
Оригинал: Макс Вульф
**Источник:**Парк основателей
Процесс обучения с подкреплением, который OpenAI использует для улучшения модели, неявно уменьшает негативное поведение в результате позитивного человеческого взаимодействия.
В этой статье авторы применяют новый практический подход: используют негативное взаимодействие между людьми (т.е. намеренно выбирают изображения низкого качества) для неявного усиления позитивного поведения.
С Dreambooth LoRA для достижения этой цели практически нет необходимости готовить столько же входных данных, сколько обучать большую языковую модель.
Автор представляет две основные функции, выпущенные в Stable Diffusion XL 1.0: быстрое взвешивание слов и обучение и рассуждение Dreambooth LoRA, а также сочетает метод Textual Inversion (инверсия текста) для обучения Lora, делая Lora умнее и проще в использовании.
Об авторе: Макс Вульф (@minimaxir) — специалист по данным в BuzzFeed, работающий над инструментами искусственного интеллекта и машинного обучения и различными проектами с открытым исходным кодом.
Оригинальная ссылка:
Ниже приводится содержание статьи под редакцией Founder Park.
Краткое введение в SDXL
В прошлом месяце Stability AI выпустила Stable Diffusion XL 1.0 (SDXL) и сделала его открытым исходным кодом, что позволяет пользователям получать к нему доступ без каких-либо специальных разрешений.
SDXL на самом деле представляет собой две модели: базовую модель и дополнительную уточненную модель, которая значительно улучшает представление деталей без увеличения скорости.
Обратите внимание на значительное улучшение качества после использования утонченной модели.
Функции SDXL 1.0
Стоит отметить, что эта версия (SDXL 1.0) является одной из первых моделей с открытым исходным кодом, которая может генерировать изображения с разрешением 1024x1024 без специальных мер, при этом сгенерированные изображения являются более подробными.
Библиотека Python диффузоров Hugging Face теперь полностью поддерживает эту модель с некоторой оптимизацией производительности.
В то же время в диффузорах также реализована поддержка двух новых функций: быстрого взвешивания слов и обучения и вывода Dreambooth LoRA. Так что планирую попробовать (демо-код SDXL в диффузорах можно посмотреть в конце статьи).
Поддержка быстрого взвешивания слов для диффузоров использует библиотеку Python под названием compel для взвешивания терминов более математическим способом. Вы можете добавить любое количество + или - к данному слову, чтобы увеличить или уменьшить его «важность» при встраивании сгенерированного позиционного текста и, таким образом, повлиять на конечный результат.
По тому же принципу вы также можете обертывать фразы: например, если вы создали «Пейзаж Сан-Франциско Сальвадора Дали, холст, масло» и получилось реалистичное фото Сан-Франциско, то вы могли бы создать художественную форму и стать Введите «Пейзаж Сан-Франциско Сальвадора Дали (холст, масло) +++», позвольте Stable Diffusion добиться ожидаемого эффекта.
Подготовка среды
Я запустил облачную виртуальную машину, снабдил ее новым графическим процессором Nvidia L4 среднего класса (0,24 доллара США в час за спотовый экземпляр на Google Cloud Platform) и приступил к работе.
При использовании одного графического процессора L4 для создания каждого изображения размером 1024x1024 требуется около 22 секунд; и в отличие от предыдущего режима Stable Diffusion, теперь графический процессор среднего уровня может генерировать только одно изображение за раз, поскольку загрузка его графического процессора уже заполнена, поэтому вам просто нужно быть более терпеливым. Понижение разрешения может ускорить сборку, но я настоятельно не советую этого делать, так как результат будет ужасен.
** Немного персонализированной конфигурации **
В моих тестах он исправляет большинство проблем с подсказками, возникших после Stable Diffusion 2.0, особенно с установленными более высокими значениями руководства без классификатора (по умолчанию для guiding_scale установлено значение 7,5; мне нравится изменить его на 13 ).
Guiding_scale равен 13 для всех примеров, созданных моделью LoRA в этой статье.
Начало работы 丨Изучите LoRA
Самым важным обновлением SDXL 1.0 на самом деле является поддержка Dreambooth LoRA, которая позволяет нам настраивать модель Stable Diffusion.
Dreambooth — это метод тонкой настройки Stable Diffusion, основанный на очень небольшом наборе исходных изображений и ключевом слове-триггере, так что «концепции» в этих изображениях можно использовать в других контекстах с учетом ключевого слова.
Преимущество LoRA: «маленькие модели» для конкретной предметной области
При обучении самой Stable Diffusion даже небольшая модель требует многих часов обучения на многих дорогих графических процессорах.
Вот тут-то и пригодится LoRA: он обучает небольшое подмножество модели зрения, так что для вывода результатов за 10 минут требуется всего лишь дешевый графический процессор, а качество конечной модели + LoRA сравнимо с полностью доработанной моделью. (Вообще говоря, когда люди говорят о тонкой настройке стабильной диффузии, они часто имеют в виду создание LoRA).
Обученный LoRA — это небольшой автономный двоичный файл, которым можно легко поделиться с другими или загрузить в репозиторий, например Civitai.
Небольшим недостатком LoRA является то, что одновременно может быть активен только один: мы можем объединить несколько LoRA, чтобы объединить их преимущества, но на практике это не так просто.
Текстовая инверсия. Реальный бой: Текстовая инверсия
До того, как Stable Diffusion LoRA стал широко популярен, существовал метод, называемый текстовой инверсией, который позволял кодировщикам текста изучать концепции, но обучение занимало много часов, и результаты могли быть ужасными.
Я обучил инверсию текста в предыдущей публикации в блоге: Ugly Sonic (Sonic), и поскольку ее не было в исходном наборе данных для Stable Diffusion, результаты были уникальными. Полученные результаты являются следующими, со смешанными результатами.
На этот раз я думаю, что использование Ugly Sonic для обучения LoRA будет хорошим примером для проверки потенциала SDXL.
Так уж получилось, что Hugging Face предоставляет скрипт train_dreambooth_lora_sdxl.py, который может использовать базовую модель SDXL для обучения LoRA; этот скрипт все еще готов к использованию, но я немного скорректировал параметры.
Не будет преувеличением сказать, что изображения Ugly Sonic, созданные обученным LoRA под различными подсказками, выглядят красивее и более организованы.
Advanced 丨 Глубокая текстовая инверсия
После успеха этого эксперимента я решил повторить другой эксперимент, который я проводил ранее, с инверсией текста: добавив неправильное ключевое слово, чтобы получить более качественные изображения.
На этот раз метод состоит в том, чтобы обучить LoRA с помощью некоторых сильно искаженных изображений низкого качества, и указанное слово-подсказка неверно. Я надеюсь, что LoRA сможет трактовать неправильное как «негативное подсказку» и избежать этой ситуации, генерируя изображения с меньшими искажениями.
Я написал Jupyter Notebook и использовал SDXL для создания множества «неправильных» составных изображений, на этот раз также используя различные веса подсказок для создания более очевидных примеров неудачных изображений, таких как размытые (размытые) и плохие руки (неправильный рисунок) руки) .
По иронии судьбы, нам нужно использовать SDXL для создания неудачных изображений с высоким разрешением.
Выше приведены несколько примеров синтетических неправильных изображений.
В него непреднамеренно включены элементы обложек панк-рок-альбомов 2000-х годов.
Я обучил этот LoRA и загрузил его в базовую модель Stable Diffusion XL (LoRA не требуется для точной настройки модели) и написал Jupyter Notebook для сравнения следующих результатов для заданных слов подсказки:
Базовая модель + конвейер без LoRA. (Основа)
Нет конвейера LoRA, используйте неправильное значение в качестве отрицательной подсказки (добавьте отрицательную подсказку)
Используйте конвейер LoRA, используйте неправильное как отрицательный намек (идеальная цель)
Исходные данные каждого сгенерированного результата одинаковы, поэтому композиция трех выходных фотографий должна быть одинаковой, а разница между эффектом неправильных негативных намеков и LoRA и конвейером базовой модели должна быть очень очевидной.
Тестовый пример SDXL 0.9
Давайте воспользуемся SDXL 0.9, чтобы продемонстрировать простой запрос на начало тестирования:
「Волк в Йосемитском национальном парке, документальная пленочная фотография о холодной природе」
Внимательно взглянув на картинку выше, нетрудно обнаружить, что неправильный намек на базовую модель добавляет немного листьев и глубины фоновому лесу, но LoRA добавляет больше вещей: более мощное освещение и тени, более детализированные листья и изменения в как волки выглядят.Ракурс выглядит интереснее.
Затем я добавил к слову-подсказке «крайний крупный план (очень крупный план)», и после повторного использования предыдущих семян я получил крупные планы волков в разных ракурсах под одинаковой фотокомпозицией.
В настоящее время текстура и четкость LoRA намного лучше, чем у других моделей, а изображение более яркое. Однако учтите, что добавление всего лишь одного неверного ключевого слова изменит перспективу.
Еще один хороший пример — фотография еды, и странные снимки еды, которые я сделал с помощью DALL-E 2, особенно хороши. Может ли SDXL + неправильный LoRA генерировать странные на вид неевклидовы гамбургеры с некоторым взвешиванием подсказок?
"Вкусный большой бургер (5D инопланетная геометрия)++++, профессиональная фуд-съемка"
Ответ в том, что не может, даже если слово-подсказка будет изменено много раз. Тем не менее, вывод интересен: базовый SDXL, похоже, воспринял «инопланетную» часть подсказки более буквально, чем я думал (и дал ей симпатичный котелок!), но LoRA работает лучше. Он ясно понял смысл подсказок и сделал «инопланетный» бургер, который людям трудно есть, а стиль изображения стал более ярким.
Что будет с художником? Сможет ли LoRA ошибочно решить пресловутую проблему искусственного интеллекта, не рисующего руки? И мы также включили множество таких примеров в обучающие данные LoRA. Давайте изменим подсказку, которую я использовал, когда впервые попробовал Stable Diffusion 2.0, чтобы нарисовать президента Тейлора Свифта:
"Президент США Тейлор Свифт (подписывающий документ)++++, фото AP"
Взгляните на правую руку Тейлора: модель SDXL по умолчанию выдает сумасшедшие результаты, а если ошибаться, то еще хуже, но в LoRA это исправлено! Цветовая гамма Лоры намного лучше: ее куртка становится более заметной белой, а не желто-белой. Но ее руки по-прежнему не видно внимательно: рисовать символы в SDXL 1.0 по-прежнему громоздко и ненадежно!
Теперь вывод очевиден: результат неправильного + LoRA в каждом случае более интересен, чем результат простого добавления неправильных негативных сигналов, поэтому ниже мы сравниваем только базовый результат и выход LoRA. Вот пример базовой модели по сравнению с неправильным LoRA:
(пицца пепперони в форме сердца, ультрареалистичная, отмеченная наградами профессиональная фотография еды) — более детализированная пепперони, горячие пузырьки, меньше избытка пепперони по краям пиццы, корочка выглядит более жесткой
LoRA с ошибкой доступна здесь, но я не могу ручаться за ее производительность на интерфейсах, отличных от диффузоров.
Все блокноты, использованные для создания этих изображений, находятся в этом репозитории GitHub, включая стандартную модель SDXL 1.0 + тонкую настройку + блокноты Colab LoRA с неправильной версией. Вы можете запустить эти блокноты на бесплатном графическом процессоре T4. Если вы хотите увидеть версию сгенерированных изображений, использованных в этой статье, в более высоком разрешении, вы можете посетить исходный код статьи.
Неправильно Что, черт возьми, происходит?
LoRA с неправильным Этот трюк только улучшает качество и четкость создаваемого изображения, но LoRA, похоже, заставляет SDXL вести себя умнее и лучше отражать дух подсказок.
На техническом уровне этот негативный сигнал устанавливает область скрытого пространства, в которой диффузия генерирует изображения; эта область одинакова как для неправильной базовой модели, так и для LoRA.
Моя интуиция подсказывает, что LoRA изменяет форму этой нежелательной области в огромном многомерном скрытом пространстве, чтобы она была более похожа на начальную область, поэтому вероятность попадания нормальных результатов генерации в эту область становится меньше, а качество снижается. Оно было улучшено. (См. процесс изменения Alien Burger выше)
Обучение SDXL с помощью изображений низкого качества для его улучшения технически является формой обучения с подкреплением с обратной связью от человека (RLHF): этот подход также является путем к успеху ChatGPT. Процесс обучения с подкреплением, используемый OpenAI для улучшения модели, заключается в неявном уменьшении негативного поведения за счет позитивного взаимодействия с пользователем, тогда как здесь я использую негативное взаимодействие с пользователем (т. е. намеренно выбираю изображения низкого качества) для неявного увеличения позитивного поведения.
Но с Dreambooth LoRA вам практически не нужно готовить столько входных данных, сколько нужно для обучения большой языковой модели.
Потенциал «Негативного LoRA» по-прежнему велик: мои параметры генерации синтетического набора данных имеют много возможностей для улучшения, а LoRA также можно обучать в течение более длительного периода времени. Но на данный момент я очень доволен результатами и хотел бы провести больше тестов с отрицательным LoRA, например, слияние с другими LoRA, чтобы посмотреть, сможет ли оно улучшить последний (особенно неправильный LoRA + Ugly Sonic LoRA!)
Приложение: демонстрация SDXL в диффузорах
импортный фонарь
из импорта диффузоров DiffusionPipeline, AutoencoderKL
загрузка базы SDXL и рафинера
vae = AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",
факел_dtype=torch.float16)
base = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
ноги = ноги,
факел_dtype=torch.float16,
iant="fp16",
use_safetensors=True,
)
_ = base.to("куда")
рафинер = DiffusionPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-refiner-1.0",
текст_энкодер_2=base.text_энкодер_2,
нога=base.leg,
факел_dtype=torch.float16,
iant="fp16",
use_safetensors=True,
)
_ = рафинер.to("куда")
поколение с использованием обеих моделей (смесь экспертов)
высокий_шум_frac = 0,8
= "космонавт верхом на лошади"
отрицательный_ = "размытые, плохие руки"
изображение = база(
"="
отрицательный_=отрицательный_,
шумоподавление_end=high_noise_frac,
вывод_type="скрытый",
).изображений
изображение = рафинер(
"="
отрицательный_=отрицательный_,
шумоподавление_start=high_noise_frac,
изображение = изображение,
).изображений [0]