스테이블 디퓨전 프롬프트 가이드 및 매직 키워드 Top3

프롬프트(prompt)는 사용자 측면에서 스테이블 디퓨전으로 그림을 그릴 때 입력해야하는 가장 첫 단계이자 가장 중요한 요소입니다. 프롬프트를 어떻게 작성하느냐에 따라 좋은 그림이 되기도, 망한 그림이 되기도 하는만큼 스테이블 디퓨전 그림을 그리려면 오랜기간 연구를 해나가야 하는 부분입니다. 본 글에서는 스테이블 디퓨전 프롬프트의 기본적인 작성법과 요령 등을 살펴보고, 꼭 활용해야할 마법의 프롬프트 몇가지를 함께 소개해드리고자 합니다.

스테이블 디퓨전 프롬프트 가이드

기본적으로 스테이블 디퓨전 프롬프트는 모두 영어로 작성합니다. 프롬프트작성 방식에는 제한이 없기에 문장형 또는 단어 나열식 모두 가능합니다.

토큰

그리고자 하는 그림이 복잡하거나, 혹은 더욱 자세하게 설명하기 위해 프롬프트를 늘려나가다보면 토큰(token)도 함께 증가하게 됩니다. Automatic1111 WebUI의 경우 프롬프트 입력창 우측 상단에 현재까지 작성된 프롬프트의 토큰이 표기됩니다.

A1111 WebUI Token

Stability.ai의 설명에 따르면 스테이블 디퓨전은 75토큰 단위로 끊어서 중요도를 반영한다고 알려져 있습니다. 따라서 작성한 프롬프트의 토큰이 75토큰이 넘어가면 그 이후 150토큰 구간(76~150)까지는 첫 75토큰에 작성한 프롬프트 대비 덜 반영된다고 이해할 수 있습니다. 따라서 가능하다면 프롬프트는 첫 75토큰 내로 작성을 마치는 것이 가장 높은 정확도를 보이고, 그 이상의 프롬프트 작성이 불가피하다면 중요도에 따라 토큰 구간을 고려해서 작성하는 것이 좋습니다.

BREAK

만약 75토큰 이상의 장문의 프롬프트를 작성하는 경우, BREAK 문법을 활용하는 것을 고려해볼 수 있습니다. 스테이블 디퓨전 프롬프트 작성 중 문단을 바꿔 BREAK를 입력하면 바로 직전 작성부분 까지를 하나의 75토큰 단위로 묶어버리고, 그 이후에 문단에 작성되는 프롬프트는 그 다음 75토큰 단위로 강제로 넘기겠다는 의미입니다.

스테이블 디퓨전 프롬프트 BREAK 사용법

위 이미지에서 보시면 첫줄에 작성한 프롬프트들은 실제로는 다해도 30토큰이 채 되지 않는 양입니다. 하지만 BREAK를 걸어줌으로써 첫 75토큰에는 맨 윗줄의 30 토큰만 사용하고, 이후 3번째 줄에 작성한 프롬프트(실제로는 26토큰)는 76토큰부터 할당하겠다는 의미입니다. 이렇게 되면 스테이블 디퓨전 프롬프트 문법상 가장 윗줄과 마지막 줄을 구분해서 받아들이므로 중요도가 다르게 적용 됩니다. 이 문법을 적절히 잘 활용하면 표현하고 싶은 주제를 더욱 잘 드러나게 만들 수 있습니다.

긍정(positive)프롬프트와 부정(negative)프롬프트

WebUI 및 ComfyUI 모두 긍정과 부정 프롬프트를 나눠 작성하게 되어 있습니다. 긍정 프롬프트는 그림에 표현되었으면 하는 것들을 작성하는 반면 부정 프롬프트로는 그림에 나오지 않길 바라는 것들을 작성하시면 됩니다. 기본적으로 위에서 살펴본 바와 같이 토큰을 효율적으로 사용하기 위해 긍정 및 부정 프롬프트 모두 최대한 간결하고 정확한 단어를 잘 활용하는 것이 좋습니다. 단어로는 표현이 쉽지 않은 상황이나 행동 묘사 등에는 문장형으로 작성하셔도 무방합니다.

프롬프트 작성 순서 및 비중

