Stable Diffusion(스테이블 디퓨전) WebUI - 06. 프롬프트 작성법

2024. 11. 3. 01:58·IT 활동/AI
목차
  1. 1. 프롬프트란?
  2. 2. 프롬프트 작성법
  3. 🟦 프롬프트 특징
  4. 🟦 프롬프트 내용 분류
  5. 🟦 프롬프트 해석 단위 : 토큰
  6. 3. 프롬프트 Style 저장 및 불러오기
어두운 배경이 싫으시다면 페이지 우측 하단에 보이는 초승달 모양의 아이콘을 클릭하면 화이트모드로 변경됩니다.
초승달 모양 버튼 : 화이트/다크 모드 전환
테마모드 변경 가이드

 

이번 포스팅에서는 프롬프트에 대한 사용법과 Style 저장 및 불러오기, 토큰 등에 관해서 자세하게 설명하도록 하겠습니다. 프롬프트와 Generation 옵션 설정도 같이 공유하니 직접 생성해 보실 수 있습니다.


 

1. 프롬프트란?

프롬프트는 AI 모델에게 어떤 이미지를 생성해야 할지 알려주는 지시어입니다. 프롬프트를 작성할 때는 단어나 문장 형태로 작성할 수 있습니다.

 

초창기에는 성능이 낮아서 프롬프트를 많이 적지 못했는데 요즘에는 하드웨어 성능뿐만 아니라 AI 모델도 계속 업데이트되어서 많은 종류의 프롬프트를 넣어도 잘 만들어냅니다. (물론 원하는 이미지가 잘 만들어진다는 의미는 아닙니다 ㅎㅎ)

 

프롬프트를 작성하는 방법에 대해서 몇 가지 특징과 주의 사항이 있습니다. 이점을 참고하여 프롬프트를 작성하시면 괜찮은 이미지를 생성하실 수 있습니다.


 

2. 프롬프트 작성법

프롬프트를 작성하는 방법에 대해서 약간의 규칙과 특징들이 있습니다. 아래 내용을 참고하셔서 프롬프트를 작성하시면 됩니다. 기본적인 내용이므로 추후 확장기능이나 별도의 기능을 이용하여 키워드를 작성하는 방식이 아닌 이상 아래의 특징은 공통된 사항이 되겠습니다.

 


 

🟦 프롬프트 특징

 

🔸영어 단어와 숫자, 또는 일부 서양식 이모티콘(:D, :b 등) 사용 가능

 

🔸대소문자는 구분하지 않습니다. (Knight = knight)

 

🔸단어 또는 문장으로 작성 가능 (문장보다는 단어 위주로 사용하는 것을 추천)

 

🔸앞 쪽에 배치하는 것이 우선순위가 높습니다. (디테일하게 조정할 필요는 없습니다)

 

🔸프롬프트 키워드 간의 구분은 콤마( , )로 합니다. (예시 : apple, eat)

 

🔸단어와 단어를 띄어쓰기로 구분할 경우, 하나의 단어로 인식. 

ex) red long hair = 빨간색의 긴 머리카락

ex) red, long hair = 빨간색을 어딘가에 적용하고, 긴 머리카락

 

🔸프롬프트 키워드를 강조하는 가중치 값을 설정할 수 있습니다. 괄호를 이용하면 해당 프롬프트 키워드를 10% 상승하여 강조할 수 있습니다. 반대로 낮추는 용도로도 사용할 수 있습니다. 괄호 안 키워드 오른쪽에 콜론( : )을 붙이고 그 옆에 숫자를 넣으면 가중치 값을 수동으로 적용할 수 있습니다. 사용법은 아래와 같습니다.

 

  • (apple) : apple 키워드를 1.1만큼 가중치 부여
  • (apple:1.5) : apple 키워드를 1.5만큼 가중치 부여
  • (apple:0.5) : apple 키워드를 0.5만큼 가중치를 낮게 부여
  • (medieval armor, chainmail, shoulder armor:1.2) : 여러 개의 키워드를 묶어서 한 번에 가중치를 부여할 수 있습니다.
  • 프롬프트 키워드에 마우스 클릭하여 깜빡이는 상태에서 Ctrl + ↑ 또는 ↓ 단축키로 자동으로 가중치를 조정할 수 있습니다.
  • 마찬가지로 여러 개의 단어를 드래그해서 묶은 다음 단축키를 입력하면 묶은 키워드들을 하나의 괄호로 넣고 가중치를 설정할 수 있습니다.
  • 단축키를 이용하여 가중치 조절 시 0.1 단위로 조정되며, 1.0이 되면 자동으로 괄호가 사라집니다. 

 

