Stable Diffusion

[AI Study] LoRA Training


์œ„ ๋‚ด์šฉ์— ๋Œ€ํ•œ ํ•™์Šต์— ์ถ”๊ฐ€๋กœ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ๋‹ค๋ฅธ ๋‚ด์šฉ๋“ค๋„ ์ถ”๊ฐ€ํ–ˆ์Œ.
ย 

Stable Diffusion

Stable Diffusion์€ ํ™•๋ฅ ์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ชจ๋ธ ์ค‘ ํ•˜๋‚˜๋‹ค. ์˜คํ”ˆ ์†Œ์Šค์ด๊ธฐ์— ํŒŒ์ƒ ๋ชจ๋ธ๋“ค์ด ๋งŽ๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ๋„ ํฌ๋‹ค.
๊ตฌ๊ธ€์˜ Imagen์ด๋‚˜ OpenAI์˜ Dall-e๋Š” ํ”ฝ์…€ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ๊ทผ๋ฐ ์ด๊ฑด ์—„์ฒญ๋‚œ ์ปดํ“จํŒ… ํŒŒ์›Œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด 512x512 ์ด๋ฏธ์ง€๊ฐ€ RGB ๊ฐ’์„ ๋‹ค๋ฃฌ๋‹ค๋ฉด ์ด๊ฑด 512x512x3์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค๋ฃฌ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ์–ด์–ด์–ด์–ด์–ด์—„์ฒญ ๋А๋ฆด ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.
Stable Diffusion ๋ชจ๋ธ์€ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ โ€˜Latent Diffusion Modelโ€™์ด๋‹ค. ํ”ฝ์…€ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š๊ณ  ์ด๋ฏธ์ง€๋ฅผ โ€˜Latent Spaceโ€™๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์ด๋ฏธ์ง€๋กœ ์••์ถ•ํ•œ๋‹ค. ์ด Latent Space ์ด๋ฏธ์ง€๋Š” ์›๋ณธ ์ด๋ฏธ์ง€์— ๋น„ํ•ด 48๋ฐฐ ์ •๋„ ์ž‘์•„์ง„๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์ด โ€˜VAE(Variational Autoencoderโ€™ ์ด๋‹ค.
ย 
Stable Diffusion Training ์‹ฌํ”Œํ•œ ์ž‘๋™ ์›๋ฆฌ
  1. Training ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•œ๋‹ค. (ex. ๊ณ ์–‘์ด ์‚ฌ์ง„)
  1. ๋žœ๋ค Noise ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  1. Training ์ด๋ฏธ์ง€์— Noise ์ด๋ฏธ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์›๋ณธ ์ด๋ฏธ์ง€์— ๋…ธ์ด์ฆˆ๊ฐ€ ๋ผ๊ฒŒ ๋งŒ๋“ ๋‹ค.
  1. ์ตœ์ข…์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๋…ธ์ด์ฆˆ ์ด๋ฏธ์ง€๊ฐ€ ์›๋ณธ ์ด๋ฏธ์ง€์—์„œ ์–ผ๋งˆ๋งŒํผ์˜ Noise๊ฐ€ ์ถ”๊ฐ€๋˜์–ด ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ์ถ”์ธกํ•œ๋‹ค.
      • ์ด๋•Œ Noise Predictor๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” โ€˜U-Net ๋ชจ๋ธโ€™์„ ์ด์šฉํ•œ๋‹ค.
        • notion image
  1. ํŠธ๋ ˆ์ด๋‹์ด ์™„๋ฃŒ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ๊ฒฐ๊ณผ๋ฌผ๋กœ Noise Predictor๋ฅผ ํš๋“ํ•œ๋‹ค.
ย 
Stable Diffusion Inference ์ž‘๋™ ์›๋ฆฌ
  1. ๋žœ๋คํ•˜๊ฒŒ Noise ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  1. Noise Predictor์—๊ฒŒ ์ด Noise ์ด๋ฏธ์ง€์—์„œ ์–ด๋–ค Noise๊ฐ€ ๊ผˆ๋Š”์ง€ ์ถ”์ธกํ•˜๊ฒŒ ํ•œ๋‹ค.
  1. Noise Predictor๊ฐ€ ์ถ”์ธกํ•œ Noise๋ฅผ Noise ์ด๋ฏธ์ง€์—์„œ ํ•˜๋‚˜์”ฉ ์ œ๊ฑฐํ•œ๋‹ค.
  1. ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ํš๋“ํ•œ๋‹ค.
    1. https://stable-diffusion-art.com/how-stable-diffusion-work/
ย 
Stable Diffusion์˜ ์ง„์งœ ์ž‘๋™ ์›๋ฆฌ
Stable Diffusion์—์„œ์˜ ํ•ต์‹ฌ์€ โ€œVAEโ€๋‹ค. VAE๋Š” Encoder์™€ Decoder๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. Encoding์€ ์ด๋ฏธ์ง€ ์••์ถ•, Decoding์€ ์ด๋ฏธ์ง€ ๋ณต์›์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
Encoding์€ ์ด๋ฏธ์ง€๋ฅผ ์••์ถ•ํ•ด โ€˜Latent Spaceโ€™๋ผ๋Š” ๊ณณ์˜ ํ˜•์‹์— ๋งž๊ฒŒ ๋ณ€ํ˜•ํ•˜๋Š”๋ฐ Latent Space์—๋Š” ์ด๋ฏธ์ง€์˜ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด โ€˜type: ๊ณ ์–‘์ด, ์ƒ‰: ํšŒ์ƒ‰โ€™ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์˜ ์ข…๋ฅ˜๋Š” ์–ด์–ด์–ด์–ด์–ด์–ด์–ด์—„์ฒญ ๋งŽ๋‹ค.
Decoding์€ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ๋ฐ”ํƒ•์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋ณต์›ํ•˜๋Š”๋ฐ ์ข‹์€ ๋””์ฝ”๋”๋Š” ๊ณ ํ’ˆ์งˆ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
https://stable-diffusion-art.com/how-stable-diffusion-work/
์ด๋•Œ Latent Space์—๋Š” ์ˆ˜๋งŽ์€ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๊ฒŒ ๋˜๋Š”๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ Prompt๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๊ทธ Prompt๋ฅผ Latent Space ์—์„œ์˜ ํŠน์ • ๋ฒกํ„ฐ์™€ ์—ฐ๊ฒฐํ•˜์—ฌ
๊ทผ๋ฐ ์–ด๋–ป๊ฒŒ ์••์ถ•์„ ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์›๋ณธ ์ด๋ฏธ์ง€์˜ ํŠน์„ฑ์„ ์ž˜ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ด์œ ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ด๋ฏธ์ง€๊ฐ€ ์™„์ „ํžˆ ๋žœ๋ค์€ ์•„๋‹ˆ๊ณ  ๋Œ€๋ถ€๋ถ„ ๊ณตํ†ต๋œ ํŠน์ง•์„ ์ง€๋‹ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ์–ผ๊ตด์€ ๋ˆˆ, ์ฝ”, ์ž… ๋“ฑ์˜ ๊ด€๊ณ„, ๋ฉ๋ฉ์ด๋Š” 4๊ฐœ ๋‹ค๋ฆฌ ๋“ฑ์˜ ํŠน์ง• ๋ง์ด๋‹ค.
ย 
Reverse Diffusion์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•จ
  1. ๋žœ๋คํ•œ Latent Space ๋งคํŠธ๋ฆญ์Šค ์ƒ์„ฑ
  1. Noise predictor๊ฐ€ Noise ์˜ˆ์ธกํ•ด์„œ Latent Matrix์—์„œ ์ œ๊ฑฐ
  1. 2๋ฅผ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— Latent Matrix๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋ณ€ํ™˜
ย 
VAE ํŒŒ์ผ์€ ๋ˆˆ์ด๋‚˜ ์–ผ๊ตด์„ ๋” ์ž˜ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๊ธฐ๋„ ํ•จ
๋””์ฝ”๋”๋ฅผ ํŒŒ์ธํŠœ๋‹ ์ž˜ ํ•˜๋ฉด ๋””ํ…Œ์ผ์„ ๋” ์ž˜ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Œ
ย 
Stable Diffusion์€ 512x512์— ํŒŒ์ธํŠœ๋‹ ๋˜์–ด์žˆ๊ธฐ์— ์—ฌ๊ธฐ์„œ ๋ฒ—์–ด๋‚˜๋ฉด ์ด๋ฏธ์ง€ ์ค‘๋ณต์ด ๋˜๊ฑฐ๋‚˜ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ํ™•๋ฅ ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค.
SDXL์€ 1024x1024์— ํŒŒ์ธํŠœ๋‹ ๋˜์–ด์žˆ๋‹ค.
ย 
512 x 512 x 3
64 x 64 x 4 x 16 x 3
ย 
Conditioning
text๊ฐ€ ์—†์œผ๋ฉด Stable Diffusion์€ ๋žœ๋คํ•˜๊ฒŒ ๊ฐœ๋‚˜ ๊ณ ์–‘์ด ์‚ฌ์ง„์€ ๋‚ด๋†“์„ ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ป์–ด๋‚ด๊ธฐ ์œ„ํ•ด โ€˜Conditioningโ€™์„ ํ•ด์•ผ ํ•œ๋‹ค.
Conditiong์„ ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋Š” Noise Predictor๋ฅผ ์กฐ์ ˆํ•ด ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ Noise๋ฅผ ์˜ˆ์ธกํ•˜๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
ย 
ย 

VAE (variational autoencoder)

https://civitai.com/articles/3105/essential-to-advanced-guide-to-training-a-lora
VAE๋Š” ์›๋ณธ ์ด๋ฏธ์ง€์˜ ํŠน์ง•๋งŒ ๋ฝ‘์•„๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
์œ„ ์ด๋ฏธ์ง€์—์„œ ์™ผ์ชฝ ์›๋ณธ ์ด๋ฏธ์ง€๋Š” 512x512, ์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€๋Š” 64x64์ด๋‹ค. VAE๋Š” ์›๋ณธ ์ด๋ฏธ์ง€์˜ ํ•ด์ƒ๋„๋ฅผ ๋‚ฎ์ถฐ ํŠน์ง•๋งŒ ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
Training์€ Prompt๋ฅผ ํ†ตํ•ด ์˜ค๋ฅธ์ชฝ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์™ผ์ชฝ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Stable Diffusion์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด๋‚ธ ์ด๋ฏธ์ง€๊ฐ€
ย 
ย 
Stable Diffusion v1 โ†’ v2 โ†’ SDXL
  • parameter ์ˆ˜ ์ฆ๊ฐ€ (v1.5๋Š” 0.98b, SDXL์€ 6.6b)
  • v2๋Š” ์ž˜ ์•ˆ์”€. v1.5 ํ˜น์€ SDXL ์”€
ย 
ย 

Noise Schedule

๋…ธ์ด์ฆˆ ์Šค์ผ€์ฅด์€ Training, Inference ๊ณผ์ •์—์„œ ๋…ธ์ด์ฆˆ๋ฅผ ์–ด๋–ป๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ณ  ์ œ๊ฑฐํ•˜๋Š” ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
ย 
ย 
ย 

CFG - Classifier Free Guidance

CFG๋Š” ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ Prompt์˜ ์ผ์น˜๋„๋ฅผ ๋†’์ด๋Š” ๊ธฐ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค.
Classifier Guidance๋Š” ๋น„์Šทํ•œ ์ด๋ฏธ์ง€๋“ค์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์•„๋ž˜ ์ด๋ฏธ์ง€์—์„œ ์™ผ์ชฝ์€ guidance๊ฐ€ ์—†๊ณ  ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜๋ก Guidance Scale์ด ๋†’์•„์ง„๋‹ค. Guidance Scale์ด ๋†’์„ ์ˆ˜๋ก โ€˜dogโ€™์— ๋Œ€ํ•œ ์š”์ฒญ์— ์•Œ๋งž๋Š” โ€˜dogโ€™์ด๋ฏธ์ง€๋ฅผ ์ค„ ํ™•๋ฅ ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค.
๊ทผ๋ฐ Guidance Scale์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Guidance๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ถ”๊ฐ€ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ์ด ๋•Œ๋ฌธ์— Training์˜ ๋‚œ์ด๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ„๋‹ค.
https://stable-diffusion-art.com/how-stable-diffusion-work/
ย 
CFG Scale ๊ฐ’์€ โ€˜Text Promptโ€™๊ฐ€ ๊ฒฐ๊ณผ์— ์–ผ๋งˆ๋‚˜ ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์ง€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. 0์œผ๋กœ ์„ค์ •๋˜๋ฉด ์ด๋ฏธ์ง€๋Š” Guidance Scale์—†์ด ์ƒ์„ฑ๋˜๊ณ  CFG Scale์ด ๋†’์„ ์ˆ˜๋ก prompt์— ๋งž๋Š” ์ด๋ฏธ์ง€๋ฅผ ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
CFG๊ฐ€ ๋‚ฎ์œผ๋ฉด ์ข€ ๋” ์ฐฝ์˜์ ์ธ ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์ฒด์ ์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•˜๋‹ค. ๋˜ CFG๊ฐ€ ๋„ˆ๋ฌด ๋†’์œผ๋ฉด ํ…์ŠคํŠธ๋ฅผ ๊ณผ๋„ํ•˜๊ฒŒ ๋ฐ˜์˜ํ•˜๋ ค ํ•˜๋ฉด์„œ ๋น„ํ˜„์‹ค์ ์ด๊ฑฐ๋‚˜ ์ด์ƒํ•ญ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค.
ย 
ย