75토큰 내로 작성된 프롬프트라도 그 작성 순서와 비중에 따라 중요도가 달라집니다. 따라서 그림에서 표현되어야 할 중요한 것들을 먼저 자세히 작성해주시는 것이 좋습니다. 예를 들어 만약 자동차를 그리고자 합니다. 그럼 자동차의 브랜드명, 모델명, 자동차의 앞모습을 보여줄 것인지 뒷모습을 보여줄 것인지, 달리고 있는지 멈춰 있는지 등 자동차 자체를 묘사하는 프롬프트를 먼저 작성합니다. 그 후 배경에 대해 묘사를 간략히 해주는 것이 좋습니다.

풍경 위주의 인물 그림

프롬프트 작성 순서와 비중의 중요도는 인물이 포함된 실사일수록 더욱 중요해집니다. 대부분 실사모델이 인물사진을 많이 학습한 결과, 비슷한 비중의 프롬프트를 작성하였더라도 인물 중심으로 그림을 그리곤 합니다. 이는 프롬프트 없이 그림을 그려보면 바로 확인할 수 있습니다.

스테이블 디퓨전 프롬프트 없이 그린 10장

퀄리티 프롬프트(best quality, realistic) 외에 다른 프롬프트를 하나도 주지 않고 그림을 그렸지만 10장 중 무려 9장의 그림에 여성의 얼굴이 강조된 그림이 등장하고야 맙니다. 남은 1장 마저도 배경이 강조되긴 했지만 전신 남성이 등장했습니다.

그럼 인물이 꽉 들어찬 그림보다는 인물이 멋진 풍경 속에 일부가 된 그림을 그리고 싶은 경우 어떻게 해야할까요? 이 때도 역시 풍경 중심의 프롬프트를 자세하게 앞쪽에 기술하는 것이 좋습니다. 그리고 그 비중을 인물 묘사 프롬프트 대비 조금 과도하다 싶을 정도로 많이 작성하게 되면, 비로소 풍경이 강조된 인물 그림을 그려낼 수 있습니다.

스테이블 디퓨전 프롬프트 작성 순서의 중요성 비교
  • 왼쪽 그림 : (best quality:1.5), (realistic:1.5), girl, solo, Paris,
  • 오른쪽 그림 : (best quality:1.5), (realistic:1.5), scenery, wide shot, Paris, Eiffel tower, cloudy sky, girl, solo,

위 그림을 통해 프롬프트의 작성 순서와 비중이 그림에 얼마나 큰 영향을 미치는지 확인할 수 있습니다. 비록 배경묘사 덕분에 에펠타워가 2개나 그려지고, 인물의 전신을 그리다보니 얼굴이 뭉개지는 등의 문제가 있지만, 이런 부분은 Hires.fix 및 다른 기술들로 충분히 극복이 가능한 부분입니다. 하지만 그림의 전체적인 주제와 구도는 처음에 한 번 잡히면 추후 수정이 어려운 부분입니다. 위와 같이 처음부터 프롬프트를 어떻게 작성하느냐에 따라 매우 큰 차이를 보이는 부분이기에 그만큼 프롬프트의 작성 순서 및 비중에 조금 더 신경을 써야 합니다.

일반적인 프롬프트 작성 순서

무난한 인물 그림을 그릴 때는 보통 아래의 순서를 참고하여 스테이블 디퓨전 프롬프트를 작성할 수 있습니다.

퀄리티 > 그림스타일(화풍) > 빛 or 특수효과 > 구도 > 인물(수, 성별) > 의상 > 배경

위 순서가 절대적인 것은 아닙니다. 앞서 설명드린 것처럼 배경이 강조되어야 할 경우라면 배경이 가장 앞으로 올 수도 있습니다. 단지 위 순서를 가이드로 작성하는 이유는 하나씩 살펴보면 어느정도 납득이 가는 부분인데요, 한 번 그림 그리는 과정을 스테이블 디퓨전 입장에서 생각해 보겠습니다.

스테이블 디퓨전은 사람의 그림 그리는 방식을 따르지 않습니다. 사람은 도화지에 어느 한 곳에서부터 그림을 그려나가는 방식으로 도화지의 빈 곳들을 순서대로 채워나갑니다. 반면 스테이블 디퓨전은 사용자가 입력한 해상도를 기준으로 노이즈 이미지를 준비한 뒤, 그 노이즈 이미지 전체로부터 서서히 그림을 만들어 냅니다. 즉, 스테이블 디퓨전은 그림 전체를 한번에 병렬식으로 그려냅니다. 따라서 우리가 프롬프트를 작성할 때 그림 전체에 영향을 주는 프롬프트부터 명확히 전달해주면 조금 더 프롬프트가 잘 반영된 그림을 그릴 수 있다는 것입니다.

