Buckets:

mishig's picture
|
download
raw
7.72 kB

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[[diffusers.DiTPipeline]]

diffusers.DiTPipeline[[diffusers.DiTPipeline]]

diffusers.DiTPipeline(transformer: DiTTransformer2DModel, vae: AutoencoderKL, scheduler: KarrasDiffusionSchedulers, id2label: dict[int, str] | None = None)

ソース

パラメータ:

transformer (DiTTransformer2DModel) : エンコードされた画像の潜在変数をデノイズするための、条件付きの DiTTransformer2DModel クラスです。設定では当初 Transformer2DModel として公開されていましたが、この不一致は無視して問題ありません。

vae (AutoencoderKL) : 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ(VAE)モデル。

scheduler (DDIMScheduler) : transformerと組み合わせて、エンコードされた画像の潜在変数をデノイズするために使用するスケジューラ。

UNetではなくTransformerバックボーンに基づいた画像生成用のPipeline。

このモデルは DiffusionPipeline を継承しています。すべてのパイプラインに実装されている汎用的なメソッド(ダウンロード、保存、特定のデバイスでの実行など)については、スーパークラスのドキュメントを参照してください。

call[[diffusers.DiTPipeline.call]]

__call__(class_labels: list[int], guidance_scale: float = 4.0, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, num_inference_steps: int = 50, output_type: str | None = 'pil', return_dict: bool = True)

ソース

パラメータ:

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, optional, デフォルトは 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[[diffusers.DiTPipeline.get_label_ids]]

get_label_ids(label: str | list[str])

ソース

パラメータ:

label (str または str の dict) : クラス ID にマッピングされるラベル文字列。

戻り値: list of int

パイプラインで処理されるクラスID。

ImageNetのラベル文字列を対応するクラスIDにマッピングします。

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:
7.72 kB
·
Xet hash:
33bafd15054f07cebe63c33f07f841f3cfd528010938b718e1c17881889fe777

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