AI 이미지/AUTOMATIC1111

소프트 인페인트

하늘이푸른오늘 2024. 3. 17. 17:19

소프트 인페인트(Soft inpainting)를 사용하면 원래의 이미지에 인페인트되는 내용을 이음매 없이 연결해 줍니다. 즉, 잡음 제거 강도(denoising strength)를 높게 유지하면서도 복잡한 장면에서 경계가 뚜렷하게 나타나는 현상을 막을 수 있습니다. 

아래는 소프트 인페인트의 예입니다.

배경 일반 인페인트 소프트 인페인

소프트웨어

이 글에서는 스테이블 디퓨전 모델의 웹 GUI 중에서 가장 대중적이고 널리 사용되고 있는 AUTOMATIC1111을 사용합니다. 설치 방법은 이 글은 보시고, 메뉴를 비롯한 기초적인 내용은 AUTOMATIC1111 가이드를 읽어보세요.

간단한 예제

배경 생성

먼저 배경을 생성합니다. 물론 배경을 생성하지 않고 기존 이미지를 사용할 수도 있습니다. (다만, 스타일이 비슷한 모델을 사용해야 합니다) txt2img 페이지에서 아래와 같이 설정합니다.

모델 : Dreamshaper 8
프롬프트 : A forest, highly detailed
부정적 프롬프트 : natural, colorful, deformed, sketch, low contrast, watercolor
샘플러(sampling method) : DPM++2M Karras
샘플링 단계(steps) : 20
CFG 척도: 7
이미지 크기: 512x768

아래는 이렇게 생성한 이미지중 하나입니다. 

일반 인페인트

이제 인페인트를 적용해 이 이미지에 병사를 추가해 보겠습니다. 먼저, 원하는 이미지 아래에 있는 버튼 에서 [Send to Inpaint] 버튼을 클릭합니다. 

다음으로 삽입하고자 하는 곳을 마스킹합니다.

프롬프트는 "back of soldier in a forest, highly detailed"로 바꿔주고요, 인페인트 설정은 아래와 같이 바꿔줍니다.

Inpaint Area : Whole Picture
Denoising Strength : 1

그 다음 [Generate] 버튼을 눌러 이미지를 생성합니다. 아래는 생성된 이미지중 하나입니다.

이 이미지는 생성된 이미지 중에서 병사가 일부 잘린 이미지를 고른 것이지만, 나머지 이미지들도 배경과 병사의 경계가 뚜렸하게 나타나는 경우가 많습니다. 인페인트된 지역이 나머지 지역과 일관성이 없는 경우도 많고요.

이런 현상은 잡음 제거 강도(denoising strength)를 낮추거나 콘트롤넷 인페인트를 사용하면 됩니다. 예를 들면 잡음제거강도를 0.75 정도로 낮추면 아래와 같은 이미지를 얻을 수 있습니다.  아래는 위의 이미지와 씨드(Seed)를 동일하게 했는데도 사람이 작게 나왔지만, 어쨌든 배경과 잘 어우러지는 이미지를 얻을 수 있습니다.

소프트 인페인트

소프트 인페인트(soft inpainting)은 원래의 이미지에 새로운 내용을 이음매 없이 추가해주는 기법입니다. 먼저 아래와 같이 Soft Inpainting을 활성화시켜주고, Mask blur를 40으로 설정합니다. 잡음 제거 강도는 1로 유지합니다. 

이제 [Generate]를 누르면 높은 잡음제거 강도를 유지하면서도 전체적으로 일관성이 높은 이미지를 얻을 수 있습니다. 

소프트 인페인트의 작동원리

소프트 인페인트는 마스킹된 영역과 아닌 영역간의 중간부분을 부드러운(grayscale) 마스크를 사용해 부드럽게 전이되도록 하는 방법입니다. 반면 일반 인페인트의 경우엔 마스크가 black&white라서 경계가 마스킹되는 영역의 경계가 뚜렸합니다.

전이되는 영역에서는 인페인트된 잠상(latent image)와 원본 이미지가 혼합되어 매끄럽게 이어지게 됩니다. 소프트 마스크는 원본 이미지와 생성된 인페인트 이미지를 비교하여 자동적으로 생성되지만, 설정을 바꾸면 영향의 정도를 바꿔줄 수 있습니다.

소프트 인페인트 설정

소프트 인페인트 영역의 오른쪽 삼각형을 누르면 아래와 같이 여러가지 설정이 들어 있습니다.

Schedule bias (스케줄 바이어스)

스케줄 바이어스는 각 단계에서 원본 이미지의 보존 강도를 조절합니다. 기본값인 1을 사용할 경우, 보존 강도는 각 단계의 예상 잡음 레벨(잡음 스케줄)과 비례하게 됩니다. 

또한 1보다 크게 설정하면 처음에 원본 이미지를 많이 보존하는 방식으로, 1보다 작게 설정하면 끝부분에서 원봉 이미지를 많이 보존하는 방식으로 작동됩니다. 

아래는 Schedule bias 를 변화시키며 이미지를 생성한 결과입니다. Schedule bias값을 높일 수록 병사가 작아져서 원본 이미지가 많이 보존됨을 알 수 있습니다. 또한 이 값을 낮추면 인페인트된 이미지가 더 많이 나타나지만, 전방적인 구성을 설정할 때 원본 이미지가 보존되지 않아 잘 섞이지 않습니다.

0.5 1 2

Preservation Strength (보존 강도)

Preservation Strength 는 원본 이미지가 보존되는 양을 제어합니다. 스케줄 바이어스와 비슷하지만 효과가 선형이라는 차이가 있습니다. 

이 값을 높게 설정할 수록 원본 이미지가 많이 보존됩니다. 대부분의 경우 기본 값인 1로 설정하면 적절하게 균형이 맞게 됩니다. 예제는 생략합니다. 

Transition contrast boost(전이 대비 강조)

전이 대비 강조는 원본 이미지와 인페인트 이미지를 얼마나 세밀하게(sharply) 섞이게 할 것인지를 설정합니다.

값이 낮으면 부드럽게 블렌딩되어 인페인트 영역으로의 전환이 부드러워집니다.  이 값을 낮게 설정하면 병사를 작게 압축하여 부드럽게 전환합니다. 값이 높으면 강한 대비가 만들어집니다. 원본 이미지로의 전환이 급격하게 이루어집니다. 예제는 생략합니다.

Mask Influence(마스크 영향)

소프트 인페인트의 마스크는 원본 이미지와 인페인트된 이미지간의 차이를 비교하여 생성됩니다. 

Mask Influence는 이 과정에서 인페인트 마스크가 어느정도 역할을 할 것인지를 제어합니다. 0은 마스크를 무시하고 원본 이미지와의 차이만 고려하며, 1로 설정하면 마스크를 밀접하게 따라갑니다. 예제는 생략합니다.

Differnce threshold

Difference threshold 는 인페이트된 이미지에 따른 변화정도를 제어합니다.

difference threshold값을 크게하면 원본 이미지가 더 많이 나타나게 되어 페이드아웃(fade-out)효과를 생성합니다. 예제는 생략합니다.

Difference contrast

difference contrast는 원본 이미지와 새로 생성된 이미지간의 전이가 얼마나 부드럽게 이루어지는지를 제어합니다. 이 값도 Difference threshold 와 마찬가지로 페이드아웃(fade-out)효과를 생성합니다. 예제는 생략합니다.

이상입니다. 이 글은 https://stable-diffusion-art.com/soft-inpainting/ 를 번역하면서 예제를 대체하는 방식으로 작성한 글입니다.

민, 푸른하늘