Аннотирование изображений
Масштабная линейка
Все изображения для публикаций должны иметь масштабную линейку. По возможности, для масштабных линеек на всех изображениях следует использовать стандартный размер, чтобы избежать путаницы.
Пространственная калибровка
Пространственную калибровку изображения можно редактировать с помощью Изображение › Свойства. Обратите внимание, что единицы измерения «мкм» автоматически изменятся на «мкм».
Некоторые модели микроскопов (например, файлы конфокальных изображений Biorad PIC и Zeiss LSM) будут использовать настройки масштабирования и увеличения объектива для внутренней калибровки. Однако важно иметь в виду, что некоторые форматы файлов (например, Perkin Elmer) не калибруются, а некоторые «экспортированные» файлы изображений (например, файлы Zeiss zvi, экспортированные в формате TIFF) полностью теряют информацию о калибровке.
В случае, если файлы не имеют калибровки, вы можете применить калибровку, используя изображения предметного микрометра с теми же настройками, что и в вашем эксперименте. Эти настройки включают бинирование камеры, размер кадра, объектив, конфокальное масштабирование и т. д. Затем можно применить калибровку с помощью Analyze › Set Scale (см. ниже). Пространственную калибровку также можно найти и установить в диалоговом окне Изображение › Свойства. Плагин « Microscope Scale » является еще одной альтернативой и может быть настроен с помощью раскрывающегося списка объективов для применения пространственных калибровок.
Иногда пространственная калибровка может быть потеряна после применения функции обработки изображения. В этом случае используйте пространственную калибровку исходного файла (расположенную в разделе «Изображение» › «Свойства»), чтобы обновить значения «Изображение» › «Свойства» окончательного обработанного изображения.
Существует три способа повторного применения пространственной калибровки: вручную через диалог Изображение › Свойства; с помощью плагина «Копировать размер пикселя», который применяет размер пикселя одного изображения ко второму изображению; или с помощью плагина «Set Scale».
Копия-калибровка
- Открыть изображение с исходной калибровкой
- Запустите плагин «Копировать размер пикселя».
- В раскрывающемся списке « из » выберите исходное изображение; в поле «от до » выберите обработанное изображение. Нажмите «ОК».
- В новом диалоговом окне введите значение масштабирования получаемого изображения.
Задать масштаб
Если вам известен размер объекта (например, ранее примененная масштабная линейка), вы можете использовать эту команду для применения калибровки.
- С помощью инструмента выбора линии нарисуйте линию по длине объекта или масштабной линейки. Не выбирайте Правка › Рисовать после добавления линии.
- Выполните команду меню Анализ › Задать масштаб….
- Введите размеры объекта/масштабной линейки в поле « известное расстояние » и установите единицы измерения в поле « Единица длины ».
- Не устанавливайте флажок
Нажмите «ОК».
Добавление масштабной линейки
Во-первых, используйте инструмент линии ROI, чтобы нарисовать линию примерно с желаемым местоположением и длиной.
Запустите диалоговое окно масштабной линейки через плагин «Добавить масштабную линейку». Измените значение «Ширина в *** » на что-то разумное (5, 10, 50 и т. д.). « Высота » определяет, насколько толстыми пикселями будет ваша полоса.
Если вы использовали «Зеленую» LUT, то «белая» (т. е. уровень серого 255) шкала будет зеленой. Преобразуйте изображение из 8-битного цвета в RGB с помощью команды Изображение › Тип › Цвет RGB перед добавлением масштабной линейки, чтобы получить белую масштабную линейку на псевдоцветном изображении.
Установите флажок « Пометить все срезы », чтобы добавить масштабную линейку ко всему стеку.
Этот плагин указывает на родную команду меню Analyze › Tools › Scale bar….
Текст и линии
Проблемы с добавлением текста
Добавление текста к изображениям с одним кадром должно выполняться в CorelDRAW или аналогичном приложении, чтобы текст не становился частью изображения и поэтому его можно было редактировать в любое время. Добавление текста к изображению/фильму необратимо, поэтому его не следует делать с необработанными данными. Изображения можно копировать и вставлять из системного буфера обмена между программами с помощью «Копировать в систему» и «Вставить» опции в меню Правка. Он заменяет собой плагин System Clipboard (документацию по плагину можно найти здесь). В случае, если изображение не вставляется точно, используйте «Правка» › «Специальная вставка» в принимающем приложении, затем выберите « Независимая от устройства растровая карта ».
Всегда сохраняйте изображения перед добавлением текста. Цвет текста устанавливается с помощью кнопки выбора цвета на панели инструментов. Дважды щелкните по нему, чтобы открыть палитру и выбрать цвет.
Псевдоцветные изображения должны быть преобразованы в RGB (Изображение › Тип › Цвет RGB) перед добавлением текста. Текст «сглажен». Это означает, что вместо полностью белого цвета некоторые пиксели на изогнутых краях букв усредняются с соседними пикселями. Это делает эти пиксели серыми и помогает тексту выглядеть более гладким.
Поскольку некоторые пиксели в сглаженном тексте не имеют значения шкалы серого 255, некоторые LUTS будут отображать пиксели в других цветах, например оранжевом или зеленом. Это потеряет эффект сглаживания от сглаживания.
Текст счетчика кадра 1 при использовании с Hot Green LUT.
Другая потенциальная проблема заключается в том, что если вы используете красный или синий LUT, текст будет отображаться красным или синим, даже если вы выбрали «белый» текст с помощью палитры цветов.
Чтобы избежать этого, перед добавлением текста преобразуйте псевдоцветное изображение из его текущего формата (т. е. 8-битный цвет ) в изображение RGB с помощью команды Изображение › Тип › Цвет RGB.
Текст на преобразованном изображении.
Добавление текста/линии/блока
Рисование линий/блоков достигается путем использования инструмента ROI линии/прямоугольника на панели инструментов или определения блока с помощью плагинов Specify Line или Specify ROI . Затем линию/блок можно вставить в изображение с помощью команды «Правка» › «Рисовать» или сочетания клавиш ⌃ Ctrl + D . Если вы рисуете ROI в стопке, вас спросят, хотите ли вы обработать все срезы. При выборе «да» ROI будет отображаться на каждом срезе, а при выборе «нет» ROI будет добавляться только к текущему кадру. Цвет определяется кнопкой панели инструментов выбора цвета, а ширина в пикселях определяется в меню Правка › Параметры › Ширина линии. Толщина линии должна быть определена до того, как она будет нарисована на изображении.
Добавление текста осуществляется с помощью текстовой кнопки на панели инструментов. Щелкните панель инструментов, щелкните изображение и напишите нужный текст. Дважды щелкните кнопку на панели инструментов, чтобы установить размер и стиль шрифта. Цвет определяется кнопкой панели инструментов выбора цвета. Сглаживание можно включить/отключить через пункт меню «Правка» > «Параметры» > «Шрифты» и сняв флажок «Сглаживание» (хотя этот параметр не влияет на плагины Stamper, у которых сглаживание включено постоянно). Текст наносится на изображение с помощью тех же методов рисования на прямоугольнике или линии (Правка › Рисование или ⌃ Ctrl + D ).
К каждому фрагменту в стеке можно добавить строку, прямоугольник или текст. После добавления к одному фрагменту и выбора Edit › Draw вас спросят, хотите ли вы применить выделение ко всем фрагментам. Имейте в виду, что для этой операции нет опции отмены.
Добавление текста в стек — это немного другой процесс. Вы можете нарисовать текстовое поле, выполнив те же действия, но в стеке сочетание клавиш ⌃ Ctrl + B наложит текст на текущий фрагмент, а сочетание клавиш ⌃ Ctrl + D отобразит текст на каждом фрагменте стека.
Добавление меток времени
Откройте плагин Time Stamper2 . Отсюда вы можете указать местоположение, интервал, формат и другие свойства метки времени.
Кроме того, вы также можете нарисовать прямоугольную область интереса в месте расположения и приблизительного размера нужного счетчика. Текст по умолчанию будет иметь ту же высоту, что и область интереса, и выровнен по ее левому краю. Обратите внимание, что если прямоугольник нарисован с правой стороны изображения, текст может быть обрезан справа в случае, если размер слишком велик.
Помните: крупный текст обычно выглядит более гладким, а метку времени легче читать. Возможно, стоит изменить его на одинаковое значение для всех ваших фильмов.
Также имейте в виду, что интервал не обязательно должен быть «временем». Отметку времени также можно использовать для добавления «глубин по оси Z» к z-стекам и «угла поворота» к видеороликам с вращающимся объемом (° = ⌥ Alt + 2 — 4 — 8 ; µ = ⌥ Alt + 2 — 3 — 0 ).
Добавление маркеров событий в фильм
Плагин Event Stamper можно использовать для добавления текста в фильм для определенного количества кадров. Установите нужный текст в поле «Текст», введите начальный и конечный кадры и нажмите «ОК». Размер и расположение текста берутся из текущей области интереса и могут быть изменены после открытия диалогового окна.
Подключаемый модуль Series Labeler
Подключаемый модуль Series Labeler обеспечивает довольно гибкую маркировку текста для фильмов и z-стеков с функцией предварительного просмотра, чтобы вы могли видеть, что вы собираетесь получить.
Руководство по тонкой настройке Stable Diffusion с вашими собственными изображениями
Вы когда-нибудь мечтали о том, чтобы попробовать новую прическу, прежде чем сделать ее окончательно? Как насчет исполнения детской мечты стать супергероем? Может быть, у вас есть собственный цифровой Funko Pop в качестве изображения профиля? Все это возможно с DreamBooth , новым инструментом, разработанным исследователями Google, который выводит недавний прогресс в синтезе изображений с текстовым условием на новый уровень.
В предыдущем посте мы обсудили модели преобразования текста в изображение и то огромное влияние, которое такие модели, как DALL·E и Stable Diffusion, оказывают на сообщество машинного обучения.
Теперь, в этом сообщении блога, мы проведем вас через внедрение DreamBooth, чтобы вы могли создавать изображения, подобные тем, которые вы видите ниже. Для этого мы внедрим себя в словарь предварительно обученной модели стабильной диффузии. Имейте в виду, создание изображений себя (или своих друзей) вызывает сильное привыкание. Не говорите, что мы вас не предупреждали!
Кроме того, если вы знаете часть нашей команды, вы можете узнать некоторые лица на следующих изображениях. 👀
Мотивация DreamBooth
Не стесняйтесь пропустить этот раздел, если вы не особенно интересуетесь теорией, лежащей в основе подхода, и предпочитаете сразу погрузиться в реализацию.
Первый шаг к созданию собственных образов с помощью DreamBooth — научить модель тому, как мы выглядим . Для этого мы будем следовать специальной процедуре имплантации самостоятельно в выходное пространство уже обученной модели синтеза изображений.
Вам может быть интересно, почему мы должны следовать такой специальной процедуре. В конце концов, эти модели синтеза изображений нового поколения обладают беспрецедентной выразительной силой. Разве мы не можем просто передать модели чрезвычайно подробное описание человека и покончить с этим? Короткий ответ: нет. Этим моделям все еще очень сложно реконструировать ключевые визуальные признаки, характеризующие конкретного человека. Вместо этого модель должна узнать, как мы выглядим, до мельчайших деталей, чтобы впоследствии воспроизвести нас в самых вымышленных сценариях.
Для этого мы настроим эту модель с набором изображений, привязав их к уникальному идентификатору, который ссылается на нас.
Но подождите… Сколько нам понадобится этих изображений? Модели глубокого обучения обычно требуют больших объемов данных для получения значимых результатов (тем более для этих моделей синтеза больших изображений). Означает ли это, что нам нужны тысячи собственных фотографий, чтобы модель воспроизвела нас точно?
К счастью, нет. Техника, которую мы собираемся показать вам, достигает результатов, подобных тем, которые вы видели выше, с не более чем 9 баллами. 0187 десятков изображений твоего лица. Тем не менее, эти изображения должны демонстрировать некоторые различия с точки зрения различных перспектив вашего лица (например, спереди, в профиль, промежуточных углов), выражений лица (например, нейтральное, улыбающееся, хмурое) и фона. Вот примеры трех жертв, которые мы выбрали для этой записи в блоге: Fernando , Giuls и Luna (слева направо).
После того, как вы собрали эти изображения, следующим шагом будет пометить их текстовым приглашением. Следуя инструкциям в документе DreamBooth, мы будем использовать подсказку 9.0225 A [имя токена] [существительное класса] , где [имя токена]
— идентификатор, который будет ссылаться на нас, а [существительное класса]
— уже существующий класс в словаре модели, описывающий нас на высоком уровне. Например, для Фернандо Бернуи (соавтора и одной из жертв нашего эксперимента ) возможной подсказкой будет Фбернуй-мужчина
. Другие примеры классовых существительных включают
женщина
, ребенок
, подросток
, собака
или солнцезащитные очки
. Да, этот подход работает и с животными, и с другими объектами!
Мотивация связывания нашего уникального идентификатора с существительным класса во время обучения состоит в том, чтобы использовать сильное визуальное представление модели о классе субъекта. Другими словами, модели будет намного легче узнать, как мы выглядим, если мы скажем ей, что мы человек , а не холодильник . Авторы DreamBooth обнаружили, что включение существительного соответствующего класса в тренировочные подсказки снижает скорость обучения и повышает визуальную точность воспроизводимых особенностей субъекта.
Тем не менее, есть еще две проблемы, которые мы должны решить, прежде чем мы сможем точно настроить модель:
Первая — переоснащение : эти чрезвычайно большие генеративные модели неизбежно будут переобучать такой небольшой набор изображений, независимо от того, насколько разнообразным он может быть. Это означает, что модель научится воспроизводить объект с высокой точностью, но в основном в позах и контекстах, присутствующих на обучающих изображениях.
Потеря предварительного сохранения действует как регуляризатор, который устраняет переобучение, позволяя изменять позу и разнообразие внешнего вида в заданном контексте. Изображение и подпись из статьи DreamBooth.
Во-вторых, языковой дрейф: поскольку обучающие подсказки содержат существующее существительное класса, модель забывает, как генерировать разные экземпляры рассматриваемого класса. Вместо этого при запросе [существительное класса] модель возвращает изображения, напоминающие объект, для которого она была настроена. По сути, он заменяет визуальный априор, который у него был для класса, конкретным предметом, который мы ввели в его выходное пространство. И хотя Фернандо красивый мужчина, не все мужчины похожи на него!
Языковой дрейф. Без потери априорного сохранения точно настроенная модель не может генерировать собак, отличных от точно настроенной. Изображение взято из статьи DreamBooth.
Чтобы решить обе проблемы, авторы DreamBooth предлагают потерю предварительного сохранения для конкретного класса. Проще говоря, идея состоит в том, чтобы контролировать процесс тонкой настройки с помощью собственных сгенерированных моделью образцов существительного класса. На практике это означает, что модель одновременно соответствует нашим изображениям и изображениям, взятым из визуального априора не точно настроенного класса. Эти предварительно сохраненные изображения выбираются и помечаются с помощью подсказки [класс существительное]. Это помогает модели запомнить, как выглядит универсальный член предметного класса. Авторы рекомендуют выборку из 200×N200 \×N200×N [существительное класса] изображений, где NNN обозначает количество изображений субъекта.
Учебный подход. Изображения субъекта подгоняются вместе с изображениями из класса субъекта, которые сначала создаются с использованием той же модели стабильной диффузии. Компонент суперразрешения модели (который повышает разрешение выходных изображений с 64 x 64 до 1024 x 1024) также точно настроен, используя исключительно изображения объекта. Изображение взято из статьи DreamBooth.
Теперь, когда мы рассмотрели все важные части теории, осталось только настроить модель синтеза изображений. Давай сделаем это!
Тонкая настройка стабильной диффузии с вашими фотографиями
Перед тонкой настройкой нашей модели необходимы три важных элемента: оборудование , фотографии и предварительно обученная модель стабильной диффузии .
Первоначальная реализация требует большого количества ресурсов графического процессора для обучения, что затрудняет воспроизведение для обычных специалистов по машинному обучению. Однако сообщество в раздоре разработало неофициальную реализацию, которая требует меньше вычислительных ресурсов. Если у вас есть доступ к машине с графическим процессором видеопамяти не менее 16 ГБ, вы можете легко обучить свою модель, следуя инструкциям обучающего примера DreamBooth от Hugging Face. Если вы этого не сделаете, мы вас прикроем! В этом посте мы покажем вам, как обучать и выполнять логические выводы в бесплатном Google Colab. Да, вы правильно прочитали, бесплатный уровень Google Colab!
Обратите внимание, что используемый ноутбук может быть устаревшим из-за быстрого развития используемых библиотек, но он был протестирован и подтвердил свою работоспособность. Январь 2022 .
Второй элемент — фотографии субъекта. В этом уроке мы будем использовать фотографии членов TryoGang и одного из наших питомцев. В любом случае, есть некоторые правила, которым мы должны следовать, чтобы получить наилучшие возможные результаты.
Как упоминалось в разделе мотивации, Стабильная диффузия имеет тенденцию превосходить тренировочные изображения. Чтобы этого не произошло, убедитесь, что обучающая подгруппа содержит субъект в разных позах и местах. Несмотря на то, что в оригинальной статье рекомендуется использовать от 4 до 6 изображений, сообщество Discord обнаружило, что использование От 10 до 12 изображений дает лучшие результаты. Как правило, мы будем использовать 2 изображения, включая туловище и 10 лиц, с разным фоном, стилями, выражениями, смотрящими и не смотрящими в камеру и т. д.
Если вы смотрите на камеру и улыбаться на каждой фотографии, не ожидайте, что модель создаст впечатление, что вы смотрите в сторону или с нейтральным лицом, поэтому избегайте использования только селфи!
Кроме того, убедитесь, что тренировочные изображения обрезаны до квадратного соотношения, так как Stable Diffusion уменьшает их до 64 x 64, чтобы использовать их для обучения.
И последнее, но не менее важное: нам потребуются веса предварительно обученной модели Stable Diffusion. Их можно загрузить с сайта Hugging Face, для чего нам потребуется создать учетную запись, прочитать карточку модели и принять условия. Не загружайте модель вручную, потому что обучающий скрипт сделает это автоматически.
Теперь, когда мы все настроили, давайте настроим модель!
Обучение
Мы будем использовать эту реализацию, которая включает блокнот, готовый к использованию в Google Colab. Вы можете открыть блокнот, нажав на эту ссылку.
Перед запуском давайте изменим его для нашего варианта использования (мы будем использовать Фернандо в качестве объекта для иллюстрации инструкций). Нам нужно определить четыре параметра для процесса обучения:
- ИМЯ ТОКЕНА: соответствует уникальному идентификатору, который будет ссылаться на предмет, который мы хотим добавить. Это имя должно быть уникальным, чтобы нам не пришлось конкурировать с существующим представлением. Здесь мы можем использовать простой
первый инициал + фамилия
имя токена, напримерfbernuy
. - ИМЯ КЛАССА: Это имя класса, которое мы представили в разделе мотивации. В исходной статье DreamBooth рекомендуется использовать общие классы, такие как мужчина, женщина или ребенок (если субъект — человек) или кошка или собака (если субъект — домашнее животное). Однако сообщество Discord, реализующее подход Stable Diffusion, обнаружило, что использование знаменитостей, похожих на объект, дает лучшие результаты.
В нашем случае мы использовали Джорджа Клуни, когда речь идет о мужчине, и Дженнифер Энистон, когда речь идет о женщине. Мы по-прежнему использовали класс «кошка» для Луны, так как не могли придумать подходящего известного кота, кроме Гарфилда.
- КОЛИЧЕСТВО РЕГУЛЯРИРУЕМЫХ ИЗОБРАЖЕНИЙ: Как упоминалось в разделе мотивации, нам нужна потеря априорного сохранения для конкретного класса, чтобы предотвратить проблемы переобучения и дрейфа языка. Мы следовали первоначальной рекомендации авторов по использованию 200 изображений на обучающее изображение. Помните, что использование большего количества изображений регуляризации может привести к лучшим результатам.
- ИТЕРАЦИИ ОБУЧЕНИЯ: Этот параметр определяет количество итераций, которые модель будет выполнять в процессе тонкой настройки. Если это число слишком низкое, модель будет не соответствовать изображениям субъекта и не сможет точно воспроизвести их во время логического вывода. Если он слишком высок, вместо этого модель будет переобучать, что сделает невозможным воспроизведение субъекта с выражениями, позами или контекстами, отличными от тех, что есть в обучающем подмножестве.
Эмпирическое правило, которое показало хорошие результаты в наших экспериментах, заключается в использовании от 100 до 200 итераций на тренировочное изображение. Поскольку у нас есть 12 изображений Фернандо, давайте используем 2400 итераций.
Теперь давайте изменим блокнот с этими параметрами следующим образом:
Теперь мы готовы запустить блокнот и настроить нашу модель. Первые несколько ячеек установят необходимые зависимости. После этого нам будет предложено войти в HuggingFace, используя наш токен доступа.
Затем нас попросят загрузить фотографии субъекта. Здесь можно использовать кнопку Choose Files
и выбрать изображения с нашего компьютера или загрузить их непосредственно в каталог объекта внутри data
в экземпляре Colab. В следующей ячейке происходит волшебство. Наконец-то мы добрались до тонкой настройки модели! Скрипт загрузит веса предварительно обученной модели, сгенерирует изображения регуляризации, а затем выполнит указанное количество итераций обучения. Весь процесс должен занять около полутора часов, так что наберитесь терпения. Не забывайте следить за блокнотом!
После завершения обучения нам будет предложено преобразовать модель в файл ckpt
. Это настоятельно рекомендуется, так как это требование для чрезвычайно полезного веб-интерфейса, который мы представим далее в этом сообщении в блоге. Как только мы сохранили ckpt
в экземпляре ноутбука, мы загрузим его на наш локальный компьютер или сохраним в папку на нашем диске.
Мы можем протестировать нашу доработанную модель, запустив ячейки под разделом «Вывод» блокнота. Первая ячейка загружает модель, которую мы только что обучили, и создает новый конвейер Stable Diffusion, из которого берутся образцы изображений. Мы можем установить начальное значение для управления случайными эффектами во второй ячейке. И вот, момент, которого вы ждали с тех пор, как начали читать этот пост в блоге: создание наших пользовательских изображений!
Ячейка с заголовком «Выполнить для создания изображений» управляет процессом создания изображений. Всего есть 7 параметров, которые мы можем изменить, чтобы настроить наше изображение:
-
приглашение
: текстовое приглашение, которое будет управлять созданием изображения. Здесь мы должны включить имя токена, которое ссылается на нашу тему. -
отрицательная подсказка
: служит для указания того, что мы не хотим видеть на изображении. Например, если мы хотим создать изображение с облачным небом, мы вводим 9.0225 ясное небо как отрицательная подсказка. -
num_samples
: количество изображений, которые модель будет генерировать в одном пакете. -
guide_scale
: также известный как CFG Scale, представляет собой число с плавающей запятой, которое определяет, насколько важным является текстовое приглашение ввода. Более низкие значения этого параметра позволят модели иметь больше художественных вольностей при создании изображений. -
num_inference_steps
: количество шагов шумоподавления, которые будет выполнять модель.Большее количество шагов обычно приводит к более подробным изображениям за счет увеличения времени вывода. Однако будьте осторожны с этим параметром, так как слишком большое количество шагов может привести к визуальным артефактам на изображениях.
-
height
: высота сгенерированного изображения в пикселях. -
ширина
: ширина сгенерированного изображения в пикселях.
Не существует волшебной формулы для создания идеального изображения, поэтому вам, вероятно, придется некоторое время поэкспериментировать с этими параметрами, прежде чем вы получите желаемый результат. Если у вас возникли проблемы с созданием крутых изображений, не расстраивайтесь! По словам Джо Пенны (одного из менеджеров канала Stable Diffusion Discord), некоторые из наиболее распространенных проблем имеют довольно простые решения.
- Если они не похожи на объект: Проверьте правильность подсказки и соответствуют ли изображения советам, которые мы давали ранее.
Попробуйте включить в приглашение имя класса и имя токена (например,
фото TOKEN_NAME georgeclooney
). Нам также может потребоваться обучение для большего количества итераций. - Если они слишком похожи на тренировочные изображения: возможно, мы слишком долго тренировались, использовали слишком мало изображений или наши изображения могут быть слишком похожими. Мы модифицируем приглашение, включив в его конец имя токена, например:
Изысканная портретная фотография среднего формата 85 мм TOKEN_NAME с классической прической
. - Если использование сложной подсказки не дает желаемых результатов: возможно, мы провели слишком мало итераций обучения. Мы можем попробовать повторить имя токена в подсказке, например:
TOKEN_NAME на портретной фотографии, TOKEN_NAME на фотографии среднего формата 85 мм TOKEN_NAME
.
Хотя ноутбук чрезвычайно удобен для обучения модели, он далеко не лучшая платформа для создания изображений. В следующем разделе мы представим невероятно мощный инструмент для дальнейшего улучшения процесса создания изображений.
На практике: создание классных изображений
Создание великолепных изображений требует практики и терпения. Однако этот процесс можно облегчить, используя правильные инструменты. Тот, который мы собираемся показать вам, действительно сногсшибателен; он настолько универсален, что мы не можем рекомендовать его достаточно! Это WebUI, который делает весь процесс более интерактивным и увлекательным.
Чтобы использовать его, мы должны запустить веб-сервер и следовать инструкциям по установке, доступным для Linux, Windows или Apple Silicon. В качестве альтернативы мы можем запустить сервер на другом Colab, используя эту ссылку. Помните, что при создании изображений время летит незаметно, а уровень бесплатного пользования Colab ограничен!
После установки мы скопируем файл ckpt нашей модели в папку веб-сервера, stable-diffusion-webui/models/Stable-diffusion
, а затем запустим скрипт веб-сервера ( webui.
или sh
webui.bat
). Это дает нам адрес и порт пользовательского интерфейса, чтобы мы могли открыть его с помощью нашего любимого браузера.
Инструмент WebUI для стабильной диффузии от AUTOMATIC1111
Пользовательский интерфейс имеет множество различных функций. Мы настоятельно рекомендуем изучить вики проекта. Разработка Stable Diffusion и этого пользовательского интерфейса идет быстро, поэтому имейте в виду, что это может измениться!
Первое, что нам нужно сделать, это выбрать нашу доработанную модель Stable Diffusion. В верхней части страницы WebUI мы найдем раскрывающееся меню со всеми доступными файлами ckpt
. Если вы не видите свой файл в списке, убедитесь, что вы скопировали файл ckpt
в правильный каталог.
В этом руководстве мы сосредоточимся на объяснении трех основных функций пользовательского интерфейса: преобразования текста в изображение, изображения в изображение и рисования.
Текст в изображение (txt2img)
Текст в изображение — самый простой способ использования нашей модели: напишите приглашение, установите некоторые параметры и вуаля! Модель генерирует изображение, соответствующее подсказке по выбранным параметрам.
На первый взгляд это может показаться простым. Однако нам, возможно, придется попробовать несколько комбинаций параметров, прежде чем попасть в точку. Основываясь на нашем опыте, мы рекомендуем выполнить следующие шаги для создания самых крутых изображений:
- Выберите стиль на lexica.art и добавьте свою тему в подсказку. Например, давайте посмотрим, как бы выглядел Фернандо с новой прической:
фбернуй. эпическая стрижка. прическа фотография
. - Используйте случайное семя, пока не получите что-то похожее на то, что вы задумали. Это может выглядеть не совсем так, как объект, но мы можем исправить это позже.
- Скопируйте начальное значение из описания изображения и используйте его для создания такого же изображения с другими параметрами.
Лучший способ сделать это — использовать сценарий
X/Y plot
: выберите список шагов (10, 15, 20, 30
) и список шкал CFG (2.0, 2.5, 3.0, 3.5, 4,0
). Инструмент построит матрицу с одним изображением для каждого шага ввода и комбинации масштаба. Мы также можем использовать другие параметры в качестве переменныхX
иY
. - Затем выберите тот, который вам нравится больше всего, скопируйте соответствующие значения параметров и удалите сценарий, чтобы сгенерировать только выбранное изображение. Если вам не нравится ни одно из изображений, попробуйте с другими параметрами, другим начальным числом или другой подсказкой!
Выбранное случайное изображение
Исследование параметров
Окончательный результат
Изображение в изображение (img2img)
Второй вариант — создать новое изображение на основе существующего изображения и подсказки . Модель изменит все изображение, поэтому мы можем применить новые стили или сделать небольшую ретушь.
Начнем с подсказки txt2img: очень-очень замысловатое фотореалистичное фото фанко-попа фбернуй, детальное студийное освещение, отмеченные наградами четкие детали
. Следуя стратегии, описанной выше, мы используем txt2img и генерируем несомненно классно выглядящий Funko Pop. Тем не менее, мы хотели бы улучшить бороду, чтобы она была ближе к нашему объекту, и осветлить цвет носа.
Для этого мы нажмем кнопку Отправить на img2img и вручную нарисуем желаемый стиль бороды и носа, используя инструмент, похожий на MS Paint, в веб-интерфейсе (в центре). Мы можем уменьшить параметр силы шумоподавления, чтобы получить результат, максимально похожий на исходный, и поэкспериментировать с остальными обычными параметрами, пока не получим желаемый результат (справа).
txt2img сгенерированное изображение
простые модификации изображения
img2img результат
Следуя той же стратегии img2img, мы немного улучшили цвета меха Луны на этой эпической картинке и добавили несколько линий улыбки в аниме-версию Джулса.
txt2img сгенерированные изображения
img2img улучшенное изображение
Inpainting
Третий вариант позволяет нам указать область изображения для заполнения нашей моделью , сохраняя остальную часть изображения нетронутой (в отличие от метода img2img , который изменяет все входное изображение). Это может быть полезно для замены лица на существующей фотографии (если объект — человек) или для создания изображения объекта в другом сценарии или условиях освещения с сохранением фона и контекста. Имейте в виду, что использование этого метода немного сложнее, поскольку нужно исследовать больше параметров.
Например, давайте создадим изображение Фернандо в образе Железного человека. Так как у доспехов много важных деталей, мы будем использовать оригинальное изображение с постера фильма в качестве источника и поменяем лицо Железного человека с помощью инструмента Inpainting .
Первое, что мы сделаем, это выберем инструмент Inpainting на вкладке img2img . После загрузки нашего эталонного изображения мы выделим область вокруг головы с помощью инструмента «Кисть» и введем фотографию fbernuy 9.0226 в качестве подсказки, так как мы не хотим, чтобы модель заполняла эту область чем-либо еще, кроме лица Фернандо.
Перед созданием изображения давайте взглянем на наиболее важные параметры, добавленные в inpaint.
- Маскированное содержимое : определяет, чем заполнить маскируемую область. Мы можем выбрать
исходное
(по умолчанию), если исходное содержимое похоже на то, чего мы хотим достичь, поэкспериментировать сзаполнить
, чтобы помочь нам сохранить окружающую информацию, или
использовать шум. Независимо от того, какой вариант мы выберем, будет добавлен случайный шум на основе параметраDenoising Strength
. - Сила шумоподавления : определяет стандартное отклонение случайного шума, добавляемого к маскируемой области.
Чем выше этот параметр, тем ниже сходство с содержимым немаскированной части изображения.
- Inpaint в полном разрешении : inpaint изменяет размер всего изображения до указанного целевого разрешения по умолчанию. Если этот параметр включен, размер маскируемой области изменяется, а результат вставляется обратно в исходное изображение. Это помогает получить лучшие результаты для небольших масок, поскольку закрашиваемая область визуализируется с гораздо большим разрешением.
В этом примере мы будем использовать исходное
замаскированное содержимое (поскольку маскируемая область уже является лицом) с силой шумоподавления 0,50
, а включить отрисовку
при полном разрешении. Затем мы установим случайное начальное число -1
и повторим процесс, который мы делали раньше: терпеливо генерируем изображения, пока не получим изображение, похожее на то, что нам нужно. Наконец, мы исправим начальное значение и воспользуемся сценарием X/Y plot
, чтобы изучить различные этапы выборки .
0226 и
Комбинации весов CFG
.
Исходное изображение
Промежуточные результаты inpaint
Круто, правда? На данный момент мы создали отличное изображение, в котором сохранились все детали исходного изображения, но с лицом Фернандо вместо лица Роберта Дауни-младшего. Тем не менее, есть одна маленькая деталь, которую мы хотим исправить в бороде.
Лучший способ исправить это — снова использовать закрашивание, но использовать уже закрашенное изображение вместо оригинала (не ожидали этого, не так ли?). Таким образом, мы можем указать модели изменять исключительно область вокруг бороды и вводить более конкретную подсказку, например 9.0225 фото fbernuy с бородой .
Окончательный результат окрашивания с деталями бороды
Мы показали вам, как создавать крутые изображения вас, ваших друзей, домашних животных или любого конкретного предмета, который вы хотите, начиная с идеи, эскиза или существующего изображения!
Теперь вы готовы создавать крутые изображения самостоятельно! Вот несколько изображений, которые мы создали из наших объектов, которые могут быть вам полезны для вдохновения.