8. Замена, удаление и добавление объектов на изображение с помощью ИИ — редактирование по маске (inpainting)

Как генерировать фото, видео, музыку и 3D модели с помощью нейросетей на своём компьютере (руководство по ComfyUI). Полное оглавление

  1. Как использовать нейросети для создания изображений, видео и музыки на своём компьютере — что для этого нужно и какой результат можно получить
  2. Как установить ComfyUI в Windows и Linux
  3. Виды ИИ (нейросетей) для генерации картинок и видео. Основные термины
  4. Лучшие ИИ (нейросети) для генерации картинок, видео, музыки и 3D моделей (краткое описание готовых шаблонов ComfyUI для генерации фото и видео на своём компьютере)
  5. Знакомство с ComfyUI
  6. Основы генерации изображений из текстовых запросов на своём компьютере
  7. Расширение области видимости изображений с помощью нейросетей (расширение кадра, изменение соотношения сторон с добавлением новой информации — outpainting)
  8. Замена, удаление и добавление объектов на изображение с помощью ИИ — редактирование по маске (inpainting)

8.1 Что такое Inpainting

8.2 Что можно делать с помощью Inpainting. Для чего нужен Inpainting

8.3 Какие модели поддерживают Inpainting. Какие нейросети могут редактировать изображение по маске

8.4 Общие рекомендации при редактировании изображений с помощью маски. Как составлять промпты для редактирования по маске

8.5 При редактировании по маске можно использовать дообученные модули (LoRA-адаптеры) соответствующие модели

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

  1. Редактирование изображения с помощью нейросетей (I2I)
  2. Междоменный перевод изображений (преобразование между различными типами изображений)
  3. Превращение нефотографических изображений в фотографии (фотореалистичные изображения) с помощью ИИ
  4. Ускорение создания и редактирования изображений с помощью дистиллированных моделей нейросетей
  5. Генерация изображений с текстом. Добавление текста на изображение и редактирование текста с помощью нейросетей
  6. Использование одного или нескольких референсов для генерации картинок: изменение фона, изменение и дорисовка объектов и персонажей, замена стиля, расширение кадра, перенос стиля между картинками, объединение нескольких изображений в одно
  7. Восстановление и улучшение изображений с помощью ИИ: устранение повреждений фотографий, превращение чёрно-белой фотографии в цветную, улучшение и усиление цветов, увеличение размера изображения
  8. Редактирование изображений через декомпозицию сцены
  9. Генерация изображений из других изображений с применением ControlNet, IP-Adapter и IP-Control
  10. Физически правдоподобное редактирование изображений с ChronoEdit 14B (Physics-driven image editing)
  11. Основы создания видео из текстовых запросов на своём компьютере
  12. Основы генерации видео из изображений на своём компьютере
  13. Создание видео из первого и последнего кадров
  14. Редактирование видео с помощью нейросетей — замена и удаление элементов (генерация видео из видео)
  15. Создание видео с контролем камеры
  16. Создание видео с контролем движений
  17. Методы создания длинных видео с помощью ИИ
  18. Создание музыки по словесному описанию. Создание песен из ваших стихов. Редактирование существующих песен (стиля и слов)
  19. Создание 3D моделей из изображений
  20. Продвинутые техники написания промптов
  21. Детальное управление жанром, кадровкой, ракурсом, композицией, расположением камеры, освещением, скоростью съёмки, движениями камеры, позиционированием и пластикой тела и прочим в промптах
  22. Типы моделей нейросетей. Квантование. Общие принципы использования дообученных модулей нейросетей
  23. Детальное понимание рабочего процесса (workflow) в ComfyUI. Узлы ComfyUI
  24. Настройки workflow при генерации изображений, видео, музыки и 3D моделей в ComfyUI
  25. Улучшение качества изображений и видео с помощью перехода на модели полной точности (неквантованные модели)
  26. Уменьшение потребления VRAM и ускорение вычислений за счёт перехода на квантованные модели
  27. Модификация workflow для использования дообученных моделей в ComfyUI
  28. Создание новых workflow в ComfyUI с нуля
  29. Как использовать модели в формате GGUF в ComfyUI
  30. Как делать апскейлинг (upscale) изображений и видео с помощью ИИ
  31. Опции и настройки для экономии видеопамяти (VRAM). Как создавать HD видео на обычном компьютере
  32. Есть ли цензура в локальных ИИ. Почему результаты не соответствуют запросам. Глубокое понимание работы нейросетей. Как полностью снять все запреты с локальных ИИ
  33. Коммерческие ИИ (нейросети) для создания и редактирования картинок, видео, 3D, озвучивания текста и прочего (краткое описание готовых шаблонов ComfyUI доступных по API)
  34. Обзор популярных кастомных моделей
  35. Обзор популярных дообученных модулей (LoRA-адаптеров)
  36. Обзор ИИ-моделей для генерации аниме-артов
  37. Обзор дообученных модулей (LoRA-адаптеров) для аниме-изображений
  38. Генерация изображений в аниме-стиле с помощью нейросетей

……………..

……………..

И это далеко не конец!!! Проявляете активность: пишите в комментариях ваши замечания по найденным ошибкам, делитесь ссылками на эту онлайн книгу. При возможности, вы можете донатить для оплаты железа используемого в тестировании. При наличии интереса и активности, данная книга будет быстро дополняться новыми главами — здесь ещё много интересных тем, от детальной настройки стиля генерируемого контента до самостоятельного дообучения моделей.


8.1 Что такое Inpainting

Inpainting (дорисовывание) – это один из вариантов I2I (создания новых изображений на основе исходных изображений), представляет собой процесс восстановления или дорисовывания недостающих/удалённых частей картинки.