아래는 가중치를 적용하여 투톤 컬러 헤어를 구현한 모습입니다. 머리카락과 관련된 프롬프트는 long hair, (two-tone hair:1.1), red hair and purple hair입니다. 여기서 two-tone hair도 가중치를 적용하여 한 가지 색상만 나오지 않게 약간의 가중치를 주었습니다. 

 

red hair and purple hair에서 red hair 부분이 1차로 그려지고, 이후에 purple hair가 덮어져서 그려집니다. 물론 100% 이런 식으로 그려지진 않습니다. Generation 옵션 설정값과 체크포인트 모델 등에 따라서 천차만별로 나올 수 있습니다.

 

가중치를 사용한 이미지 예시
가중치를 넣어서 적절한 투톤 컬러 헤어 구현하기 예시

 

🔸프롬프트는 키워드 1개가 토큰 1개를 나타냅니다. 토큰에 대한 것은 아래에서 설명

 

🔹프롬프트 순서에 따른 이미지 차이 비교

  • 사용한 모델 : DreamShaper v8
  • CFG : 8
  • Steps : 40
  • Sampling method : Euler a
  • Size : 512x768
  • Seed : 807605152
  • Hires upscaler : R-ESRGAN 4x+
  • Hires steps : 0
  • Denoising strength : 0.5

🔸사용 프롬프트(왼쪽 이미지)

(masterpiece, best quality:1.4), high detailed, (ultra high res:0.9), (extremely intricate:1.3), photorealistic, (realistic), hdr, 8k, dramatic, award winning, cinematic lighting, octane render unreal engine, volumetrics dtx, film grain, bokeh, depth of field, sunset, motion blur, blurry background, blurry foreground, sharp focus, outdoors, the most beautiful in the world, far away castle, portrait of a girl, (chainmail, medieval armor, fullplate armor, shoulder armor, gauntlets), metal reflections, upper body, long hair, blonde hair, blue eyes, parted lips, light smile

 

🔸사용 프롬프트(오른쪽 이미지)

(masterpiece, best quality:1.4), high detailed, (ultra high res:0.9), (extremely intricate:1.3), photorealistic, (realistic), hdr, 8k, outdoors, the most beautiful in the world, far away castle, portrait of a girl, (chainmail, medieval armor, fullplate armor, shoulder armor, gauntlets), metal reflections, upper body, long hair, blonde hair, blue eyes, parted lips, light smile, dramatic, award winning, cinematic lighting, octane render unreal engine, volumetrics dtx, film grain, bokeh, depth of field, sunset, motion blur, blurry background, blurry foreground, sharp focus

 

🔸부정 프롬프트

(worst quality, low quality:1.4), BadDream, (UnrealistickDream), FastNegativeV2

 

아래 이미지는 동일한 Generation 설정값과 동일한 Seed에서 생성한 이미지이며, 단순히 프롬프트들의 순서만 바꾼 것만으로도 차이가 나는 이미지가 생성됩니다.

 

녹색의 프롬프트들은 주로 후보정(카메라 필터를 생각하시면 됩니다)과 관련된 키워드들입니다. 왼쪽 이미지는 이런 후보정을 우선순위가 높은 앞쪽에 위치하였기 때문에 뒤에 그리는 인물과 관련된 부분이 후보정이 덜 들어간 것을 볼 수 있습니다.

 

반면 오른쪽 이미지는 후보정을 뒤쪽에 넣었기 때문에 인물이 우선적으로 그려지고, 뒤이어 후보정을 적용하기 때문에 빛에 의한 음영이 짙고, 빛의 산란정도, 해가 지는 위치에 따른 역광 등이 제대로 적용된 것을 볼 수 있습니다.

 

후보정 프롬프트들을 우선순위가 높은 앞쪽에 배치한 상태로 생성한 이미지후보정 프롬프트들을 우선순위가 낮은 뒤쪽에 배치한 상태로 생성한 이미지
프롬프트 순서에 따른 이미지 생성 차이


 

🟦 프롬프트 내용 분류

위에서도 프롬프트 순서에 따른 이미지 차이를 보여주는 내용에서 보았듯이 여러 프롬프트들은 분류에 따라서 어디에 배치하는지에 따라 다른 이미지를 생성합니다. 위 프롬프트를 분석하면 아래와 같습니다.

 

