Buckets:
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.