소프트 인페인트(Soft Inpaint) | WebUI 1.8 업데이트

WebUI가 굉장히 오랜만에 1.8 버전으로 업데이트 되면서 몇가지 기능이 추가되었습니다. 그 중 Img2Img의 기존 인페인트 기능에 추가적으로 소프트 인페인트(Soft Inpaint)라는 항목이 생성되었습니다. 개인적으로 스테이블 디퓨전의 가장 큰 장점이 바로 사용자가 자유자재로 사용할 수 있는 인페인트 기능이라고 생각하는데요, 소프트 인페인트 기능이 추가되면서 그 활용성이 더욱 막강해지고 있다고 느껴집니다. 본문에서는 소프트 인페인트의 사용법과 기존 인페인트 기능과의 차별점에 대해 살펴보고자 합니다.

WebUI 1.8 버전 업데이트

A1111 WebUI가 처음 등장한 초창기의 분위기와 달리 최근에는 판올림에 해당하는 메이저 업데이트 주기가 점차 늦어지고 있습니다. 이는 WebUI가 아니더라도 ComfyUI 및 기타 온라인을 통해 스테이블 디퓨전을 접할 수 있는 다양한 서비스들이 생겨났기 때문이기도 하지만, 무엇보다 현재 WebUI의 기능 완성도가 매우 높아졌기 때문이기도 합니다. 이런 상황에서 1.8 버전으로 업데이트가 되면서 많은 유저들이 업데이트 내용에 대해 기대하는 바도 클 수밖에 없었는데요, Automatic1111 WebUI 1.8 버전에서는 대표적으로 아래와 같은 기능이 개선 및 추가되었다고 합니다.

  • 소프트 인페인트(Soft Inpainting)
  • FP8 support
  • SDXL 인페인트 모델 지원
  • 선택적 Hires.fix 진행 버튼 추가
  • LCM 샘플러 공식 지원
  • 체크포인트, 로라 모델 등 탐색기 모드 추가(Tree view)

소프트 인페인트는 아래에서 조금 더 자세히 다룰 예정이므로, 개선 사항 중 눈에 띄는 2가지를 살펴보면 바로 Hires.fix를 선택적으로 진행하는 것과, 탐색기 모드가 추가된 점입니다.

선택적 Hires.fix

기존에는 hires.fix로 업스케일을 하려면 Generate 버튼을 눌러 이미지를 생성하기 전에 모든 설정을 마친 뒤 한 번에 생성해야 했습니다. 때문에 여러 이미지를 만들어 보고 그 중 마음에 드는 이미지만 Hires.fix로 진행하려면, 시드 값을 포함해 마음에 드는 이미지의 모든 설정을 다시 입력한 뒤 진행해야 했습니다.

hiresfix directly done

하지만 WebUI 1.8 버전에서는 더이상 이런 수고를 할 필요가 없습니다. 위의 예시처럼 마음에 드는 이미지를 선택한 뒤 하단의 최 우측에 위치한 아이콘을 누르면 현재 설정되어 있는 Hires.fix 설정값을 기준으로 바로 해당 이미지의 업스케일링을 진행합니다.

Extra Networks Tree view

Checkpoints, Lora 등 자주 사용하는 모델들을 폴더로 분류해 놓더라도 점차 모델의 수가 많아질수록 WebUI 상에서는 이를 한 눈에 파악하기가 매우 어려웠습니다.

업데이트 이후에는 위 예시처럼 우측 상단의 트리뷰(Tree View) 버튼을 누르면 좌측에 모델 탐색기가 나타나며 계층 구조로 내가 저장하고 있는 모델들을 한눈에 쉽게 파악할 수 있도록 바뀌었습니다.

소프트 인페인트

스테이블 디퓨전의 기존 인페인트 만으로도 매우 강력한 생성형 이미지 편집을 가능케하는 기능이었습니다. 하지만 기존에는 수정된 부위와 원본이미지간의 경계를 자연스럽게 만들기 위해서 종종 추가적인 리터칭이 필요했습니다. 하지만 이번에 추가된 소프트 인페인트를 활용하면 기존보다 훨씬 자연스러운 경계처리가 가능해지면서 사용자가 추가로 손보지 않아도 그럴듯한 이미지 수정이 가능해졌습니다.

