Diffusers documentation

훑어보기

You are viewing v0.15.0 version. A newer version v0.31.0 is available.
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

훑어보기

🧨 Diffusers로 빠르게 시작하고 실행하세요! 이 훑어보기는 여러분이 개발자, 일반사용자 상관없이 시작하는 데 도움을 주며, 추론을 위해 DiffusionPipeline 사용하는 방법을 보여줍니다.

시작하기에 앞서서, 필요한 모든 라이브러리가 설치되어 있는지 확인하세요:

pip install --upgrade diffusers accelerate transformers
  • accelerate은 추론 및 학습을 위한 모델 불러오기 속도를 높입니다.
  • transformersStable Diffusion과 같이 가장 널리 사용되는 확산 모델을 실행하기 위해 필요합니다.

DiffusionPipeline

DiffusionPipeline은 추론을 위해 사전학습된 확산 시스템을 사용하는 가장 쉬운 방법입니다. 다양한 양식의 많은 작업에 DiffusionPipeline을 바로 사용할 수 있습니다. 지원되는 작업은 아래의 표를 참고하세요:

Task Description Pipeline
Unconditional Image Generation 가우시안 노이즈에서 이미지 생성 unconditional_image_generation
Text-Guided Image Generation 텍스트 프롬프트로 이미지 생성 conditional_image_generation
Text-Guided Image-to-Image Translation 텍스트 프롬프트에 따라 이미지 조정 img2img
Text-Guided Image-Inpainting 마스크 및 텍스트 프롬프트가 주어진 이미지의 마스킹된 부분을 채우기 inpaint
Text-Guided Depth-to-Image Translation 깊이 추정을 통해 구조를 유지하면서 텍스트 프롬프트에 따라 이미지의 일부를 조정 depth2image

확산 파이프라인이 다양한 작업에 대해 어떻게 작동하는지는 Using Diffusers를 참고하세요.

예를들어, DiffusionPipeline 인스턴스를 생성하여 시작하고, 다운로드하려는 파이프라인 체크포인트를 지정합니다. 모든 Diffusers’ checkpoint에 대해 DiffusionPipeline을 사용할 수 있습니다. 하지만, 이 가이드에서는 Stable Diffusion을 사용하여 text-to-image를 하는데 DiffusionPipeline을 사용합니다.

Stable Diffusion 기반 모델을 실행하기 전에 license를 주의 깊게 읽으세요. 이는 모델의 향상된 이미지 생성 기능과 이것으로 생성될 수 있는 유해한 콘텐츠 때문입니다. 선택한 Stable Diffusion 모델(: runwayml/stable-diffusion-v1-5)로 이동하여 라이센스를 읽으세요.

다음과 같이 모델을 로드할 수 있습니다:

>>> from diffusers import DiffusionPipeline

>>> pipeline = DiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

DiffusionPipeline은 모든 모델링, 토큰화 및 스케줄링 구성요소를 다운로드하고 캐시합니다. 모델은 약 14억개의 매개변수로 구성되어 있으므로 GPU에서 실행하는 것이 좋습니다. PyTorch에서와 마찬가지로 생성기 객체를 GPU로 옮길 수 있습니다.

>>> pipeline.to("cuda")

이제 pipeline을 사용할 수 있습니다:

>>> image = pipeline("An image of a squirrel in Picasso style").images[0]

출력은 기본적으로 PIL Image object로 래핑됩니다.

다음과 같이 함수를 호출하여 이미지를 저장할 수 있습니다:

>>> image.save("image_of_squirrel_painting.png")

참고: 다음을 통해 가중치를 다운로드하여 로컬에서 파이프라인을 사용할 수도 있습니다:

git lfs install
git clone https://huggingface.co/runwayml/stable-diffusion-v1-5

그리고 저장된 가중치를 파이프라인에 불러옵니다.

>>> pipeline = DiffusionPipeline.from_pretrained("./stable-diffusion-v1-5")

파이프라인 실행은 동일한 모델 아키텍처이므로 위의 코드와 동일합니다.

>>> generator.to("cuda")
>>> image = generator("An image of a squirrel in Picasso style").images[0]
>>> image.save("image_of_squirrel_painting.png")

확산 시스템은 각각 장점이 있는 여러 다른 schedulers와 함께 사용할 수 있습니다. 기본적으로 Stable Diffusion은 PNDMScheduler로 실행되지만 다른 스케줄러를 사용하는 방법은 매우 간단합니다. EulerDiscreteScheduler 스케줄러를 사용하려는 경우, 다음과 같이 사용할 수 있습니다:

>>> from diffusers import EulerDiscreteScheduler

>>> pipeline = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")

>>> # change scheduler to Euler
>>> pipeline.scheduler = EulerDiscreteScheduler.from_config(pipeline.scheduler.config)

스케줄러 변경 방법에 대한 자세한 내용은 Using Schedulers 가이드를 참고하세요.

Stability AI’s의 Stable Diffusion 모델은 인상적인 이미지 생성 모델이며 텍스트에서 이미지를 생성하는 것보다 훨씬 더 많은 작업을 수행할 수 있습니다. 우리는 Stable Diffusion만을 위한 전체 문서 페이지를 제공합니다 link.

만약 더 적은 메모리, 더 높은 추론 속도, Mac과 같은 특정 하드웨어 또는 ONNX 런타임에서 실행되도록 Stable Diffusion을 최적화하는 방법을 알고 싶다면 최적화 페이지를 살펴보세요:

확산 모델을 미세조정하거나 학습시키려면, training section을 살펴보세요.

마지막으로, 생성된 이미지를 공개적으로 배포할 때 신중을 기해 주세요 🤗.