8. Замена, удаление и добавление объектов на изображение с помощью ИИ — редактирование по маске (inpainting)
Как генерировать фото, видео, музыку и 3D модели с помощью нейросетей на своём компьютере (руководство по ComfyUI). Полное оглавление
- Как использовать нейросети для создания изображений, видео и музыки на своём компьютере — что для этого нужно и какой результат можно получить
- Как установить ComfyUI в Windows и Linux
- Виды ИИ (нейросетей) для генерации картинок и видео. Основные термины
- Лучшие ИИ (нейросети) для генерации картинок, видео, музыки и 3D моделей (краткое описание готовых шаблонов ComfyUI для генерации фото и видео на своём компьютере)
- Знакомство с ComfyUI
- Основы генерации изображений из текстовых запросов на своём компьютере
- Расширение области видимости изображений с помощью нейросетей (расширение кадра, изменение соотношения сторон с добавлением новой информации — outpainting)
- Замена, удаление и добавление объектов на изображение с помощью ИИ — редактирование по маске (inpainting)
8.2 Что можно делать с помощью Inpainting. Для чего нужен Inpainting
8.3 Какие модели поддерживают Inpainting. Какие нейросети могут редактировать изображение по маске
8.6 Размытие маски с помощью Grow and Blur Mask (Grow Mask + ImageBlur)
8.7 Как использовать маску в ComfyUI. Инструкция по Mask Editor
8.8 Как редактировать изображение по маске в Flux.1 Dev OneReward
8.9 Как редактировать изображение по маске в Flux Inpaint (fill)
8.10 Как редактировать изображение по маске в Qwen Image
8.11 Как редактировать изображение по маске в Qwen Image Edit
- Редактирование изображения с помощью нейросетей (I2I)
- Междоменный перевод изображений (преобразование между различными типами изображений)
- Превращение нефотографических изображений в фотографии (фотореалистичные изображения) с помощью ИИ
- Ускорение создания и редактирования изображений с помощью дистиллированных моделей нейросетей
- Генерация изображений с текстом. Добавление текста на изображение и редактирование текста с помощью нейросетей
- Использование одного или нескольких референсов для генерации картинок: изменение фона, изменение и дорисовка объектов и персонажей, замена стиля, расширение кадра, перенос стиля между картинками, объединение нескольких изображений в одно
- Восстановление и улучшение изображений с помощью ИИ: устранение повреждений фотографий, превращение чёрно-белой фотографии в цветную, улучшение и усиление цветов, увеличение размера изображения
- Редактирование изображений через декомпозицию сцены
- Генерация изображений из других изображений с применением ControlNet, IP-Adapter и IP-Control
- Физически правдоподобное редактирование изображений с ChronoEdit 14B (Physics-driven image editing)
- Основы создания видео из текстовых запросов на своём компьютере
- Основы генерации видео из изображений на своём компьютере
- Создание видео из первого и последнего кадров
- Редактирование видео с помощью нейросетей — замена и удаление элементов (генерация видео из видео)
- Создание видео с контролем камеры
- Создание видео с контролем движений
- Методы создания длинных видео с помощью ИИ
- Создание музыки по словесному описанию. Создание песен из ваших стихов. Редактирование существующих песен (стиля и слов)
- Создание 3D моделей из изображений
- Продвинутые техники написания промптов
- Детальное управление жанром, кадровкой, ракурсом, композицией, расположением камеры, освещением, скоростью съёмки, движениями камеры, позиционированием и пластикой тела и прочим в промптах
- Типы моделей нейросетей. Квантование. Общие принципы использования дообученных модулей нейросетей
- Детальное понимание рабочего процесса (workflow) в ComfyUI. Узлы ComfyUI
- Настройки workflow при генерации изображений, видео, музыки и 3D моделей в ComfyUI
- Улучшение качества изображений и видео с помощью перехода на модели полной точности (неквантованные модели)
- Уменьшение потребления VRAM и ускорение вычислений за счёт перехода на квантованные модели
- Модификация workflow для использования дообученных моделей в ComfyUI
- Создание новых workflow в ComfyUI с нуля
- Как использовать модели в формате GGUF в ComfyUI
- Как делать апскейлинг (upscale) изображений и видео с помощью ИИ
- Опции и настройки для экономии видеопамяти (VRAM). Как создавать HD видео на обычном компьютере
- Есть ли цензура в локальных ИИ. Почему результаты не соответствуют запросам. Глубокое понимание работы нейросетей. Как полностью снять все запреты с локальных ИИ
- Коммерческие ИИ (нейросети) для создания и редактирования картинок, видео, 3D, озвучивания текста и прочего (краткое описание готовых шаблонов ComfyUI доступных по API)
- Обзор популярных кастомных моделей
- Обзор популярных дообученных модулей (LoRA-адаптеров)
- Обзор ИИ-моделей для генерации аниме-артов
- Обзор дообученных модулей (LoRA-адаптеров) для аниме-изображений
- Генерация изображений в аниме-стиле с помощью нейросетей
……………..
……………..
И это далеко не конец!!! Проявляете активность: пишите в комментариях ваши замечания по найденным ошибкам, делитесь ссылками на эту онлайн книгу. При возможности, вы можете донатить для оплаты железа используемого в тестировании. При наличии интереса и активности, данная книга будет быстро дополняться новыми главами — здесь ещё много интересных тем, от детальной настройки стиля генерируемого контента до самостоятельного дообучения моделей.
8.1 Что такое Inpainting
Inpainting (дорисовывание) – это один из вариантов I2I (создания новых изображений на основе исходных изображений), представляет собой процесс восстановления или дорисовывания недостающих/удалённых частей картинки.
Классический inpainting заключается в редактировании изображений по маске, то есть пользователь определяет маску (например, просто рисует её в специальном редакторе) и по этой маске удаляются части изображения. Далее с помощью инпэйнтинга удалённые области восстанавливаются при этом учитываются текстовые промпты. В результате исходное изображение в большей части остаётся неизменным, редактируются только указанные области.
При этом дополнение (заполнение) пустых пространств в изображении происходит как на основе окружающих областей, так и на основе текстового промпта. В результате получается модифицированное изображение на котором новый элемент органично вписан с учётом стиля, освещения, содержимого самой картинки.
Кроме редактирования по маске, ИИ модели могут редактировать изображения используя только текстовый промпт, фактически пересоздавая изображение целиком с учётом пожелания пользователя — об этом мы тоже поговорим, этому будут посвящены ближайшие главы.
В этой главе мы рассмотрим только классический inpainting (то есть редактирование по маске).
8.2 Что можно делать с помощью Inpainting. Для чего нужен Inpainting
Типичные примеры использования инпэйнтинга:
- удаление чего-либо с картинки (удаление шляпки с головы, удаление случайного человека из кадра, удаление предмета со стола, удаление татуировки)
- добавление чего-либо на картинку (добавление шапки, добавление человека, добавление нового предмета или животного в кадр, добавление татуировки)
- замена чего-то на другой предмет (замена шапки на кепку, замена бус на ожерелье, замена кошки на собаку)
- восстановление повреждённой картинки (например, старый снимок с повреждёнными областями)
В предыдущей части мы уже рассмотрели outpainting и даже упомянули, что это частный случай inpainting когда маска (область для заполнения) размещена не внутри кадра, а снаружи, поэтому данного вопроса мы не будем больше касаться.
Иногда удаление объектов (Object removal) упоминается отдельно, например, в workflow вы можете увидеть «Inpainting & Object removal», но на самом деле удаление объектов это обычный inpainting при котором удаляется область на изображении, но вместо дорисовывания нового объекта, эта область заполняется фоном. Наличие функции удаления объектов подчёркивается поскольку это часто востребованная задача.
Примечание: Если вас интересует можно ли удалить всю одежду с субъекта на картинке (это был мой первый вопрос по Object removal), то ответ, в принципе, конечно же, да. Но это требует дообученных модулей (LoRA-адаптеров), которые мы пока не изучали. То есть в дефолтных workflow у вас это может не получиться, но в последующих частях, посвящённых обходу цензуры и любых других ограничений, мы, конечно же, научимся это делать — менять одежду на голую кожу.
Добавление, удаление и изменение надписей на картинке относится к inpainting’у и вы можете применять показанные здесь техники для работы со словами и буквами. Но поскольку в целом работа с надписями на картинке является востребованной и проблемной темой, поэтому мы особенно подробно будем это рассматривать в отдельной главе.
Смотрите также: 11. Генерация изображений с текстом. Добавление текста на изображение и редактирование текста с помощью нейросетей
8.3 Какие модели поддерживают Inpainting. Какие нейросети могут редактировать изображение по маске
Inpainting (дорисовывание) в общем смысле (то есть «добавить, удалить или изменить что-либо на картинке») так или иначе поддерживают все ИИ модели предназначенные для редактирования картинок. Данная глава посвящена инпэйнтингу в строгом смысле слова, то есть с использованием масок. Модели которые поддерживают редактирования по маске следующие:
- Flux.1 Dev OneReward
- Flux Inpaint (fill)
- Qwen Image (в дополнении с ControlNet моделью)
- Qwen Image Edit (в дополнении с LoRA, вместо маски нужно использовать зелёный цвет)
8.4 Общие рекомендации при редактировании изображений с помощью маски. Как составлять промпты для редактирования по маске
Чтобы эффективнее использовать нейросети для редактирования изображений, давайте сначала разберёмся как именно это работает.
К примеру, вы хотите удалить лишний палец, вроде бы, напрашивается промпт
удали лишний палец
А теперь рассмотрим, как ИИ видит картинку: маска фактически вырезает в картинке дырку, то есть в полученном для редактировании изображении нейросеть не видит лишний палец. Получается, что указывать действие относительно исходного изображения не совсем правильно. Конечно, используя контекст (продолжение руки или ноги) и используя промпт «удали лишний палец со ступни», ИИ скорее всего догадается, что нужно нарисовать ступню. Можно пользоваться и таким образом, но более эффективный был бы промпт
красивая правильная ступня
Или даже просто пустой промпт, когда очевидно, что в «дырке» должна быть ступня.
Но в более сложных ситуациях, например, когда нужно удалить третью ногу и остальные две сделать красивее (то есть маска охватывает 3 ноги), вам будет непросто объяснить в промпте какую ногу удалить. В этой ситуации модель может продолжать рисовать ногу в том месте, где она помещается в маске — то есть по прежнему будет лишняя нога, но при этом, поскольку ног должно быть 2, модель может не нарисовать нужную ногу. В таких ситуациях лучше разбивать задачу на два этапа: 1) Удаление лишнего; 2) Исправление оставшегося
Поскольку модель видит только маску, а запрос может трактовать своеобразно, то при необходимости удалить много татуировок с рук и запросе
удали все татуировки
результат может быть как ожидаемым — татуировки удалены, так и немного странным — старые татуировки удалены, новые добавлены.
В этой ситуации намного эффективнее будет промпт
красивые плечи, чистая кожа
Аналогично с удалением стаканчика кофе из руки — если просто написать «удали стакан кофе» и маской аккуратно вырезать этот стакан, то при этих условиях — маска в форме стакана с трубочкой + слова «кофе» и «стакан» в промпте — результатом почти наверняка будет хоть и другой, но всё-таки стакан в руке. Правильный промпт в этом случае:
пустая ладонь
Это может показаться контринтуитивно, просто нужно помнить — нейросеть вообще не видит область под маской, а ориентируется исключительно на промпт (который может понимать своеобразно) и на окружающий контекст. Говоря проще, вам не нужно говорить что вы НЕ хотите увидеть на новой картинке, правильнее говорить что вы ХОТИТЕ увидеть в области под маской.
Ещё один подводный камень — модель при дорисовывании ориентируется на окружающий контекст. Поэтому если вы оставили мелкие детали или хотя бы намёк на предмет который вы хотите удалить, почти наверняка модель разовьёт эту тему и что-то нарисует неожиданное для вас (вполне возможно вариант того самого предмета, который вы хотите удалить). То есть рисуя маску не нужно оставлять каких-либо следов удаляемого предмета.
К примеру, при моих тестах никак не хотела удаляться шляпка с головы девочки — шляпка и значительная часть волос уже под маской, правильный промпт «распущенные волосы развивающиеся по ветру», но модель упорно раз за разом рисовала мне разные шляпки. В конце концов я увидел тень на лице, которую оставляла шляпка — область с тенью была добавлена под маску и вуаля! Первая же генерация дала нужный результат. То есть если вы никак не можете удалить или изменить предмет, то ищите его следы которые не попали под маску — это может быть в том числе и тень, отражение, мелкие элементы (например, едва видимые через волосы), отдельные оставшиеся пиксели.
Содержимое картинки влияет на то, чем будет заполнена область под маской — к примеру, мы хотим эльфийские ушки заменить на человеческие. При этом форма маски, а также всё остальное содержимое картинки (на которой изображён эльф) намекает, что должно быть эльфийское ухо. В этой ситуации нужно особенно явно указать чего вы хотите. Ну и сделать несколько генераций — в таких ситуациях решающим может оказаться удачный сид.
Если область под маской заполняется ненужными предметами, то уточняйте промпт, перечисляя что вы там хотите видеть, например, после удаления третей ноги сидящей на полу женщины, ИИ добавила туда скомканную одежду. Чтобы убрать эту одежду, можно уточнить промпт: «округлая попка, пустой пол» и прочее в этом духе. Если вы не указываете детали сами, то нейросеть добавит детали по своему вкусу.
Если под маской там где вы ожидаете просто фон снова и снова модель создаёт хоть и разные, но схожие по свойствам предметы (красная сумочка, красное скомканное платье, красная подушечка), то значит что-то намекает модели на то, что должен быть предмет с этими свойствами. К примеру, покраснение на коже может восприниматься моделью как отблеск красного предмета который нужно нарисовать. В этих случаях помогает расширение маски и подробное описание что под ней должно быть.
8.5 При редактировании по маске можно использовать дообученные модули (LoRA-адаптеры) соответствующие модели
LoRA-адаптерам будут посвящены отдельные главы, поэтому я не буду на этом сейчас сильно останавливаться. Хочу только сделать небольшое замечание, что да, вы можете использовать для Flux.1 Fill LoRA-адаптеры предназначенные для Flux — это работает. Аналогично и для Qwen Image и Qwen Image Edit — используйте соответствующие LoRA.
Это касается и NSFW контента. Без соответствующих LoRA вам вряд ли удастся полноценно раздеть героиню картинки. А с правильной LoRA нет ничего проще чем взять картинки
И получить что-то вроде такого
ВНИМАНИЕ — NSFW, голые женщины, не открывайте если не хотите это видеть!!!
В целом обходу ограничений и цензуры будут посвящена отдельные главы и там мы всё это обсудим во всех подробностях и изучим разные пути раздвинуть границы возможного. Сейчас просто опять напомню — в промпте нужно писать НЕ то что вы хотите убрать, а то что вы ХОТИТЕ УВИДЕТЬ (ну то есть не «убрать одежду», а «big breasts»).
8.6 Размытие маски с помощью Grow and Blur Mask (Grow Mask + ImageBlur)
В некоторых workflow используется сабграф Grow and Blur Mask, ключевыми в котором являются ноды Grow Mask и ImageBlur.
Также эти ноды могут использоваться самостоятельно. Первая нода увеличивает маску, а вторая нода делает её размытой. Для любителей рисовать точные маски это может сыграть плохую службу — точно нарисованная маска после размытия может пропускать некоторые скрытые вами пиксели, в результате чего в генерируемом изображении может вновь возникать предмет, который вы хотите удалить. По этой причине мне нравится полностью отключать Grow and Blur Mask.
Ухудшений от этого я не заметил, но поведение масок стало более предсказуемым.
Если вы используете Grow and Blur Mask, то делайте маски с большим зазором.
Смотрите также: Как отключать и включать отдельные ноды и целые workflow. В чём разница между «Bypass», «Set Group Nodes to Never», «Bypass Group Nodes»
8.7 Как использовать маску в ComfyUI. Инструкция по Mask Editor
1) Как открыть Mask Editor
Загрузите картинку используя ноду «Load Image».
Кликните правой кнопкой по картинке и в открывшемся контекстном меню выберите «Open in MaskEditor | Image Canvas».
2) Почему в контекстом меню ComfyUI отсутствует Mask Editor
Самая частая причина почему Mask Editor отсутствует в контекстом меню — установлены дополнения для ComfyUI, которые по каким-то причинам не совместимы с Mask Editor.
В этой книге мы установили ванильную ComfyUI без всяких пакетов и расширений — в таком виде мы будем использовать её на протяжении почти всей этой онлайн книги и проблемы с отсутствием Mask Editor в контекстном меню у вас быть не должно. Но если у вас эта проблема есть и вы устанавливали какие-либо дополнительные пакеты для ComfyUI, то это скорее всего является причиной. Для решение проблемы в этом случае постепенно удаляйте установленные плагины, начиная с самого неиспользуемого, и проверяйте, появился ли пункт в контекстном меню для открытия Mask Editor.
Либо если все дополнительные пакеты являются необходимыми для вас, то обновите их до последней версии, а если проблема не исчезнет, откройте тикет с баг-репортом для разработчика.
3) Работа с масками поддерживается не для всех моделей нейросетей
Mask Editor можно открыть в любом workflow в котором есть импорт изображений (нода «Load Image»). Но это скорее недоработка интерфейса ComfyUI, поскольку в реальности маски будут учитывать только определённые модели, которые перечислены выше.
Обычно в workflow работающих с маской имеется подсказка как открыть редактор масок, а также имеется превью изображения с наложенной маской.
Во всех остальных workflow маска будет просто игнорироваться.
4) Интерфейс Mask Editor. Режимы редактора масок в ComfyUI
В верхней строке меню расположены кнопки:
- Undo — отменить последнее действие
- Redo — вернуть последнее отменённое действие (отменить отмену)
- Invert — инвертировать, то есть область покрытую маской сделать областью без маски, а область без маски сделать маской
- Clear — очистить маску
- Save — сохранить маску и закрыть редактор масок
- Cancel — отменить нарисованную маску и закрыть редактор масок
- Full screen (находится в правой верхней части окна) — развернуть Редактор масок на весь экран
В левом меню имеются следующие кнопки переключения режимов:
- Maskbrush — рисование маски
- Paintbrush — закрашивание областей изображения выбранными цветами
- Eraser — ластик, очистка имеющейся маски
- Bucket Fill — заливка
- Color Select / Fuzzy Select Tool — автоматический выбор областей по указанному цвету
В этой главе при рисовании маски мы в основном будем использовать режим Maskbrush — то есть в левом меню верхняя кнопка, которая нажата по умолчанию при открытии Mask Editor. Цветные области могут превращаться в маски, но в этой главе мы будем использовать только одноцветные маски (альфа-канал и зелёную). Причём по умолчанию мы будем использовать именно Maskbrush (альфа-канал). То есть если я привожу примеры масок без пояснений, то это Maskbrush.
В левой части имеются настройки, которые могут меняться в зависимости от выбранного режима.
Прежде всего, в любом режиме имеется группа Mask Layer — она находится справа внизу и показывает какой из слоёв вы редактируете в настоящее время:
- Mask Layer
- Paint Layer
- Base Image Layer
В некоторых режимах вы можете увидеть кнопку «Activate Layer» — она переключает слои, но на самом деле она также переключает режимы целиком.
Общие настройки для режимов Maskbrush, Paintbrush, Eraser:
- Brush Shape — круглая или квадратная кисть для рисования маски
- Color Selector — выбор цвета, фактически имеет эффект только в Paintbrush
- Thickness — размер кисти
- Opacity — прозрачность нарисованной области: чем ниже значение, тем прозрачнее область. По умолчанию используется непрозрачная область
- Hardness — жёсткость кисти: более низкие значения создают более мягкие края (то есть края немного прозрачные), более высокие значения — более острые края (то есть края менее прозрачные).
- Step Size — сколько нужно провести курсором для того, чтобы появилась следующая часть маски. Меньшие значения рисуют маску «в реальном времени» движения курсора, а большие значения требуют чтобы курсор прошёл некоторую дистанцию прежде чем появится продолжение маски
- Mask Opacity — уровень прозрачности маски в редакторе (не влияет на прозрачность маски, влияет только на то, как вы видите картинку при редактировании в редакторе)
- Mask Blending Options — как показывать маску: Black — как чёрную область; White — как белую область; Negative — как на негативе от цветов под маской. Эта настройка также влияет только на внешний вид маски в редакторе
В режиме Eraser вы можете ластиком стирать нарисованные маски и цветные области. Причём вы можете переключаться между слоями «Mask Layer» и «Paint Layer» с помощью кнопки «Activate Layer».
Режим Bucket Fill заливает маской (такой же как рисует Maskbrush, но НЕ Paintbrush). Этот режим можно использовать в следующих сценариях:
- полная заливка всего изображения с последующей очисткой нужных областей с помощью Eraser
- заливка внутри маски
Имеющиеся настройки режима Bucket Fill:
- Tolerance — определяет, насколько отличающиеся по значению пиксели считаются «одинаковыми» и будут залиты при клике. По сути, это порог чувствительности алгоритма flood fill. Tolerance — это допустимая разница значений маски, при которой пиксели считаются частью одной области при заливке. Чем выше значение — тем агрессивнее и шире работает Bucket Fill.
- Fill Opacity — уровень прозрачности маски (чем меньше значение, тем прозрачнее маска)
Режим Color Select / Fuzzy Select Tool (режим Пипетка) — позволяет автоматически выбирать похожие цвета.
Настройки режима Color Select / Fuzzy Select Tool:
- Tolerance — определяет, насколько отличающиеся по значению пиксели считаются «одинаковыми» и будут залиты при клике. Определяет, сколько похожих цветов добавляется в область маски; более высокие значения включают больше похожих цветов. fill. Tolerance — это допустимая разница значений маски, при которой пиксели считаются частью одной области при заливке. Чем выше значение — тем агрессивнее и шире работает Bucket Fill.
- Selection Opacity — уровень прозрачности маски (чем меньше значение, тем прозрачнее маска)
- Live Preview — мощнейший режим для сравнения доступных настроек. После выбора нескольких цветов с помощью инструмента «Пипетка» включите эту опцию, чтобы видеть изменения в реальном времени при корректировке других настроек. То есть после после включения этой опции вы можете менять другие настройки и при этом вам в реальном времени будет показано, как меняется маска.
- Apply to Whole Image — ограничение области действия инструмента. Off — выделение распространяется только на связанную область, начиная с точки клика (поведение flood fill). On — выделение применяется ко всему изображению, независимо от связности пикселей.
- Method (simple, hsl, lab) — определяет, как именно сравниваются цвета: simple — прямое сравнение RGB-значений (быстрый, грубый, плохо работает при тенях и освещении; использовать для плоских, искусственных изображений, логотипов, UI, чётких областей); hsl — сравнение в пространстве Hue / Saturation / Lightness (лучше различает цвет при разной яркости; устойчив к теням; самый часто используемый режим; использовать: люди, кожа, одежда, природа, фон с освещением);
- Stop at mask — будет добавлено позже
- Mask Tolerance — будет добавлено позже
В некоторых режимах присутствует кнопка «Reset to Default» которая сбрасывает настройки кисти а значениям по умолчанию.
5) Как рисовать маски в ComfyUI (видео)
Итак, алгоритм действий следующий:
- загрузите изображение в ноду «Load Image»
- кликните правой кнопкой по картинке и в открывшемся контекстном меню выберите «Open in MaskEditor | Image Canvas»
- нанесите на изображение маску — по умолчанию она выглядит как чёрная полупрозрачная область, но на самом деле по умолчанию маска является непразрачной
- нажмите кнопку Save для сохранение сделанных изменений
- добавьте промпт и запустите генерацию нового изображения
Видео создания маски в ComfyUI:
6) Когда нужны маски с полупрозрачными краями
Маски с мягкими (полупрозрачными) краями (будь то нарисованные с низкими значениями Hardness или размытые с Blur Mask / ImageBlur) особенно полезны в ситуациях когда после импэйнтинга вы замечаете полосы на светлом однородном фоне.
Помните о специфике этих масок — они должны быть чуть больше скрываемой области, поскольку из-за полупрозрачности крайние пиксели могут просочиться в новое изображение.
7) Как переносить изображения с масками между workfow
После создания маски, вы можете сохранить изображение с маской в файл (PNG файл с прозрачным альфа-каналом), также вы можете копировать и вставлять изображения с маской между разными workfow. При многоэтапной обработке изображения, вы можете копировать изображение из ноды Save Image и вставлять его в ноду Load Image.
О том как всё это делать смотрите в разделе Полезные возможности ноды Load Image
8.8 Как редактировать изображение по маске в Flux.1 Dev OneReward
Прежде всего, я отключаю removal_timestep_alpha-2-1740.safetensors.
Эта лора предназначена для удаления объектов и даже из её задач она не нужна для большинства целей инпэйнтинга. Но более того, даже при удалении объектов мои результаты с этой лорой оказались хуже, чем без неё. То есть эту лору вы можете включать для тестов, когда ничего другое не помогает в удалении предметов. В целом без неё намного лучше.
Смотрите также: Как отключать и включать отдельные ноды и целые workflow. В чём разница между «Bypass», «Set Group Nodes to Never», «Bypass Group Nodes»
Я отключаю сабграф Grow and Blur Mask (нужен для размытия маски) — подробнее об этом сабграфе говориться чуть выше.
По умолчанию установлено 20 шагов — это может быть достаточно для мультяшных и абстрактных картинок. Для фотореалистичных картинок вы можете увеличить количество шагов, например, я использую 50 шагов.
Примеры инпэйнтинга сделанные в полной, неквантованной Flux Outpaint (fill) (flux.1-fill-dev-OneReward-transformer_fp16.safetensors), 50 шагов:
Исходная картинка:
Цель: убрать бабочку.
Маска:
Промпт:
Перевод: кливаж, расстёгнутая рубашка, большие груди
Результат:
Исходная картинка:
Цель: исправить картинку, чтобы мольберт не висел в воздухе.
Маска:
Промпт:
Перевод: Мольберт на ножках
Результат:
Исходная картинка:
Цель: исправить ладони — убрать лишние пальцы
Маска:
Промпт:
Перевод: руки спрятаны между ног
Результат:
Исходная картинка:
Цель: добавить на плечо надпись «HackWare.ru»
Маска:
Промпт:
Перевод: татуировка с надписью «HackWare.ru»
Результат:
Исходная картинка:
Цель: убрать лишнюю ногу, оставшиеся ноги сделать покрасивее, особенно ступни; да и ладонь выглядит плохо, тоже переделать
Маска:
Промпт:
Перевод: красивые ноги и ступни молодой девушки, пустой пол
Результат:
Исходная картинка:
Цель: исправить ступню, убрав лишние пальцы
Маска:
Промпт:
Перевод: красивая ступня девочки
Результат:
Исходная картинка:
Цель: убрать все татуировки
Маска:
Промпт:
Перевод: красивая верхняя часть руки, чистая кожа
Результат:
Исходная картинка:
Цель: убрать стакан кофе
Маска:
Промпт:
Перевод: пустая ладонь
Результат:
Исходная картинка:
Цель: исправить эльфийское ухо на нормальное
Маска:
Промпт:
Перевод: красивое ухо девушки подростка
Результат:
Исходная картинка:
Цель: добавить жидкость из бутылки в блюдце
Маска:
Промпт:
Перевод: жидкость янтарного цвета в блюдце
Результат:
Исходная картинка:
Цель: заменить фотоаппарат на мобильный телефон
Маска:
Промпт:
Перевод: мобильный телефон в руках у девочки; красивые маленькие руки девочки
Результат:
Исходная картинка:
Цель: сделать футболку-тунику подлиннее и прикрыть наготу
Маска:
Промпт:
Перевод: длинное платье-туника
Результат:
Исходная картинка:
Цель: удалить шляпку
Маска:
Промпт:
Перевод: красивые волосы развеваются на ветру
Результат:
Развернуть
ref_1
Cleavage. An unbuttoned shirt. Big breasts
ref_2
Easel on legs
ref_3
hands hidden between the legs
ref_4
a tattoo with the inscription "HackWare.ru"
ref_5
beautiful legs and feet of a young girl, empty floor
ref_6
A girl's beautiful foot
ref_7
beautiful upper arm, clear skin
ref_8
empty palm
ref_9
beautiful ear of a teenage girl
ref_10
amber-colored liquid in a saucer
ref_11
a mobile phone in the girl's hands; the girl's beautiful small hands
ref_12
long tunic dress
ref_13
beautiful hair flowing in the wind
8.9 Как редактировать изображение по маске в Flux Inpaint (fill)
Прежде всего, я отключаю removal_timestep_alpha-2-1740.safetensors.
Эта лора предназначена для удаления объектов и даже из её задач она не нужна для большинства целей инпэйнтинга. Но более того, даже при удалении объектов мои результаты с этой лорой оказались хуже, чем без неё. То есть эту лору вы можете включать для тестов, когда ничего другое не помогает в удалении предметов. В целом без неё намного лучше.
Смотрите также: Как отключать и включать отдельные ноды и целые workflow. В чём разница между «Bypass», «Set Group Nodes to Never», «Bypass Group Nodes»
Я отключаю сабграф Grow and Blur Mask (нужен для размытия маски) — подробнее об этом сабграфе говориться чуть выше.
По умолчанию установлено 20 шагов — это может быть достаточно для мультяшных и абстрактных картинок. Для фотореалистичных картинок вы можете увеличить количество шагов, например, я использую 50 шагов.
Примеры инпэйнтинга сделанные в полной, неквантованной Flux Outpaint (fill) (flux1-fill-dev.safetensors), 50 шагов:
Исходная картинка:
Цель: убрать бабочку.
Маска:
Промпт:
Перевод: кливаж, расстёгнутая рубашка, большие груди
Результат:
Исходная картинка:
Цель: исправить картинку, чтобы мольберт не висел в воздухе.
Маска:
Промпт:
Перевод: Мольберт на ножках
Результат:
Исходная картинка:
Цель: исправить ладони — убрать лишние пальцы
Маска:
Промпт:
Перевод: руки спрятаны между ног
Результат:
Исходная картинка:
Цель: добавить на плечо надпись «HackWare.ru»
Маска:
Промпт:
Перевод: татуировка с надписью «HackWare.ru»
Результат:
Исходная картинка:
Цель: убрать лишнюю ногу, оставшиеся ноги сделать покрасивее, особенно ступни; да и ладонь выглядит плохо, тоже переделать
Маска:
Промпт:
Перевод: красивые ноги и ступни молодой девушки, пустой пол
Результат:
Исходная картинка:
Цель: исправить ступню, убрав лишние пальцы
Маска:
Промпт:
Перевод: красивая ступня девочки
Результат:
Исходная картинка:
Цель: убрать все татуировки
Маска:
Промпт:
Перевод: красивая верхняя часть руки, чистая кожа
Результат:
Исходная картинка:
Цель: убрать стакан кофе
Маска:
Промпт:
Перевод: пустая ладонь
Результат:
Исходная картинка:
Цель: исправить эльфийское ухо на нормальное
Маска:
Промпт:
Перевод: красивое ухо девушки подростка
Результат:
Исходная картинка:
Цель: добавить жидкость из бутылки в блюдце
Маска:
Промпт:
Перевод: жидкость янтарного цвета в блюдце
Результат:
Исходная картинка:
Цель: заменить фотоаппарат на мобильный телефон
Маска:
Промпт:
Перевод: мобильный телефон в руках у девочки; красивые маленькие руки девочки
Результат:
Исходная картинка:
Цель: сделать футболку-тунику подлиннее и прикрыть наготу
Маска:
Промпт:
Перевод: длинное платье-туника
Результат:
Исходная картинка:
Цель: удалить шляпку
Маска:
Промпт:
Перевод: красивые волосы развеваются на ветру
Результат:
Развернуть
ref_1
Cleavage. An unbuttoned shirt. Big breasts
ref_2
Easel on legs
ref_3
hands hidden between the legs
ref_4
a tattoo with the inscription "HackWare.ru"
ref_5
beautiful legs and feet of a young girl, empty floor
ref_6
A girl's beautiful foot
ref_7
beautiful upper arm, clear skin
ref_8
empty palm
ref_9
beautiful ear of a teenage girl
ref_10
amber-colored liquid in a saucer
ref_11
a mobile phone in the girl's hands; the girl's beautiful small hands
ref_12
long tunic dress
ref_13
beautiful hair flowing in the wind
8.10 Как редактировать изображение по маске в Qwen Image
Чтобы в ComfyUI найти нужный workflow в меню шаблонов введите в поиск и выберите «Qwen-Image InstantX Inpainting ControlNet». В этом шаблоне 2 workflow, нам нужен тот, который включён по умолчанию, то есть находится в группе Inpainting.
По сравнению с оригинальной версией, в моём workflow имеются следующие изменения:
- отключена нода ImageScaleToMaxDimension (она устанавливает максимальный размер любой из сторон) поскольку Qwen Image прекрасно справляется с изображениями размером до 4 Мп
- отключён сабграф Grow and Blur Mask поскольку без него результаты хорошие, а при его включении нужно рисовать маску из расчёта что она будет размыта по краям
- shift установлен на 2
- cfg установлен на 4
- steps установлен на 50
- отключён второй Save Image (это тот, который накладывает оригинальную картинку на готовое изображение)
- используются модели полной точности (не квантованные)
Мой workflow с помощью которого я подготовил примеры ниже: I2I — Inpaint — Qwen.json
Примеры инпэйнтинга сделанные в полной, неквантованной Qwen Image (qwen_image_bf16.safetensors и qwen_2.5_vl_7b.safetensors), 50 шагов:
Исходная картинка:
Цель: убрать бабочку.
Маска:
Промпт:
Перевод: кливаж, расстёгнутая рубашка, большие груди
Результат:
Исходная картинка:
Цель: исправить картинку, чтобы мольберт не висел в воздухе.
Маска:
Промпт:
Перевод: Мольберт на ножках
Результат:
Исходная картинка:
Цель: исправить ладони — убрать лишние пальцы
Маска:
Промпт:
Перевод: руки спрятаны между ног
Результат:
Исходная картинка:
Цель: добавить на плечо надпись «HackWare.ru»
Маска:
Промпт:
Перевод: татуировка с надписью «HackWare.ru»
Результат:
Исходная картинка:
Цель: убрать лишнюю ногу, оставшиеся ноги сделать покрасивее, особенно ступни; да и ладонь выглядит плохо, тоже переделать
Маска:
Промпт:
Перевод: красивые ноги и ступни молодой девушки, пустой пол
Результат:
Исходная картинка:
Цель: исправить ступню, убрав лишние пальцы
Маска:
Промпт:
Перевод: красивая ступня девочки
Результат:
Исходная картинка:
Цель: убрать все татуировки
Маска:
Промпт:
Перевод: красивая верхняя часть руки, чистая кожа
Результат:
Исходная картинка:
Цель: убрать стакан кофе
Маска:
Промпт:
Перевод: пустая ладонь
Результат:
Исходная картинка:
Цель: исправить эльфийское ухо на нормальное
Маска:
Промпт:
Перевод: красивое ухо девушки подростка
Результат:
Исходная картинка:
Цель: добавить жидкость из бутылки в блюдце
Маска:
Промпт:
Перевод: жидкость янтарного цвета в блюдце
Результат:
Исходная картинка:
Цель: заменить фотоаппарат на мобильный телефон
Маска:
Промпт:
Перевод: мобильный телефон в руках у девочки; красивые маленькие руки девочки
Результат:
Исходная картинка:
Цель: сделать футболку-тунику подлиннее и прикрыть наготу
Маска:
Промпт:
Перевод: длинное платье-туника
Результат:
Исходная картинка:
Цель: удалить шляпку
Маска:
Промпт:
Перевод: красивые волосы развеваются на ветру
Результат:
Развернуть
ref_1
Cleavage. An unbuttoned shirt. Big breasts
ref_2
Easel on legs
ref_3
hands hidden between the legs
ref_4
a tattoo with the inscription "HackWare.ru"
ref_5
beautiful legs and feet of a young girl, empty floor
ref_6
A girl's beautiful foot
ref_7
beautiful upper arm, clear skin
ref_8
empty palm
ref_9
beautiful ear of a teenage girl
ref_10
amber-colored liquid in a saucer
ref_11
a mobile phone in the girl's hands; the girl's beautiful small hands
ref_12
long tunic dress
ref_13
beautiful hair flowing in the wind
8.11 Как редактировать изображение по маске в Qwen Image Edit
Qwen Image Edit это модель для редактирования изображений в том числе с поддержкой мульти-референса, это интересные темы, которые мы будем рассматривать в отдельных главах, но это не Inpainting.
Для поддержки инпэйнтинга Qwen Image Edit нужно использовать со специальной лорой:
- страница описания лоры: https://huggingface.co/ostris/qwen_image_edit_inpainting
- ссылка на скачивание лоры: https://huggingface.co/ostris/qwen_image_edit_inpainting/resolve/main/qwen_image_edit_inpainting.safetensors
Эту лору нужно поместить в: loras / qwen_image_edit_inpainting.safetensors
В ComfyUI отсутствует workflow для Qwen Image Edit с этой лорой, поэтому если вы хотите это использовать, то вот ссылка на мой кастомный workflow: I2I — Inpaint — Qwen Edit.json
У этого workflow имеются важные особенности:
- вместо обычной маски здесь нужно закрашивать зелёным область, которую вы хотите изменить
- изображение может быть отредактировано в том числе в местах за пределами маски (зелёной области)
- размер изображений не должен превышать 1 Мп (за это отвечает нода ImageScaleToTotalPixels), иначе модель выдаёт бессмыслицу
Для рисования зелёной области:
- загрузите изображение
- откройте редактор масок
- переключитесь в режим Paintbrush
- в Color Selector выберите ярко зелёный цвет (в RGB это 0-255-0)
- нарисуйте маску (закрасьте область для изменения)
- сохраните сделанные изменения
Видео как рисовать маску для инпэйнтинга в Qwen Image Edit:
Примеры инпэйнтинга сделанные в полной, неквантованной Qwen Image Edit (qwen_image_edit_2509_bf16.safetensors и qwen_2.5_vl_7b.safetensors), 50 шагов:
Исходная картинка:
Цель: убрать бабочку.
Маска:
Промпт:
Перевод: кливаж, расстёгнутая рубашка, большие груди
Результат:
Исходная картинка:
Цель: исправить картинку, чтобы мольберт не висел в воздухе.
Маска:
Промпт:
Перевод: Мольберт на ножках
Результат:
Исходная картинка:
Цель: исправить ладони — убрать лишние пальцы
Маска:
Промпт:
Перевод: красивые бёдра
Результат:
Исходная картинка:
Цель: добавить на плечо надпись «HackWare.ru»
Маска:
Промпт:
Перевод: татуировка с надписью «HackWare.ru»
Результат:
Исходная картинка:
Цель: убрать лишнюю ногу, оставшиеся ноги сделать покрасивее, особенно ступни; да и ладонь выглядит плохо, тоже переделать
Маска:
Промпт:
Перевод: красивые ноги и ступни молодой девушки, пустой пол
Результат:
Исходная картинка:
Цель: исправить ступню, убрав лишние пальцы
Маска:
Промпт:
Перевод: красивая ступня девочки
Результат:
Исходная картинка:
Цель: убрать все татуировки
Маска:
Промпт:
Перевод: красивая верхняя часть руки, чистая кожа
Результат:
Исходная картинка:
Цель: убрать стакан кофе
Маска:
Промпт:
Перевод: пустая ладонь
Результат:
Исходная картинка:
Цель: исправить эльфийское ухо на нормальное
Маска:
Промпт:
Перевод: красивое ухо настоящей девушки-подростка, реальный человек, фотореалистичное изображение девушки, фотография реального человека, портрет девушки-подростка в профиль.
Результат:
Исходная картинка:
Цель: добавить жидкость из бутылки в блюдце
Маска:
Промпт:
Перевод: жидкость янтарного цвета в блюдце
Результат:
Исходная картинка:
Цель: заменить фотоаппарат на мобильный телефон
Маска:
Промпт:
Перевод: мобильный телефон в руках у девочки; красивые маленькие руки девочки
Результат:
Исходная картинка:
Цель: сделать футболку-тунику подлиннее и прикрыть наготу
Маска:
Промпт:
Перевод: длинное платье-туника
Результат:
Исходная картинка:
Цель: удалить шляпку
Маска:
Промпт:
Перевод: красивые волосы развеваются на ветру
Результат:
Развернуть
ref_1
Cleavage. An unbuttoned shirt. Big breasts
ref_2
Easel on legs
ref_3
hands beautiful hips
ref_4
a tattoo with the inscription "HackWare.ru"
ref_5
beautiful legs and feet of a young girl, empty floor
ref_6
A girl's beautiful foot
ref_7
beautiful upper arm, clear skin
ref_8
empty palm
ref_9
beautiful ear of a real teenage girl, real person, photorealistic image of a girl, photograph of a real person, portrait of a teenage girl in profile
ref_10
amber-colored liquid in a saucer
ref_11
a mobile phone in the girl's hands; the girl's beautiful small hands
ref_12
long tunic dress
ref_13
beautiful hair flowing in the wind
Смотрите продолжение: 9. Редактирование изображения с помощью нейросетей (I2I)
Связанные статьи:
- 9. Редактирование изображения с помощью нейросетей (I2I) (86.1%)
- 7. Расширение области видимости изображений с помощью нейросетей: расширение кадра, изменение соотношения сторон с добавлением новой информации (outpainting) (76.1%)
- 10. Междоменный перевод изображений (преобразование между различными типами изображений) (74.1%)
- 11. Превращение нефотографических изображений в фотографии (фотореалистичные изображения) с помощью ИИ (68.1%)
- 3. Виды ИИ (нейросетей) для генерации картинок и видео. Основные термины (64.2%)
- Массовый поиск геотэгов на сайтах и в локальном хранилище (RANDOM - 1.4%)








































































































Жду продолжения друг!)