소프트 인페인트 vs 일반 인페인트 결과 비교

먼저 소프트 인페인트와 단순 인페인트로 배경속에 인물을 생성한 경우를 비교한 예시 이미지를 비교해보겠습니다. 모든 설정은 동일하게 하고, 인페인트를 진행했지만, 기본 설정에서 단순 인페인트를 진행 경우 마스킹 영역의 경계 부분이 원본 이미지와 이어지는 모습이 부자연스러워 한 눈에 봐도 그 경계가 보일 정도입니다.

이런 경계의 어색함을 조금 완화하기 위해 단순 인페인트에 마스크 블러(mask blur) 값을 40으로 증가시켜(기본값은 4) 이미지를 생성한 결과 경계 처리가 아주 조금 부드러워지기는 했지만 여전히 마스킹 영역 자체가 전체 이미지와 융화되지 않는 모습입니다.

마지막으로 소프트 인페인트를 설정하고 마스크 블러 40을 준 상태로 이미지를 생성한 결과, 인물의 해상도가 배경 해상도대비 조금 떨어져 이질감이 있긴 하지만 앞서 두 이미지와는 다르게 마스킹 영역이 전반적으로 배경에 잘 녹아들어 자연스럽게 연결된 것을 볼 수 있습니다.

이렇게 결과 이미지가 달라지는 이유는 실제 사용자가 마스킹한 부분이 이미지 생성 시 어떤 식으로 반영되는지를 확인해보면 확실히 체감할 수 있습니다. 위 이미지는 앞서 단순 인페인트와 소프트 인페인트로 배경속에 인물을 생성하면서 함께 저장한 인페인트 마스킹 이미지입니다. 실제로는 사용자가 인페인트를 위해 마스킹한 영역이 그대로 사용되는 것이 아니라, 여러 설정값이 복합적으로 반영되어 위와 같은 형태로 스테이블 디퓨전이 받아들이고 그림을 생성하는 것입니다.

마스킹 이미지에서 볼 수 있듯 소프트 인페인트의 마스킹 이미지는 이미 그 자체로 단순 인페인트의 마스킹 이미지와 차이가 있습니다. 마스킹 경게 자체가 마스킹 영역 중앙으로 올수록 점진적으로 짙어지는 것을 볼 수 있는데요, 이에 따라 실제 이미지 생성 시 원본과 새로 생성되는 이미지간의 경계가 부드럽게 처리된다는 것을 알 수 있습니다.

위에서는 단순히 소프트 인페인트 기능을 활성화하여 사용해봤는데요, 실제로는 아래와 같이 소프트 인페인트 항목 내 다양한 파라미터들을 세부적으로 컨트롤 할 수 있습니다.

위 항목 중 Pixel Composite Settings는 실제로 이미지 생성시 크게 건드릴 부분이 없으므로 그 외 항목에 대해서만 간략하게 살펴보면 다음과 같습니다.

Schedule bias

Schedule bias는 원본 이미지 보존 강도를 제어할 수 있는 설정값입니다. 1을 기준으로 높은 값을 줄수록 마스킹 영역 가장자리가 원본에 더 가깝게 처리되어 그리려고 하는 그림이 작게 그려집니다. 반대로 1보다 낮은 값을 주면 그리려는 그림이 마스킹 영역 가장자리까지 넓게 그려지는 반면 원본 이미지가 덜 보존되므로 경계 처리가 부자연스러워질 수 있습니다.

Preservation strength

원본 이미지 내에서 마스킹한 영역이 얼마나 원본에 가깝게 유지되게 할 것인지를 결정합니다. 높은 값을 줄수록 원본 이미지를 그대로 남기려는 경향이 강해집니다.

Transition contrast boost

소프트 인페인트를 진행할 때 마스킹 영역 가장자리가 얼마나 원본과 자연스럽게 섞이면서 전환될것인지를 결정합니다. 값이 높을수록 경계의 변화 대비(transition contrast)가 강해지기 때문에 자연스러운 인페인팅을 위해서는 적절한 값을 사용하는 것이 좋습니다.