Diffusers documentation
텍스트 기반 image-to-image 생성
시작하기
튜토리얼
개요모델과 스케줄러 이해하기(번역중) AutoPipelineDiffusion 모델 학습하기(번역중) 추론을 위한 LoRAs 불러오기(번역중) Text-to-image diffusion 모델 추론 가속화하기(번역중) 큰 모델로 작업하기
파이프라인과 어댑터 불러오기
생성 태스크
추론 테크닉
(번역중) 개요여러 GPU를 사용한 분산 추론(번역중) LoRA 병합(번역중) 스케줄러 기능(번역중) 파이프라인 콜백(번역중) 재현 가능한 파이프라인(번역중) 이미지 퀄리티 조절하기프롬프트 기술
추론 심화
특정 파이프라인 예시
(번역중) Stable Diffusion XLSDXL TurboKandinsky(번역중) IP-Adapter(번역중) PAG(번역중) ControlNet(번역중) T2I-Adapter(번역중) Latent Consistency ModelTextual inversionShap-EDiffEdit(번역중) Trajectory Consistency Distillation-LoRAStable Video Diffusion(번역중) Marigold 컴퓨터 비전
학습
추론 가속화와 메모리 줄이기
추론 스피드업(번역중) 메모리 사용량 줄이기PyTorch 2.0xFormersToken merging(번역중) DeepCache(번역중) TGATE
최적화된 모델 형식
최적화된 하드웨어
개념 가이드
API
Pipelines
Stable Diffusion
You are viewing v0.37.0 version. A newer version v0.38.0 is available.
텍스트 기반 image-to-image 생성
StableDiffusionImg2ImgPipeline을 사용하면 텍스트 프롬프트와 시작 이미지를 전달하여 새 이미지 생성의 조건을 지정할 수 있습니다.
시작하기 전에 필요한 라이브러리가 모두 설치되어 있는지 확인하세요:
!pip install diffusers transformers ftfy accelerate
nitrosocke/Ghibli-Diffusion과 같은 사전학습된 stable diffusion 모델로 StableDiffusionImg2ImgPipeline을 생성하여 시작하세요.
import torch
import requests
from PIL import Image
from io import BytesIO
from diffusers import StableDiffusionImg2ImgPipeline
device = "cuda"
pipe = StableDiffusionImg2ImgPipeline.from_pretrained("nitrosocke/Ghibli-Diffusion", torch_dtype=torch.float16).to(
device
)초기 이미지를 다운로드하고 사전 처리하여 파이프라인에 전달할 수 있습니다:
url = "https://raw.githubusercontent.com/CompVis/stable-diffusion/main/assets/stable-samples/img2img/sketch-mountains-input.jpg"
response = requests.get(url)
init_image = Image.open(BytesIO(response.content)).convert("RGB")
init_image.thumbnail((768, 768))
init_image
💡
strength는 입력 이미지에 추가되는 노이즈의 양을 제어하는 0.0에서 1.0 사이의 값입니다. 1.0에 가까운 값은 다양한 변형을 허용하지만 입력 이미지와 의미적으로 일치하지 않는 이미지를 생성합니다.
프롬프트를 정의하고(지브리 스타일(Ghibli-style)에 맞게 조정된 이 체크포인트의 경우 프롬프트 앞에 ghibli style 토큰을 붙여야 합니다) 파이프라인을 실행합니다:
prompt = "ghibli style, a fantasy landscape with castles"
generator = torch.Generator(device=device).manual_seed(1024)
image = pipe(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5, generator=generator).images[0]
image
다른 스케줄러로 실험하여 출력에 어떤 영향을 미치는지 확인할 수도 있습니다:
from diffusers import LMSDiscreteScheduler
lms = LMSDiscreteScheduler.from_config(pipe.scheduler.config)
pipe.scheduler = lms
generator = torch.Generator(device=device).manual_seed(1024)
image = pipe(prompt=prompt, image=init_image, strength=0.75, guidance_scale=7.5, generator=generator).images[0]
image
아래 공백을 확인하고 strength 값을 다르게 설정하여 이미지를 생성해 보세요. strength를 낮게 설정하면 원본 이미지와 더 유사한 이미지가 생성되는 것을 확인할 수 있습니다.
자유롭게 스케줄러를 LMSDiscreteScheduler로 전환하여 출력에 어떤 영향을 미치는지 확인해 보세요.