Stable Diffusion inpainting перерисовывает только выбранную область готового изображения: вы подаёте исходник, маску и описание того, что должно появиться на месте белых пикселей. Остальная картинка должна остаться прежней, и это условие проверяют сравнением с исходником. Способ подходит для точечных правок вроде удаления лишнего предмета и замены детали, но для картинок, где достоверность важнее вида, результат требует осмотра человеком.

Что меняет маска

TL;DR

На вход идут три вещи: исходное изображение, маска, где белые пиксели обозначают область для перерисовки, а чёрные остаются прежними, и текстовое описание новой области.

Условный сценарий: фото блюда для меню, на краю стола лежит лишний предмет. Задача — убрать его и оставить тарелку, свет и фон такими, как на снимке. Маска закрашивает только предмет и небольшой запас вокруг, промпт описывает то, что должно быть на этом месте, например «деревянная поверхность стола».

Чем inpainting отличается от генерации с нуля и от преобразования всей картинки, показывает документация библиотеки diffusers: преобразование изображения создаёт новую картинку, похожую на исходную, а inpainting меняет лишь область по маске. Общий выбор между сервисами разобран в статье про Midjourney и Stable Diffusion, установка локального интерфейса описана в материале про Forge.

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

  • Маску рисуют по контуру правки с небольшим запасом: узкая маска оставляет следы прежнего предмета.
  • Маска и исходник совпадают по размеру: так белые пиксели ложатся ровно на нужные места.
  • Исходный файл хранится отдельно и остаётся доступным до конца приёмки.

Выбор checkpoint

Загружать модель удобно через класс AutoPipelineForInpainting: он определяет нужный конвейер по названию checkpoint. Документация diffusers называет популярными три модели: Stable Diffusion Inpainting, SDXL Inpainting и Kandinsky 2.2 Inpainting. Первая дообучена на изображениях размером 512 на 512 и считается удобной отправной точкой; SDXL, по документации, обычно даёт более высокое разрешение.

Выбор влияет и на ресурсы. Для экономии видеопамяти документация показывает выгрузку частей модели на процессор через enable_model_cpu_offload; ценой может стать более медленная работа. Для разовых правок это приемлемо, а для потока изображений параметры ресурсов фиксируют по результатам пробного прогона на вашем оборудовании.

ВариантКогда подходитЧто проверить
Checkpoint для inpaintingЕстественный переход между областямиНезамаскированная часть может измениться
Обычный checkpointПростое удаление объектаКонтур маски иногда остаётся виден
SDXL InpaintingИзображение выше разрешениемНагрузка на видеокарту и память

Документация объясняет компромисс: обычные checkpoint лучше сохраняют область вне маски, но дают видимый контур, а специальные дают более естественный переход, но сильнее склонны менять остальное изображение. Условия лицензии на модель читайте в её карточке на Hugging Face: от них зависит, можно ли использовать результат в коммерческих материалах.

Параметры правки

Результат зависит от нескольких параметров, и менять их удобно по одному, фиксируя остальные. Для воспроизводимости задайте генератор с фиксированным значением seed и запишите его вместе с остальными настройками: тогда повторный запуск с теми же настройками даёт сопоставимую картинку, а различия объясняются сменой параметра.

ПараметрЧто делаетКак подбирать
strengthОпределяет, сколько шума добавляется и насколько результат отличается от исходникаНизкое значение держит картинку ближе к оригиналу, высокое даёт больше свободы
guidance_scaleЗадаёт, насколько строго модель следует описаниюУвеличивайте, если результат уходит от промпта
negative_promptПеречисляет то, что в области нежелательноКоротко перечислите типичные дефекты
padding_mask_cropВырезает область с запасом, перерисовывает в большем разрешении и накладывает обратноВключайте для мелких областей
blur_factorРазмывает края маскиСмягчает стык с исходником

Промпт описывает только содержимое замаскированной области, а всю сцену пересказывать незачем. Для удаления предмета достаточно назвать то, что должно проступить на его месте: поверхность, фон, текстуру. Описание сцены целиком лучше оставить для генерации с нуля: здесь оно только добавляет поводов для расхождения с окружением.

Документация описывает и ещё одну возможность для строгих задач: метод apply_overlay принудительно возвращает незамаскированную часть из исходника. Ценой становится менее естественный стык, зато вне маски пиксели совпадают с оригиналом.

