Inpainting и outpainting

Урок про точечное редактирование: заменить часть картинки или продлить её за края.

Inpainting — перерисовка выделенной маской области картинки по новому промпту. Outpainting — дорисовка картинки за её исходные границы.

Inpainting: чинить и заменять

Иногда картинка почти идеальна, но что-то не так: кривая рука, лишний предмет, неудачный фон. Inpainting позволяет выделить маску — область, которую нужно перерисовать, — и сгенерировать там новое содержимое по промпту, оставив остальное нетронутым.

исходник:      [небо][дерево][машина]
маска:               [    XXX     ]   (выделили машину)
промпт маски:  "красный велосипед"
результат:     [небо][дерево][велосипед]

Outpainting: расширить кадр

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

Как работает под капотом

Оба режима — частный случай img2img с маской. Внутри маски модель расшумляет «как обычно», а вне маски на каждом шаге латент возвращают к исходной картинке. Так перерисованная область естественно стыкуется с нетронутой: соседние пиксели служат контекстом через cross-attention и skip-связи U-Net. Для outpainting исходный кадр сначала помещают на больший холст, а пустые поля объявляют маской — дальше всё как в inpainting.

Частые ошибки

  • Слишком узкая маска. Если оставить мало места по краям, новая область плохо стыкуется; берите маску с запасом.
  • Промпт всей картинки вместо промпта области. Для inpainting описывайте то, что должно появиться в маске, а не всю сцену.
  • Резкие швы при outpainting. Дорисовывайте по чуть-чуть (узкими полосами), а не сразу огромное поле.

Сила зашумления и края маски

Внутри маски действует тот же denoising strength, что и в обычном img2img. Высокая сила (0.9–1.0) полностью перерисовывает область — удобно, когда нужно заменить объект целиком. Низкая (0.3–0.5) лишь правит то, что уже есть в маске, сохраняя форму. Отдельная важная настройка — размытие границы маски: резкая граница даёт видимый шов, а мягкая растушёвка в несколько пикселей помогает новой области плавно перетечь в старую.

Помните, что маска работает в латенте, который в 8 раз мельче картинки. Поэтому микроскопическая ретушь пиксель-в-пиксель (убрать один волосок) inpainting удаётся плохо — латент просто не хранит такого разрешения. Его стихия — замена целых объектов и крупных участков. Для тонкой ручной ретуши лучше подходит обычный графический редактор, а inpainting приберечь для содержательных правок.

Итог

  • Inpainting перерисовывает выделенную маской область, сохраняя остальное.
  • Outpainting дорисовывает картинку за её исходные границы.
  • Оба — частные случаи img2img с маской; вне маски латент держат близким к оригиналу для бесшовной стыковки.
Проверьте себя
1. Чем inpainting отличается от outpainting?
AНичем
BInpainting перерисовывает область внутри картинки, outpainting дорисовывает за её краями
CInpainting только для чёрно-белых картинок
DOutpainting не использует промпт
2. Как добиться бесшовной стыковки перерисованной области с остальной картинкой?
AПолностью игнорировать исходник
BВне маски на каждом шаге держать латент близким к оригиналу, используя соседние пиксели как контекст
CСтавить CFG = 0
DУдалить VAE