본문 바로가기
Hobby

[Stable Diffusion - 기본 .1 ] 프롬프트와 CFG Scale의 상관관계.

by 왕고미 2024. 3. 22.

** 이 글은 이미 로컬 혹은 쥬피터노트북이나 코랩같은 VM환경에 Automatic1111이 설치되어 있다고 가정한다.

 

[원본 작성]

https://aipictw.aimor.site/viewBoard?seq_num=62&keyword=&page=1

 

Ai Pict WEB 2.0

** 이 글은 이미 로컬 혹은 쥬피터노트북이나 코랩같은 VM환경에 Automatic1111이 설치되어 있다고 가정한다.     시작.    생성형 AI를 통해 이미지를 생성할 때 무엇보다도 중요한건 프롬프트일 것

aipictw.aimor.site

 

 

시작. 

생성형 AI를 통해 이미지를 생성할 때 무엇보다도 중요한건 프롬프트일 것이다.

내가 원하는 이미지를 알아듣고 생성하는게 무엇보다 중요하기 때문이다.

 

그런데 처음 이 기술을 접하는 사람은 사진 혹은 그림을 표현하는데 어떤 한계점에 부딪히게 된다.

 

최대한 내 말을 이해할 수 있도록 이것저것 긍정프롬프트에서 넣고,

기괴한 신체 구조나 생각지도 못한 이상한 텍스트들이 같이 뜨게 된다거나,

 

 내가 원한 이미지는 이런게 아니었는데.... 같은 마음이 들게 된다.

대부분 이 단계에서 흥미를 잃는다. 

좀 더 내가 원하는 품질 좋고 이상하지 않은 그림을 위해서는 좀 더 공부해야한다는 부분에서 많은 부담감을 느끼게 된다.

 

하지만 걱정하지 않아도 된다.

 

앞으로 몇가지 팁들과 기능 설명을 보게 된다면 어느정도 본인이 원하는 그림을 제작할 수 있을 것이다.

 

 

 

이번 글에서 프롬프트를 잘 작성하기 위한 몇가지 팁을 작성한다.

 

1. 서술형 프롬프트는 SDXL 모델에서는 유용하나, SD 모델에서는 크게 힘을 발휘 하지 못한다.

따라서 가급적이면 누구나 이해할만한 단어를 이용해 작성하는 것이 좋다.

 

2. 프롬프트 토큰 값에 주의.

위의 항목은 현재 토큰이 114를 사용중이라는 뜻이다.

Diffusion Model은 각 토큰값을 75단위로 부여받아 작업을 한다.

개인적으로는 75내로 프롬프트 값을 마치도록 해라.

150까지 어느정도는 용인이 되나 많은 프롬프트를 때려 넣는다고 해서 Denoising 단계에서 완벽하게 표현되지 않는다.

 

3. 네거티브 프롬프트는 토큰을 조금 많이 사용해도 좋다.

다만 가급적이면 Embedding을 이용하는 편이 좋다. 개인적인 경험상 이미 civitai등에서 유명한 부정프롬용 Embedding이 많으니 취향에 맞는 것으로 찾도록 하면 좋다.

 

[실사 맞춤 임베딩]

https://civitai.com/models/36070/negative-embedding-for-realistic-vision-v20

 

Negative Embedding for Realistic Vision v2.0 - v1.0 | Stable Diffusion Embedding | Civitai

This is a 75 token negative embedding for the model Realistic Vision v2.0. It should you help attain a more realistic picture when prompting. All t...

civitai.com

 

[손가락 비정상 완화]

https://civitai.com/models/16993?modelVersionId=20068

 

badhandv4 - AnimeIllustDiffusion - badhandv4 | Stable Diffusion Embedding | Civitai

介绍(中文) 基本信息 此文本嵌入为负面文本嵌入。它能够在对画风影响较小的前提下改善AI生成图片的手部细节。如果它让你的模型表现得比以前更糟,请勿使用它。您可与其他负面文本嵌入

civitai.com

 

 

4. 몇가지 기초적인 문법

- black : 1.4  _ 1.4배의 가중치 (이 가중치는 너무 높으면 오히려 그림이 이상할 수 있다. 최대 1.4이내로 해야 안전했다.)

- (black)  _ 1.1배의 가중치, 우선순위 상승. 이 것도 모든 단어마다 남발하면 의미가 없어진다.

- black+white _ black+white 를 한 객체에 섞으려는 프롬프트.

- black/white _ black과 white 를 섞이지 않게 나누지만 2가지가 모두 나오려는 프롬프트

- black and white _  black+white 를 한 객체에 섞으려는 프롬프트이나 색을 섞는 다는 느낌보다는 층을 나누어 섞으려는 프롬프트

- BREAK _ 이전 프롬프트들과 이후 프롬프트를 나누어 처리하겠다. 큰 값의 토큰 소모.

- {black|white|blue|red}  _ (확장기능 필요) 랜덤 프롬프트. { } 내의 한가지 프롬프트를 취사선택함. 

- , _ 콤마(,) 는 한 개 프롬프트의 끝을 알림.

정확한 프롬프트 문법은 따로 정리하도록 하겠다.

 

자 프롬프트에 관한 내용은 여기까지.

 

 

다음은 CFG Scale이다. 이 부분이 프롬프트와 더불어 굉장히 중요하다.

 

CFG Scale은 Model로 하여금

얼마나 프롬프트의 말대로 따라 만들 것이냐를 결정하게 하는 부분이다.

 

보통 7~13 정도를 사용하지만,

내가 조금 이것저것 더 상세하고 디테일한 프롬프트를 원할 경우,

절대 내 맘대로 이미지를 생성해주지 않는다.

 

그런데 이걸 14~40까지 올려버리면 

색상도 이상하고 머리도 2개씩 나오고 이상한 증상들을 보이기 시작한다.

 

따라서, CFG Scale과 프롬프트의 갯수와의 조화가 중요하다.

초심자의 경우, 보통은 7~13내로 사용하도록 하는 것이 좋다.

 

조금 더 디테일하게 만들고 싶을 때는 23~30까지 올려버린 후 

'Dynamic Thresholder'라는 Extension을 통해 mimic Scale을 6으로 설정하여

완화 시키는 방법이 있다.

 

이 방법은 이후 Extension 중 Dynamic Thresholder에 대해 더 작성하도록 하겠다.