내가 자고 있는 동안에도 컴퓨터가 알아서 그림을 그려준다면, 생각보다 더 많은 분야에 스테이블 디퓨전 그림을 활용할 수 있지 않을까요? 확장 기능 중 다이나믹 프롬프트(dynamic prompt)의 스테이블 디퓨전 와일드카드를 활용하면, 매 순간 직접 프롬프트를 바꾸지 않더라도 WebUI가 알아서 프롬프트를 바꿔가며 무한히 그림을 생성하게 만들 수 있습니다.
와일드카드란?
와일드카드는 스테이블 디퓨전 사용자가 프롬프트에 작성하고 싶은 다양한 프롬프트를 텍스트 파일(.txt)로 저장해 놓은 것을 의미합니다. Automatic1111 WebUI의 확장기능을 설치한 뒤, 이 텍스트 파일을 와일드카드 폴더 내에 담아두면, WebUI 내에서 프롬프트를 작성할 때 해당 텍스트 파일을 불러올 수 있습니다. 와일드카드 기능을 활용하면 WebUI는 사용자가 불러온 텍스트 파일 속에 담긴 다양한 프롬프트 중 1개의 프롬프트를 무작위로 적용시킵니다.
와일드카드의 필요성
생성형 이미지라는 말에서 유추할 수 있듯 스테이블 디퓨전으로 그리는 그림은 아직까지 매번 그림을 그릴 때마다 일관성을 유지하는 것이 어렵습니다. 물론 컨트롤넷(ControlNet)과 기타 다른 기술들을 활용하여 어느정도의 일관성을 확보할 수는 있지만 아직 상업적으로 이용할 수 있을만한 수준에 도달하려면 갈 길이 멀어보입니다.
때문에 원하는 이미지를 얻기 위해 어쩔 수 없이 뽑기(?)에 의존하는 경우가 많습니다. 비슷한 프롬프트로 여러장을 생성한 뒤 그 중에서 가장 괜찮은 그림을 골라 세부 수정을 하면서 그림을 완성하는 것입니다. 이를 가챠(?)라고 부르기도 하는데요, 스테이블 디퓨전 와일드카드를 활용하면 가챠를 자동화할 수 있게 됩니다.
또 다른 경우로는 스테이블 디퓨전을 일종의 아이디어 뱅크로 사용하는 것을 생각해볼 수도 있습니다.어떤 그림을 그려야 할 지 도무지 아이디어가 떠오르지 않을 때, 와일드카드의 범위를 넓게 잡고 작성한 여러개의 외일드카드를 복합적으로 사용하면, 평소 생각해보지도 못한 새로운 그림을 획득할 수도 있습니다.
스테이블 디퓨전 와일드카드 사용법
스테이블 디퓨전 와일드카드를 사용하는 방법은 생각보다 어렵지 않습니다. 앞서 와일드카드의 필요성에서 말씀드린 것처럼 메모장으로 작성한 프롬프트 묶음과, 이를 활용할 수 있도록 도와주는 확장기능인 다이나믹 프롬프트를 설치하기만 하면 간단히 이용할 수 있습니다.
다이나믹 프롬프트 설치
다이나믹 프롬프트(dynamic prompts)는 역시 A1111 WebUI의 확장기능 탭에서 검색으로 설치가 가능합니다. [Extensions > Available > Load from > dynamic prompts 검색]을 하면 아래와 같은 화면이 나타납니다.
예시 이미지에서는 이미 다이나믹 프롬프트가 설치되어 있기 때문에 Action 탭에 Installed라고 나오지만, 아직 설치하지 않으신 분들은 Install을 눌러 해당 기능을 설치하신 뒤 WebUI를 껐다 다시 켜주시기 바랍니다.
Install from URL로 설치하실 분들은 아래 Github 페이지의 주소를 복사하신 뒤 [Extensions > Install from URL > URL for extension’s git repository > Install]의 순서로 설치를 진행하시면 됩니다. 마찬가지로 설치를 마친 뒤에는 WebUI를 종료 후 다시 시작해주시기 바랍니다.
설치를 잘 마친 분들은 WebUI 상단 탭에서 Wildcard Manager라는 탭이 생성됩니다.
와일드카드 작성
이제 스테이블 디퓨전 와일드카드를 작성해보도록 하겠습니다. 와일드카드는 텍스트 파일이기 때문에 메모장을 열어주시면 됩니다. WebUI에서는 메모장에 작성된 1줄을 각 한 묶음으로 인식합니다. 예를 들어 아래와 같은 와일드 카드를 작성한 경우를 살펴보겠습니다.
위 예시 이미지는 Extremely_Beautiful_Clothes라는 파일명을 가진 와일드카드를 캡쳐한 것입니다. 내용을 보면 마치 프롬프트를 작성하듯 단어들을 적고, 괄호를 통해 가중치를 표현하고 있습니다.
- 1행 : (Classic_white_blouse:1.6),(Tailored_black_trousers:1.5),(Gold_chain_necklace:1.4),(Office_cubicle_background:1.3)
- 2행 : (Floral_summer_dress:1.5),(Strappy_sandals:1.4),(Straw_hat:1.3),(Picnic_park_background:1.2)
- 3행 : (Denim_jacket:1.4),(High-waisted_shorts:1.3),(Sneakers:1.2),(City_street_background:1.4)
이렇게 작성된 와일드카드를 WebUI에서 불러와 사용하면 그림을 그릴 때마다 1행~마지막행 중 1개의 행이 무작위로 프롬프트에 삽입되는 것입니다.
작성을 마친 와일드카드는 [WebUI 설치 경로 > extensions > sd-dynamic-prompts > wildcards 폴더]에 저장합니다.
와일드 카드 자체를 폴더에 분류하고 싶으신 분들은 wildcards 폴더 내 새로운 폴더들을 만들어서 와일드카드를 저장해 사용하셔도 무방합니다. WebUI에서는 자동으로 wildcards 폴더 내 만들어진 새로운 디렉터리도 인식하여 올바르게 동작합니다.
Chat GPT 도움 받기
만약 스테이블 디퓨전 와일드카드에 작성할 내용이 떠오르지 않는다면 ChatGPT의 도움을 받는 것도 좋은 아이디어입니다. 예를 들면 아래와 같이 질문할 수 있습니다.
아래 예시를 참고해서 세계 수도 20곳의 풍경을 단어 나열식으로 묘사해줘. 단어 구분은 쉼표(,)로 하고 영어로 작성해줘. 예시) Paris, Eiffel Tower, Seine river, Alexandre bridge, rainny day,
예시와 질문을 조금 더 구체적으로 작성하여 요청할수록 ChatGPT가 더 구체적으로 묘사된 프롬프트를 작성해줄 수 있습니다. 이렇게 얻은 프롬프트를 와일드카드에 붙여넣기만 하면 직접 생각하지 못했던 다양한 상황과 구도, 인물의 외모 등을 담아낼 수 있습니다.
와일드카드 프롬프트 작성
이제 이렇게 준비한 스테이블 디퓨전 와일드카드를 직접 WebUI 상에서 불러오는 작업을 해보도록 하겠습니다. 기본적으로 와일드카드의 파일명에 앞뒤로 언더바 2개를 붙이면 WebUI 프롬프트 내에서 동작합니다.
프롬프트 작성 란에 __Extr 까지만 작성해도 이미 와일드카드가 뜨는 것을 볼 수 있습니다. 예시에서는 wildcards 폴더 안에 Clothes라는 폴더를 하나 더 생성하고 그 폴더 내에 와일드카드를 저장했기 때문에, 자동완성에서도 와일드카드의 경로를 Clothes/Extremely_Beautiful_Clothes로 제대로 인식하는 것을 확인할 수 있습니다. 따라서 자동완성을 선택하면 아래와 같이 프롬프트에 올바르게 와일드카드가 적용됩니다.
스테이블 디퓨전 와일드카드는 긍정 프롬프트 뿐만아니라, 부정 프롬프트에도 작성이 가능합니다. 또한 와일드카드 외에 다른 프롬프트와 섞어서 사용도 가능하며, 다수의 와일드카드를 동시에 사용하는 것도 물론 가능합니다. 즉, 기존에 프롬프트를 작성하던 것과 동일하게 WebUI를 사용하면서 필요하실 때 와일드카드를 원하는 만큼 추가로 작성하여 사용하면 됩니다.
예를 들어, 1girl, solo, long hair라는 프롬프트를 작성하고 그 뒤에, 색상 와일드카드 + 상의 종류 와일드카드 2개를 붙여 사용하면, 그림을 그릴 때마다 다른 색상의 상의를 입은 인물을 그려내게 됩니다.
무한 그림 생성 Generate forever
이제 스테이블 디퓨전 와일드카드를 사용하는 방법에 대해 알게 되었습니다. 하지만 그림을 그릴 때마다 무작위로 다시 작성해야 했던 프롬프트 작성의 수고는 덜었지만 여전히 그림을 생성하기 위해서는 직접 버튼을 클릭해야합니다. 배치 수(Batch count) 또는 배치 사이즈(Batch size)를 늘려 생성하는 것도 방법일 수 있지만, 그보다 더 근본적으로 WebUI가 알아서 계속 그림을 생성하게 하는 방법이 있습니다. 바로 Generate forever를 이용하는 것입니다.
WebUI에서 그림 생성 시 우측의 Generate 버튼을 누르게 되는데요, 이 버튼을 바로 클릭하지 않고, 마우스 우클릭을 하면 위 그림과 같은 옵션이 나타납니다. 여기서 Generate forever를 선택해주면, 사용자가 취소하기 전까지 WebUI는 무한으로 스테이블 디퓨전 그림 생성에 돌입합니다.