Diffusers documentation

DiT

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

DiT

Scalable Diffusion Models with Transformers(DiT)은 William Peebles와 Saining Xie가 작성했습니다.

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

트랜스포머 아키텍처를 기반으로 한 새로운 종류의 확산 모델을 탐구합니다. 이미지의 잠재 공간 확산 모델을 학습하면서, 일반적으로 사용되는 U-Net 백본을 잠재 패치에서 작동하는 트랜스포머로 대체합니다. Gflops로 측정되는 순전파 복잡성의 관점에서 Diffusion Transformers(DiTs)의 확장성을 분석합니다. 트랜스포머의 깊이/너비 증가 또는 입력 토큰 수 증가를 통해 Gflops가 더 높은 DiTs는 일관되게 더 낮은 FID를 보인다는 것을 발견했습니다. 좋은 확장성 특성을 갖는 것 외에도, 가장 큰 DiT-XL/2 모델은 클래스 조건부 ImageNet 512x512 및 256x256 벤치마크에서 이전 모든 확산 모델보다 우수한 성능을 보여주며, 후자의 경우 최첨단 FID 2.27를 달성합니다.

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

Scheduler의 가이드를 확인하여 스케줄러의 속도와 품질 사이의 트레이드오프를 탐색하는 방법을 배우고, 파이프라인 간 구성 요소 재사용 섹션을 확인하여 동일한 구성 요소를 여러 파이프라인에 효율적으로 로드하는 방법을 배워보세요.

DiTPipeline

클래스 diffusers.DiTPipeline

< >

( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )

매개변수

  • transformer (DiTTransformer2DModel) — 인코딩된 이미지 latents의 노이즈를 제거하도록 조건부 설정된 DiTTransformer2DModel 클래스입니다. config에는 Transformer2DModel로 처음 게시되었지만, 이 불일치는 무시할 수 있습니다.
  • vae (AutoencoderKL) — 이미지를 잠재 표현으로 인코딩하고 디코딩하는 Variational Auto-Encoder (VAE) 모델.
  • scheduler (DDIMScheduler) — transformer와 함께 사용되어 인코딩된 이미지 latents의 노이즈를 제거하는 데 사용되는 스케줄러.

UNet 대신 Transformer 백본을 기반으로 하는 이미지 생성용 Pipeline입니다.

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

__call__

< >

( class_labels: listguidance_scale: float = 4.0generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = Nonenum_inference_steps: int = 50output_type: str | None = 'pil'return_dict: bool = True ) → ImagePipelineOutput or tuple

매개변수

  • class_labels (list[int]) — 생성할 이미지에 대한 ImageNet 클래스 라벨 목록.
  • guidance_scale (float, 선택 사항, 기본값 4.0) — guidance scale 값이 높을수록 모델은 이미지 품질이 낮아지는 대신 텍스트 prompt와 밀접하게 연결된 이미지를 생성하도록 유도됩니다. guidance_scale > 1일 때 guidance scale이 활성화됩니다.
  • generator (torch.Generator, 선택 사항) — 생성을 결정적으로 만들기 위한 torch.Generator입니다.
  • num_inference_steps (int, 선택 사항, 기본값 250) — 디노이징 단계의 수입니다. 디노이징 단계가 많을수록 일반적으로 더 높은 품질의 이미지를 생성하지만, 추론 속도가 느려집니다.
  • 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 DiTPipeline, DPMSolverMultistepScheduler
>>> import torch

>>> pipe = DiTPipeline.from_pretrained("facebook/DiT-XL-2-256", torch_dtype=torch.float16)
>>> pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
>>> pipe = pipe.to("cuda")

>>> # pick words from Imagenet class labels
>>> pipe.labels  # to print all available words

>>> # pick words that exist in ImageNet
>>> words = ["white shark", "umbrella"]

>>> class_ids = pipe.get_label_ids(words)

>>> generator = torch.manual_seed(33)
>>> output = pipe(class_labels=class_ids, num_inference_steps=25, generator=generator)

>>> image = output.images[0]  # label 'white shark'

get_label_ids

< >

( label: str | list[str] ) → list of int

매개변수

  • label (str 또는 str의 dict) — 클래스 ID에 매핑될 레이블 문자열.

반환값

int의 list

pipeline에서 처리할 클래스 ID입니다.

ImageNet의 레이블 문자열을 해당하는 클래스 ID로 매핑합니다.

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