Stable Diffusion inpainting перерисовывает только выбранную область готового изображения: вы подаёте исходник, маску и описание того, что должно появиться на месте белых пикселей. Остальная картинка должна остаться прежней, и это условие проверяют сравнением с исходником. Способ подходит для точечных правок вроде удаления лишнего предмета и замены детали, но для картинок, где достоверность важнее вида, результат требует осмотра человеком.
Что меняет маска
На вход идут три вещи: исходное изображение, маска, где белые пиксели обозначают область для перерисовки, а чёрные остаются прежними, и текстовое описание новой области.
Условный сценарий: фото блюда для меню, на краю стола лежит лишний предмет. Задача — убрать его и оставить тарелку, свет и фон такими, как на снимке. Маска закрашивает только предмет и небольшой запас вокруг, промпт описывает то, что должно быть на этом месте, например «деревянная поверхность стола».
Чем 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 принудительно возвращает незамаскированную часть из исходника. Ценой становится менее естественный стык, зато вне маски пиксели совпадают с оригиналом.
Что из правок изображений вы хотите вынести в отдельную задачу?
Сверка с исходником
Приёмка начинается с накладывания результата на оригинал. Скрипт вычисляет разницу между изображениями и показывает, где изменились пиксели. Если изменения вышли за маску, значит, модель тронула лишнее, и вариант возвращается на доработку или проходит через apply_overlay.
- Сохраните исходник, маску, промпт, значения параметров и seed в одну папку задачи.
- Запустите правку и сохраните результат под новым именем, а исходный файл оставьте нетронутым.
- Постройте карту различий между исходником и результатом и убедитесь, что она ограничена маской.
- Осмотрите стык на полном размере: ищите повторяющиеся текстуры, смазанные линии и изменение цвета.
- Утвердите вариант записью в журнале с именем проверяющего.
| Критерий приёмки | Как проверяется | Кто решает |
|---|---|---|
| Изменения лежат внутри маски | Карта различий с исходником | Скрипт |
| Стык незаметен на полном размере | Осмотр без масштабирования | Дизайнер |
| Цвет и форма товара соответствуют реальным | Сверка с фотографией изделия | Контент-менеджер |
| Права на изображение подтверждены | Запись об источнике и согласиях | Ответственный за публикацию |
Автоматическая карта различий отвечает на вопрос «что изменилось», а вопрос «стало ли лучше» остаётся за человеком. Для каталога товаров есть и дополнительная проверка: цвет, форма и надписи на упаковке должны совпадать с реальным изделием, иначе покупатель увидит то, чего нет в продаже. Подход к снимкам товаров описан в статье про карточки без фотостудии.
Границы правки
Inpainting плохо справляется с текстом, логотипами и мелкими деталями вроде цифр на ценниках: модель рисует правдоподобные формы, а читаемые символы получаются редко. Такие области лучше править в графическом редакторе. Для правки лиц и фигур людей заручитесь согласием тех, кто на снимке, и сверьтесь с правилами маркировки вашей площадки.
Исходные фото клиентов и сотрудников держите на своём компьютере или сервере: локальный запуск через diffusers оставляет данные внутри компании. Для подтверждения достоверности используйте исходник как эталон, а готовый результат публикуйте только после проверки. Если вам нужна устойчивая цепочка правок и приёмки изображений, она собирается как часть автоматизации бизнес-процессов.
Журнал правок защищает команду от спорных ситуаций. Для каждого изображения в нём лежат исходник, маска, параметры, итог и фамилия утвердившего. Через месяц по такой записи легко повторить правку на другом снимке или объяснить заказчику, что именно изменено на фотографии и почему результат принят.
Отдельно договоритесь, какие изменения допустимы в публикуемых материалах. Удаление пылинки с фона и замена целого предмета на изображении товара — разные по последствиям правки, и вторая требует письменного решения ответственного за каталог: карта различий показывает лишь размер изменения, а его допустимость решает человек.
Возьмите одно фото и одну задачу, например удаление объекта. Сделайте три запуска с разным strength и одним seed, наложите результаты на исходник и выберите значение, при котором изменения остаются внутри маски.