Stable Cascade - ๊ธฐ๋ณธ
์ถ์ฒ ๋งค๊ฐ๋ณ์
steps
resolution
ํ
์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ํด ์ฃผ๋ก ํ์ธํ๋์ด ์ด๋ฃจ์ด์ง ์คํ ์ด์ง C์ 36์ต ํ๋ผ๋ฏธํฐ ๋ฒ์ ์ ์ฌ์ฉํ์ธ์.
์คํ ์ด์ง B์์๋ ์์ ์ธ๋ถ ๋ฌ์ฌ ๋ณต์์ ๊ฐํ 15์ต ํ๋ผ๋ฏธํฐ ๋ฒ์ ์ ์ฌ์ฉํ์ธ์.
๋ชจ๋ธ์ ์์ ์ ์ฌ ๊ณต๊ฐ ๋๋ถ์ ํจ์จ์ ์ธ ํ์ต ๋ฐ ์ถ๋ก ์ ์ ํฉํ๋ฉฐ, ํ์ธํ๋, LoRA, ControlNet, IP-Adapter, LCM๊ณผ ๊ฐ์ ํ์ฅ ๊ธฐ๋ฅ์ ์ง์ํฉ๋๋ค.
๋ชจ๋ธ์ ์ฐ๊ตฌ ๋ชฉ์ ์ฉ์ด๋ฉฐ, ์ฌ์ค์ ์ธ ํํ ์์ฑ์ด๋ Stability AI์ ํ์ฉ ๊ฐ๋ฅํ ์ฌ์ฉ ์ ์ฑ ์๋ฐ์ ์ฌ์ฉ๋์ด์๋ ์ ๋ฉ๋๋ค.
์ผ๊ตด ๋ฐ ์ฌ๋ ์ด๋ฏธ์ง๊ฐ ์ ๋๋ก ์์ฑ๋์ง ์์ ์ ์์ผ๋ฉฐ, ๋ชจ๋ธ์ ์๋ ์ธ์ฝ๋ฉ์ ์์ค์ด ์์ต๋๋ค.
ํฌ๋ฆฌ์์ดํฐ ์คํฐ์
๋ฐ๋ชจ:
- multimodalart: https://hf.co/spaces/multimodalart/stable-cascade
- ehristoforu: https://hf.co/spaces/ehristoforu/Stable-Cascade
๋ฐ๋ชจ:
multimodalart: https://hf.co/spaces/multimodalart/stable-cascade
ehristoforu: https://hf.co/spaces/ehristoforu/Stable-Cascade
Stable Cascade
์ด ๋ชจ๋ธ์ Wรผrstchen ์ํคํ ์ฒ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๋ค๋ฅธ Stable Diffusion๊ณผ ๊ฐ์ ๋ชจ๋ธ๋ค๊ณผ์ ์ฃผ์ ์ฐจ์ด์ ์ ํจ์ฌ ๋ ์์ ์ ์ฌ ๊ณต๊ฐ์์ ์๋ํ๋ค๋ ์ ์ ๋๋ค.
์ ์ค์ํ ๊น์? ์ ์ฌ ๊ณต๊ฐ์ด ์์์๋ก ๋ ๋น ๋ฅด๊ฒ ์ถ๋ก ์ ์คํํ ์ ์๊ณ , ๋ ์ ๋ ดํ๊ฒ ํ์ต์ด ๊ฐ๋ฅํฉ๋๋ค.
์ผ๋ง๋ ์์ ์ ์ฌ ๊ณต๊ฐ์ธ๊ฐ์? Stable Diffusion์ ์์ถ ๊ณ์ 8์ ์ฌ์ฉํ์ฌ 1024x1024 ์ด๋ฏธ์ง๋ฅผ 128x128๋ก ์ธ์ฝ๋ฉํฉ๋๋ค. Stable Cascade๋ ์์ถ ๊ณ์ 42๋ฅผ ๋ฌ์ฑํ์ฌ 1024x1024 ์ด๋ฏธ์ง๋ฅผ 24x24๋ก ์ธ์ฝ๋ฉํ๋ฉด์๋ ์ ๋ช ํ ๋ณต์์ด ๊ฐ๋ฅํฉ๋๋ค. ํ ์คํธ ์กฐ๊ฑด ๋ชจ๋ธ์ ์ด๋ ๊ฒ ๊ณ ๋๋ก ์์ถ๋ ์ ์ฌ ๊ณต๊ฐ์์ ํ์ต๋ฉ๋๋ค. ์ด์ ๋ฒ์ ์ ์ด ์ํคํ ์ฒ๋ Stable Diffusion 1.5 ๋๋น 16๋ฐฐ์ ๋น์ฉ ์ ๊ฐ์ ์ด๋ค์ต๋๋ค.<br> <br>
๋ฐ๋ผ์, ํจ์จ์ฑ์ด ์ค์ํ ์ฉ๋์ ๋งค์ฐ ์ ํฉํ ๋ชจ๋ธ์ ๋๋ค. ๋ํ, ํ์ธํ๋, LoRA, ControlNet, IP-Adapter, LCM ๋ฑ ์๋ ค์ง ๋ชจ๋ ํ์ฅ ๊ธฐ๋ฅ๋ค์ด ์ด ๋ฐฉ๋ฒ์ผ๋ก๋ ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ๋ธ ์ธ๋ถ ์ ๋ณด
๋ชจ๋ธ ์ค๋ช
Stable Cascade๋ ํ ์คํธ ํ๋กฌํํธ ์ ๋ ฅ ์ ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋๋ก ํ๋ จ๋ ํ์ฐ ๋ชจ๋ธ์ ๋๋ค.
๊ฐ๋ฐ์: Stability AI
์๊ธ ์ง์: Stability AI
๋ชจ๋ธ ์ ํ: ์์ฑ ํ ์คํธ-์ด๋ฏธ์ง ๋ชจ๋ธ
๋ชจ๋ธ ์์ค
์ฐ๊ตฌ ๋ชฉ์ ์ ์ํด, ์ ํฌ๋ StableCascade ๊นํ๋ธ ์ ์ฅ์๋ฅผ ์ถ์ฒํฉ๋๋ค (https://github.com/Stability-AI/StableCascade).
๋ชจ๋ธ ๊ฐ์
Stable Cascade๋ ์ด๋ฏธ์ง ์์ฑ์ ์ํ ์ธ ๊ฐ์ ๋ชจ๋ธ, ์ฆ ์คํ ์ด์ง A, B, C๋ก ๊ตฌ์ฑ๋์ด ์์ด, ์ด๋ฆ์ฒ๋ผ '์์ ์ ์ธ ๋จ๊ณ์ ' ์์ฑ์ ๊ตฌํํฉ๋๋ค.
์คํ ์ด์ง A์ B๋ ์ด๋ฏธ์ง๋ฅผ ์์ถํ๋ ์ญํ ์ ํ๋ฉฐ, ์ด๋ Stable Diffusion์ VAE์ ์ ์ฌํฉ๋๋ค.
๊ทธ๋ฌ๋ ์ด ์ค์ ์ ํตํด ๋ ๋์ ์์ถ๋ฅ ์ ๋ฌ์ฑํ ์ ์์ต๋๋ค. Stable Diffusion ๋ชจ๋ธ์ด 8๋ฐฐ ๊ณต๊ฐ ์์ถ์ ์ฌ์ฉํด 1024 x 1024 ์ด๋ฏธ์ง๋ฅผ 128 x 128๋ก ์ธ์ฝ๋ฉํ๋ ๋ฐ๋ฉด, Stable Cascade๋ 42๋ฐฐ ์์ถ์ ๋ฌ์ฑํ์ฌ 1024 x 1024 ์ด๋ฏธ์ง๋ฅผ 24 x 24๋ก ์ธ์ฝ๋ฉํ๋ฉด์ ์ ํํ ๋ณต์์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๋ก ์ธํด ํ์ต๊ณผ ์ถ๋ก ๋น์ฉ์ด ํฌ๊ฒ ์ ๊ฐ๋ฉ๋๋ค. ๋ํ, ์คํ ์ด์ง C๋ ํ ์คํธ ํ๋กฌํํธ๋ฅผ ๋ฐ์ 24 x 24 ํฌ๊ธฐ์ ์ ์ฌ ํํ์ ์์ฑํ๋ ์ญํ ์ ํฉ๋๋ค. ์๋ ์ด๋ฏธ์ง๋ ์ด๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.

์ด๋ฒ ๋ฆด๋ฆฌ์ฆ์์๋ ์คํ ์ด์ง C์ฉ ์ฒดํฌํฌ์ธํธ 2๊ฐ, ์คํ ์ด์ง B์ฉ 2๊ฐ, ์คํ ์ด์ง A์ฉ 1๊ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์คํ ์ด์ง C๋ 10์ต๊ณผ 36์ต ํ๋ผ๋ฏธํฐ ๋ฒ์ ์ ์ ๊ณตํ์ง๋ง, ๋๋ถ๋ถ์ ํ์ธํ๋์ด 36์ต ๋ฒ์ ์ ์ด๋ฃจ์ด์ ธ ์์ด ์ด ๋ฒ์ ์ฌ์ฉ์ ๊ถ์ฅํฉ๋๋ค.
์คํ ์ด์ง B์ ๋ ๋ฒ์ ์ ๊ฐ๊ฐ 7์ต๊ณผ 15์ต ํ๋ผ๋ฏธํฐ์ด๋ฉฐ, ๋ ๋ค ํ๋ฅญํ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง๋ง 15์ต ๋ฒ์ ์ด ์์ ์ธ๋ถ ๋ฌ์ฌ ๋ณต์์ ๋ฐ์ด๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ ๋จ๊ณ๋ณ๋ก ๋ ํฐ ๋ฒ์ ์ ์ฌ์ฉํ ๋ ์ต์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์คํ ์ด์ง A๋ 2000๋ง ํ๋ผ๋ฏธํฐ๋ก ํฌ๊ธฐ๊ฐ ์์ ๊ณ ์ ๋์ด ์์ต๋๋ค.
ํ๊ฐ

์ ํฌ ํ๊ฐ์ ๋ฐ๋ฅด๋ฉด, Stable Cascade๋ ๊ฑฐ์ ๋ชจ๋ ๋น๊ต์์ ํ๋กฌํํธ ์ ๋ ฌ๊ณผ ๋ฏธ์ ํ์ง ๋ฉด์์ ์ต๊ณ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค. ์ ์ด๋ฏธ์ง๋ parti-prompts(๋งํฌ)์ ๋ฏธ์ ํ๋กฌํํธ ํผํฉ์ ์ฌ์ฉํ ์ธ๊ฐ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ํนํ Stable Cascade(30 ์ถ๋ก ๋จ๊ณ)๋ Playground v2(50 ์ถ๋ก ๋จ๊ณ), SDXL(50 ์ถ๋ก ๋จ๊ณ), SDXL Turbo(1 ์ถ๋ก ๋จ๊ณ), ๊ทธ๋ฆฌ๊ณ Wรผrstchen v2(30 ์ถ๋ก ๋จ๊ณ)์ ๋น๊ต๋์์ต๋๋ค.
์ฝ๋ ์์
โ ๏ธ ์ค์: ์๋ ์ฝ๋๋ฅผ ์คํํ๋ ค๋ฉด diffusers์ PR์ด ์งํ ์ค์ธ ์ด ๋ธ๋์น์์ ์ค์นํด์ผ ํฉ๋๋ค.
pip install git+https://github.com/kashif/diffusers.git@wuerstchen-v3import torch
from diffusers import StableCascadeDecoderPipeline, StableCascadePriorPipeline
device = "cuda"
num_images_per_prompt = 2
prior = StableCascadePriorPipeline.from_pretrained("stabilityai/stable-cascade-prior", torch_dtype=torch.bfloat16).to(device)
decoder = StableCascadeDecoderPipeline.from_pretrained("stabilityai/stable-cascade", torch_dtype=torch.float16).to(device)
prompt = "Anthropomorphic cat dressed as a pilot"
negative_prompt = ""
prior_output = prior(
prompt=prompt,
height=1024,
width=1024,
negative_prompt=negative_prompt,
guidance_scale=4.0,
num_images_per_prompt=num_images_per_prompt,
num_inference_steps=20
)
decoder_output = decoder(
image_embeddings=prior_output.image_embeddings.half(),
prompt=prompt,
negative_prompt=negative_prompt,
guidance_scale=0.0,
output_type="pil",
num_inference_steps=10
).images
#์ด์ decoder_output์ PIL ์ด๋ฏธ์ง ๋ฆฌ์คํธ์
๋๋คํ์ฉ๋ฒ
์ง์ ์ฌ์ฉ
์ด ๋ชจ๋ธ์ ํ์ฌ ์ฐ๊ตฌ ๋ชฉ์ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๊ฐ๋ฅํ ์ฐ๊ตฌ ์์ญ ๋ฐ ์์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฑ ๋ชจ๋ธ์ ๋ํ ์ฐ๊ตฌ.
์ ํด ์ฝํ ์ธ ์์ฑ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ชจ๋ธ์ ์์ ํ ๋ฐฐํฌ.
์์ฑ ๋ชจ๋ธ์ ํ๊ณ ๋ฐ ํธํฅ์ฑ ์กฐ์ฌ ๋ฐ ์ดํด.
์์ ์ํ ์์ฑ ๋ฐ ๋์์ธ ๋ฑ ์์ ์ ๊ณผ์ ์ ํ์ฉ.
๊ต์ก์ ๋๋ ์ฐฝ์ ๋๊ตฌ๋ก์ ์์ฉ.
์ ์ธ๋๋ ์ฌ์ฉ ์ฌ๋ก๋ ์๋์ ์ค๋ช ๋์ด ์์ต๋๋ค.
์ ์ฉ ๋ฒ์ ์ธ ์ฌ์ฉ
์ด ๋ชจ๋ธ์ ์ฌ๋์ด๋ ์ฌ๊ฑด์ ๋ํ ์ฌ์ค์ ๋๋ ์ง์คํ ํํ์ ์ํด ํ๋ จ๋์ง ์์์ผ๋ฏ๋ก, ๊ทธ๋ฌํ ์ฝํ ์ธ ์์ฑ์ ๋ชฉ์ ์ผ๋ก ํ๋ ์ฌ์ฉ์ ๋ชจ๋ธ ๋ฅ๋ ฅ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฉ๋๋ค.
๋ํ ๋ชจ๋ธ์ Stability AI์ ํ์ฉ ๊ฐ๋ฅํ ์ฌ์ฉ ์ ์ฑ ๋ฅผ ์๋ฐํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋์ด์๋ ์ ๋ฉ๋๋ค.
์ ํ ์ฌํญ ๋ฐ ํธํฅ
์ ํ ์ฌํญ
์ผ๊ตด๊ณผ ์ผ๋ฐ์ ์ธ ์ฌ๋ ์ธ์์ด ์ ๋๋ก ์์ฑ๋์ง ์์ ์ ์์ต๋๋ค.
๋ชจ๋ธ์ ์๋ ์ธ์ฝ๋ฉ ๋ถ๋ถ์ ์์ค์ด ๋ฐ์ํฉ๋๋ค.
๊ถ์ฅ ์ฌํญ
์ด ๋ชจ๋ธ์ ์ฐ๊ตฌ ์ฉ๋๋ก๋ง ์ฌ์ฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
๋ชจ๋ธ ์์ ๊ฐ์ด๋
์์ธํ ๋ด์ฉ์ https://github.com/Stability-AI/StableCascade ๋ฅผ ํ์ธํ์ธ์.
๋ชจ๋ธ ์ธ๋ถ์ฌํญ
๋ชจ๋ธ ์ ํ
๊ธฐ๋ณธ ๋ชจ๋ธ
๋ชจ๋ธ ๋ฒ์
๋ชจ๋ธ ํด์
์ ์์
ํ ๋ก
๋๊ธ์ ๋จ๊ธฐ๋ ค๋ฉด log inํ์ธ์.