● Discovery · 1 час · бесплатно

Что из правок изображений вы хотите вынести в отдельную задачу?

Прийти на Discovery →

Сверка с исходником

Приёмка начинается с накладывания результата на оригинал. Скрипт вычисляет разницу между изображениями и показывает, где изменились пиксели. Если изменения вышли за маску, значит, модель тронула лишнее, и вариант возвращается на доработку или проходит через apply_overlay.

  1. Сохраните исходник, маску, промпт, значения параметров и seed в одну папку задачи.
  2. Запустите правку и сохраните результат под новым именем, а исходный файл оставьте нетронутым.
  3. Постройте карту различий между исходником и результатом и убедитесь, что она ограничена маской.
  4. Осмотрите стык на полном размере: ищите повторяющиеся текстуры, смазанные линии и изменение цвета.
  5. Утвердите вариант записью в журнале с именем проверяющего.
Критерий приёмкиКак проверяетсяКто решает
Изменения лежат внутри маскиКарта различий с исходникомСкрипт
Стык незаметен на полном размереОсмотр без масштабированияДизайнер
Цвет и форма товара соответствуют реальнымСверка с фотографией изделияКонтент-менеджер
Права на изображение подтвержденыЗапись об источнике и согласияхОтветственный за публикацию

Автоматическая карта различий отвечает на вопрос «что изменилось», а вопрос «стало ли лучше» остаётся за человеком. Для каталога товаров есть и дополнительная проверка: цвет, форма и надписи на упаковке должны совпадать с реальным изделием, иначе покупатель увидит то, чего нет в продаже. Подход к снимкам товаров описан в статье про карточки без фотостудии.

Границы правки

Inpainting плохо справляется с текстом, логотипами и мелкими деталями вроде цифр на ценниках: модель рисует правдоподобные формы, а читаемые символы получаются редко. Такие области лучше править в графическом редакторе. Для правки лиц и фигур людей заручитесь согласием тех, кто на снимке, и сверьтесь с правилами маркировки вашей площадки.

Исходные фото клиентов и сотрудников держите на своём компьютере или сервере: локальный запуск через diffusers оставляет данные внутри компании. Для подтверждения достоверности используйте исходник как эталон, а готовый результат публикуйте только после проверки. Если вам нужна устойчивая цепочка правок и приёмки изображений, она собирается как часть автоматизации бизнес-процессов.

Журнал правок защищает команду от спорных ситуаций. Для каждого изображения в нём лежат исходник, маска, параметры, итог и фамилия утвердившего. Через месяц по такой записи легко повторить правку на другом снимке или объяснить заказчику, что именно изменено на фотографии и почему результат принят.

Отдельно договоритесь, какие изменения допустимы в публикуемых материалах. Удаление пылинки с фона и замена целого предмета на изображении товара — разные по последствиям правки, и вторая требует письменного решения ответственного за каталог: карта различий показывает лишь размер изменения, а его допустимость решает человек.

// с чего начать

Возьмите одно фото и одну задачу, например удаление объекта. Сделайте три запуска с разным strength и одним seed, наложите результаты на исходник и выберите значение, при котором изменения остаются внутри маски.

Частые вопросы

Что такое inpainting в Stable Diffusion?
Это перерисовка выбранной области готового изображения. Модель получает исходник, маску и описание, заполняет белые пиксели маски по описанию и оставляет остальную картинку прежней.
Как работает маска в inpainting?
Белые пиксели обозначают область, которую модель перерисует, чёрные сохраняются. Размер маски должен совпадать с размером исходного изображения.
Какой checkpoint выбрать для inpainting?
Для естественного перехода берут checkpoint, обученный на inpainting, например Stable Diffusion Inpainting или SDXL Inpainting. Для простого удаления объекта иногда хватает обычного checkpoint.
Как сохранить область вне маски без изменений?
Используйте метод apply_overlay из библиотеки diffusers: он принудительно возвращает незамаскированную часть из исходника, хотя стык становится менее естественным.
Можно ли запускать Stable Diffusion inpainting локально?
Да, через библиотеку diffusers на своём компьютере или сервере. Размер видеопамяти ограничивает выбор модели, а условия лицензии нужно читать в карточке модели.