Diffusers documentation

DDIM

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v0.42.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

DDIM

Jiaming Song, Chenlin Meng, Stefano Ermon의 Denoising Diffusion Implicit Models(DDIM).

해당 논문의 초록은 다음과 같습니다:

디노이징 확산 확률 모델(DDPM)은 적대적 학습 없이 고품질 이미지 생성을 달성했지만, 샘플을 생성하려면 마르코프 체인을 여러 단계에 걸쳐 시뮬레이션해야 합니다. 샘플링을 가속화하기 위해, 우리는 DDPM과 동일한 학습 절차를 가지며 더 효율적인 반복적 암시적 확률 모델 클래스인 디노이징 확산 암시적 모델(DDIM)을 제시합니다. DDPM에서 생성 과정은 마르코프 확산 과정의 역과정으로 정의됩니다. 우리는 동일한 학습 목적 함수를 유도하지만, 그 역과정에서 샘플링 속도가 훨씬 더 빠를 수 있는 비마르코프 확산 과정 클래스를 구성합니다. 우리는 DDIM이 DDPM에 비해 실제 시간 기준 10배에서 50배 더 빠르게 고품질 샘플을 생성할 수 있음을 경험적으로 입증했으며, 이는 계산량과 샘플 품질 간의 트레이드오프를 허용하고, 잠재 공간에서 의미론적으로 의미 있는 이미지 보간을 직접 수행할 수 있음을 보여줍니다.

원본 코드베이스는 ermongroup/ddim에서 찾을 수 있습니다.

DDIMPipeline

클래스 diffusers.DDIMPipeline

< >

( unet: UNet2DModelscheduler: DDIMScheduler )

매개변수

  • unet (UNet2DModel) — 인코딩된 이미지 latents의 노이즈를 제거하기 위한 UNet2DModel.
  • scheduler (SchedulerMixin) — 인코딩된 이미지를 디노이즈하기 위해 unet와 함께 사용할 스케줄러입니다. DDPMScheduler 또는 DDIMScheduler 중 하나를 사용할 수 있습니다.

이미지 생성을 위한 Pipeline.

이 모델은 DiffusionPipeline에서 상속됩니다. 모든 파이프라인에 대해 구현된 일반적 메서드(다운로드, 저장, 특정 디바이스에서 실행 등)에 대해서는 상위 클래스 문서를 확인하세요.

__call__

< >

( batch_size: int = 1generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Noneeta: float = 0.0num_inference_steps: int = 50use_clipped_model_output: bool | None = Noneoutput_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple

매개변수

  • batch_size (int, 선택 사항, 기본값 1) — 생성할 이미지의 수입니다.
  • generator (torch.Generator, 선택 사항) — 생성을 결정적으로 만들기 위한 torch.Generator입니다.
  • eta (float, 선택 사항, 기본값 0.0) — DDIM 논문에서 정의된 파라미터 eta (η)에 해당합니다. DDIMScheduler에만 적용되며, 다른 스케줄러에서는 무시됩니다. 0 값은 DDIM을, 1 값은 DDPM을 나타냅니다.
  • num_inference_steps (int, 선택 사항, 기본값 50) — 디노이징 단계의 수입니다. 디노이징 단계가 많을수록 일반적으로 더 높은 품질의 이미지를 생성하지만, 추론 속도가 느려집니다.
  • use_clipped_model_output (bool, 선택 사항, 기본값 None) — True 또는 False인 경우, DDIMScheduler.step()의 문서를 참조하세요. None인 경우, 스케줄러에 아무것도 전달되지 않습니다(이 인수를 지원하지 않는 스케줄러에는 None을 사용하세요).
  • output_type (str, 선택 사항, 기본값 "pil") — 생성된 이미지의 출력 형식입니다. "pil" (PIL.Image), "np" (np.array) 또는 "pt" (torch.Tensor) 중 하나를 선택합니다.
  • return_dict (bool, 선택 사항, 기본값 True) — 일반 튜플 대신 ImagePipelineOutput을 반환할지 여부.

반환값

ImagePipelineOutput 또는 tuple

return_dict가 True인 경우 ImagePipelineOutput가 반환되고, 그렇지 않으면 첫 번째 요소가 생성된 이미지의 목록인 tuple이 반환됩니다.

생성을 위한 pipeline의 호출 함수.

예:

>>> from diffusers import DDIMPipeline
>>> import PIL.Image
>>> import numpy as np

>>> # load model and scheduler
>>> pipe = DDIMPipeline.from_pretrained("fusing/ddim-lsun-bedroom")

>>> # run pipeline in inference (sample random noise and denoise)
>>> image = pipe(eta=0.0, num_inference_steps=50)

>>> # process image to PIL
>>> image_processed = image.cpu().permute(0, 2, 3, 1)
>>> image_processed = (image_processed + 1.0) * 127.5
>>> image_processed = image_processed.numpy().astype(np.uint8)
>>> image_pil = PIL.Image.fromarray(image_processed[0])

>>> # save image
>>> image_pil.save("test.png")

ImagePipelineOutput

클래스 diffusers.ImagePipelineOutput

< >

( images: list[PIL.Image.Image] | numpy.ndarray )

매개변수

  • images (List[PIL.Image.Image] 또는 np.ndarray) — batch_size 길이의 노이즈 제거된 PIL 이미지 목록 또는 (batch_size, height, width, num_channels) 형태의 NumPy 배열.

이미지 파이프라인의 출력 클래스입니다.

Update on GitHub