위에서 제시해드린 스테이블 디퓨전 프롬프트 작성 순서를 다시 살펴보면, 그림 전반에 걸쳐 반영되어야 하는 그림의 전체 퀄리티, 스타일, 빛의 방향, 구도와 인물 등을 먼저 알려주는 것입니다. 그 뒤에 인물의 의상이나 배경의 디테일을 살려서 그림을 완성시키도록 합니다.

가중치

가중치는 프롬프트 내에서 상대적으로 더 중요한 단어나 문장을 강조하기 위한 스테이블 디퓨전 프롬프트 문법 입니다. 스테이블 디퓨전 프롬프트 문법에서는 아무런 표시가 없을 때 가중치를 1로 보며, 아래와 같이 괄호를 입히고, 숫자를 입력하여 사용자가 원하는 프롬프트에 가중치를 줄 수 있습니다.

괄호 1개를 감싸면 1.1배의 중요도(가중치)를 적용받고, 괄호 안에서 :숫자를 붙여주면 숫자만큼의 배수의 가중치가 적용됩니다. 이 때 보통 뒤에 적는 숫자는 0.1~2.0 사이의 값을 작성합니다.

언더바

스테이블 디퓨전 프롬프트를 작성할 때는 문장형 또는 단어 나열식 모두 가능하다고 말씀드렸습니다. 그런데 간혹 두 단어 이상으로 새로운 뜻을 갖는 복합어를 입력하면 간혹 스테이블 디퓨전이 제대로 알아듣지 못하는 경우가 발생합니다. 가장 대표적인 예가 바로 pencil skirt입니다. 한번에 pencil skirt를 그려주기도 하지만, 어떤 경우에는 연필(pencil)과 치마(skirt)를 따로 인식한 나머지 연필을 든 치마 입은 여성을 그리거나, 혹은 연필이 그려진 치마를 생성해내기도 합니다.

스테이블 디퓨전 프롬프트 문법상 이럴 때는 언더바(_)를 이용해 두 단어를 이어주면 하나의 단어로 인식하게 됩니다. 즉, 프롬프트에 pencil_skirt라고 입력하면 더이상 연필 따로, 치마 따로가 아닌 펜슬스커트 자체를 올바르게 인식하고 그려준다는 것입니다.

매직 키워드 TOP3

개인적으로 알아두면 매우 유용하다고 생각하는 매직 키워드(프롬프트) 3개를 공유드리고자 합니다. 지극히 개인적인 견해로 선정한 키워드며, 사용하는 모델에 따라 적용이 잘 안될 수도 있다는 점 양해 부탁드립니다.

Profile

(best quality:1.5), (realistic:1.5), profile, girl, solo, long hair,

보통 우리나라에서는 “프로필 사진”이란 용어 때문에 프로필이란 키워드가 마치 정면을 바라본 프로필 사진같은 그림을 그려줄 것처럼 들립니다. 하지만 profile이란 단어는 본래 옆모습을 의미합니다. 따라서 인물의 옆모습을 그리고 싶다면 과감하게 스테이블 디퓨전 프롬프트에 profile을 입력해보시기 바랍니다. 무슨 프롬프트를 써도 자꾸 우리를 바라보던 인물이 높은 확률로 옆을 바라보기 시작할 것입니다!

See from the air

(best quality:1.5), (realistic:1.5), see from the air, wide shot, from behind, garden full of flowers, girl, solo,

마치 드론을 띄워 촬영한 사진과 같은 와이드 뷰 그림을 그리고 싶을 때 자주 사용하는 키워드입니다. 왼쪽과 오른쪽 사진의 차이는 해당 키워드의 가중치를 안줬을 때, 1.4배 줬을 때의 차이입니다. 가중치를 더 줄수록 드론이 더 높이 날아 오른다는 사실!

View from

(best quality:1.5), (realistic:1.5), view from the balcony, princess, girl, solo, A-line dress, castle,

(best quality:1.5), (realistic:1.5), view from the deck, girl, solo, ocean,

See from the air가 공중에서 내려다본 풍경이었다면, View from OOO은 OOO에서 바라본 풍경을 그려냅니다. 예시 이미지처럼 “View from 전경, 인물, 배경 순”으로 프롬프트를 적어주면, 인물이 어떤 전경 속에 위치할 지, 어떤 풍경(view)을 그릴지를 따로따로 적어주면 인물이 OOO에 위치하고, 뒤에는 풍경이 펼쳐집니다!