🔹우측 이미지에 대한 프롬프트 분류 설명

(masterpiece, best quality:1.4), high detailed, (ultra high res:0.9), (extremely intricate:1.3), photorealistic, (realistic), hdr, 8k, outdoors, the most beautiful in the world, far away castle, portrait of a girl, (chainmail, medieval armor, fullplate armor, shoulder armor, gauntlets), metal reflections, upper body, long hair, blonde hair, blue eyes, parted lips, light smile, dramatic, award winning, cinematic lighting, octane render unreal engine, volumetrics dtx, film grain, bokeh, depth of field, sunset, motion blur, blurry background, blurry foreground, sharp focus

 

🔸품질 및 스타일 관련 프롬프트

주로 이미지의 퀄리티와 관련된 프롬프트를 나타냅니다. 고품질인지, 디테일한지, 리얼한 이미지 또는 애니메이션 스타일인지, 고품질 해상도 이미지인지 등, 품질을 향상할 수 있는 프롬프트입니다.

 

이게 예전에는 어느 정도 기본 프롬프트에서 사용하면 먹혔는데 요즘에는 버전이 올라가서 그런지 아니면 모델 학습이 좋아서 그런지 큰 차이는 없습니다. 오히려 품질의 평준화로 아주 저퀄리티 품질만 걸러내면 괜찮은 이미지를 생성할 수 있습니다.

 

즉, 일반 프롬프트보다는 부정 프롬프트를 활용하는 게 더 좋을 수 있습니다. 아래는 두 가지의 경우로 부정 프롬프트를 수정하며 생성한 이미지입니다.

 

1️⃣번 사진의 결과는 기본 프롬프트에 masterpiece, best quality와 같은 프롬프트들을 넣고 부정 프롬프트만 수정하며 생성한 이미지이고, 2️⃣번은 기본 프롬프트에 퀄리티를 모두 제거하고 생성한 이미지입니다. (같은 Seed)

 

1️⃣ 기본 프롬프트에 퀄리티 관련 프롬프트 넣고, 부정 프롬프트만 수정하여 생성한 이미지

기본 프롬프트에 퀄리티 관련 프롬프트를 넣고 부정프롬프트만 수정하며 생성한 이미지 예시
기본 프롬프트에 퀄리티 관련 프롬프트 추가버전

 

2️⃣ 기본 프롬프트에 퀄리티 관련 프롬프트 제거하고, 부정 프롬프트만 수정하여 생성한 이미지

기본 프롬프트에 퀄리티를 제거한 이미지 예시
기본 프롬프트에 퀄리티 관련 프롬프트 제거한 버전

 

🔸장소, 배경 관련 프롬프트 

실내인지, 실외인지 장소와 함께 배경은 어떻게 생성할지를 정하는 프롬프트입니다. 실내일 때는 indoors를  outdoors를 적으면 실외를 기반으로 생성합니다.

 

배경 관련 프롬프트 또한 background 앞에 키워드를 붙여 배경을 적용할 수 있습니다. 예를 들면 white background를 하면 하얀색 배경을 만들어 냅니다.

 

배경과 장소에 관련된 프롬프트 예시
배경과 장소에 관련된 프롬프트 예시

 

🔸인물 또는 사물에 대한 프롬프트

인물에 대한 프롬프트라면 many people, boy, girl 등의 단어를 통해 인물을 생성할 수 있으며, 2명 또는 3명과 같이 인물의 숫자를 정하고 싶을 때에는 키워드 앞에 숫자를 붙이면 됩니다. 

ex) 3boy = 남자 3명

 

그리고 인물에 대한 세부적인 내용, 동작, 구도 등을 지정하는 프롬프트를 사용하여 디테일한 부분을 적용할 수 있습니다. 예를 들면 머리카락 스타일, 색상, 웃는지 화났는지, 서있는지, 앉아 있는지 등등 프롬프트 종류가 굉장히 많은 부분에 해당됩니다.

 

워낙 단어가 많다 보니 제대로 적용이 될 때도 있고, 안 될 때도 있습니다. 이 부분에 대해서는 계속 꾸준히 사용해 보는 수밖에 없습니다. 저도 모를 때에는 구글 번역기를 돌려서 확인해 보거나 검색을 통해서 확인하는데 추후에 프롬프트 종류별로 정리해서 포스팅할 예정입니다.

 

