본문 바로가기
AIML

Stable Diffusion Request Body

by Hyeon Cloud 2025. 1. 16.

TL;DR

파라미터 타입 필수 기본값 설명

prompt string (없음) 생성할 이미지에 대한 텍스트 설명(프롬프트). 1~10000자 이내 권장. 명확하고 구체적으로 작성할수록 원하는 결과를 얻을 확률이 높아짐.
mode string 아니오 text-to-image 이미지 생성 모드. - text-to-image: 텍스트 기반 생성만 진행 (prompt 필수)- image-to-image: 기존 이미지와 prompt를 함께 사용 (prompt, image, strength 필수)
image binary (mode가 image-to-image일 때 필수) (없음) 기존 이미지를 업로드할 때 사용. jpeg, png, webp 지원. 각 변의 최소 길이는 64픽셀 이상이어야 하며, 최대 10MiB까지 가능. mode = image-to-image 일 때만 의미가 있음.
**strength        
(Bedrock 미지원)** number (mode가 image-to-image일 때 필수) (없음) 0~1 사이의 실수. 업로드한 이미지가 최종 이미지에 얼마나 반영될지를 결정. 0에 가까울수록 원본 이미지를 그대로 유지하고, 1에 가까울수록 텍스트 기반으로 새롭게 생성되는 비중이 커짐.
aspect_ratio string 아니오 1:1 생성 이미지의 가로:세로 비율. 사용 가능 값: 16:9, 1:1, 21:9, 2:3, 3:2, 4:5, 5:4, 9:16, 9:21 mode = text-to-image일 때만 사용 가능.
seed number 아니오 0 이미지 생성 시 사용될 시드. 0이거나 미지정 시 무작위 시드가 사용됨.
negative_prompt string 아니오 (없음) 생성 결과에 포함시키고 싶지 않은 요소나 키워드. (최대 10000자) 단, sd3-large-turbo에서는 동작하지 않음.
**cfg_scale        
(Bedrock 미지원)** number 아니오 (없음) 1~10 사이의 값으로, 숫자가 클수록 모델이 prompt(텍스트 설명) 내용을 더 엄격하게 반영하려 함.

Stable Diffusion 모델 구조 및 작동 원리

Stable Diffusion은 Latent Diffusion Model (LDM)을 기반으로 합니다 . 이미지 생성 과정은 크게 두 단계로 나뉘는데, 첫 번째 단계에서는 이미지에 점진적으로 노이즈를 추가하는 forward diffusion process를 거치고, 두 번째 단계에서는 노이즈를 제거하면서 이미지를 생성하는 reverse denoising process를 거칩니다 . 이러한 과정은 일련의 denoising autoencoder를 통해 수행됩니다.

Stable Diffusion의 주요 구성 요소는 다음과 같습니다 .

https://requestum.com/blog/stable-diffusion-explained

  • Variational Autoencoder (VAE): VAE는 이미지를 압축하고 복원하는 데 사용됩니다. VAE encoder는 이미지를 저차원의 latent space로 압축하여 의미론적 정보를 추출합니다 . Latent space는 이미지의 픽셀 공간보다 훨씬 작은 크기를 가지므로, 모델의 계산 효율성을 높이는 데 기여합니다 . VAE decoder는 latent space에서 이미지를 복원합니다.
  • U-Net: 이미지에서 노이즈를 제거하는 데 사용되는 신경망 구조입니다 . U-Net은 이미지의 특징을 추출하고, 노이즈를 제거하는 데 효과적인 것으로 알려져 있습니다.
  • Text Encoder (선택 사항): 텍스트 프롬프트를 latent space로 인코딩하는 데 사용됩니다 . CLIP (Contrastive Language-Image Pre-training)과 같은 사전 학습된 언어 모델을 사용하여 텍스트를 latent vector로 변환합니다 .

Stable Diffusion은 VAE를 사용하여 이미지를 latent space로 압축하고, Gaussian noise를 추가하여 latent representation을 손상시킵니다 . 그런 다음, U-Net과 text encoder를 사용하여 노이즈를 제거하고 텍스트 프롬프트에 따라 이미지를 생성합니다.

Guidance는 Stable Diffusion에서 텍스트 프롬프트를 사용하여 이미지 생성 과정을 안내하는 방법입니다. U-Net은 각 단계에서 프롬프트를 사용하여 노이즈를 이미지로 정제합니다 .

Stable Diffusion은 텍스트-투-이미지 변환 외에도 텍스트 프롬프트를 기반으로 이미지-투-이미지 변환, inpainting, outpainting과 같은 작업을 수행할 수 있습니다 . Inpainting은 이미지의 일부분을 수정하는 기술이며, outpainting은 이미지의 경계를 확장하여 새로운 내용을 생성하는 기술입니다. Stable Diffusion은 적절한 사용자 인터페이스와 함께 사용될 때, 프롬프트를 사용하여 inpainting 및 outpainting을 통해 기존 이미지를 부분적으로 변경할 수 있습니다 .

Stable Diffusion 모델의 추론 파라미터

Stable Diffusion 모델은 다양한 파라미터를 통해 이미지 생성 과정을 제어할 수 있습니다. 주요 파라미터는 다음과 같습니다.

1. prompt

prompt는 생성하려는 이미지에 대한 텍스트 설명입니다. 모델은 prompt를 해석하여 이미지를 생성합니다. prompt는 구체적이고 명확할수록 원하는 이미지를 얻을 확률이 높아집니다 . 예를 들어, "빨간색 사과"보다는 "밝은 빨간색의 윤기 나는 사과"와 같이 자세하게 묘사하는 것이 좋습니다.

