스테이블 디퓨전에 대한 관심이 커지면서 서적을 구매하고 사내 개인 과외를 신청했다. 프롬프트에 대한 이해와 정리가 필요할 것 같아 시판 서적과 개인 과외 교본을 사용하여 그 내용을 정리한다. 본 블로그의 내용은 모두 개인 학습을 위한 필기 및 정리용이며 저작권은 모두 서적의 저자와 교본 작성자에게 있다.
서수 | 내용 |
---|---|
1 | 프롬프트 작성시에는 영어를 사용하여 단어나 문장 형식으로 입력합니다. |
2 | 프롬프트는 콤마 [,]로 구분하여 입력합니다. |
3 | 프롬프트에 가중치를 부여할 수 있습니다. 스테이블 디퓨전은 가중치가 높은 단어를 이미지에 더 잘 반영해줍니다. |
좋은 프롬프트를 만드는 데는 두 가지 규칙이 있습니다.
- 상세하고 구체적이어야 합니다.
- 강력한 키워드를 사용해야 합니다.
인공지능이 아무리 비약적으로 발전했더라도 사람의 마음까지 읽을 수는 없습니다. 따라서
머릿속에 있는 이미지를 되도록 자세히 묘사해야 합니다. “그 거 있잖아~” 화법을 기억하세요.
누군가에게 상황을 설명하고 싶은데, 확실하게 떠오르지 않는 단어를 설명하기 위해 머릿속
에 떠오르는 정보들을 구체적으로 '이런 거 저런 게를 장황하게 설명하는 그 화법을요. 그게
바로 프롬프트로 가는 지름길입니다.
여기에서 확실한 단어 = 강력한 키워드(Core, Punk. Fusion 등의 단어로 축약되기도 합니다.)
이런 거. 저런 거 = 상세하고 구체적인
강력한 키워드 사용 : 어떤 키워드들은 다른 키워드들보다 더 강력합니다.
-연예인 이름 (예 IU)
-예술가 이름 (예 반고흐)
-미술매체 (예 illustration, painting, photograph)
예를 들면 위와 같이 아티스트 이름이나 유명 캐릭터(연예인 포함)의 타이틀을 포함하는 것
은 추천하지 않습니다. 저작권에 관련해 그들의 이미지가 학습돼도 괜찮은지에 대한 허락은
확인할 수 없기 때문에 학습용으로만 사용하기를 권장합니다.
챗 GPT를 활용해 프롬프트를 작성할 수도 있습니다.
로라와 체크포인트만으로도 이미지는 생성할 수 있지만, 의도하는 이미지를 얻으려면 제대
로 된 프롬프트가 필요합니다. 프롬프트가 없다는 것은 좋은 시나리오와 마스크가 좋은 개스
팅은 준비돼 있는데, 이를 제대로 연출할 감독과 연기를 할 수 있는 연기자가 없는 것과 다름
없습니다. 프롬프트=정보를 담은 명령어, 즉 지시어로 섬세한 연출을 위해 꼭 필요한 요소입
니다.
글쓰기 못지않게 해당 업무에 대한 전문적인 지식도 중요합니다. 실제 그림을 그리기 위해
어떤 기법과 연출, 터치와 재료가 쓰이는지 등을 알아야 헤매지 않고 바로 지시할 수도 있습
니다. 그렇기 때문에 아무리 인공지능 툴이 좋다 하더라도 이런 전문적인 지식 바당이 다져져
있지 않다면 결코 원하는 바대로 결과물을 만들어 낼 수 없을 것입니다.
분야별 추천 서적
• 글 콘티: 스토리 작법
• 그림 콘티: 사진, 영화 연출, 스토리보드 작법서, 미술사 서적
• 캐릭터 설정: 패션 도감(의상 용어 등). 심리학 서적
한글은 복잡하고 함축적인 단어가 많습니다. 그리고 직관적이기보다 형용어로 이뤄지는 경
우도 많습니다. 이미지 생성 기반의 인공지능을 사용하려면 직관적인 영어 단어로 풀어 작성
해야 합니다. 단어를 어떻게 풀어 쓰면 좋을지 떠오르지 않으면 해당 단어를 사전에서 찾아보
기를 권장합니다. 한글 - 사전을 찾아 풀어쓴 문장 확인 - 영어 단어로 변형-프롬프트 적
용으로 접근하면 의외로 좋은 프롬프트를 작성할 수 있습니다.
초보자에게는 강력한 기워드와 기대되는 효과를 배우는 것이 필수적입니다. 이는 새로운 언어를 위한 어휘를 배우는 것과 같습니다. 그래서 막연하게 느껴질 수 있습니다. 프롬
프트 생성기를 사용하는 것은 단계별 과정과 중요한 기워드를 배울 수 있는 좋은 방법이
될 수 있습니다.
기존 프롬프트를 재사용하면서 배울 수도 있습니다. 플레이그라운드 (PlaygroundAI)등의 이미지 수집 사이트에서 마음에 드는 이미지를 선택한 후 프롬프트를 참고할 수 있습니다. 마음에 드는 이미지를 선택하고 프롬프트를 리믹스를 해 볼 수도 있습니다.
참고에 의지해 이미지를 생성할 경우, 멋있는 이미지를 만들어 내도 어떻게 만들었는지를 이
해하지 못할 수도 있으므로 원하는 이미지를 만들고 싶을 때마다 비슷한 이미지를 스스로 찾
아 내는 연습도 필요합니다. 이러한 요소를 조합하고 변형해 나가는 과정에서 특정한 시각적
스타일과 분위기를 가진 그림이나 사진 작품을 만들어 낼 수 있습니다. 이는 작품이 특정한
감정을 전달하거나 이야기를 풍부하게 하는 데 중요한 역할을 하며 시각 예술에서의 다양성
과 창의성을 증진시킵니다.
업데이트될 때마다 적용되는 프롬프트의 양이 달라질 수도 있고 너무 많은 정보를 입력하면
의도와 다른 결과물이 도출되는 경우가 많습니다. 따라서 되도록 적은 프롬프트로 적용될할
수 있는 요령이 생기면 작업을 하는 데 많은 도움이 될 수 있습니다.
만화나 애니메이션 스타일로 지정하고 싶을때는 일반적으로 다음과 같은 워딩을 사용합니다.
Cartoons, Anime, Comics, Kawaii, Manhwa, Animecore, UwU, MarveI Comics, Manga
서수 | 내용 |
---|---|
1 | 강조하고 싶은 단어를 (word) 와 같이 괄호로 감싸면 괄호로 감싼 단어의 가중치가 1.1배로 증가합니다. |
2 | 반대로 가중치를 낮추고 싶은 단어를 [word]와 같이 대괄호로 감싸면 감싼 단어의 가중치가 0.9배로 감소합니다. |
3 | 괄호와 대괄호는 겹쳐서 사용할 수 있습니다. |
예시 | ex) ((word)): 1.21 (1.11.1)/ [[word]]: 0.81(0.90.9) |
서수 | 내용 |
---|---|
1 | 괄호가 아닌 숫자로도 가중치를 조절할 수 있습니다. |
2 | “word:1.3” 와 같이 가중치를 주고 싶은 단어 뒤에 “:숫자”를 입력하면 됩니다. |
3 | 위의 word:1.3은 word라는 단어의 가중치를 1.3배로 설정한 것이고, “word:0.7” 와 같이 입력하면, word 라는 단어의 가중치를 0.7배로 낮출 수 있습니다. |
4 | 일반적으로 이렇게 숫자로 가중치를 조절할 때에는 0.1~1.4 사이로 사용하는 것을 권장드립니다. |
프롬프트를 쓸 때, 뚜렷하게 지정하지 않고 여러개의 선택지를 만든 후 그 중 랜덤으로 조합하여 이미지를 생성하도록 프롬프트를 작성할 수 있습니다.
(Dynamic Prompts/ Dynamic Prompts enabled 체크 필요)
girl with {red|green} hair 라고 입력하고 이미지를 생성하면
-> girl with red hair
-> girl with green hair
의 문장 중 하나가 생성됩니다.
아래의 예시와 같이 여러개로 중첩하여 사용도 가능합니다.
A {rabbit|cat|dog} with a {black|green|blue}eyes is sitting on a
{
{red|blue|white} wooden | gold
}
chair
라고 프롬프트에 입력하면 저 중 {}안의 단어를 랜덤으로 조합하여 이미지를 생성합니다.
아래 이미지는 그 예시로 파란 눈을 가진 고양이가 빨간 나무 의자에 앉아있는 이미지가 생성된 결과입니다.
모든 경우의 수를 보고 싶다면 Dynamic Prompts의 Combinatorial generation을 체크하시면 됩니다.
A {rabbit|cat|dog} with a {black|green|blue}eyes is sitting on a
{
{red|blue|white} wooden | gold
}
chair
위의 프롬프트를 사용하였을 때 나올 수 있는 경우의 수를 계산하면
(333)+(3*3) = 36입니다.
Combinatorial generation을 체크하여 이미지를 생성하면
오른쪽의 이미지처럼 36장의 이미지를 생성해줍니다.
앞의 프롬프트 조합을 생성할 때, 자주 쓰거나 조합의 단어 수가 너무 많아 프롬프트에 하나하나 적기 힘들 수 있습니다.
이럴 때 wildcard를 이용할 수 있습니다.
\extensions\stable-diffusion-webui-wildcards\wildcards
경로에 (name).txt 파일을 생성하여 텍스트 파일에 조합으로 사용할 단어를 넣어주면 됩니다.
사용하실 때는 프롬프트에 (name)을 넣으면 적용됩니다.
ex) 텍스트 파일에 rabbit dog cat 을 적고 animal.txt 파일로 저장해줍니다.
프롬프트에
A animal with a {black|green|blue}eyes is sitting on a
{
{red|blue|white} wooden | gold
}
chair
로 입력하면 작성한 wild card가 적용됩니다.
구간을 나누어서 구간별로 프롬프트를 지정하는 법. 물론 이렇게 설정해도 스테이블 디퓨전이 말을 잘 안 듣습니다..ㅠㅠ 하지만 그냥 설정하는 거 보다는 원하는대로 나올 확률이 높을거예요!
구간에 대한 프롬프트는 BREAK로 구분되며, 0부터 적용됩니다. 각 구역에 프롬프트를 입력하고 나서 BREAK입력하여 구간 구분을 지어주세요.
작성 예
(공통 프롬프트, 없을시 생략 가능)
BREAK
구간 0에 적용시킬 프롬프트
BREAK
구간 1에 적용시킬 프롬프트
사용 예시
two girls
BREAK
pink hair
BREAK
blue hair
*공통 프롬프트(common prompt)
-각 구간에 공통적으로 프롬프트를 적용할 수 있습니다.
0, 2번 자리에 각각 나비와 달 이미지 배치
a girl, highly detailed face, soft lighting, looking at viewer, mysterious, midnight, half body, full moon
BREAK
(butterfly:1.3)
BREAK
BREAK
(full moon:1.3)
BREAK
BREAK
(girl with blue hair)
1,1,1,1; 2,1,2
(1,2,1) = 3등분을 하되, 1/2/1 비율로 나누라
메인프롬
BREAK
0번 칸
BREAK
1번칸
BREAK
2번칸
폴라님 sd 체크포인트 사용 예시이다.
긍정 프롬프트
a girl, full body, highly detailed face, soft lighting, looking at viewer, mysterious, midnight, half body, full moon
BREAK
(butterfly:1.3)
BREAK
BREAK
(full moon:1.3)
BREAK
BREAK
(girl with blue hair)
부정 프롬프트
1 girl, covered nipples, Cameltoe, blurry, (bad_prompt_version2:O.8), EasyNegative, (worst quality:1.3), (Iow quality.1.3), extra fingers, fewer fingers, bad-hands-5, bad-artist, badhandv4, sitting,
a girl, full body, highly detailed face, soft lighting, looking at viewer, mysterious, midnight, half body, full moon BREAK (butterfly:1.3) BREAK BREAK (full moon:1.3) BREAK BREAK (girl with blue hair) Negative prompt: 1 girl, covered nipples, Cameltoe, blurry, (bad_prompt_version2:O.8), EasyNegative, (worst quality:1.3), (Iow quality.1.3), extra fingers, fewer fingers, bad-hands-5, bad-artist, badhandv4, sitting, Steps: 40, Sampler: DPM++ 2M SDE Karras, CFG scale: 7, Seed: 1245867421, Size: 512x640, Model hash: 9c66cd48b9, Model: pollamix(sd), VAE hash: b8821a5d58, VAE: vae-ft-mse-840000-ema-pruned.ckpt, Denoising strength: 0.4, Clip skip: 2, ADetailer model: face_yolov8n.pt, ADetailer confidence: 0.3, ADetailer dilate erode: 4, ADetailer mask blur: 4, ADetailer denoising strength: 0.4, ADetailer inpaint only masked: True, ADetailer inpaint padding: 32, ADetailer version: 24.4.2, Hires upscale: 1.5, Hires steps: 30, Hires upscaler: R-ESRGAN 4x+ Anime6B, Version: f0.0.17v1.8.0rc-latest-276-g29be1da7
Regional Prompter를 켰을때 모습이다.
위에서 사용할때는 켜지 않았었네요..
Main Splitting : column
Devide Ratio : 1,1,1,1; 2,1,2
이미지 투 이미지(img2img)는 스테이블 디퓨전을 이용해 하나의 이미지를 다른 이미지로 변환할 수도 있습니다. 다음은 제가 그린 덩어리 그림을 이미지로 변환한 예입니다. 좀 더 디테일한 이미지를 생성하기 위해 추가 프롬프트를 작성해 넣었습니다).
Pixel Art, a very cute princess standing front Of PaIace, Ultra ReaIistic Details, DetaiIed Skin,
ReaIism, Photorealistic, hyperrealistic, Sharp Focus
Steps: 20, Sample「. DPM++ 2M Karras, CFG scale: 7, Seed: 3822394040, Size: 512)(512, Model
hash: cca17b08da, Model: darkSushiMixMix_225D, Denoising strength: 0.75, version: vl.6.0
City buildings and pink women's hlstory at the end Of the century, UItra ReaIistic DetaiIs,
DetaiIed SkIn. Realism. PhotoreaIistic. hyperreallstic. Sharp Focus