Stable Diffusion 은 로컬에서 무료로 돌릴 수 있는 이미지 생성 모델입니다. Midjourney 와 달리 프롬프트 문법이 조금 기계적인데, 그만큼 손으로 제어할 수 있는 부분이 많습니다. 이 글은 처음 시작하는 사람이 "왜 내 결과만 이상하지" 에서 벗어나는 데 필요한 최소한의 문법을 다룹니다.
아래 예시는 AUTOMATIC1111 WebUI 기준이고, ComfyUI 도 같은 문법을 씁니다. 모델은 SD 1.5 계열(Realistic Vision 등)과 SDXL 을 번갈아 썼고, 비교할 때는 같은 시드(seed)를 고정했습니다. 시드를 고정하지 않으면 프롬프트 효과와 운을 구분할 수 없습니다.
프롬프트 기본 구조
[품질 태그], [주제], [외모·특징], [의상·소품], [포즈], [배경], [조명], [스타일]
Negative prompt:
[제외할 요소]
쉼표로 구분한 토큰 묶음이고, 문장보다 단어 나열이 잘 먹힙니다. SD 1.5 는 특히 그렇고, SDXL 은 짧은 문장도 어느 정도 이해합니다. "a photo of a woman who is smiling while holding a cup" 보다 "woman, smiling, holding a cup, photo" 쪽이 SD 1.5 에서 안정적입니다.
품질 태그
masterpiece 걸작
best quality 최고 품질
high resolution 고해상도
8k, 4k 해상도
highly detailed 매우 상세한
sharp focus 선명한 초점
조합 예시는 masterpiece, best quality, highly detailed, 8k, 처럼 맨 앞에 둡니다.
실제로 돌려 보면. SD 1.5 계열, 특히 애니메이션 모델에서는 품질 태그 유무로 결과가 눈에 띄게 달라집니다. 학습 데이터에 그 태그가 붙어 있었기 때문입니다. 반면 SDXL 에서는 효과가 크지 않고, 과하게 넣으면 오히려 채도가 올라가며 질감이 뭉개지는 경우가 있었습니다. SDXL 에서는 masterpiece, best quality 두 개 정도만 두고 나머지는 빼는 편이 결과가 자연스러웠습니다.
가중치 (Emphasis)
괄호로 강조
(keyword) 1.1배
((keyword)) 1.21배
(((keyword))) 1.33배
[keyword] 0.9배
[[keyword]] 0.81배
숫자로 지정
(keyword:1.5) 1.5배 강조
(keyword:0.7) 0.7배 약화
괄호를 겹치는 것보다 숫자로 적는 편이 나중에 읽기 쉽습니다. 저는 ((( ))) 를 쓰지 않고 전부 (keyword:1.3) 식으로 통일합니다.
실제로 돌려 보면. 가중치 1.5 를 넘기면 그 요소가 화면을 잡아먹습니다. (red dress:1.8) 로 두면 드레스뿐 아니라 배경과 피부까지 붉어졌습니다. 보통 1.1~1.3 사이에서 조절하고, 1.4 이상은 "이 요소가 거의 안 나올 때" 만 씁니다. 반대로 0.7 이하는 아예 없는 것과 비슷해서, 약화보다는 네거티브로 옮기는 편이 낫습니다.
a woman with (blue eyes:1.3), (long red hair:1.2), wearing a dress
네거티브 프롬프트
네거티브는 "나오지 말아야 할 것"을 적는 자리입니다. 처음에는 빈칸으로 두고 결과를 본 뒤, 거슬리는 것부터 하나씩 추가하는 방식이 좋습니다. 처음부터 긴 네거티브를 복사해 넣으면 무엇이 효과가 있었는지 알 수 없습니다.
기본 네거티브 (품질)
Negative prompt:
lowres, bad anatomy, bad hands, text, error,
missing fingers, extra digit, fewer digits, cropped,
worst quality, low quality, normal quality,
jpeg artifacts, signature, watermark, username, blurry
인물용 추가
deformed, distorted, disfigured, bad anatomy,
extra limb, missing limb, floating limbs,
mutated hands, duplicate, mutilated
실사 사진용 추가
cartoon, anime, illustration, painting,
3d render, cgi, drawing, sketch
실제로 돌려 보면. 손가락 문제는 네거티브만으로 해결되지 않습니다. bad hands 를 넣어도 SD 1.5 에서 손은 여전히 자주 틀립니다. 손이 중요한 컷이라면 손을 가리는 포즈(주머니에 손, 뒷짐)를 프롬프트에 넣거나, 생성 후 인페인팅으로 고치는 쪽이 확실합니다. 네거티브는 "확률을 낮추는 것" 이지 "금지" 가 아닙니다.
또 하나, 실사 모델에 anime 를 네거티브로 넣으면 눈이 작아지고 피부 질감이 거칠어지는 쪽으로 밀립니다. 원하는 방향이면 좋지만, 부드러운 인물 사진을 원할 때는 빼는 편이 나았습니다.
순서가 결과를 바꾼다
앞에 있는 토큰일수록 영향력이 큽니다. 같은 단어들을 순서만 바꿔 같은 시드로 돌려 보면 차이가 보입니다.
1. 품질 태그
2. 주제·대상 (1girl, a man, a cat …)
3. 외모·특징
4. 의상·소품
5. 포즈·행동
6. 배경·환경
7. 조명
8. 스타일·매체 (photo, illustration …)
실제로 돌려 보면. cherry blossom background, 1girl, … 처럼 배경을 앞에 두면 인물이 작아지고 벚꽃이 화면을 채웠습니다. 주제를 앞으로 옮기자 같은 시드에서 인물이 중앙으로 왔습니다. 스타일 태그(photorealistic, anime style)는 맨 뒤에 둬도 충분히 적용됩니다.
스타일 태그
사진
photorealistic, photo, DSLR, 85mm, cinematic,
film grain, bokeh, studio lighting, natural lighting
일러스트
illustration, digital art, concept art,
anime style, watercolor, oil painting
3D
3D render, CGI, Octane render, Unreal Engine, Blender
렌즈 표기(85mm, 35mm)는 실사 모델에서 생각보다 잘 먹힙니다. 85mm 는 인물이 배경에서 분리되고, 35mm 는 배경이 넓게 잡힙니다. f/1.8 같은 조리개 표기는 보케(배경 흐림)에 영향을 줬습니다.
실전 프롬프트 세 가지
인물 사진 (실사 모델 기준)
Prompt:
masterpiece, best quality, highly detailed,
portrait of a young woman,
(blue eyes:1.2), long brown hair,
wearing white blouse,
soft smile, looking at viewer,
natural lighting, bokeh background,
photorealistic, 85mm lens, f/1.8
Negative prompt:
lowres, bad anatomy, bad hands, text, error,
missing fingers, extra digit, cropped,
worst quality, low quality, jpeg artifacts,
signature, watermark, blurry, deformed, distorted face
풍경
Prompt:
masterpiece, best quality, highly detailed, 8k,
mountain landscape, snow-capped peaks, alpine lake,
golden hour lighting, dramatic sky,
(vibrant colors:1.2),
landscape photography, wide angle
Negative prompt:
lowres, bad quality, blurry,
text, watermark, signature, oversaturated
애니메이션 캐릭터
Prompt:
masterpiece, best quality,
1girl, anime style,
(purple hair:1.3), twin tails,
school uniform, sailor collar,
cute smile, blush,
cherry blossom background, soft lighting
Negative prompt:
lowres, bad anatomy, bad hands,
missing fingers, extra fingers,
ugly, deformed, blurry, worst quality, low quality
프롬프트 말고 같이 봐야 하는 값
프롬프트만 바꾸고 결과가 안 좋다고 느낄 때, 실제 원인이 아래 값인 경우가 많았습니다.
| 값 | 권장 범위 | 벗어나면 |
|---|---|---|
| Sampling steps | 20~30 | 너무 적으면 흐릿, 40 이상은 시간만 늘고 차이 미미 |
| CFG scale | 5~8 | 높을수록 프롬프트를 강하게 따르지만 10 이상이면 색이 타고 질감이 깨짐 |
| 해상도 | SD 1.5: 512×512 또는 512×768 / SDXL: 1024×1024 | SD 1.5 를 1024 로 바로 뽑으면 인물이 둘로 늘어남 |
| Seed | 비교할 땐 고정 | 랜덤이면 프롬프트 효과를 판단 불가 |
큰 이미지를 원하면 처음부터 크게 뽑지 말고 Hires. fix 나 업스케일을 거치는 쪽이 안정적입니다.
모델별 특징
| 모델 | 특징 | 적합 용도 |
|---|---|---|
| SD 1.5 | 가볍고 파생 모델이 많음 | 일반 이미지, 저사양 GPU |
| SDXL | 고품질, 짧은 문장 이해 | 고해상도, 실사 |
| SD 3.5 | 텍스트 렌더링 개선 | 글자가 들어가는 이미지 |
| Realistic Vision | SD 1.5 기반 실사 특화 | 인물 사진 |
| DreamShaper | 아트 스타일 | 일러스트, 컨셉 아트 |
SD 1.5 에서 쓰던 긴 품질 태그와 강한 네거티브를 SDXL 에 그대로 가져가면 결과가 오히려 나빠지는 경우가 있습니다. 모델을 바꿨으면 프롬프트도 줄여서 다시 시작하는 편이 빠릅니다.
자주 하는 실수
- 네거티브를 처음부터 길게 복사해 넣기. 무엇이 효과인지 모르게 되고, 어떤 항목은 원하는 요소까지 지웁니다.
- 가중치를 1.5 이상으로 올리기. 한 요소가 화면 전체를 물들입니다. 안 나오면 가중치보다 순서를 먼저 바꿔 보세요.
- 시드를 고정하지 않고 비교하기. 운과 효과를 구분할 수 없습니다.
- SD 1.5 로 큰 해상도를 바로 뽑기. 인물이 둘이 되거나 몸이 늘어납니다.
- 문장으로 길게 쓰기. SD 1.5 는 단어 나열이 훨씬 안정적입니다.
처음에는 품질 태그, 주제, 스타일 세 덩어리로 짧게 시작해서 결과를 본 뒤 하나씩 더하는 방식이 가장 빠르게 감을 잡는 길이었습니다.
