인페인팅(Inpainting)은 Stable Diffusion 모드 중 하나로서, 입력된 초기 이미지중에서 표시된 일부분만 변경하는 모드를 말한다. 그림의 배경을 바꾼다거나, 새로운 객체를 추가하고자 하는 경우 유용하다.
입력 이미지 지정
인페인팅을 사용하려면 먼저 입력용 이미지를 지정해야 한다. 입력용 이미지는 두 가지 방법으로 지정할 수 있다. 첫번째는 입력용 이미지를 직접 불러오는 것이다. 아래 그림에서 왼쪽 [Browse] 버튼을 누르고 원하는 그림을 불러오면 된다. 두번째는 Stable Diffusion 을 사용해 생성한 그림을 그대로 입력용 그림으로 지정하는 방법으로, 이미지에 마우스를 올리면 나타나는 버튼 메뉴에서 [Use as Input] 을 누르면 된다.
인페인트(InPaint)
이렇게 입력용 이미지를 입력하면 아래와 같이 프롬프트 입력란 아래에 입력 이미지가 나타나게 되는데, 오른쪽에 있는 [Inpaint] 버튼을 누르면 입력 이미지 중에서 변경하고자하는 영역(Mask)를 입력할 수 있다.
인페인팅이 시작되면 아래와 같은 화면이 나타난다. 인페인팅에서는 해당 입력 이미지 중에서 변경하고자 하는 부분을 그리면 된다. 인터페이스 자체는 그림판 보다 간단하므로 쉽게 그리거나 지우거나 한 뒤, 맨 아래에 있는 [Save] 버튼을 누르면 된다. 아래는 위 그림에서 오두막에 해당하는 부분만 표시한 것이다. [Picker] 버튼을 사용하면 마스크의 색을 바꿀 수 있지만, 이는 아무런 영향을 미치지 못한다.
입력용 이미지를 추가하는 경우, 이미지 설정(Image Settings)에 아래와 같이 "Prompt Strenth"라는 옵션이 새로 생긴다. 이 값을 높게 하면 원 이미지에서 멀어지게 되고, 낮은 값을 입력하면 원 이미지와 비슷해진다.
이렇게 인페인팅으로 바꿀 영역을 지정한 후, 그냥 이미지 생성을 해도 되고, 프롬프트를 추가하거나 변경할 수도 있다. 프롬프트를 변경하는 경우 현재의 프롬프트 앞에 원하는 내용을 추가하는 방식이 좋다. 이제 다시 이미지를 생성해보면, 전반적으로 비슷하지만, 지정한 영역은 약간 다른 새로운 이미지가 생성된다.
아래 왼쪽에 있는 원 이미지에 대한 프롬프트는 "painting a hut in the forest, by Vincent van GOGH"이며, 오른쪽 그림에 대한 새로운 프롬프트는 "drawing a man in front of a hut, in the forest, trees, stream, by Vincent van GOGH" 이다. 왼쪽에 나무가 더 있고 사람도 한 명 더 있었으면 하는 의도로 Mask를 설정했는데, 원하는 대로 되진 않았다. ㅠㅠ
아래는 위의 오론쪽 그림을 한번 더 인페인트 처리해서 사람이 서있는 모습을 추가해 본 결과이다.
===
드로우(Draw)
원하는 부분의 색도 함께 바꾸고자 하는 경우에는 드로우를 사용하여 변경시킬 수 있다. 아래는 오두막 부분만 자주색으로 바꾸라고 지정한 모습이다. (또한 Inpaint에서 동일한 영역을 Mask로 지정해야 한다.)
아래는 그 결과이다. Inpaint로 마스크를 칠한 지역만 새로 그리되, Draw로 지정한 영역에 대해서는 해당 색으로 그려졌음을 알 수 있다.
Inpaint 영역과 Draw 영역은 서로 영향을 미친다. 아래는 Inpaint를 지정하지 않을 경우이다. 이 경우, Draw로 지정한 영역에 오두막은 그리지만, 나머지는 완전히 새로운 그림이 만들어졌다.
아래는 Draw를 위와 같이 지정하고 InPaint 영역은 아예 비워둔 경우이다. 즉, Draw 영역과 InPaint 영역과 동일하다. 아무도 이걸 원하지는 않을 것 같다.
===
이상에서 보는 것처럼, Draw 영역과 Inpaint 마스크를 적절히 지정하면, AI 가 생성한 영상에 자신의 의도를 추가하여 새로운 이미지를 만들어 낼 수 있다.
(원문: https://github.com/cmdr2/stable-diffusion-ui/wiki/Inpainting)을 참고하여 완전히 새로 작성함
민, 푸른하늘