Классический inpainting заключается в редактировании изображений по маске, то есть пользователь определяет маску (например, просто рисует её в специальном редакторе) и по этой маске удаляются части изображения. Далее с помощью инпэйнтинга удалённые области восстанавливаются при этом учитываются текстовые промпты. В результате исходное изображение в большей части остаётся неизменным, редактируются только указанные области.

При этом дополнение (заполнение) пустых пространств в изображении происходит как на основе окружающих областей, так и на основе текстового промпта. В результате получается модифицированное изображение на котором новый элемент органично вписан с учётом стиля, освещения, содержимого самой картинки.

Кроме редактирования по маске, ИИ модели могут редактировать изображения используя только текстовый промпт, фактически пересоздавая изображение целиком с учётом пожелания пользователя — об этом мы тоже поговорим, этому будут посвящены ближайшие главы.

В этой главе мы рассмотрим только классический inpainting (то есть редактирование по маске).

8.2 Что можно делать с помощью Inpainting. Для чего нужен Inpainting

Типичные примеры использования инпэйнтинга:

  • удаление чего-либо с картинки (удаление шляпки с головы, удаление случайного человека из кадра, удаление предмета со стола, удаление татуировки)
  • добавление чего-либо на картинку (добавление шапки, добавление человека, добавление нового предмета или животного в кадр, добавление татуировки)
  • замена чего-то на другой предмет (замена шапки на кепку, замена бус на ожерелье, замена кошки на собаку)
  • восстановление повреждённой картинки (например, старый снимок с повреждёнными областями)

В предыдущей части мы уже рассмотрели outpainting и даже упомянули, что это частный случай inpainting когда маска (область для заполнения) размещена не внутри кадра, а снаружи, поэтому данного вопроса мы не будем больше касаться.

Смотрите также: Смотрите также: 7. Расширение области видимости изображений с помощью нейросетей: расширение кадра, изменение соотношения сторон с добавлением новой информации (outpainting)

Иногда удаление объектов (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 шагов:

Развернуть

ref_1

Исходная картинка:

Цель: убрать бабочку.

Маска:

Промпт:

Cleavage. An unbuttoned shirt. Big breasts

Перевод: кливаж, расстёгнутая рубашка, большие груди

Результат:


ref_2

Исходная картинка:

Цель: исправить картинку, чтобы мольберт не висел в воздухе.

Маска:

Промпт:

Easel on legs

Перевод: Мольберт на ножках

Результат:


ref_3

Исходная картинка:

Цель: исправить ладони — убрать лишние пальцы

Маска:

Промпт:

hands hidden between the legs

Перевод: руки спрятаны между ног

Результат:


ref_4

Исходная картинка:

Цель: добавить на плечо надпись «HackWare.ru»

Маска:

Промпт:

a tattoo with the inscription "HackWare.ru"

Перевод: татуировка с надписью «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 шагов:

Развернуть

ref_1

Исходная картинка:

Цель: убрать бабочку.

Маска:

Промпт:

Cleavage. An unbuttoned shirt. Big breasts

Перевод: кливаж, расстёгнутая рубашка, большие груди

Результат:


ref_2

Исходная картинка:

Цель: исправить картинку, чтобы мольберт не висел в воздухе.

Маска:

Промпт:

Easel on legs

Перевод: Мольберт на ножках

Результат:


ref_3

Исходная картинка:

Цель: исправить ладони — убрать лишние пальцы

Маска:

Промпт:

hands hidden between the legs

Перевод: руки спрятаны между ног

Результат:


ref_4

Исходная картинка:

Цель: добавить на плечо надпись «HackWare.ru»

Маска:

Промпт:

a tattoo with the inscription "HackWare.ru"

Перевод: татуировка с надписью «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 шагов:

Развернуть

ref_1

Исходная картинка:

Цель: убрать бабочку.

Маска:

Промпт:

Cleavage. An unbuttoned shirt. Big breasts

Перевод: кливаж, расстёгнутая рубашка, большие груди

Результат:


ref_2

Исходная картинка:

Цель: исправить картинку, чтобы мольберт не висел в воздухе.

Маска:

Промпт:

Easel on legs

Перевод: Мольберт на ножках

Результат:


ref_3

Исходная картинка:

Цель: исправить ладони — убрать лишние пальцы

Маска:

Промпт:

hands hidden between the legs

Перевод: руки спрятаны между ног

Результат:


ref_4

Исходная картинка:

Цель: добавить на плечо надпись «HackWare.ru»

Маска:

Промпт:

a tattoo with the inscription "HackWare.ru"

Перевод: татуировка с надписью «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 нужно использовать со специальной лорой:

Эту лору нужно поместить в: 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 шагов:

Развернуть

ref_1

Исходная картинка:

Цель: убрать бабочку.

Маска:

Промпт:

Cleavage. An unbuttoned shirt. Big breasts

Перевод: кливаж, расстёгнутая рубашка, большие груди

Результат:


ref_2

Исходная картинка:

Цель: исправить картинку, чтобы мольберт не висел в воздухе.

Маска:

Промпт:

Easel on legs

Перевод: Мольберт на ножках

Результат:


ref_3

Исходная картинка:

Цель: исправить ладони — убрать лишние пальцы

Маска:

Промпт:

hands beautiful hips

Перевод: красивые бёдра

Результат:


ref_4

Исходная картинка:

Цель: добавить на плечо надпись «HackWare.ru»

Маска:

Промпт:

a tattoo with the inscription "HackWare.ru"

Перевод: татуировка с надписью «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)

Рекомендуется Вам:

One Comment to 8. Замена, удаление и добавление объектов на изображение с помощью ИИ — редактирование по маске (inpainting)

  1. Вася Ворон:

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *