Diffusers documentation
DiT
DiT
Scalable Diffusion Models with Transformers(DiT)は、William Peebles と Saining Xie によるものです。
論文の抄録は以下の通りです:
Transformerアーキテクチャに基づく新しいクラスの拡散モデルを探索します。画像の潜在拡散モデルを訓練し、一般的に使用されているU-Netバックボーンを、潜在パッチ上で動作するTransformerに置き換えます。Gflopsで測定されるフォワードパスの複雑さという観点から、私たちのDiffusion Transformers(DiTs)のスケーラビリティを分析します。Transformerの深さ/幅の増加または入力トークン数の増加によりGflopsを高くしたDiTsは、一貫して低いFIDを示すことがわかりました。優れたスケーラビリティ特性を持つだけでなく、私たちの最大のDiT-XL/2モデルは、クラス条件付きImageNet 512x512および256x256ベンチマークにおいて、これまでに発表されたすべての拡散モデルを上回り、後者では最先端のFID 2.27を達成しました。
元のコードベースは facebookresearch/dit で確認できます。
スケジューラーのトレードオフ、すなわち速度と品質のバランスをどのように探求するかを学ぶには、ガイドを必ずご確認ください。また、同じコンポーネントを複数のパイプラインに効率的に読み込む方法については、パイプライン間でコンポーネントを再利用するセクションを参照してください。
DiTPipeline
class diffusers.DiTPipeline
< source >( transformer: DiTTransformer2DModelvae: AutoencoderKLscheduler: KarrasDiffusionSchedulersid2label: dict[int, str] | None = None )
パラメータ
- transformer (DiTTransformer2DModel) —
エンコードされた画像の潜在変数をデノイズするための、条件付きの
DiTTransformer2DModelクラスです。設定では当初Transformer2DModelとして公開されていましたが、この不一致は無視して問題ありません。 - vae (AutoencoderKL) — 画像を潜在表現にエンコードし、潜在表現からデコードするための Variational Auto-Encoder (VAE) モデル。
- scheduler (DDIMScheduler) —
transformerと組み合わせて、エンコードされた画像の潜在変数からノイズを除去するために使用するスケジューラ。
UNetではなくTransformerバックボーンに基づいた画像生成用のPipeline。
このモデルは DiffusionPipeline を継承しています。すべてのパイプラインに実装されている汎用的なメソッド(ダウンロード、保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。
__call__
< source >( 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) —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
< source >( label: str | list[str] ) → list of int
ImageNetのラベル文字列を対応するクラスIDにマッピングします。
ImagePipelineOutput
class diffusers.ImagePipelineOutput
< source >( images: list[PIL.Image.Image] | numpy.ndarray )
画像パイプライン用の出力クラス。