아래 이미지를 보면 인물을 표현할 때 여성의 경우 1girl만 입력해도 잘 알아듣습니다. 다만 남성이나 기타 다른 인물 형태(몬스터, 수인 등)를 생성하려면 꽤 많은 프롬프트를 적용해야 제대로 나옵니다. 

 

이는 대부분의 모델의 학습 내용들이 남성이나 몬스터 등과 같은 비주류보다는 인기 많은 여성의 이미지를 기반으로 학습하다 보니 이를 구분하기 위해서는 꽤 많은 디테일한 프롬프트를 넣어줘야 할 수 있습니다. 물론 모델마다 다를 수 있습니다.

인물과 관련된 프롬프트 적용하여 생성한 이미지 예시
인물관련 프롬프트 예시

 

🔸후보정, 이펙트 관련 프롬프트

해당 프롬프트는 빛, 음영, 그림자, 날씨 등과 같이 전체적인 분위기와 관련된 프롬프트를 의미합니다. 게임에서는 이런 것을 Post processing이라고 하며, 여러 가지 필터효과를 거쳐서 후처리 한 것처럼 이미지를 만들어냅니다.

 


 

🟦 프롬프트 해석 단위 : 토큰

토큰이란 WebUI에서 프롬프트를 해석하는 단위를 말합니다. WebUI에서는 75개 단위로 프롬프트를 해석합니다. 그리고 75개를 넘어가는 프롬프트를 작성하면 다시 75개 단위를 확장하여 이후의 작성된 프롬프트를 해석합니다.

 

토큰은 75개 단위로 해석한다.
토큰은 75개 단위로 해석

 

즉, 원하는 이미지를 만들려고 할 때 가급적 75개 토큰 단위로 구분하여 프롬프트를 작성하면 정확한 이미지를 얻을 수 있습니다. 물론 아주 정확하진 않겠지만 그래도 이런 구분을 WebUI는 지향하고 있기 때문에 BREAK라는 키워드를 사용해서 강제로 75개 토큰 단위로 중단점을 설정할 수 있습니다.

 

아래는 적당한 프롬프트 위치에 BREAK를 넣어서 강제로 BREAK 왼쪽을 75개 토큰 단위로 먼저 해석하고 이후부터는 76 ~ 150까지의 토큰으로 해석한 프롬프트 내용과 BREAK를 넣은 것과 안 넣은 이미지의 비교 모습입니다.

 

(masterpiece, best quality, highres, highest detailed), (photorealistic), (realistic), HDR+, (extremely intricate, intricate details, extreme detailed), fashion photography, (extremely detailed CG unity 8k wallpaper, professional photograph), outdoors, the most beautiful in the world, far away castle, looking at viewer, on front, BREAK 1girl, blonde hair, long hair, wavy hair, upper body, hand on own hip, (chainmail, medieval armor, shoulder armor, gauntlets, armored dress, armored boots), black pantyhose, fingerless gloves, metal reflections, dramatic, award winning, cinematic lighting, volumetrics dtx, film grain, bokeh, depth of field, sharp focus

 

BREAK 키워드를 넣어서 생성한 이미지BREAK를 빼고 생성한 이미지
왼쪽 : BREAK 키워드를 넣은 이미지 / 오른쪽 : BREAK를 빼고 생성한 이미지

 

BREAK 키워드를 사용하지 않고 생성한 경우, 위의 프롬프트에서 upper body(상반신)까지가 75 토큰이기 때문에 우선순위가 낮습니다. 그래서 이후에 armored dress, armored boots와 같은 프롬프트를 그려야 되는데 상반신으로는 커버가 안 되니 전신이 나오게 그린 모습입니다. (물론 100% 해석이 아닌 제 추측입니다 ㅎㅎ)

 

반대로 BREAK 키워드를 넣으면 이후의 1girl의 내용이 다음 토큰 해석에서 우선순위가 높기 때문에 비교적armored dress, armored boots와 같은 프롬프트를 조금은 무시하고 upper body를 우선으로 하여 이미지를 생성합니다.

 


 

3. 프롬프트 Style 저장 및 불러오기

마지막으로 자주 사용하는 프롬프트를 직접 입력하지 않고 딸-깍해서 한 번에 넣는 방법에 대해서 설명하겠습니다. 'Generate' 버튼 아래에 보면 다양한 아이콘들이 있는데, '화살표' 모양은 생성한 이미지의 사용된 프롬프트를 그대로 불러오는 버튼입니다.

 

