Buckets:

mishig's picture
|
download
raw
6.53 kB

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]]

diffusers.DDIMPipeline[[diffusers.DDIMPipeline]]

diffusers.DDIMPipeline(unet: UNet2DModel, scheduler: DDIMScheduler)

소스

매개변수:

unet (UNet2DModel) : 인코딩된 이미지 latents의 노이즈를 제거하기 위한 UNet2DModel입니다.

scheduler (SchedulerMixin) : unet와 함께 사용되어 인코딩된 이미지의 노이즈를 제거하는 스케줄러입니다. DDPMScheduler 또는 DDIMScheduler 중 하나를 사용할 수 있습니다.

이미지 생성을 위한 Pipeline.

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

호출[[diffusers.DDIMPipeline.call]]

__call__(batch_size: int = 1, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, eta: float = 0.0, num_inference_steps: int = 50, use_clipped_model_output: bool | None = None, output_type: str | None = 'pil', return_dict: bool = True)

소스

매개변수:

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]]

diffusers.ImagePipelineOutput[[diffusers.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 배열.

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

Xet Storage Details

Size:
6.53 kB
·
Xet hash:
03befdf984c9b5b516ac4b3bc2277ef9d77a5ddc01c111a373c25362ffc5ec31

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.