어두운 배경이 싫으시다면 페이지 우측 하단에 보이는 초승달 모양의 아이콘을 클릭하면 화이트모드로 변경됩니다. 초승달 모양 버튼 : `화이트/다크 모드` 전환 |
이번 포스팅에서는 프롬프트에 대한 사용법과 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개 토큰 단위로 구분하여 프롬프트를 작성하면 정확한 이미지를 얻을 수 있습니다. 물론 아주 정확하진 않겠지만 그래도 이런 구분을 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` 키워드를 사용하지 않고 생성한 경우, 위의 프롬프트에서 `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' 버튼을 누르면 저장이 됩니다.
저장한 스타일을 사용하려면 위에서 설명한 대로 저장한 스타일을 드롭박스에서 선택한 뒤 '서류철 모양'(📋) 버튼을 누르면 적용이 됩니다. 스타일은 여러 개를 선택해서 한 번에 프롬프트창에 넣을 수 있습니다.
구독 및 좋아요는 컨텐츠를 생산하는데 많은 도움이 됩니다. 😊
감사합니다.