'쓰레기통 모양'(🗑️) 은 모양에서 보듯이 싹 다 지우는 '초기화' 버튼입니다. 버튼을 누르면 좌측에 입력한 프롬프트 내용을 모두 지웁니다. 지우기 전에 메시지 알림으로 한 번 물어보니 실수로 눌러서 지우는 불상사를 방지합니다.

 

우측에 있는 '서류철 모양'(📋) 은 아래에 보이는 드롭박스에 저장된 프롬프트 스타일을 선택했을 때 해당 버튼을 눌러 프롬프트에 적용하는 '불러오기' 버튼입니다.

 

프롬프트 스타일 관련 아이콘 설명
프롬프트 스타일 관련 아이콘들 설명

 

가장 우측 끝에 있는 '붓 모양'(🖌️) 아이콘 버튼이 Style을 저장할 수 있는 메뉴 버튼입니다. 해당 버튼을 클릭하면 아래와 같이 'Styles' 메뉴창이 나타납니다.

 

가장 상단에 제목을 작성하거나 다른 Style들을 열어볼 수 있습니다. 그리고 우측에 보이는 아이콘들 중 가장 우측에 있는 '노트메모 모양'(📝)만 알면 됩니다. 해당 버튼을 누르면 현재 WebUI에 작성된 프롬프트들을 모두 불러와 해당 Style에 자동으로 넣어줍니다. 

 

그러면 아래와 같이 제목만 입력하고 버튼만 딸-깍하면 저장하고 싶은 프롬프트 내용이 쭉 복붙 해서 넣어집니다. 그리고 'Save' 버튼을 누르면 저장이 됩니다.

 

프롬프트 Styles 관리메뉴
프롬프트 Styles 관리 메뉴

 

저장한 스타일을 사용하려면 위에서 설명한 대로 저장한 스타일을 드롭박스에서 선택한 뒤 '서류철 모양'(📋) 버튼을 누르면 적용이 됩니다. 스타일은 여러 개를 선택해서 한 번에 프롬프트창에 넣을 수 있습니다. 

 

프롬프트 Style 적용하기
프롬프트 Style 적용하기


구독 및 좋아요는 컨텐츠를 생산하는데 많은 도움이 됩니다. 😊

감사합니다.

저작자표시 비영리 변경금지 (새창열림)
  1. 1. 프롬프트란?
  2. 2. 프롬프트 작성법
  3. 🟦 프롬프트 특징
  4. 🟦 프롬프트 내용 분류
  5. 🟦 프롬프트 해석 단위 : 토큰
  6. 3. 프롬프트 Style 저장 및 불러오기
'IT 활동/AI' 카테고리의 다른 글
  • Stable Diffusion(스테이블 디퓨전) WebUI - 08. Script(X/Y/Z plot) 기능
  • Stable Diffusion(스테이블 디퓨전) WebUI - 07. Lora 사용법
  • Stable Diffusion(스테이블 디퓨전) WebUI - 05. 품질 올리기(Hires, Embbeding)
  • Stable Diffusion(스테이블 디퓨전) WebUI - 04. Generation 설명
RightNowHJ
RightNowHJ
온갖 잡다한 IT 관련 지식 모아모아 공유하는 블로그 (옛 LeePorter 블로그 이전)
  • RightNowHJ
    잡식성 개발자의 블로그
    RightNowHJ
  • 전체
    오늘
    어제
    • 분류 전체보기 (67)
      • IT 활동 (44)
        • 티스토리 (16)
        • 소프트웨어 (13)
        • AI (15)
      • 프로그래밍 (12)
        • 언리얼엔진 (9)
        • C++ (3)
      • 일상생활 (11)
        • 이슈모아보기 (5)
        • 실생활지식 (5)
        • 재테크 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    언리얼 엔진
    웹 ui
    플러그인
    Utility
    다크모드
    광고
    유틸리티
    티스토리
    을사년
    티스토리챌린지
    AdSense
    부동산
    부담부 증여
    소프트웨어
    UE5
    AI 이미지
    Unreal Engine
    수동 광고
    hELLO 스킨
    stable diffusion
    메타 퀘스트
    구글 애드센스
    셀프 등기
    Meta Quest
    언리얼5
    WEBUI
    오블완
    스테이블 디퓨전
    블로그
    sd 1.5
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
RightNowHJ
Stable Diffusion(스테이블 디퓨전) WebUI - 06. 프롬프트 작성법

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.