Regional Prompter 사용법 | 2차원 영역별 프롬프트 적용하기

스테이블 디퓨전으로 그림을 생성하다보면 종종 하나의 그림에 영역을 나눠 각각 다른 프롬프트를 적용하고 싶을 때가 있습니다. 이럴 때는 Regional Prompter를 사용하여 원하는 영역에 원하는 프롬프트를 반영할 수 있습니다. 본문에서는 Regional Prompter 사용법에 대해 자세히 살펴보도록 하겠습니다.

Regional Prompter의 필요성

스테이블디퓨전에서 상반된 두 개의 내용을 담고 있는 프롬프트를 하나의 그림에 동시에 적용해야할 때 평소 하듯 프롬프트를 입력하면 생각만큼 쉽게 그림을 그릴 수 가 없습니다. 예를 들어 인물의 머리, 상의, 하의 색을 다르게 지정하고 싶을 때 각각의 색상을 프롬프트에 입력하더라도, 실제로는 제대로 반영이 되지 않는 경우가 많습니다.

regional prompter 적용 유무 비교

위 예시 그림은 모든 설정값을 동일하게 설정하고 Regional Prompter을 미적용(좌)한 그림과 적용(우)한 그림을 비교한 결과입니다. 위 예시 그림을 생성하는데 사용한 프롬프트는 아래와 같습니다.

Prompt :
(best quality:1.5), (realistic:1.5), girl, solo BREAK
blue sky, (silver hair:1.4) BREAK
red blouse, trees, BREAK
(flowers:1.2), (blue plaid skirt:1.2),

프롬프트에서 볼 수 있듯 머리는 silver, 상의는 red, 하의는 blue를 지정했으나, regional prompter 확장 기능을 사용하지 않은 경우 상의 색상이 제대로 반영되지 않은 것을 볼 수 있습니다. 더불어 확장기능을 사용하지 않으면 인물 묘사와 함께 작성한 배경묘사 프롬프트인 blue sky, trees, flowers 또한 제대로 반영되지 않았습니다.

반면 regional prompter 확장기능을 적용한 결과 지정한 머리, 상의, 하의 색상은 물론, 배경또한 의도한대로 그려진 것을 볼 수 있습니다. 이처럼 regional prompter를 제대로 활용하면 영역별 세세한 디테일을 사용자의 의도대로 정확히 표현할 수 있습니다.

Regional Prompter 사용법

위에서 간략히 살펴본 것과 같이 Regional Prompter는 이미지의 영역을 나누어 프롬프트를 적용하는 기능인만큼 다양한 활용이 가능합니다. 필요에 따라 가로 또는 세로로 영역을 나눠야 하기도 하고, 각기 다른 영역에 다른 로라를 적용하거나, 혹은 특정 영역을 프롬프트가 아닌 인페인트로 지정하는 등의 응용이 가능합니다. 아래에서는 설치방법과 더불어 이러한 다양한 활용법에 대해 함께 살펴보겠습니다.

Regional Prompter설치

우선 일반적인 확장기능 설치와 마찬가지로 Regional Prompter를 설치합니다. Extensions 탭의 available에서 아래와 같이 검색하여 설치하거나, 혹은 Install from URL을 통해 확장기능을 설치한 뒤 WebUI를 재시작합니다.

regional prompter 설치

확장기능 설치가 익숙하지 않으신 분들이나 설치 방법에 대해 자세한 설명이 필요하신 분들은 아래 글을 참고하시기 바랍니다.

기본 사용법 및 설정값

먼저 기본 설정값을 살펴보면 다음과 같습니다. 각 설정값을 차례로 살펴보겠습니다.

regional prompter 기본 설정값

1차원 영역 구분(한 방향)

위에서 함께 확인한 설정값으로 그림을 생성하는 경우를 가정해보겠습니다. 현재 영역은 3개의 동일한 비율(1,1,1)로 나뉘고 있으며, Rows를 선택했기 때문에 상-하 방향으로 3개의 영역에 각각 프롬프트를 적용할 수 있는 상태입니다. 더불어 Use base prompt가 선택되었기 때문에 영역과 상관없이 그림 전체에 적용되는 프롬프트도 작성할 수 있습니다.

regional prompter 1차원 행구분

Prompt :
(best quality:1.5), (realistic:1.5), girl, solo BREAK
blue sky, (silver hair:1.4) BREAK
red blouse, trees, BREAK
(flowers:1.2), (blue plaid skirt:1.2),

각 프롬프트는 “BREAK”를 통해 구분합니다. 영역별 프롬프트를 작성한 뒤 마지막에 BREAK를 작성하고 줄바꿈을 하면 이를 기준으로 프롬프트가 구분됩니다. Base prompt를 가장 먼저 작성하고 BREAK를 붙여준 뒤 그 뒤를 이어 각 영역의 프롬프트를 작성합니다.

2차원 영역 구분(x,y 방향)

이번에는 그림의 영역을 x 및 y 즉, 2차원 방향으로 자유롭게 구분하여 프롬프트를 작성하는 방법을 살펴보겠습니다. 기본적으로 1차원 구분과 비슷하지만, 2차원의 경우 조금 더 복잡한데요, 일단 프롬프트에는 BREAK외에 ADDCOL, ADDROW를 함께 활용해야 합니다. 아래와 같은 설정으로 생성한 그림을 먼저 살펴보겠습니다.

regional prompter 2차원 구분
regional prompter 2차원 설정값

Base prompt를 사용하며, 주 영역 분할 방향(Main Splitting)을 Columns로 선택한 뒤 영역분할 비율인 Divide Ratio를 1,2,1,1;2,2,3로 설정했습니다. 먼저 Divide Ratio를 살펴보면, 중간에 쉼표가 아닌 세미콜론(;)이 사용되었는데요, 이를 기점으로 보조축인 Rows(행)를 구분합니다. 즉 ; 전후로 작성된 비율인 1,2,1,1과 2,2,3이 각각의 주축인 Columns(행)의 정보를 담고 있습니다. 이 정보의 가장 앞에 위치한 숫자는 행간 비율을 나타내는데요, 1,2,1,1의 가장 앞숫자인 1과 2,2,3의 가장 앞 숫자인 2는 행의 높이 비율이 1:2로 구성된다는 것을 의미합니다. 한편 두 숫자를 제외한 뒷쪽 숫자는 각 행을 다시 2:1:1비율과 2:3 비율의 열로 나누겠다는 의미입니다.

Prompt :
(best quality:1.5), (realistic:1.5), girl, solo BREAK
blue sky, ADDCOL,
(silver hair:1.4), ADDCOL
bookshelf, ADDROW
(flowers:1.2), ADDCOL
red dress and sofa

프롬프트는 앞서 1차원 때와 마찬가지로 Base prompt를 가장 먼저 BREAK로 구분해준 뒤, 위와 같이 ADDCOL, ADDROW를 활용해 각 영역을 작성합니다.

regional prompter 2차원 결과이미지

위의 결과 이미지와 같이 각 영역의 프롬프트와 확장기능 설정을 제대로 한 뒤 이미지를 생성하면 사용자의 의도대로 1장의 그림 내에서 각부위를 제어할 수 있습니다. 위에서 살펴본 1, 2차원 영역 프롬프트 사용법에서 더 나아가 인페인트로 영역을 설정하거나, 혹은 오픈포즈 등의 컨트롤넷을 함께 적용하면 더더욱 세밀한 이미지 제어가 가능합니다. 인페인트 영역 설정 및 컨트롤넷 복합 사용 방법 등에 대한 더욱 자세한 설명은 다른 글에서 다루도록 하겠습니다.