[ ComfyUI ] 프롬프트
포스트
취소

[ ComfyUI ] 프롬프트

HitCount


Contents


프롬프트

프롬프트는 AI 시스템이 수행해야 할 창의적인 작업이나, 생성해야 할 창의적인 콘텐츠의 방향을 결정하기 위해 전달하는 입력(명령) 또는 지시문을 말합니다.
프롬프트는 작성 방법에 따라 생성되는 콘텐츠의 스타일이나 품질, 내용 등이 크게 달라 질 수가 있습니다.
아래는 프롬프트가 통상적으로 가지는 중요한 역활을 나열한 것입니다.

1
2
3
4
1. 작업의 목적과 범위 정의   
2. 출력 형상과 스타일 지정   
3. AI의 행동 및 응답 방식 지정   
4. 특정 정보나 지식의 활용을 지시   

여기서는 이미지 생성을 위한 인공지능 모델인 스테이블 디퓨전(Stable Diffusion)에서 사용하는 프롬프트 작성법에 대해 알아 보겠습니다. 아래에 설명할 기본 작성법을 잘 활용하면 효과적인 프롬프트 작성이 가능하며, 이는 바로 응답에 대한 품질을 높여 줄 것이며, 원하는 결과에 근접한 이미지를 얻을 수 있도록 도울 것입니다.

기본 작성법

프롬프트는
구체성 구체적으로 작성되어야 하며,
명료성 모호한 내용이나 불필요한 단어를 사용하지 않으면서 명확해야 하며,
간결성 간결하게 표현하고,
연관성 원하는 주제 또는 장면에 맞는 적절한 키워드나 문구를 선정하여야 합니다.

키워드

프롬프트를 작성할 때 문장으로 나열하기 보다는 핵심 키워드를 사용하여 간단하고 명료하게 작성하는 것이 스테이블 디퓨전 모델에서는 이해하기 쉬워 원하는 결과를 얻는데 더 효과적입니다.
예를 들면 girl passing by snack corner라는 문장보다는 snack corner, girl, passing by와 같이 키워드를 콤마(,)로 구분하여 표현하는 것이 더 좋습니다.
프롬프트의 키워드 작성 순서는 이미지 생성에 영향을 미치지는 않습니다. 그렇지만 순서를 변경하면 처리 순서가 변경되어 생성되는 이미지도 바뀌게 됩니다. 어디에서 보면, 생성하고자 하는 이미지에서 가중치를 주어야하는 키워드는 앞부분에 배치하라고 권장하고 있습니다. 이는 더 많은 가중치가 부여되는 것이 아니라, 한 번에 처리 가능한 프롬프트의 수에는 제한 때문에 뒤에 가면 적용이 되지 않을 수 있기 때문에 오인한 것으로 판단이 됩니다.
예를 들면 snack corner, girl, passing bygirl, snack corner, passing by는 다른 결과의 이미지를 얻습니다. snack corner를 가장 앞에 둔 프롬프트의 경우 전자의 girl과 후자의 girl은 동등한 가중치를 부여 받지만 위치에 따라 생성되는 이미지는 약간의 차이를 보입니다. 아래에서 설명할 대괄호나 괄호, 숫자 등의 표기법으로 가중치를 부여하지 않는 한은 생성에 참조하는 키워드 순서에 따라 처음 참조 키워드가 무엇이냐에 따라 가중치를 부여받는 듯한 인상을 줍니다.

괄호와 대괄호

Stable diffusion은 사용자가 생성하고자 하는 이미지에 최대한 가깝게 하기 위해 프롬프트를 세부적으로 조정할 수 있는 다양한 방법을 제공합니다. 특정 키워드를 여러번 반복적으로 사용하여 확률을 높여 가중치를 높여 줄 수는 있지만, 한정된 토큰과 불필요한 토큰 처리를 줄여주기 위해 아래에 제시된 몇가지 방법을 사용합니다. 그 중 하나가 괄호와 대괄호입니다. 특정 단어나 문장을 강조하고자 할 때는 괄호 기호((, ))를 사용합니다. 괄호가 있는 경우 더 가중치가 높게 적용되며, 괄호의 중첩이 많을 수록 더 가중치가 증가하게 됩니다.
예를 들면, snack corner, ((girl)), (beauty), passing by와 같이 프롬프트를 작성하였다면, girl, beauty, snack corner, passing by의 순서로 가중치가 부여됩니다. 아무 기호가 없는 것은 기본 가중치인 1.0의 가중치를 부여 받습니다. 이와 반대로 대괄호 기호([, ])는 감싸고 있는 해당 키워드의 가중치를 평균(1.0)보다 적게 부여합니다.
예를 들면, girl, [beauty], snack corner, [[passing by]]와 같이 프롬프트를 작성하였다면, girl, snack corner, beauty, passing by의 순서로 가중치를 부여 받습니다.

()는 가중치를 높이고 싶을때, []는 가중치를 낮추고 싶을때 사용합니다.
괄호와 대괄호는 각각 10%씩의 가중치를 증가/감소 시킵니다. 예를 들면 ((키워드))와 [[키워드]]는 각각 1.1 x 1.1 = 1.21과 0.9 x 0.9 = 0.81의 가중치를 얻습니다.

중괄호

이미지를 생성할 때 중괄호({, })를 이용하여 랜덤하게 키워드를 선택하게 할 수도 있습니다.
예를 들면, {girl|boy}, snack corner, passing by와 같이 프롬프트를 작성하였다면, girl 또는 boy는 Queue에서 랜덤하게 선택하게 됩니다. 즉, 스낵 코너를 지나는 소년 또는 소녀의 이미지가 랜덤하게 생성될 것입니다.