Stable Diffusion은 tokenization이라는 프로세스를 사용하여 텍스트 프롬프트를 단어 또는 부분 단어로 나눕니다. 예를 들어, "a cute and adorable bunny"라는 프롬프트는 "a", "cute", "and", "adorable", "bunny"와 같은 토큰으로 분리됩니다 . 계산을 용이하게 하기 위해 Stable Diffusion은 padding 또는 truncation을 통해 모든 텍스트 프롬프트의 토큰 시퀀스 길이를 77로 유지합니다 . 최대 프롬프트 길이는 75 토큰이며, 이는 약 350자에 해당합니다 .

Stable Diffusion에서 사용되는 CLIP 임베딩은 프롬프트에 설명된 내용과 스타일을 모두 인코딩합니다 . 프롬프트 임베딩 공간에서 이미지 공간으로의 매핑은 연속적입니다. 즉, 프롬프트 임베딩 공간의 작은 조정은 이미지 공간의 작은 변화로 이어집니다 .

Prompt weighting: 각 키워드 끝에 콜론과 숫자를 추가하여 키워드에 다른 강조를 줄 수 있습니다. 숫자가 클수록 강조가 강해집니다 . 예를 들어, "빨간색 사과:1.2 녹색 잎:0.8"과 같이 사용할 수 있습니다.

2.strength (Bedrock 미지원)

strength는 이미지 생성 과정에서 추가되는 노이즈의 양을 조절하는 파라미터입니다. 값이 높을수록 더 많은 노이즈가 추가되어 이미지가 더 추상적이고 예측 불가능하게 생성됩니다 . 반대로 값이 낮을수록 원본 이미지와 유사한 이미지가 생성됩니다. strength 값은 일반적으로 0에서 1 사이의 값을 가집니다.

3. aspect_ratio

aspect_ratio는 생성되는 이미지의 가로 세로 비율을 결정합니다. Stable Diffusion은 주로 1:1 비율의 이미지로 학습되었기 때문에, 1:1 비율에서 가장 안정적인 결과를 생성합니다 . Stable Diffusion 1.5의 경우, 기본 모델의 출력은 512x512 픽셀에 최적화되어 있습니다. SD1.5의 많은 일반적인 미세 조정 버전은 768x768에 최적화되어 있습니다 . 16:9와 같은 다른 비율을 사용할 경우, 이미지의 일부 요소가 반복되거나 왜곡될 수 있습니다 . aspect ratio bucketing은 미세 조정에서 사용되는 개념입니다 .

4. seed

seed는 이미지 생성 과정에서 사용되는 난수 생성기의 초기값입니다. 동일한 seed 값, 프롬프트 및 파라미터를 사용하면 동일한 이미지가 생성됩니다 . seed 값을 변경하면 다양한 이미지 변형을 생성할 수 있습니다.

Seed exploration: 가능한 seed 값의 범위는 거의 무제한이므로 다양한 값을 탐색하는 것이 좋습니다 . seed를 clip guidance 및 다양한 스케줄러와 같은 이미지 생성 기술과 결합하면 최상의 결과를 얻을 수 있습니다 .

5. negative_prompt

negative_prompt는 생성하고 싶지 않은 이미지의 특징을 설명하는 파라미터입니다. 예를 들어, "흐릿한" 또는 "왜곡된"과 같은 단어를 사용하여 이미지 품질을 저하시키는 요소를 제거할 수 있습니다 . negative_prompt를 사용하면 원하는 이미지를 얻을 확률을 높일 수 있습니다. 특히 Stable Diffusion 2.0 이상 버전에서 고품질 이미지를 얻는 데 중요한 역할을 합니다 .

Negative prompt weighting negative_prompt에 가중치를 부여하여 특정 요소를 더 강하게 배제할 수 있습니다 . 예를 들어, 이미지에 빨간색 자동차가 나타나지 않도록 하려면 "빨간색 자동차:1.3"과 같이 사용할 수 있습니다.

Modifying images with negative prompts negative_prompt를 사용하여 기존 이미지를 수정하거나 특정 특징의 강도를 줄일 수 있습니다 . 예를 들어, "빨간색 사과" 이미지를 생성했지만 빨간색을 덜 강하게 표현하고 싶다면 "빨간색:0.5"를 negative_prompt로 사용할 수 있습니다.

6. cfg_scale (Bedrock 미지원)

cfg_scale는 텍스트 프롬프트의 영향력을 조절하는 파라미터입니다. 값이 높을수록 모델은 텍스트 프롬프트를 더 충실하게 따르지만, 이미지의 창의성이 떨어질 수 있습니다 . 반대로 값이 낮을수록 모델은 텍스트 프롬프트를 덜 따르고 더 자유롭게 이미지를 생성합니다. cfg_scale 값은 일반적으로 1에서 20 사이의 값을 가집니다. 이상적인 cfg_scale 값은 7에서 11 사이이며, 노이즈를 최소화하면서 최적의 결과를 얻을 수 있습니다 .

Reference


Understanding Stable Diffusion Strength Parameter for Beginners

https://blog.segmind.com/understanding-stable-diffusion-strength-parameter-for-beginners/

Stable Diffusion prompt: a definitive guide

https://stable-diffusion-art.com/prompt-guide

Stable Diffusion 3: Research Paper

https://stability.ai/news/stable-diffusion-3-research-paper

Scalable Diffusion Models with Transformers

https://arxiv.org/abs/2212.09748