# LEDITS++

  

LEDITS++は、Manuel Brack、Felix Friedrich、Katharina Kornmeier、Linoy Tsaban、Patrick Schramowski、Kristian Kersting、Apolinário Passos による [LEDITS++: Limitless Image Editing using Text-to-Image Models](https://huggingface.co/papers/2311.16711) で提案されました。

論文の抄録は以下の通りです：

*テキストから画像を生成する拡散モデルは、テキスト入力のみから高忠実度の画像を生成する驚異的な能力により、近年ますます注目を集めています。その後の研究では、これらの能力を実際の画像編集に活用・適用することが目指されています。しかし、既存の画像間変換手法は、非効率で不正確、かつ汎用性に乏しいことが多いです。これらの手法は、時間のかかるファインチューニングを必要とするか、入力画像から不必要に大きく逸脱するか、あるいは複数の同時編集に対応していない場合があります。これらの課題に対処するため、効率的かつ汎用的で正確なテキストベースの画像操作手法である LEDITS++ を提案します。LEDITS++ の新しいインバージョン手法は、チューニングや最適化を必要とせず、わずか数回の拡散ステップで高忠実度の結果を生成します。第二に、私たちの手法は複数の同時編集をサポートし、アーキテクチャに依存しません。第三に、変更を関連する画像領域に限定する新しい暗黙のマスキング手法を使用します。包括的な評価の一部として、新しい TEdBench++ ベンチマークを提案します。私たちの結果は、LEDITS++ の能力と、従来の手法に対する改善を示しています。プロジェクトページは https://leditsplusplus-project.static.hf.space で利用できます。*

> [!TIP]
> LEDITS++に関する追加情報は[プロジェクトページ](https://leditsplusplus-project.static.hf.space/index.html)で確認でき、[デモ](https://huggingface.co/spaces/editing-images/leditsplusplus)で試すこともできます。

> [!WARNING]
> 現在の [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) の diffusers 実装には後方互換性の問題があるため、この LEdits++ の実装では完全なインバージョンを保証できなくなりました。この問題は、実際のユースケースにおいて目立った影響を及ぼす可能性は低いと考えられます。ただし、完全なインバージョンを保証する代替実装を、専用の [GitHub リポジトリ](https://github.com/ml-research/ledits_pp) で提供しています。

異なる事前学習済みモデルに基づいた2つの異なるパイプラインを提供しています。

## LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]

#### diffusers.LEditsPPPipelineStableDiffusion[[diffusers.LEditsPPPipelineStableDiffusion]]

```python
diffusers.LEditsPPPipelineStableDiffusion(vae: AutoencoderKL, text_encoder: CLIPTextModel, tokenizer: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: diffusers.schedulers.scheduling_ddim.DDIMScheduler | diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler, safety_checker: StableDiffusionSafetyChecker, feature_extractor: CLIPImageProcessorPil, requires_safety_checker: bool = True)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L269)

**パラメータ:**

vae ([AutoencoderKL](/docs/diffusers/v0.43.0/ja/api/models/autoencoderkl#diffusers.AutoencoderKL)) : 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ（VAE）モデル。

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPTextModel)) : 凍結されたテキストエンコーダー。Stable Diffusion は [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel) のテキスト部分、具体的には [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14) バリアントを使用します。

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPTokenizer)) : クラス [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer) のトークナイザー。

unet ([UNet2DConditionModel](/docs/diffusers/v0.43.0/ja/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : エンコードされた画像の潜在変数をノイズ除去するための条件付き U-Net アーキテクチャ。

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) または [DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler)) : `unet` と組み合わせて、エンコードされた画像の潜変数（latents）からノイズを除去するために使用するスケジューラーです。[DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) または [DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) のいずれかになります。それ以外のスケジューラーが渡された場合、自動的に [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) に設定されます。

safety_checker (`StableDiffusionSafetyChecker`) : 生成された画像が攻撃的または有害とみなされる可能性を推定する分類モジュールです。詳細については、[モデルカード](https://huggingface.co/CompVis/stable-diffusion-v1-4)を参照してください。

feature_extractor ([CLIPImageProcessor](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPImageProcessor)) : 生成された画像から特徴を抽出し、`safety_checker`の入力として使用するモデル。

Stable Diffusion を用いた LEDits++ によるテキストベースの画像編集パイプライン。

このモデルは [DiffusionPipeline](/docs/diffusers/v0.43.0/ja/api/pipelines/overview#diffusers.DiffusionPipeline) を継承し、[StableDiffusionPipeline](/docs/diffusers/v0.43.0/ja/api/pipelines/stable_diffusion/text2img#diffusers.StableDiffusionPipeline) をベースに構築されています。すべてのパイプラインに実装されている汎用的なメソッド（ダウンロード、保存、特定のデバイスでの実行など）については、スーパークラスのドキュメントを参照してください。

#### __call__[[diffusers.LEditsPPPipelineStableDiffusion.__call__]]

```python
__call__(negative_prompt: str | list[str] | None = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, output_type: str | None = 'pil', return_dict: bool = True, editing_prompt: str | list[str] | None = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, user_mask: typing.Optional[torch.Tensor] = None, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = True, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L720)

**パラメータ:**

negative_prompt (`str` または `list[str]`、*省略可能*) : 画像生成をガイドしないプロンプト、またはプロンプトのリスト。`guidance_scale` が `1` 未満の場合、無視されます（ガイドを使用していない場合、無視されます）。

generator (`torch.Generator`, *任意*) : 生成を決定論的にするための[torchジェネレーター](https://pytorch.org/docs/stable/generated/torch.Generator.html)1つまたはそのリスト。

output_type (`str`、*任意*、デフォルトは `"pil"`) : 生成画像の出力形式。[PIL](https://pillow.readthedocs.io/en/stable/)（`PIL.Image.Image`）または `np.array` から選択します。

return_dict (`bool`、*任意*、デフォルトは`True`) : プレーンなタプルではなく、[LEditsPPDiffusionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput)を返すかどうか。

editing_prompt (`str` または `list[str]`、*省略可*) : 画像生成をガイドするためのプロンプトです。`editing_prompt = None` を設定することで、画像が再構築されます。プロンプトのガイダンス方向は `reverse_editing_direction` を通じて指定する必要があります。

editing_prompt_embeds (`torch.Tensor>`、*任意*) : 画像生成をガイドするために使用する、事前計算済みエンベディング。エンベディングのガイド方向は `reverse_editing_direction` を介して指定する必要があります。

negative_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力（プロンプトの重み付け）を簡単に調整するために使用できます。指定されない場合、`negative_prompt_embeds` は `negative_prompt` 入力引数から生成されます。

reverse_editing_direction (`bool` または `list[bool]`、*任意*、デフォルトは `False`) : `editing_prompt` 内の対応するプロンプトを増加させるか減少させるかを指定します。

edit_guidance_scale (`float` または `list[float]`、*任意*、デフォルト値は 5) : 画像生成を導くためのガイダンススケールです。リストとして指定する場合は、値が `editing_prompt` と対応している必要があります。`edit_guidance_scale` は、[LEDITS++ Paper](https://huggingface.co/papers/2301.12247) の数式 12 の `s_e` に相当します。

edit_warmup_steps (`float` または `list[float]`、*任意*、デフォルト値は 10) : ガイダンスを適用しない拡散ステップ数（各プロンプトごと）。

edit_cooldown_steps (`float` または `list[float]`、*任意*、デフォルトは `None`) : ガイダンスが適用されなくなるまでの拡散ステップ数（各プロンプトごと）。

edit_threshold (`float` または `list[float]`、*任意*、デフォルト値は 0.9) : ガイダンスのマスクしきい値。しきい値は、変更される画像領域に比例する値である必要があります。'edit_threshold' は、[LEDITS++ Paper](https://huggingface.co/papers/2301.12247) の数式 12 の 'λ' として定義されています。

user_mask (`torch.Tensor`, *任意*) : 編集プロセスをより精密に制御するためにユーザーが指定するマスクです。LEDITS++ の暗黙的なマスクがユーザーの希望を満たさない場合に役立ちます。

sem_guidance (`list[torch.Tensor]`、*任意*) : 生成時に適用する事前生成されたガイダンスベクトルのリストです。リストの長さは`num_inference_steps`と一致する必要があります。

use_cross_attn_mask (`bool`、デフォルトは`False`) : クロスアテンションマスクを使用するかどうか。[LEDITS++ paper](https://huggingface.co/papers/2311.16711)の式12の 'M^1' で定義されるクロスアテンションマスクは、use_intersect_mask が true に設定されている場合は常に使用されます。

use_intersect_mask (`bool`、デフォルトは`True`) : マスキング項が、クロスアテンションマスクとノイズ推定から導出されたマスクの交差として計算されるかどうかを示します。クロスアテンションマスクは[LEDITS++ paper](https://huggingface.co/papers/2311.16711)の式12における'M^1'、ノイズ推定から導出されたマスクは'M^2'として定義されています。

attn_store_steps (`list[int]`, *任意*) : AttentionStore にアテンションマップが保存されるステップ。可視化目的でのみ使用されます。

store_averaged_over_steps (`bool`、デフォルトは`True`) : 'attn_store_steps'のアテンションマップが、拡散ステップにわたって平均化して保存されるかどうかを指定します。Falseの場合、各ステップのアテンションマップは個別に保存されます。可視化目的でのみ使用されます。

cross_attention_kwargs (`dict`, *任意*) : 指定された場合、[`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) で定義されている `AttentionProcessor` に渡される kwargs の辞書です。

guidance_rescale (`float`、*任意*、デフォルト値は 0.0) : [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) に記載されている Guidance rescale factor です。Guidance rescale factor は、zero terminal SNR を使用する場合の露出過多を修正するために使用されます。

clip_skip (`int`, *optional*) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。

callback_on_step_end (`Callable`、*任意*) : 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`。 `callback_kwargs` には、`callback_on_step_end_tensor_inputs` で指定されたすべてのテンソルのリストが含まれます。

callback_on_step_end_tensor_inputs (`list`, *任意*) : `callback_on_step_end` 関数へのテンソル入力のリストです。リストで指定されたテンソルは、`callback_kwargs` 引数として渡されます。パイプラインクラスの `._callback_tensor_inputs` 属性に列挙された変数のみを、リストに含めることができます。

**戻り値:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) または `tuple`

[LEditsPPDiffusionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) if `return_dict` is True, otherwise a `tuple. When returning a tuple, the first element is a list with the generated images, and the second element is a list of `bool`s denoting whether the corresponding generated image likely represents "not-safe-for-work" (nsfw) content, according to the `safety_checker`.

編集用の pipeline への呼び出し関数。事前に[invert()](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusion.invert)メソッドを呼び出す必要があります。編集は、最後に反転された画像に対して常に実行されます。

例:
```py
>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusion
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusion.from_pretrained(
...     "stable-diffusion-v1-5/stable-diffusion-v1-5", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/cherry_blossom.png"
>>> image = load_image(img_url).resize((512, 512))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.1)

>>> edited_image = pipe(
...     editing_prompt=["cherry blossom"], edit_guidance_scale=10.0, edit_threshold=0.75
... ).images[0]
```

#### invert[[diffusers.LEditsPPPipelineStableDiffusion.invert]]

```python
invert(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], source_prompt: str = '', source_guidance_scale: float = 3.5, num_inversion_steps: int = 30, skip: float = 0.15, generator: typing.Optional[torch.Generator] = None, cross_attention_kwargs: dict[str, typing.Any] | None = None, clip_skip: int | None = None, height: int | None = None, width: int | None = None, resize_mode: str | None = 'default', crops_coords: tuple[int, int, int, int] | None = None)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L1223)

**パラメータ:**

image (`PipelineImageInput`) : 編集対象の画像の入力です。複数の入力画像を指定する場合は、すべて同じアスペクト比である必要があります。

source_prompt (`str`、デフォルトは`""`) : 反転処理中のガイダンスに使用される、入力画像を説明するプロンプト。`source_prompt`が`""`の場合、ガイダンスは無効になります。

source_guidance_scale (`float`、デフォルトは`3.5`) : 逆変換時のガイダンスの強さ。

num_inversion_steps (`int`、デフォルトは`30`) : 最初の`skip`ステップを破棄した後に実行する反転ステップの総数。

skip (`float`、デフォルトは `0.15`) : 反転およびその後の生成において無視される初期ステップの割合です。値を下げると、入力画像に対する変化が強くなります。`skip` は `0` と `1` の間でなければなりません。

generator (`torch.Generator`, *任意*) : 反転を決定論的にするための [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html)。

cross_attention_kwargs (`dict`, *任意*) : 指定された場合、[`self.processor`](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) で定義されている `AttentionProcessor` に渡される kwargs の辞書です。

clip_skip (`int`, *optional*) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。

height (`int`、*任意*、デフォルトは `None`) : 前処理済み画像の高さ。`None` の場合、`get_default_height_width()` を使用してデフォルトの高さを取得します。

width (`int`, *optional*`, defaults to `None`) : The width in preprocessed. If `None`, will use get_default_height_width()` to get the default width.

resize_mode (`str`, *optional*, デフォルトは `default`) : リサイズモードです。`default` または `fill` のいずれかになります。`default` の場合、指定された幅と高さに収まるように画像をリサイズしますが、元の縦横比が維持されない場合があります。`fill` の場合、指定された幅と高さに収まるように、縦横比を維持したまま画像をリサイズし、その後、指定された寸法内で画像を中央に配置し、空いた部分を画像のデータで埋めます。`crop` の場合、指定された幅と高さに収まるように、縦横比を維持したまま画像をリサイズし、その後、指定された寸法内で画像を中央に配置し、余分な部分を切り取ります。なお、resize_mode の `fill` と `crop` は、PIL 画像の入力のみサポートされています。

crops_coords (`list[tuple[int, int, int, int]]`, *任意*、デフォルトは `None`) : バッチ内の各画像のクロップ座標。`None` の場合、画像はクロップされません。

**戻り値:** [LEditsPPInversionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPInversionPipelineOutput)

出力には、リサイズされた入力画像と、それに対応するVAE再構成が含まれます。

[LEDITS++ Paper](https://huggingface.co/papers/2301.12247) に記載されている画像反転のための pipeline 関数です。スケジューラが [DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) に設定されている場合、代わりに [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) で提案された反転が実行されます。

#### encode_prompt[[diffusers.LEditsPPPipelineStableDiffusion.encode_prompt]]

```python
encode_prompt(device, num_images_per_prompt, enable_edit_guidance, negative_prompt = None, editing_prompt = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion.py#L521)

**パラメータ:**

device : (`torch.device`): torch デバイス

num_images_per_prompt (`int`) : プロンプトごとに生成すべき画像の数

enable_edit_guidance (`bool`) : 画像の編集を実行するか、入力画像を再構築するかどうか

negative_prompt (`str` または `list[str]`、*省略可能*) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに `negative_prompt_embeds` を渡す必要があります。ガイドを使用していない場合は無視されます（`guidance_scale` が `1` 未満の場合は無視されます）。

editing_prompt (`str` または `list[str]`、*省略可*) : エンコード対象の編集プロンプト。未定義の場合、代わりに `editing_prompt_embeds` を渡す必要があります。

editing_prompt_embeds (`torch.Tensor`, *任意*) : 事前生成されたテキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`prompt` 入力引数からテキスト埋め込みが生成されます。

negative_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`negative_prompt` 入力引数から negative_prompt_embeds が生成されます。

lora_scale (`float`、*任意*) : LoRAレイヤーが読み込まれている場合、テキストエンコーダーのすべてのLoRAレイヤーに適用されるLoRAスケールです。

clip_skip (`int`, *optional*) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。

プロンプトをテキストエンコーダーの隠れ状態にエンコードします。

## LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]

#### diffusers.LEditsPPPipelineStableDiffusionXL[[diffusers.LEditsPPPipelineStableDiffusionXL]]

```python
diffusers.LEditsPPPipelineStableDiffusionXL(vae: AutoencoderKL, text_encoder: CLIPTextModel, text_encoder_2: CLIPTextModelWithProjection, tokenizer: CLIPTokenizer, tokenizer_2: CLIPTokenizer, unet: UNet2DConditionModel, scheduler: diffusers.schedulers.scheduling_dpmsolver_multistep.DPMSolverMultistepScheduler | diffusers.schedulers.scheduling_ddim.DDIMScheduler, image_encoder: CLIPVisionModelWithProjection = None, feature_extractor: CLIPImageProcessorPil = None, force_zeros_for_empty_prompt: bool = True, add_watermarker: bool | None = None)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L273)

**パラメータ:**

vae ([AutoencoderKL](/docs/diffusers/v0.43.0/ja/api/models/autoencoderkl#diffusers.AutoencoderKL)) : 画像を潜在表現にエンコードし、潜在表現からデコードするための変分オートエンコーダ（VAE）モデル。

text_encoder ([CLIPTextModel](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPTextModel)) : 凍結されたテキストエンコーダー。Stable Diffusion XL は [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModel) のテキスト部分、具体的には [clip-vit-large-patch14](https://huggingface.co/openai/clip-vit-large-patch14) バリアントを使用します。

text_encoder_2 ([CLIPTextModelWithProjection](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPTextModelWithProjection)) : 2番目の凍結されたテキストエンコーダー。Stable Diffusion XL は [CLIP](https://huggingface.co/docs/transformers/model_doc/clip#transformers.CLIPTextModelWithProjection) のテキストおよびプール部分を使用しており、具体的には [laion/CLIP-ViT-bigG-14-laion2B-39B-b160k](https://huggingface.co/laion/CLIP-ViT-bigG-14-laion2B-39B-b160k) バリアントを使用しています。

tokenizer ([CLIPTokenizer](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPTokenizer)) : クラス [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer) のトークナイザー。

tokenizer_2 ([CLIPTokenizer](https://huggingface.co/docs/transformers/v5.22.2/en/model_doc/clip#transformers.CLIPTokenizer)) : クラス [CLIPTokenizer](https://huggingface.co/docs/transformers/v4.21.0/en/model_doc/clip#transformers.CLIPTokenizer) の2番目のトークナイザー。

unet ([UNet2DConditionModel](/docs/diffusers/v0.43.0/ja/api/models/unet2d-cond#diffusers.UNet2DConditionModel)) : エンコードされた画像の潜在変数をノイズ除去するための条件付き U-Net アーキテクチャ。

scheduler ([DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) または [DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler)) : `unet` と組み合わせて、エンコードされた画像の潜変数（latents）からノイズを除去するために使用するスケジューラーです。[DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) または [DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) のいずれかになります。それ以外のスケジューラーが渡された場合、自動的に [DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler) に設定されます。

force_zeros_for_empty_prompt (`bool`、*任意*、デフォルトは`"True"`) : 負のプロンプト埋め込みを常に0に設定するかどうか。`stabilityai/stable-diffusion-xl-base-1-0`の設定も参照してください。

add_watermarker (`bool`, *任意*) : 出力画像にウォーターマークを付与するために[invisible_watermark ライブラリ](https://github.com/ShieldMnt/invisible-watermark/)を使用するかどうかを指定します。未定義の場合、パッケージがインストールされていればデフォルトで True となり、インストールされていなければウォーターマーカーは使用されません。

Stable Diffusion XL を用いた LEDits++ によるテキストベースの画像編集パイプライン。

このモデルは [DiffusionPipeline](/docs/diffusers/v0.43.0/ja/api/pipelines/overview#diffusers.DiffusionPipeline) を継承し、[StableDiffusionXLPipeline](/docs/diffusers/v0.43.0/ja/api/pipelines/stable_diffusion/stable_diffusion_xl#diffusers.StableDiffusionXLPipeline) をベースに構築されています。すべてのパイプラインに実装されている汎用的なメソッド（ダウンロード、保存、特定のデバイスでの実行など）については、スーパークラスのドキュメントを参照してください。

さらに、pipelineは以下の読み込みメソッドを継承します:
- *LoRA*: [LEditsPPPipelineStableDiffusionXL.load_lora_weights()](/docs/diffusers/v0.43.0/ja/api/loaders/lora#diffusers.loaders.StableDiffusionXLLoraLoaderMixin.load_lora_weights)
- *チェックポイント*: [loaders.FromSingleFileMixin.from_single_file()](/docs/diffusers/v0.43.0/ja/api/loaders/single_file#diffusers.loaders.FromSingleFileMixin.from_single_file)

また、以下の保存メソッドもサポートされています：
- *LoRA*: `loaders.StableDiffusionXLPipeline.save_lora_weights`

#### __call__[[diffusers.LEditsPPPipelineStableDiffusionXL.__call__]]

```python
__call__(denoising_end: float | None = None, negative_prompt: str | list[str] | None = None, negative_prompt_2: str | list[str] | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, ip_adapter_image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor], NoneType] = None, output_type: str | None = 'pil', return_dict: bool = True, cross_attention_kwargs: dict[str, typing.Any] | None = None, guidance_rescale: float = 0.0, crops_coords_top_left: tuple[int, int] = (0, 0), target_size: tuple[int, int] | None = None, editing_prompt: str | list[str] | None = None, editing_prompt_embeddings: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, reverse_editing_direction: bool | list[bool] | None = False, edit_guidance_scale: float | list[float] | None = 5, edit_warmup_steps: int | list[int] | None = 0, edit_cooldown_steps: int | list[int] | None = None, edit_threshold: float | list[float] | None = 0.9, sem_guidance: list[torch.Tensor] | None = None, use_cross_attn_mask: bool = False, use_intersect_mask: bool = False, user_mask: typing.Optional[torch.Tensor] = None, attn_store_steps: list[int] | None = [], store_averaged_over_steps: bool = True, clip_skip: int | None = None, callback_on_step_end: typing.Optional[typing.Callable[[int, int], NoneType]] = None, callback_on_step_end_tensor_inputs: list[str] = ['latents'], **kwargs)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L782)

**パラメータ:**

denoising_end (`float`, *optional*) : 指定すると、デノイジング全体のどの割合（0.0から1.0の間）で処理を意図的に早期終了させるかを決定します。その結果、スケジューラによって選択された離散タイムステップによって決定されるように、返されるサンプルには依然としてかなりの量のノイズが残ります。このデノイジングエンドパラメータは、[**Refining the Image

negative_prompt (`str` または `list[str]`、*省略可能*) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに `negative_prompt_embeds` を渡す必要があります。ガイドを使用していない場合は無視されます（`guidance_scale` が `1` 未満の場合は無視されます）。

negative_prompt_2 (`str` または `list[str]`、*省略可*) : `tokenizer_2` および `text_encoder_2` に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、`negative_prompt` が両方のテキストエンコーダーで使用されます。

negative_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`negative_prompt` 入力引数から negative_prompt_embeds が生成されます。

negative_pooled_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`negative_prompt` 入力引数からプールの negative_prompt_embeds が生成されます。

ip_adapter_image : (`PipelineImageInput`、*任意*): IP Adapter で使用する任意の画像入力。

output_type (`str`、*任意*、デフォルトは `"pil"`) : 生成画像の出力形式。[PIL](https://pillow.readthedocs.io/en/stable/)（`PIL.Image.Image`）または `np.array` から選択します。

return_dict (`bool`、*任意*、デフォルトは`True`) : プレーンなタプルではなく`~pipelines.stable_diffusion_xl.StableDiffusionXLPipelineOutput`を返すかどうか。

cross_attention_kwargs (`dict`, *任意*) : 指定された場合、[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) の `self.processor` で定義されている `AttentionProcessor` に渡される kwargs の辞書です。

guidance_rescale (`float`, *optional*, defaults to 0.7) : Guidance rescale factor proposed by [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891) `guidance_scale` is defined as `φ` in equation 16. of [Common Diffusion Noise Schedules and Sample Steps are Flawed](https://huggingface.co/papers/2305.08891). Guidance rescale factor should fix overexposure when using zero terminal SNR.

crops_coords_top_left (`tuple[int]`、*optional*、デフォルト値は (0, 0)) : `crops_coords_top_left` を使用すると、`crops_coords_top_left` の位置から下方向に「切り抜かれた」ように見える画像を生成できます。`crops_coords_top_left` を (0, 0) に設定することで、通常は良好で中央が整った画像が得られます。[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952) のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。

target_size (`tuple[int]`、*optional*、デフォルト値は (1024, 1024)) : ほとんどの場合、`target_size` は生成される画像の希望する高さおよび幅に設定すべきです。指定されない場合、デフォルトで `(width, height)` が使用されます。[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952) のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。

editing_prompt (`str` または `list[str]`、*省略可*) : 画像生成をガイドするためのプロンプトです。`editing_prompt = None` を設定することで、画像が再構築されます。プロンプトのガイダンス方向は `reverse_editing_direction` を通じて指定する必要があります。

editing_prompt_embeddings (`torch.Tensor`, *任意*) : 事前に生成された編集テキストの埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを簡単に実行できます。指定されない場合、`editing_prompt` 入力引数から editing_prompt_embeddings が生成されます。

editing_pooled_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたプーリング済み編集テキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`editing_prompt` 入力引数から editing_prompt_embeddings が生成されます。

reverse_editing_direction (`bool` または `list[bool]`、*任意*、デフォルトは `False`) : `editing_prompt` 内の対応するプロンプトを増加させるか減少させるかを指定します。

edit_guidance_scale (`float` または `list[float]`、*任意*、デフォルト値は 5) : 画像生成を導くためのガイダンススケールです。リストとして指定する場合は、値が `editing_prompt` と対応している必要があります。`edit_guidance_scale` は、[LEDITS++ Paper](https://huggingface.co/papers/2301.12247) の数式 12 の `s_e` に相当します。

edit_warmup_steps (`float` または `list[float]`、*任意*、デフォルト値は 10) : ガイダンスを適用しない拡散ステップ数（各プロンプトごと）。

edit_cooldown_steps (`float` または `list[float]`、*任意*、デフォルトは `None`) : ガイダンスを適用しなくなるまでの拡散ステップ数（各プロンプトごと）。

edit_threshold (`float` または `list[float]`、*任意*、デフォルト値は 0.9) : ガイダンスのマスクしきい値。しきい値は、変更される画像領域に比例する値である必要があります。'edit_threshold' は、[LEDITS++ Paper](https://huggingface.co/papers/2301.12247) の数式 12 の 'λ' として定義されています。

sem_guidance (`list[torch.Tensor]`、*任意*) : 生成時に適用する事前生成されたガイダンスベクトルのリストです。リストの長さは`num_inference_steps`と一致する必要があります。

use_cross_attn_mask : クロスアテンションマスクを使用するかどうか。[LEDITS++ paper](https://huggingface.co/papers/2311.16711)の式12の 'M^1' で定義されるクロスアテンションマスクは、use_intersect_mask が true に設定されている場合、常に使用されます。

use_intersect_mask : マスキング項を、クロスアテンションマスクとノイズ推定から導出されたマスクの交差として計算するかどうか。クロスアテンションマスクは [LEDITS++ 論文](https://huggingface.co/papers/2311.16711) の式 12 の 'M^1'、ノイズ推定から導出されたマスクは 'M^2' と定義されます。

user_mask : 編集プロセスをより適切に制御するために、ユーザーが指定するマスクです。LEDITS++の暗黙的なマスクがユーザーの希望に合わない場合に役立ちます。

attn_store_steps : AttentionStore にアテンションマップが保存されるステップ。可視化目的のみです。

store_averaged_over_steps : 'attn_store_steps' のアテンションマップが拡散ステップにわたって平均化して保存されるかどうか。False の場合、各ステップのアテンションマップは個別に保存されます。可視化目的でのみ使用されます。

clip_skip (`int`, *optional*) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。

callback_on_step_end (`Callable`、*任意*) : 推論中の各デノイジングステップの終了時に呼び出される関数です。この関数は、以下の引数とともに呼び出されます: `callback_on_step_end(self: DiffusionPipeline, step: int, timestep: int, callback_kwargs: Dict)`。 `callback_kwargs` には、`callback_on_step_end_tensor_inputs` で指定されたすべてのテンソルのリストが含まれます。

callback_on_step_end_tensor_inputs (`list`, *任意*) : `callback_on_step_end` 関数へのテンソル入力のリストです。リストで指定されたテンソルは、`callback_kwargs` 引数として渡されます。パイプラインクラスの `._callback_tensor_inputs` 属性に列挙された変数のみを、リストに含めることができます。

**戻り値:** [LEditsPPDiffusionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput) または `tuple`

`return_dict` が True の場合は [LEditsPPDiffusionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPDiffusionPipelineOutput)、それ以外は `tuple を返します。tuple を返す場合、最初の要素は生成された画像のリストです。

編集用の pipeline への呼び出し関数。事前に[invert()](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.LEditsPPPipelineStableDiffusionXL.invert)メソッドを呼び出す必要があります。編集は、最後に反転された画像に対して常に実行されます。

例:
```py
>>> import torch

>>> from diffusers import LEditsPPPipelineStableDiffusionXL
>>> from diffusers.utils import load_image

>>> pipe = LEditsPPPipelineStableDiffusionXL.from_pretrained(
...     "stabilityai/stable-diffusion-xl-base-1.0", variant="fp16", torch_dtype=torch.float16
... )
>>> pipe.vae.enable_tiling()
>>> pipe = pipe.to("cuda")

>>> img_url = "https://www.aiml.informatik.tu-darmstadt.de/people/mbrack/tennis.jpg"
>>> image = load_image(img_url).resize((1024, 1024))

>>> _ = pipe.invert(image=image, num_inversion_steps=50, skip=0.2)

>>> edited_image = pipe(
...     editing_prompt=["tennis ball", "tomato"],
...     reverse_editing_direction=[True, False],
...     edit_guidance_scale=[5.0, 10.0],
...     edit_threshold=[0.9, 0.85],
... ).images[0]
```

#### invert[[diffusers.LEditsPPPipelineStableDiffusionXL.invert]]

```python
invert(image: typing.Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]], source_prompt: str = '', source_guidance_scale = 3.5, negative_prompt: str = None, negative_prompt_2: str = None, num_inversion_steps: int = 50, skip: float = 0.15, generator: typing.Optional[torch.Generator] = None, crops_coords_top_left: tuple[int, int] = (0, 0), num_zero_noise_steps: int = 3, cross_attention_kwargs: dict[str, typing.Any] | None = None, height: int | None = None, width: int | None = None, resize_mode: str | None = 'default', crops_coords: tuple[int, int, int, int] | None = None)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L1414)

**パラメータ:**

image (`PipelineImageInput`) : 編集対象の画像の入力です。複数の入力画像を指定する場合は、すべて同じアスペクト比である必要があります。

source_prompt (`str`、デフォルトは`""`) : 反転処理中のガイダンスに使用される、入力画像を説明するプロンプト。`source_prompt`が`""`の場合、ガイダンスは無効になります。

source_guidance_scale (`float`、デフォルトは`3.5`) : 逆変換時のガイダンスの強さ。

negative_prompt (`str` または `list[str]`、*省略可能*) : 画像生成をガイドしないプロンプトです。定義されていない場合、代わりに `negative_prompt_embeds` を渡す必要があります。ガイドを使用していない場合は無視されます（`guidance_scale` が `1` 未満の場合は無視されます）。

negative_prompt_2 (`str` または `list[str]`、*省略可*) : `tokenizer_2` および `text_encoder_2` に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、`negative_prompt` が両方のテキストエンコーダーで使用されます。

num_inversion_steps (`int`、デフォルトは`50`) : 最初の`skip`ステップを破棄した後に実行する反転ステップの総数。

skip (`float`、デフォルトは `0.15`) : 反転およびその後の生成において無視される初期ステップの割合です。値を下げると、入力画像に対する変化が強くなります。`skip` は `0` と `1` の間でなければなりません。

generator (`torch.Generator`, *任意*) : 反転を決定論的にするための [`torch.Generator`](https://pytorch.org/docs/stable/generated/torch.Generator.html)。

crops_coords_top_left (`tuple[int]`、*optional*、デフォルト値は (0, 0)) : `crops_coords_top_left` を使用すると、`crops_coords_top_left` の位置から下方向に「切り抜かれた」ように見える画像を生成できます。`crops_coords_top_left` を (0, 0) に設定することで、通常は良好で中央が整った画像が得られます。[https://huggingface.co/papers/2307.01952](https://huggingface.co/papers/2307.01952) のセクション 2.2 で説明されている SDXL のマイクロ条件付けの一部です。

num_zero_noise_steps (`int`、デフォルトは`3`) : 現在の画像を再ノイズ化しない、最終的な拡散ステップの数を指定します。ステップがゼロに設定されていない場合、[DPMSolverMultistepScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/multistep_dpm_solver#diffusers.DPMSolverMultistepScheduler)と組み合わせたSD-XLでは、ノイズアーティファクトが発生します。

cross_attention_kwargs (`dict`, *任意*) : 指定された場合、[diffusers.models.attention_processor](https://github.com/huggingface/diffusers/blob/main/src/diffusers/models/attention_processor.py) の `self.processor` で定義されている `AttentionProcessor` に渡される kwargs の辞書です。

**戻り値:** [LEditsPPInversionPipelineOutput](/docs/diffusers/v0.43.0/ja/api/pipelines/ledits_pp#diffusers.pipelines.LEditsPPInversionPipelineOutput)

出力には、リサイズされた入力画像と、それに対応するVAE再構成が含まれます。

[LEDITS++ Paper](https://huggingface.co/papers/2301.12247) に記載されている画像反転のための pipeline 関数です。スケジューラが [DDIMScheduler](/docs/diffusers/v0.43.0/ja/api/schedulers/ddim#diffusers.DDIMScheduler) に設定されている場合、代わりに [edit-friendly DPDM](https://huggingface.co/papers/2304.06140) で提案された反転が実行されます。

#### encode_prompt[[diffusers.LEditsPPPipelineStableDiffusionXL.encode_prompt]]

```python
encode_prompt(device: typing.Optional[torch.device] = None, num_images_per_prompt: int = 1, negative_prompt: str | None = None, negative_prompt_2: str | None = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, negative_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None, lora_scale: float | None = None, clip_skip: int | None = None, enable_edit_guidance: bool = True, editing_prompt: str | None = None, editing_prompt_embeds: typing.Optional[torch.Tensor] = None, editing_pooled_prompt_embeds: typing.Optional[torch.Tensor] = None)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L399)

**パラメータ:**

device : (`torch.device`): torch デバイス

num_images_per_prompt (`int`) : プロンプトごとに生成すべき画像の数

negative_prompt (`str` または `list[str]`、*省略可能*) : 画像生成をガイドしないプロンプト、またはプロンプトのリストです。定義されていない場合、代わりに `negative_prompt_embeds` を渡す必要があります。

negative_prompt_2 (`str` または `list[str]`、*省略可*) : `tokenizer_2` および `text_encoder_2` に送信する、画像生成を誘導しないプロンプトです。定義されていない場合、`negative_prompt` が両方のテキストエンコーダーで使用されます。

negative_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたネガティブなテキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`negative_prompt` 入力引数から negative_prompt_embeds が生成されます。

negative_pooled_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成されたネガティブなプールのテキスト埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを容易に行うために使用できます。指定されない場合、`negative_prompt` 入力引数からプールの negative_prompt_embeds が生成されます。

lora_scale (`float`、*任意*) : LoRAレイヤーが読み込まれている場合、テキストエンコーダーのすべてのLoRAレイヤーに適用されるLoRAスケールです。

clip_skip (`int`, *optional*) : プロンプト埋め込みを計算する際に、CLIPからスキップするレイヤー数。値が1の場合、プロンプト埋め込みの計算に最終レイヤーの直前のレイヤーの出力が使用されます。

enable_edit_guidance (`bool`) : 編集プロンプトに向けてガイドするかどうか。

editing_prompt (`str` または `list[str]`、*任意*) : エンコード対象の編集プロンプト。未定義かつ 'enable_edit_guidance' が True の場合、代わりに `editing_prompt_embeds` を渡す必要があります。

editing_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成された編集テキストの埋め込み。テキスト入力の調整、*例えば*プロンプトの重み付けなどを簡単に実行できます。指定されず、かつ 'enable_edit_guidance' が True の場合、`editing_prompt` 入力引数から editing_prompt_embeds が生成されます。

editing_pooled_prompt_embeds (`torch.Tensor`, *任意*) : 事前に生成された編集用プールのテキスト埋め込み。テキスト入力の調整、*例* プロンプトの重み付けなどを容易に行うことができます。指定されない場合、`editing_prompt` 入力引数からプールの editing_pooled_prompt_embeds が生成されます。

プロンプトをテキストエンコーダーの隠れ状態にエンコードします。

#### get_guidance_scale_embedding[[diffusers.LEditsPPPipelineStableDiffusionXL.get_guidance_scale_embedding]]

```python
get_guidance_scale_embedding(w: Tensor, embedding_dim: int = 512, dtype: dtype = torch.float32)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_leditspp_stable_diffusion_xl.py#L696)

**パラメータ:**

w (`torch.Tensor`) : 指定されたガイダンススケールで埋め込みベクトルを生成し、タイムステップ埋め込みを後で強化します。

embedding_dim (`int`、*任意*、デフォルトは 512) : 生成する埋め込みの次元数。

dtype (`torch.dtype`、*任意*、デフォルトは`torch.float32`) : 生成される埋め込みのデータ型。

**戻り値:** `torch.Tensor`

`(len(w), embedding_dim)` の形状を持つ埋め込みベクトル。

https://github.com/google-research/vdm/blob/dc27b98a554f65cdc654b800da5aa1846545d41b/model_vdm.py#L298 を参照してください。

## LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]

#### diffusers.pipelines.LEditsPPDiffusionPipelineOutput[[diffusers.pipelines.LEditsPPDiffusionPipelineOutput]]

```python
diffusers.pipelines.LEditsPPDiffusionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, nsfw_content_detected: list[bool] | None)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_output.py#L10)

**パラメータ:**

images (`list[PIL.Image.Image]` または `np.ndarray`) : 長さ `batch_size` のノイズ除去済み PIL 画像のリスト、または形状 `(batch_size, height, width, num_channels)` の NumPy 配列。

nsfw_content_detected (`list[bool]`) : 対応する生成画像に「not-safe-for-work」（nsfw）コンテンツが含まれるかどうかを示すリスト。安全性チェックを実行できなかった場合は`None`。

LEdits++ Diffusion パイプライン用の出力クラスです。

## LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]

#### diffusers.pipelines.LEditsPPInversionPipelineOutput[[diffusers.pipelines.LEditsPPInversionPipelineOutput]]

```python
diffusers.pipelines.LEditsPPInversionPipelineOutput(images: list[PIL.Image.Image] | numpy.ndarray, vae_reconstruction_images: list[PIL.Image.Image] | numpy.ndarray)
```

[ソース](https://github.com/huggingface/diffusers/blob/v0.43.0/src/diffusers/pipelines/ledits_pp/pipeline_output.py#L28)

**パラメータ:**

input_images (`list[PIL.Image.Image]` または `np.ndarray`) : 長さ `batch_size` の PIL 画像のリスト、または形状 ` (batch_size, height, width, num_channels)` の NumPy 配列として、切り出しとリサイズが適用された入力画像のリスト。

vae_reconstruction_images (`list[PIL.Image.Image]` または `np.ndarray`) : 長さ `batch_size` の PIL イメージのリスト、または形状 ` (batch_size, height, width, num_channels)` の NumPy 配列として、すべての入力画像の VAE 再構築のリスト。

LEdits++ Diffusion パイプライン用の出力クラスです。

