File size: 1,304 Bytes
4944c37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from diffusers import StableDiffusionXLPipeline, StableDiffusionXLImg2ImgPipeline
import torch
from PIL import Image

def generate_sdxl_with_refiner(prompt: str):
    # 1단계: Base 모델로 초기 이미지 생성
    base_model_id = "stabilityai/stable-diffusion-xl-base-1.0"
    base_pipe = StableDiffusionXLPipeline.from_pretrained(
        base_model_id,
        torch_dtype=torch.float16,
        variant="fp16",
        use_safetensors=True
    ).to("cuda")

    base_image = base_pipe(prompt=prompt, num_inference_steps=30).images[0]

    # 2단계: Refiner 모델로 이미지 개선
    refiner_model_id = "stabilityai/stable-diffusion-xl-refiner-1.0"
    refiner_pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
        refiner_model_id,
        torch_dtype=torch.float16,
        variant="fp16",
        use_safetensors=True
    ).to("cuda")

    # Refiner는 PIL 이미지를 입력받아 후처리
    refined_image = refiner_pipe(
        prompt=prompt,
        image=base_image,
        strength=0.3  # 얼마나 많이 보정할지 (0~1)
    ).images[0]

    refined_image.save("output_sdxl_refined.png")
    return refined_image

if __name__ == "__main__":
    prompt = '그녀를 바라보는 한 남자의 야망'
    img = generate_sdxl_with_refiner(prompt)
    img.show()