직접 가중치 부여

위의 괄호나 대괄호처럼 상대적으로 가중치를 부여할 수도 있으나, 사용자가 직접 가중치를 부여할 수도 있습니다.
예를 들면, snack corner, (girl:1.1), (beauty:0.5), passing by(1.2)라 프롬프트를 작성하였다면, passing by, girl, snack corner, beauty의 순으로 가중치를 부여 받지만, beauty의 속성은 적용되지 않을 확률이 높습니다. 또 다른 가중치에 가중치를 부여하는 다른 예를 살펴 보겠습니다.
snack corner, (girl:1.1), ((beauty:1.0): 1.3), passing by로 프롬프트를 작성하면, beauty, girl, snack corner, passing by의 순서로 높은 가중치가 부여 됩니다. beauty의 경우 1.0 x 1.3 = 1.3의 가중치를 부여 받기 때문에 girl의 1.1보다 더 높은 가중치를 부여 받습니다.

ComfyUI에서는 단축키로도 가중치를 증/감시킬 수 있습니다. Ctrl + Up키, Ctrl + Down 키를 사용하여 편리하게 사용할 수도 있습니다.

AND 연산

2개 이상의 키워드를 결합할 때는 AND 연산자를 사용합니다. 연산자라고 해서 특별한 기호가 있는 것이 아니라 키워드와 키워드 사이에 and 를 입력하면 됩니다.
예를 들면, “girl and boy”와 같이 프롬프트를 작성하면 됩니다. 이와 같이 하면 소녀와 소년이 함께 있는 이미지를 얻습니다. 물론 100% 보장은 되지 않지만 둘이 함께 나올 확률을 높여 줍니다.

프롬프트 처리 및 토큰의 제한

Stable diffusion v1 모델은 최대 75개의 토큰으로 정해져 있습니다. 토큰 = 키워드로 일치하지는 않습니다.(즉, 키워드가 10개라고해서 10개의 토큰이 생성되는 것은 아닙니다.) CLIP 모델에서 프롬프트를 자동적으로 토큰으로 변환하는데, 처리 중 익숙하지 않은 키워드가 발견되면 추가 분석을 통해 해당 키워드와 유사 또는 익숙한 키워드로 쪼개어 토큰을 분류합니다. AUTOMATIC1111에서는 사실상 토큰 길이 제한이 없습니다. 75보다 많은 토큰이 있다면 새로운 토큰 그룹을 만들어서 150, 225와 같이 계속 증가시킵니다. ComfyUI에서도 CLIP 모델의 토큰 제한을 확장시킬 수가 있으며, CLIP-L 모델을 이용하여 최대 248개로 확장시킬 수 있습니다.

효과적인 프롬프트 작성하기

위에서 가중치나 연산자 또는 토큰 등의 활용에 대해 알아봤습니다. 이제는 어떻게 하면 스테이블 디퓨전 프롬프트를 효과적으로 작성하여서 우리가 원하는 이미지를 얻을 수 있을지에 대해 공부해야합니다.
효과적인 프롬프트를 생성하려면 원하는 이미지의 구체적인 키워드 선정과 복잡성을 고려하는 것이 중요합니다. 선정 및 고려해야 할 몇 가지 측면은 아래와 같습니다:

  • 주제에 맞는 포괄 키워드 선정 사람, 동식물 또는 풍경과 같이 이미지에 표현하고자 하는 포괄할 수 있는 특징적인 키워드를 통해 먼저 분류 합니다.
  • 행동 또는 형상 키워드 선정 포괄 키워드의 행동이나 형상에 관한 키워드를 선정합니다. 예를 들면 서 있거나 앉아 있는 자세, 우아함 또는 화려함 등과 같이 포괄 키워드의 상태를 나타내는 키워드가 그것들 입니다.
  • 맥락 또는 묘사 키워드 선정 행동 또는 형상에 대한 세부 서술적 키워드들을 추가합니다. 예를 들면 해변에 앉아 있는 사람과 같이 포괄 키워드와 행동 키워드를 한정해 줄 수 있는 “해변에”와 같은 한정적 묘사 키워드를 추가합니다.
  • 광원 또는 조명 기법 키워드 선정 해당 키워드는 주요한 요소는 아니지만, 광원이나 조명을 추가하여 좀 더 사실적인 이미지 생성을 돕습니다.
    이미지 AI 모델을 이용하여 효과적인 프롬프트를 작성하기 위해서는 위에 나열한 요소를 적절히 활용하면 가능합니다.

위의 내용은 아래와 같이 한 줄 요약할 수 있습니다.

생성하려는 이미지의 포괄적 키워드를 찾고, 그 다음에 해당 키워드의 행동이나 형상을 선정한 후 이에 대한 묘사를 하고, 세부적인 요건들을 나열하는 것이 효과적인 프롬프트를 작성하는 방법입니다.

결론

프롬프트와 관련하여 다양하게 알아보았습니다. 프롬프트를 적절하게 작성하고 활용하는 것은 AI 이미지 생성에 있어서 매우 중요하며, 많은 시행착오를 요구 합니다. 원하는 이미지를 얻기 위해서는 프롬프트 작성에 의존해야하기 때문에 자주 그리고 많이 작성하여 보는 것이 도움이 될 것입니다. 위의 내용들을 참고하여 다들 원하시는 이미지를 생성하기를 바래봅니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.