Buckets:
| # EdenLive | |
| [EdenLive](https://github.com/VAST-AI-Research/EdenLive) generates video from a proxy video, a reference | |
| image, and a text prompt. [EdenLivePipeline](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLivePipeline) supports bidirectional generation; [EdenLiveCausalPipeline](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLiveCausalPipeline) | |
| generates a complete video in causal chunks and supports changing prompts between chunks. | |
| ## Basic usage | |
| Prepare an RGB reference image and a proxy video with at least 49 frames sampled at 24 fps. The image provides | |
| appearance, while the proxy provides motion and scene structure. | |
| ```python | |
| import torch | |
| from diffusers import EdenLivePipeline | |
| from diffusers.utils import export_to_video, load_image, load_video | |
| pipe = EdenLivePipeline.from_pretrained( | |
| "VAST-AI/EdenLive-5B-Diffusers", | |
| torch_dtype={"default": torch.bfloat16, "proxy_encoder": torch.float32}, | |
| ).to("cuda") | |
| image = load_image("reference.png") | |
| video = load_video("proxy-24fps.mp4") | |
| frames = pipe( | |
| image=image, | |
| video=video, | |
| prompt="A character explores a snowy landscape.", | |
| num_frames=49, | |
| ).frames[0] | |
| export_to_video(frames, "edenlive.mp4", fps=24) | |
| ``` | |
| Keep the proxy encoder in FP32 when loading the other models in BF16, as shown above. The transformer keeps its | |
| internal proxy projection in FP32 when loaded with `from_pretrained`. | |
| ## Causal generation | |
| Load the causal pipeline from its dedicated repository. Both model sizes default to four denoising steps per chunk. | |
| ```python | |
| from diffusers import EdenLiveCausalPipeline | |
| causal_pipe = EdenLiveCausalPipeline.from_pretrained( | |
| "VAST-AI/EdenLive-5B-Causal-Diffusers", | |
| torch_dtype={"default": torch.bfloat16, "proxy_encoder": torch.float32}, | |
| ).to("cuda") | |
| ``` | |
| Use `prompt` for fixed text, or `chunk_prompts` to change it during a single video. At the default chunk size, | |
| 49 frames require five prompts. Reusing the image and video above: | |
| ```python | |
| frames = causal_pipe( | |
| image=image, | |
| video=video, | |
| chunk_prompts=[ | |
| "A character walks through snow.", | |
| "A character walks through snow.", | |
| "The character approaches a campfire.", | |
| "The character warms their hands beside the campfire.", | |
| "The character rests beside the campfire.", | |
| ], | |
| num_frames=49, | |
| ).frames[0] | |
| export_to_video(frames, "chunk-prompts.mp4", fps=24) | |
| ``` | |
| `chunk_prompts` overrides a single `prompt` and cannot be combined with `prompt_embeds`. The negative prompt remains | |
| fixed. A list passed as `prompt` represents a batch of independent videos. Each pipeline call starts a new video. | |
| ## LightTAE decoder | |
| The full Wan VAE is the default. For faster decoding, pass the optional [EdenLiveLightTAEDecoder](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLiveLightTAEDecoder) to either pipeline: | |
| ```python | |
| from diffusers import EdenLiveLightTAEDecoder | |
| pipe = EdenLivePipeline.from_pretrained( | |
| "VAST-AI/EdenLive-5B-Diffusers", | |
| decoder=EdenLiveLightTAEDecoder.from_pretrained( | |
| "VAST-AI/EdenLive-5B-Diffusers", subfolder="decoder", torch_dtype=torch.bfloat16 | |
| ), | |
| torch_dtype={"default": torch.bfloat16, "proxy_encoder": torch.float32}, | |
| ).to("cuda") | |
| ``` | |
| ## Notes | |
| | Checkpoint | Pipeline | Default height × width | Example fps | Steps | | |
| |---|---|---|---|---| | |
| | [5B bidirectional](https://huggingface.co/VAST-AI/EdenLive-5B-Diffusers) | `EdenLivePipeline` | 704 × 1280 | 24 | 48 | | |
| | [14B bidirectional](https://huggingface.co/VAST-AI/EdenLive-14B-Diffusers) | `EdenLivePipeline` | 480 × 832 | 16 | 30 | | |
| | [5B causal](https://huggingface.co/VAST-AI/EdenLive-5B-Causal-Diffusers) | `EdenLiveCausalPipeline` | 704 × 1280 | 24 | 4 per chunk | | |
| | [14B causal](https://huggingface.co/VAST-AI/EdenLive-14B-Causal-Diffusers) | `EdenLiveCausalPipeline` | 480 × 832 | 16 | 4 per chunk | | |
| - Sample proxy frames at the desired output frame rate. `num_frames` must be $4k+1$ and fit within the input video; | |
| omitting it uses the largest valid prefix. Custom dimensions must be multiples of 32 for 5B or 16 for 14B. | |
| - Guidance defaults to 3 for bidirectional generation and 1 for causal generation. Set `guidance_scale` above one | |
| to use a `negative_prompt`. | |
| - For CPU offload, load without `.to("cuda")` and call `enable_model_cpu_offload()`. | |
| - See the [example README](https://github.com/huggingface/diffusers/tree/main/examples/edenlive) for installation, | |
| video resampling, CPU offload, and checkpoint conversion. | |
| ## EdenLivePipeline[[diffusers.EdenLivePipeline]] | |
| #### diffusers.EdenLivePipeline[[diffusers.EdenLivePipeline]] | |
| ```python | |
| diffusers.EdenLivePipeline(vae: AutoencoderKLWan, text_encoder: UMT5EncoderModel, tokenizer: AutoTokenizer, transformer: EdenLiveTransformer3DModel, scheduler: diffusers.schedulers.scheduling_flow_match_euler_discrete.FlowMatchEulerDiscreteScheduler | diffusers.schedulers.scheduling_unipc_multistep.UniPCMultistepScheduler, proxy_encoder: DINOv3ViTModel, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModel | None = None, image_processor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, decoder: diffusers.models.autoencoders.autoencoder_edenlive.EdenLiveLightTAEDecoder | None = None, proxy_image_height: int = 480, proxy_image_width: int = 832) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L59) | |
| **Parameters:** | |
| vae ([AutoencoderKLWan](/docs/diffusers/pr_15066/en/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : Wan VAE for reference encoding and full-quality video decoding. | |
| text_encoder (`UMT5EncoderModel`) : Text encoder. | |
| tokenizer (`AutoTokenizer`) : Tokenizer corresponding to the text encoder. | |
| transformer ([EdenLiveTransformer3DModel](/docs/diffusers/pr_15066/en/api/models/edenlive_transformer_3d#diffusers.EdenLiveTransformer3DModel)) : EdenLive bidirectional video denoiser. | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/pr_15066/en/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler) or [UniPCMultistepScheduler](/docs/diffusers/pr_15066/en/api/schedulers/unipc#diffusers.UniPCMultistepScheduler)) : Scheduler corresponding to the transformer checkpoint. | |
| proxy_encoder (`DINOv3ViTModel`) : Trained RGB proxy encoder. | |
| image_encoder (`CLIPVisionModel`, *optional*) : Reference image encoder required by the 14B model. | |
| image_processor (`CLIPImageProcessor`, *optional*) : Processor corresponding to the image encoder. | |
| decoder ([EdenLiveLightTAEDecoder](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLiveLightTAEDecoder), *optional*) : Optional faster decoder. When omitted, decode with the full Wan VAE. | |
| proxy_image_height (`int`, defaults to 480) : Height of the proxy images passed to DINO. | |
| proxy_image_width (`int`, defaults to 832) : Width of the proxy images passed to DINO. | |
| Bidirectional video generation conditioned on a reference image, text, and an RGB proxy video. | |
| #### __call__[[diffusers.EdenLivePipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] | None = None, image = None, video = None, height: int | None = None, width: int | None = None, num_frames: int | None = None, num_inference_steps: int | None = None, guidance_scale: float | None = None, negative_prompt: str | list[str] | None = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, max_sequence_length: int = 512, output_type: str = 'np', return_dict: bool = True, attention_kwargs: dict | None = None, callback_on_step_end: typing.Optional[typing.Callable] = None, callback_on_step_end_tensor_inputs: list[str] | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L327) | |
| **Parameters:** | |
| prompt (`str` or `list[str]`, *optional*) : Text describing the output video. Supply this or `prompt_embeds`. | |
| image (`PIL.Image.Image`, `np.ndarray`, or `torch.Tensor`) : Photoreal first-frame reference. Tensor and NumPy RGB values are in [0, 1]. The image is resized with tensor bilinear interpolation and center-cropped to the output dimensions. | |
| video (`list[PIL.Image.Image]`, `np.ndarray`, or `torch.Tensor`) : Full-rate decoded RGB proxy video, already sampled at the desired output frame rate. Tensor inputs have shape `(T, C, H, W)` or `(B, T, C, H, W)`; NumPy inputs use channels last. Floating-point values are in [0, 1]. Proxy frames are sampled at the VAE temporal stride exactly once. | |
| height (`int`, *optional*) : Output height. Defaults to 704 for 5B or 480 for 14B. | |
| width (`int`, *optional*) : Output width. Defaults to 1280 for 5B or 832 for 14B. | |
| num_frames (`int`, *optional*) : Number of decoded output frames, of the form `4k + 1`. When omitted, use the largest valid input prefix. The requested length cannot exceed the input video; missing frames are never repeated. | |
| num_inference_steps (`int`, *optional*) : Denoising steps; defaults to 48 for 5B or 30 for 14B. | |
| guidance_scale (`float`, *optional*) : Classifier-free guidance strength; defaults to 3. Values greater than one enable the negative prompt branch. | |
| negative_prompt (`str` or `list[str]`, *optional*) : Text describing content to discourage when classifier-free guidance is enabled. | |
| generator (`torch.Generator` or `list[torch.Generator]`, *optional*) : Random generator, or one per batch item. CPU generators are supported. | |
| latents (`torch.Tensor`, *optional*) : Initial noise with shape `(B, C, T_latent, H_latent, W_latent)`. When omitted, noise for the whole video is sampled before image conditioning. The fixed first frame still consumes its noise draw. | |
| prompt_embeds (`torch.Tensor`, *optional*) : Precomputed positive text embeddings in place of `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *optional*) : Precomputed negative text embeddings in place of `negative_prompt`. | |
| max_sequence_length (`int`, defaults to 512) : Token count for each text prompt, including zero padding. | |
| output_type (`str`, defaults to `"np"`) : Return NumPy videos (`"np"`, shape `(B, T, H, W, 3)`), PyTorch videos (`"pt"`, shape `(B, T, 3, H, W)`), nested PIL frame lists (`"pil"`), or normalized diffusion latents (`"latent"`, shape `(B, C, T_latent, H_latent, W_latent)`). Decoded tensor and NumPy values are in [0, 1]. | |
| return_dict (`bool`, defaults to `True`) : Return `EdenLivePipelineOutput`; otherwise return a one-element tuple containing the frames. | |
| attention_kwargs (`dict`, *optional*) : Transformer options. The `scale` entry sets the LoRA scale when adapters are loaded. | |
| callback_on_step_end (`Callable`, *optional*) : Function called as `callback(self, step_index, timestep, tensors)` after each denoising step. Return a dictionary containing any replacement tensors. | |
| callback_on_step_end_tensor_inputs (`list[str]`, defaults to `["latents"]`) : Tensors supplied to the callback, selected from `latents`, `prompt_embeds`, and `negative_prompt_embeds`. | |
| **Returns:** [EdenLivePipelineOutput](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLivePipelineOutput) or `tuple` | |
| Generated frames, or latent videos when `output_type="latent"`. | |
| Generate a complete bidirectional video. | |
| Examples: | |
| ```python | |
| >>> import torch | |
| >>> from diffusers import EdenLivePipeline | |
| >>> from diffusers.utils import export_to_video, load_image, load_video | |
| >>> pipe = EdenLivePipeline.from_pretrained( | |
| ... "VAST-AI/EdenLive-5B-Diffusers", | |
| ... torch_dtype={"default": torch.bfloat16, "proxy_encoder": torch.float32}, | |
| ... ).to("cuda") | |
| >>> frames = pipe( | |
| ... image=load_image("reference.png"), video=load_video("proxy.mp4"), | |
| ... prompt="A character walks through snow.", num_frames=49, | |
| ... ).frames[0] | |
| >>> export_to_video(frames, "edenlive.mp4", fps=24) | |
| ``` | |
| #### check_inputs[[diffusers.EdenLivePipeline.check_inputs]] | |
| ```python | |
| check_inputs(prompt, prompt_embeds, negative_prompt, negative_prompt_embeds, image, video, height, width, output_type, callback_inputs) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L183) | |
| Validate conditioning inputs, output dimensions, and callback tensor names. | |
| #### decode_latents[[diffusers.EdenLivePipeline.decode_latents]] | |
| ```python | |
| decode_latents(latents, output_type) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L300) | |
| Decode normalized diffusion latents with the VAE or optional LightTAE. | |
| #### encode_prompt[[diffusers.EdenLivePipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt = None, negative_prompt = None, do_classifier_free_guidance = True, prompt_embeds = None, negative_prompt_embeds = None, max_sequence_length = 512, device = None, dtype = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L144) | |
| Encode positive and optional negative text with UMT5, zeroing padded token embeddings. | |
| #### prepare_conditions[[diffusers.EdenLivePipeline.prepare_conditions]] | |
| ```python | |
| prepare_conditions(image, proxy_video, height, width, num_frames, batch_size, device, dtype) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L233) | |
| Encode the reference image and sampled RGB proxy frames for the video transformer. | |
| #### prepare_latents[[diffusers.EdenLivePipeline.prepare_latents]] | |
| ```python | |
| prepare_latents(batch_size, height, width, num_frames, dtype, device, generator = None, latents = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive.py#L218) | |
| Prepare full-video initial noise, including the fixed first frame's noise draw. | |
| ## EdenLiveCausalPipeline[[diffusers.EdenLiveCausalPipeline]] | |
| #### diffusers.EdenLiveCausalPipeline[[diffusers.EdenLiveCausalPipeline]] | |
| ```python | |
| diffusers.EdenLiveCausalPipeline(vae: AutoencoderKLWan, text_encoder: UMT5EncoderModel, tokenizer: AutoTokenizer, transformer: EdenLiveTransformer3DModel, scheduler: FlowMatchEulerDiscreteScheduler, proxy_encoder: DINOv3ViTModel, image_encoder: transformers.models.clip.modeling_clip.CLIPVisionModel | None = None, image_processor: transformers.models.clip.image_processing_pil_clip.CLIPImageProcessorPil | None = None, decoder: diffusers.models.autoencoders.autoencoder_edenlive.EdenLiveLightTAEDecoder | None = None, proxy_image_height: int = 480, proxy_image_width: int = 832, chunk_size: int = 3, max_context_frames: int = 18, sink_frames: int = 6) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L59) | |
| **Parameters:** | |
| vae ([AutoencoderKLWan](/docs/diffusers/pr_15066/en/api/models/autoencoder_kl_wan#diffusers.AutoencoderKLWan)) : Wan VAE for reference encoding and full-quality video decoding. | |
| text_encoder (`UMT5EncoderModel`) : Text encoder. | |
| tokenizer (`AutoTokenizer`) : Tokenizer corresponding to the text encoder. | |
| transformer ([EdenLiveTransformer3DModel](/docs/diffusers/pr_15066/en/api/models/edenlive_transformer_3d#diffusers.EdenLiveTransformer3DModel)) : EdenLive causal video denoiser. | |
| scheduler ([FlowMatchEulerDiscreteScheduler](/docs/diffusers/pr_15066/en/api/schedulers/flow_match_euler_discrete#diffusers.FlowMatchEulerDiscreteScheduler)) : Scheduler corresponding to the transformer checkpoint. | |
| proxy_encoder (`DINOv3ViTModel`) : Trained RGB proxy encoder. | |
| image_encoder (`CLIPVisionModel`, *optional*) : Reference image encoder required by the 14B model. | |
| image_processor (`CLIPImageProcessor`, *optional*) : Processor corresponding to the image encoder. | |
| decoder ([EdenLiveLightTAEDecoder](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLiveLightTAEDecoder), *optional*) : Optional faster decoder. When omitted, decode with the full Wan VAE. | |
| proxy_image_height (`int`, defaults to 480) : Height of the proxy images passed to DINO. | |
| proxy_image_width (`int`, defaults to 832) : Width of the proxy images passed to DINO. | |
| chunk_size (`int`, defaults to 3) : Latent frames generated in each chunk. | |
| max_context_frames (`int`, defaults to 18) : Maximum number of latent frames in the attention window, including the current chunk. | |
| sink_frames (`int`, defaults to 6) : Initial latent frames retained when the attention window fills. | |
| Causal video generation conditioned on a reference image, text, and an RGB proxy video. | |
| #### __call__[[diffusers.EdenLiveCausalPipeline.__call__]] | |
| ```python | |
| __call__(prompt: str | list[str] | None = None, image = None, video = None, height: int | None = None, width: int | None = None, num_frames: int | None = None, num_inference_steps: int | None = None, guidance_scale: float | None = None, negative_prompt: str | list[str] | None = None, generator: typing.Union[torch.Generator, list[torch.Generator], NoneType] = None, latents: typing.Optional[torch.Tensor] = None, prompt_embeds: typing.Optional[torch.Tensor] = None, negative_prompt_embeds: typing.Optional[torch.Tensor] = None, chunk_prompts: list[str] | None = None, max_sequence_length: int = 512, output_type: str = 'np', return_dict: bool = True, attention_kwargs: dict | None = None, callback_on_step_end: typing.Optional[typing.Callable] = None, callback_on_step_end_tensor_inputs: list[str] | None = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L345) | |
| **Parameters:** | |
| prompt (`str` or `list[str]`, *optional*) : Text describing the output video. Supply this or `prompt_embeds` unless using `chunk_prompts`. | |
| image (`PIL.Image.Image`, `np.ndarray`, or `torch.Tensor`) : Photoreal first-frame reference. Tensor and NumPy RGB values are in [0, 1]. The image is resized with tensor bilinear interpolation and center-cropped to the output dimensions. | |
| video (`list[PIL.Image.Image]`, `np.ndarray`, or `torch.Tensor`) : Full-rate decoded RGB proxy video, already sampled at the desired output frame rate. Tensor inputs have shape `(T, C, H, W)` or `(B, T, C, H, W)`; NumPy inputs use channels last. Floating-point values are in [0, 1]. Proxy frames are sampled at the VAE temporal stride exactly once. | |
| height (`int`, *optional*) : Output height. Defaults to 704 for 5B or 480 for 14B. | |
| width (`int`, *optional*) : Output width. Defaults to 1280 for 5B or 832 for 14B. | |
| num_frames (`int`, *optional*) : Number of decoded output frames, of the form `4k + 1`. When omitted, use the largest valid input prefix. The requested length cannot exceed the input video; missing frames are never repeated. | |
| num_inference_steps (`int`, *optional*) : Denoising steps per chunk. Defaults to four for the released causal checkpoints. | |
| guidance_scale (`float`, *optional*) : Classifier-free guidance strength; defaults to 1. Values greater than one enable the negative prompt branch. | |
| negative_prompt (`str` or `list[str]`, *optional*) : Text describing content to discourage when classifier-free guidance is enabled. | |
| generator (`torch.Generator` or `list[torch.Generator]`, *optional*) : Random generator, or one per batch item. CPU generators are supported. | |
| latents (`torch.Tensor`, *optional*) : Initial noise with shape `(B, C, T_latent, H_latent, W_latent)`. When omitted, noise for the whole video is sampled before image conditioning. The fixed first frame still consumes its noise draw. | |
| prompt_embeds (`torch.Tensor`, *optional*) : Precomputed positive text embeddings in place of `prompt`. | |
| negative_prompt_embeds (`torch.Tensor`, *optional*) : Precomputed negative text embeddings in place of `negative_prompt`. | |
| chunk_prompts (`list[str]`, *optional*) : One positive prompt per latent chunk, including a short final chunk. Overrides a single `prompt`. Requires one video and cannot be combined with `prompt_embeds`. The negative prompt stays fixed. Text changes take effect at chunk boundaries while retaining previously generated video history. | |
| max_sequence_length (`int`, defaults to 512) : Token count for each text prompt, including zero padding. | |
| output_type (`str`, defaults to `"np"`) : Return NumPy videos (`"np"`, shape `(B, T, H, W, 3)`), PyTorch videos (`"pt"`, shape `(B, T, 3, H, W)`), nested PIL frame lists (`"pil"`), or normalized diffusion latents (`"latent"`, shape `(B, C, T_latent, H_latent, W_latent)`). Decoded tensor and NumPy values are in [0, 1]. | |
| return_dict (`bool`, defaults to `True`) : Return `EdenLivePipelineOutput`; otherwise return a one-element tuple containing the frames. | |
| attention_kwargs (`dict`, *optional*) : Transformer options. The `scale` entry sets the LoRA scale when adapters are loaded. | |
| callback_on_step_end (`Callable`, *optional*) : Function called as `callback(self, step_index, timestep, tensors)` after each denoising step. Return a dictionary containing any replacement tensors. In causal mode the tensors contain the current chunk and step indices count across all chunks. | |
| callback_on_step_end_tensor_inputs (`list[str]`, defaults to `["latents"]`) : Tensors supplied to the callback, selected from `latents`, `prompt_embeds`, and `negative_prompt_embeds`. | |
| **Returns:** [EdenLivePipelineOutput](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLivePipelineOutput) or `tuple` | |
| Generated frames, or latent videos when `output_type="latent"`. | |
| Generate a complete causal video. | |
| Examples: | |
| ```python | |
| >>> import torch | |
| >>> from diffusers import EdenLiveCausalPipeline | |
| >>> from diffusers.utils import export_to_video, load_image, load_video | |
| >>> pipe = EdenLiveCausalPipeline.from_pretrained( | |
| ... "VAST-AI/EdenLive-5B-Causal-Diffusers", | |
| ... torch_dtype={"default": torch.bfloat16, "proxy_encoder": torch.float32}, | |
| ... ).to("cuda") | |
| >>> frames = pipe( | |
| ... image=load_image("reference.png"), video=load_video("proxy.mp4"), | |
| ... prompt="A character walks through snow.", num_frames=49, | |
| ... ).frames[0] | |
| >>> export_to_video(frames, "edenlive.mp4", fps=24) | |
| ``` | |
| #### check_inputs[[diffusers.EdenLiveCausalPipeline.check_inputs]] | |
| ```python | |
| check_inputs(prompt, prompt_embeds, negative_prompt, negative_prompt_embeds, image, video, height, width, output_type, callback_inputs) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L198) | |
| Validate conditioning inputs, output dimensions, and callback tensor names. | |
| #### decode_latents[[diffusers.EdenLiveCausalPipeline.decode_latents]] | |
| ```python | |
| decode_latents(latents, output_type) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L318) | |
| Decode normalized diffusion latents with the VAE or optional LightTAE. | |
| #### encode_prompt[[diffusers.EdenLiveCausalPipeline.encode_prompt]] | |
| ```python | |
| encode_prompt(prompt = None, negative_prompt = None, do_classifier_free_guidance = True, prompt_embeds = None, negative_prompt_embeds = None, max_sequence_length = 512, device = None, dtype = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L158) | |
| Encode positive and optional negative text with UMT5, zeroing padded token embeddings. | |
| #### prepare_conditions[[diffusers.EdenLiveCausalPipeline.prepare_conditions]] | |
| ```python | |
| prepare_conditions(image, proxy_video, height, width, num_frames, batch_size, device, dtype) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L250) | |
| Encode the reference image and sampled RGB proxy frames for the video transformer. | |
| #### prepare_latents[[diffusers.EdenLiveCausalPipeline.prepare_latents]] | |
| ```python | |
| prepare_latents(batch_size, height, width, num_frames, dtype, device, generator = None, latents = None) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_edenlive_causal.py#L234) | |
| Prepare full-video initial noise, including the fixed first frame's noise draw. | |
| ## EdenLiveLightTAEDecoder[[diffusers.EdenLiveLightTAEDecoder]] | |
| #### diffusers.EdenLiveLightTAEDecoder[[diffusers.EdenLiveLightTAEDecoder]] | |
| ```python | |
| diffusers.EdenLiveLightTAEDecoder(latent_channels = 16, patch_size = 1, block_out_channels = (256, 128, 64, 64)) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/models/autoencoders/autoencoder_edenlive.py#L83) | |
| **Parameters:** | |
| latent_channels (`int`, *optional*, defaults to 16) : Latent channels: 16 for Wan 2.1 / EdenLive 14B, or 48 for Wan 2.2 / EdenLive 5B. | |
| patch_size (`int`, *optional*, defaults to 1) : Output pixel shuffle factor: 1 for 14B or 2 for 5B. | |
| block_out_channels (`tuple[int]`, *optional*, defaults to `(256, 128, 64, 64)`) : Decoder widths at its four spatial resolutions. | |
| Decoder-only LightTAE for EdenLive's Wan latents. | |
| Input latents use the VAE's raw (unnormalized) scale and `[batch, channels, frames, height, width]` layout. Decoded | |
| RGB samples use the same layout, range `[-1, 1]`, and `(frames - 1) * 4 + 1` frames. Temporal state belongs to each | |
| `decode` call and is never retained on the model. | |
| #### decode[[diffusers.EdenLiveLightTAEDecoder.decode]] | |
| ```python | |
| decode(latents: Tensor, return_dict: bool = True) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/models/autoencoders/autoencoder_edenlive.py#L141) | |
| **Parameters:** | |
| latents (`torch.Tensor`) : Unnormalized VAE latents with shape `(B, C, T_latent, H_latent, W_latent)` on the decoder device and in its dtype. `C` must equal `config.latent_channels`, and at least one latent frame is required. Pipeline outputs with `output_type="latent"` must first be unnormalized with the VAE mean and standard deviation. The pipeline performs this conversion automatically when decoding frames. | |
| return_dict (`bool`, defaults to `True`) : Return a `DecoderOutput` when true; otherwise return a one-element tuple containing the sample. | |
| **Returns:** `DecoderOutput` or `tuple[torch.Tensor]` | |
| RGB sample in `(B, 3, T, H, W)` layout and [-1, 1] range. The output has `(T_latent - 1) * | |
| scale_factor_temporal + 1` frames and spatial dimensions multiplied by `scale_factor_spatial`. Internal | |
| chunks share temporal state, including a short final chunk. | |
| Decode a complete video from raw VAE latents. | |
| ## EdenLivePipelineOutput[[diffusers.EdenLivePipelineOutput]] | |
| #### diffusers.EdenLivePipelineOutput[[diffusers.EdenLivePipelineOutput]] | |
| ```python | |
| diffusers.EdenLivePipelineOutput(frames: typing.Union[torch.Tensor, numpy.ndarray, list[list[PIL.Image.Image]]]) | |
| ``` | |
| [Source](https://github.com/huggingface/diffusers/blob/vr_15066/src/diffusers/pipelines/edenlive/pipeline_output.py#L25) | |
| **Parameters:** | |
| frames (`torch.Tensor`, `np.ndarray`, or `list[list[PIL.Image.Image]]`) : Generated videos selected by `output_type`. `"np"` returns shape `(B, T, H, W, 3)` and `"pt"` returns `(B, T, 3, H, W)`, both with floating-point RGB values in [0, 1]. `"pil"` returns one list of RGB images per video. `"latent"` bypasses decoding and returns normalized diffusion latents with shape `(B, C, T_latent, H_latent, W_latent)`; these values are not bounded RGB pixels. `B` is the video batch size and `T` is the decoded frame count. The latent channel count `C` is 48 for 5B and 16 for 14B. | |
| Output of [EdenLivePipeline](/docs/diffusers/pr_15066/en/api/pipelines/edenlive#diffusers.EdenLivePipeline). | |
Xet Storage Details
- Size:
- 27.7 kB
- Xet hash:
- bbc1b86e4354ed54ff14b5eca8fecdf066cd17cb6a4172490090288aa0c78f49
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.