Condition Image Genration๊ณผ ๊ด๋ จ๋ ์ฌ๋ฌ ํ ํฝ๊ณผ ๋ ผ๋ฌธ๋ค์ ์ ๋ฆฌํฉ๋๋ค.
Preliminary
CFG scale
CFG(Classifier-Free Guidance) Scale์ diffusion ๋ชจ๋ธ์์ condition ๊ธฐ๋ฐ ์ํ๋ง์ ์ ์ดํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ค์ผ์ผ๋ง ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ฏธํฉ๋๋ค. Unconditional ์ํ๊ณผ conditional ์ํ์ ๊ฐ์ค์น๋ฅผ ์กฐ์ ํ์ฌ ๋ชจ๋ธ์ ์ถ๋ ฅ ํ์ง์ ์ ์ดํฉ๋๋ค.
-
๊ฐ์ด ์์ ๋ (e.g., 1.0 ์ดํ): ๋ชจ๋ธ์ด ๋ ์์ฐ์ค๋ฝ๊ณ ์ผ๋ฐ์ ์ธ ์ํ์ ์์ฑ. -1์ธ ๊ฒฝ์ฐ์๋ ์์ ํ๋กฌํํธ์ ์ํฅ์ ๋ฐ์ง ์์
-
๊ฐ์ด ํด ๋ (e.g., 7.0 ์ด์): condition์ ๋ ๊ฐํ๊ฒ ๋ง์ถ๋ ค๋ ๊ฒฝํฅ์ด ์์
-
์ผ๋ฐ์ ์ผ๋ก CFG scale 7์์ 11 ์ฌ์ด๊ฐ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณต
Negative Prompt
์์ CFG scale์ denoising ๊ณผ์ ์ ๋ณด๋ฉด 'conditional sampling - unconditional sampling'์ ํํ๋ก ์ํ๋ฉ๋๋ค.
Negative prompt๋ ์ ๋ฐฉ์์์์ unconditional sampling์ ํ์ด์ฌํนํ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ฉ๋๋ค. ์ฆ, **'conditional sampling - unconditional sampling with negative prompt'**์ ํํ๋ก ์ํ๋ฉ๋๋ค. ์ค๋ช ์ ๋ํ ์๊ฐ ์๋ฃ๋ ์ด๊ณณ์ ์ฐธ๊ณ ํ๋ฉด ์ข์ต๋๋ค.
CLIP Skip
CLIP skip์ ์ด๋ฏธ์ง ์์ฑ ๊ณผ์ ์์ ์ผ๋ถ (๋ง์ง๋ง ๋ช ๊ฐ์) clip layer๋ฅผ ๊ฑด๋๋ฐ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋๋ ํฅ์๋ ๋ฟ๋ง ์๋๋ผ, ์ด๋ฏธ์ง ์์ฑ ํ์ง๋ ์ข์์ง๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
CLIP์ ๊น์ ๋ ์ด์ด์์๋ ํ ์คํธ์ ์ธ๋ฐํ ์ค๋ช ๊ณผ ๊ด๋ จ์ด ์๋๋ฐ, ํน์ ๋ชจ๋ธ์์๋ ์ด๋ฌํ ์ธ๋ฐํ ์ดํด๊ฐ ์ด๋ฏธ์ง ์์ฑ์ ๋ถํ์ํ ๋ ธ์ด์ฆ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ CLIP skip์ ๊ณผ๋ํ ๋ ธ์ด์ฆ๋ฅผ ์ค์ด๊ณ ํจ์จ์ ์ผ๋ก GPU ์๊ฐ์ ํ์ฉํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
- ๋ฎ์ CLIP skip: ํ ์คํธ ์ค๋ช ์ ์ธ๋ฐํ๊ฒ ๋ฐ์
- ๋์ CLIP skip: ํ ์คํธ์ ๋ํ ์ผ์ ์ผ๋ถ ํฌ์
- ์ผ๋ฐ์ ์ผ๋ก CLIP skip 1~2๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ ํฉ.
- ๋ค๋ง LoRA๋ Negative Prompt์ ๊ฐ์ ๊ธฐ์ ์ฌ์ฉ ์, clip์ ์ํด LoRA ๋ณํ๋์ง ์๋์ง ๋ฑ์ ๋ํด ์ธ๋ฐํ๊ฒ ํ์ธ ํ์
BF16 / FP16 / FP32
BF16 (Brain Float 16)์ **1-bit sign, 8-bit exponent, 7-bit mantissa**๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- Mantissa(์ ํจ ์ซ์)๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ ๋ฐ๋๊ฐ ๋ฎ์ง๋ง, FP32์ ๋์ผํ exponent ๋นํธ๋ฅผ ์ฌ์ฉํ์ฌ dynamic range๊ฐ ๋์
- FP32์ ๊ฐ๊น์ด ์ ๋ฒ์(dynamic range)๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ณ์ฐ ์๋๊ฐ ๋น ๋ฅด๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์
- Neural network training๊ณผ inference์์ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ, ํนํ ์ ๋ฐ๋๊ฐ ํฌ๊ฒ ์ค์ํ์ง ์์ ์ํฉ(์: Gradient ๊ณ์ฐ)์์ ์ ์ฉํจ
FP 16์ **1-bit sign, 5-bit exponent, 10-bit mantissa**๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- BF16์ฒ๋ผ ๊ณ์ฐ ์๋๊ฐ ๋น ๋ฅด๊ณ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ์
- Dynamic range๊ฐ ์ข์, ํฐ ๊ฐ์ด๋ ์์ ๊ฐ์ ๊ณ์ฐ์์๋ ์ ๋ฐ๋๊ฐ ๋ถ์กฑํ ์ ์์ (overflow/underflow ์ํ)
FP32๋ **1-bit sign, 8-bit exponent, 23-bit mantissa**๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ๋์ ์ ๋ฐ๋๋ฅผ ์ ๊ณตํ๋ฉฐ, over/underflow ๋ฌธ์ ๋ฅผ ์ค์
- ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ ๊ณ์ฐ ๋น์ฉ์ด ๋์
LoRA Alpha
LoRA์์ alpha๋ LoRA์ ์ํฅ๋ ฅ์ ์กฐ์ ํ๋ scaling factor์ ๋๋ค. LoRA weight scale ๋ํ LoRA์ ์ํฅ๋ ฅ์ ์กฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก LoRA๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค (์๋์์ dim์ LoRA์ ์ฐจ์์ ์๋ฏธ)
output = original_weight + (lora_A @ lora_B) * (alpha / dim)์ ์์์ alpha / dim ๋ถ๋ถ์ด LoRA์ ์ํฅ๋ ฅ์ ์กฐ์ ํ๋ ๋ถ๋ถ์ ๋๋ค. ๋ฐ๋ผ์ dim์ด 64์ด๊ณ alpha๊ฐ 32์ผ ๋ alpha / dim์ 0.5๊ฐ ๋ฉ๋๋ค. ์ฆ, alpha=32์ด๊ณ , dim=64์ธ ๊ฒฝ์ฐ, inference์์ LoRA weight scale์ 0.5๋ก ์ค์ ํ๋ ๊ฒ์ LoRA๋ฅผ ํ์ตํ ๋ ์ค์ ํ alpha์ dim์ ๋น์จ๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ๋ด๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
ControlNet
UNet์ layer๋ฅผ ๊ทธ๋๋ก copyํด์ค๊ณ , ์ ๋ ฅ๋จ๊ณผ ์ถ๋ ฅ๋จ์๋ weight, bias๊ฐ 0์ผ๋ก ์ด๊ธฐํ๋ zero convolution layer๋ฅผ ๋ก๋๋ค. ์ด ํ trainable copy์ convolution layer๋ฅผ ํ๋ํฉ๋๋ค.
์๋๋ zero initialized convolution์ด ์ค์ํ๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ๊ฒฐ๊ณผ์ ๋๋ค.
Training ๋ฐฉ์์ ๊ธฐ์กด์ stable diffusion loss์ ๋์ผํฉ๋๋ค. ๋ค๋ง ํ ์คํธ ํ๋กฌํํธ๋ 50%๋ฅผ ๋๋คํ๊ฒ ๋น ๋ฌธ์์ด๋ก ๋ฃ์ด์ฃผ์๋ค๊ณ ํฉ๋๋ค. ํ์ต ๊ณผ์ ์์๋ ๊ฒฐ๊ณผ๊ฐ ์ ๋๋ก ๋์ค์ง ์๋ค๊ฐ ํน์ step์์ ๊ฐ์๊ธฐ ๊ฒฐ๊ณผ๊ฐ ์ ๋์ค๋ 'sudden convergence phenomenon'์ด ๋ํ๋ฌ๋ค๊ณ ๋ ๋งํ๊ณ ์์ต๋๋ค.
Inference ์์์๋ ์ฌ๋ฌ condition์ ์ ์ฉํ๋ ๊ฒ๋ ๊ฐ๋ฅํฉ๋๋ค. ๋จ์ง ControlNet์ ํ๋ ๋ ๋ถ์ฐฉํด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
IP-Adapter
์ฌ๋ฌ image prompt๋ฅผ ๋ฃ์ด์ค ์ ์๋ ๋ฐฉ๋ฒ๋ก ๋ค์ด ์์ง๋ง, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ๋ค์ด ์กด์ฌํ์ต๋๋ค.
- ๋ชจ๋ธ ์ ์ฒด๋ฅผ fine-tuning ํ image prompt ๋ชจ๋ธ๋ณด๋ค๋ ์ฑ๋ฅ์ด ๋ฎ์
- ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ก ๋ค์ diffusion model์ cross attention module์ ํ์ฉํ๋ ๊ฒ์ด ์ ์ ํ์ง ์์. ๊ทธ๋์ image feature์ text feature ๋ณํฉํ๋ ๊ธฐ์์ด, ์ง๊ธ์ ๋จ์ง image feature๋ฅผ text์ ๋ง์ถฐ์ฃผ๋ ๊ฒ์ ๋ถ๊ณผํจ. ์ด๋ก์ธํด ์ด๋ฏธ์ง ์ค์ฌ์ ์ธ feature๊ฐ ์ฌ๋ผ์ง๊ณ , ๋จ์ํ ๋๋ต์ ์ธ ์ด๋ฏธ์ง ์์(e.g., ์คํ์ผ) ์ ๋๋ง ์ปจํธ๋กค ๊ฐ๋ฅํ ์์ค์
IP-Adapter๋ decoupled cross-attention ๋งค์ปค๋์ฆ์ ํตํด ์ด๋ฌํ ๋ฌธ์ ์ ์ ๊ฐ์ ํ๊ณ ์ ํ์์ต๋๋ค. ์ ์ฒด ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ต๋๋ค.
- Image prompt์์ image feature๋ฅผ ์ถ์ถํฉ๋๋ค.
- Decoupled cross attention: Image feature๋ฅผ ์ฌ์ฉํ cross attention์ text feature๋ฅผ ์ฌ์ฉํ cross attention์ ๊ฐ๊ฐ ์ํํ ๋ค ํฉ์ณ์ค๋๋ค.
- ํฉ์น feature๋ฅผ UNet์์ ํ์ฉํฉ๋๋ค.
์๋์ ์์ ํตํด์ text prompt์ image prompt๊ฐ ๊ฐ๊ฐ cross attention ์ํํ ๋ค ํฉ์ณ์ง๊ฒ ๋ฉ๋๋ค.
Inference stage์์๋ image prompt์ ๊ฐ๋๋ฅผ ์กฐ์ ๊ฐ๋ฅํฉ๋๋ค.
IP-Adapter์ ํ์ต ๋ก์ง์ ์ถ๋ก ๋ก์ง๊ณผ๋ ์กฐ๊ธ ๋ค๋ฆ ๋๋ค. ๋น๋ก ์ถ๋ก ์์๋ ๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง๋ฅผ ๋ฃ๋ ๋ฐฉ์์ผ๋ก ๋์ํ์ง๋ง, ํ์ต์์๋ ๋ฐ๋ก ๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง๋ฅผ ์๋ก ๋ง๋ค์ง๋ ์๊ณ , ๊ธฐ์กด์ (ํ ์คํธ, ์ด๋ฏธ์ง) ํ์ด๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ์ฌ, IP-Adapter์ ์ ๋ ฅ ๊ฐ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ฃผ๊ณ , ํด๋น ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋๋ก ์ ๋ณต์ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
IP-Adapter๋ ํน์ ํฌ์ฆ๋ฅผ ์์ ๋กญ๊ฒ ์ ์ํ๋ฉด์ ์ ๋ฐ์ ์ธ ์์ ๊ตฌ์ฑ๊ณผ ์คํ์ผ์ ์ก์๋ด๋ ๋ฐ ์ ์ฉํ๋ฐ ๋ฐํด, ControlNet์ ํน์ ํฌ์ฆ๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. ๋ฐ๋ผ์ IP-Adapter์ ControlNet์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์๋ ์์์ฒ๋ผ ์ธ๋ถ์ ์ธ ์ด๋ฏธ์ง ๋ํ ์ผ์ด๋ ์คํ์ผ์ ๋ณด์กดํ๋ฉด์๋ ๊ตฌ์กฐ์ ํน์ง๋ ์ ์ด ๊ฐ๋ฅํฉ๋๋ค (ex. ControlNet์ผ๋ก ๊ตฌ๋๋ฅผ ์ค์ ํ ๋ค, IP-Adapter๋ก ์คํ์ผ์ ์ธ๋ถ์ ์ผ๋ก ์กฐ์ ).
IP-Adapter์ ๊ด๋ จ๋ ์ข์ ์ค์ต ์์ ์๋ฃ๊ฐ ์์ด ์๋์ ๊ณต์ ํฉ๋๋ค.
๋ง์ฝ์ (1) ํน์ ๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง์ ํน์ง์ ๋ฐ์ํ๋ฉด์, (2) ํน์ ๊ตฌ์กฐ/ํํ๋ก ์ ์ดํ, ํน์ ์คํ์ผ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๊ณ ์ถ๋ค๋ฉด, IP-Adapter๋ฅผ ํตํด ๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง์ ํน์ง์ ๋ฐ์ํ๊ณ , ControlNet์ผ๋ก ๊ตฌ์กฐ๋ฅผ ์ ์ดํ๋ฉด์, ์ํ๋ ์คํ์ผ๋ก ํ์ต๋ LoRA๋ฅผ ์ ์ฉํด๋ณผ ์ ์์ต๋๋ค.
ํ์ง๋ง ๋จ์ IP-Adapter๋ ๋๋ก ์ธ๋ถ ์คํ์ผ์ด๋ ๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง์ ๋ํ ์ผ์ด ๊ฒฐ๊ณผ ์ด๋ฏธ์ง์ ์ถฉ๋ถํ ๋ฐ์๋์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ฃผ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๊ฒฝ์ฐ์๋ IP-Adapter Plus๋ฅผ ์ฌ์ฉํด๋ณผ ์ ์์ต๋๋ค.
IP-Adapter Plus
IP-Adapter Plus๋ IP-Adapter์ ํ์ฅ ๋ฒ์ ์ผ๋ก, ๋ ํผ๋ฐ์ค ์ด๋ฏธ์ง์ ์ธ๋ถ์ ์ธ ์คํ์ผ๊ณผ ๋ ์ด์์์ ๋ ์ ๋ฐํ๊ฒ ๋ฐ์ํ๋ ๋ชจ๋ธ์ ๋๋ค. ํด๋น ๋ชจ๋ธ์ ๋ณ๋ ๋ ผ๋ฌธ์ด ์กด์ฌํ๋ ๊ฒ์ ์๋๊ณ ๋์ผํ ์ ์๋ค์ด ๋ ผ๋ฌธ์ ์ ๋ฐ์ดํธํ๋ฉด์ ์๋ก ์ถ๊ฐํ ๋ชจ๋ธ์ ๋๋ค.
๋จ์ํ ์ด๋ฏธ์ง ๊ฐ๋ ๋ฟ๋ง ์๋๋ผ ์ธ๋ฐํ ๋ํ ์ผ๊น์ง ๋ฐ์ํ ์ ์์ด์, IP-Adapter๋ฅผ ํ์ฉํด๋ณด์ค ์๊ฐ์ด ์์ผ์๋ค๋ฉด IP-Adapter Plus ๋ํ ํจ๊ป ํ ์คํธ ํด๋ณด์๋ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
IP-Adapter Plus๊ฐ IP-Adapter์ ๋นํด ๋ํ ์ผ์ ์ ๋ฐ์ํ ์ ์๋ ์๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Global embedding (cls token)๊ณผ local patch embedding์ ๋ชจ๋ ์ถ์ถํฉ๋๋ค. (๊ธฐ์กด IP-Adapter๋ global embedding๋ง ์ฌ์ฉ)
- ์ด๋ฅผ IP-Adapter์ MLP์ ํต๊ณผ์์ผ ์ด๋ฅผ ๊ฐ๊ณตํ๊ณ , ๊ฐ๊ณต๋ ๋ฒกํฐ๋ฅผ cross-attention์ผ๋ก ์ ๋ฌํฉ๋๋ค.
์ฆ, IP-Adapter๋ ์ด๋ฏธ์ง ์ ์ฒด๋ฅผ ๋ํํ๋ ์ถ์ฝ๋ฒกํฐ ํ๋๋ง์ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํด, IP-Adapter Plus๋ ์ด๋ฏธ์ง์ ๊ฐ patch๋ณ local vector๊น์ง ๋ชจ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ ๋ํ ์ผํ๊ณ ์ธ๋ฐํ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ๋ฐ์ ๊ฐ๋ฅํฉ๋๋ค.
InstantID
IP-Adapter ๊ตฌ์กฐ๋ก ์ผ๊ตด ์์ญ์ ๋ํ ์ผ์ ์ก์๋๊ณ , ControlNet ๊ตฌ์กฐ๋ฅผ ํตํด ์ด๋ฏธ์ง ์์์ ์ผ๊ตด์ ๊ตฌ์กฐ์ ์์ญ์ด ์ด๋์ธ์ง ์ก์๋ฌ์ ์ด ๋ ์ ๋ณด๋ฅผ ํ์ฉํ์ฌ ID๋ฅผ ๋ณด์กดํ ์ฑ๋ก ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ๋๋ค.
๋ค๋ฅธ ๋ฐฉ๋ฒ๋ก ๋ค๊ณผ์ ๋น๊ต ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
Face swapping๊ณผ ๊ด๋ จํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ InsightFace์ ๋น๊ตํด๋ดค์ ๋ ๋ ๋ค ์์ฐ์ค๋ฝ๊ณ ์ข์ ์ฑ๋ฅ์ ๋ด๋ ๊ฒ์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ข์ ์ค์ต ์์ ์๋ฃ๊ฐ ์์ด ์๋์ ๊ณต์ ํฉ๋๋ค.
ID๋ฅผ ๋ณด์กดํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ด๋ จํ์ฌ ์ต๊ทผ ๋์จ ๋ ผ๋ฌธ์ผ๋ก๋ PuLID๋ผ๋ ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ ๋ ผ๋ฌธ๋ ์์ผ๋, ๋์ค์ ์ ๋ฆฌํ๋ ๊ฒ์ผ๋ก ํ๊ฒ ์ต๋๋ค.