Buckets:

mishig's picture
|
download
raw
9.03 kB

Sous licence Apache License, Version 2.0 (la « Licence ») ;

vous ne pouvez utiliser ce fichier que conformément à la Licence.

Vous pouvez obtenir un exemplaire de la Licence à

http://www.apache.org/licenses/LICENSE-2.0

Sauf exigence légale ou accord écrit

distribué sous la Licence est distribué sur une base « EN L'ÉTAT »,

SANS AUCUNE GARANTIE NI CONDITION, explicite ou implicite.

Voir la Licence pour le langage spécifique régissant les autorisations et

limitations under the License. -->

Echo

Echo est un modèle de génération de vidéos longues. Il prend en charge une première image propre facultative, des emplacements mémoire ordonnés pour les images et l’audio, ainsi qu’un échantillonneur stochastique à quelques étapes de distillation par correspondance de distributions (DMD). Le pipeline génère une vidéo et un audio synchronisés.

Echo est implémenté sous forme de ModularPipeline, ce qui permet d’exécuter ses blocs d’encodage de texte, de conditionnement mémoire, de débruitage DMD stochastique et de décodage soit comme un flux de travail complet, soit de manière indépendante.

Inférence

Chargez directement le checkpoint officiel jdopensource/JoyAI-Echo. Il utilise l'encodeur de texte et le tokenizer de google/gemma-3-12b-it. Le dépôt Gemma est soumis à une licence restreinte, il faut donc accepter sa licence et s'authentifier auprès de Hugging Face avant de charger le pipeline.

Le modèle publié utilise 241 images dans son exemple de vidéo longue. Les coordonnées RoPE de la vidéo restent au taux d’entraînement de 24 fps, indépendamment du taux du conteneur de sortie.

import torch
import torchaudio
from PIL import Image

from diffusers import ComponentsManager, ModularPipeline
from diffusers.utils import encode_video

manager = ComponentsManager()
pipe = ModularPipeline.from_pretrained("jdopensource/JoyAI-Echo", components_manager=manager)
pipe.load_components(dtype={"default": torch.bfloat16, "audio_vae": torch.float32})
manager.enable_auto_cpu_offload(device="cuda")
pipe.vae.enable_tiling()

first_frame = Image.open("first_frame.png").convert("RGB")
memory_images = [Image.open(path).convert("RGB") for path in ["memory_0.png", "memory_1.png"]]
memory_audio_with_rates = [torchaudio.load(path) for path in ["memory_0.wav", "memory_1.wav"]]
memory_audio = [waveform for waveform, _ in memory_audio_with_rates]
memory_audio_rates = [sample_rate for _, sample_rate in memory_audio_with_rates]

output = pipe(
    prompt="A cinematic dialogue scene in a quiet cafe.",
    image=first_frame,
    memory_images=memory_images,
    memory_audio_waveforms=memory_audio,
    memory_audio_sample_rates=memory_audio_rates,
    width=1280,
    height=736,
    num_frames=241,
    frame_rate=25.0,
    model_frame_rate=24.0,
    generator=torch.Generator(device="cuda").manual_seed(42),
    output_type="np",
    output=["videos", "audio"],
)

encode_video(
    output["videos"][0],
    fps=25,
    audio=output["audio"][0].float().cpu(),
    audio_sample_rate=pipe.vocoder.config.output_sampling_rate,
    output_path="echo.mp4",
)

L’ordonnancement de sigma DMD par défaut est l’ordonnancement à huit étapes publié. Il prédit x0 à chaque étape et réintroduit du bruit avec un bruit gaussien neuf au sigma suivant, de sorte qu’un torch.Generator initialisé contrôle à la fois le bruit initial et tous les réintroductions de bruit intermédiaires.

L'encodage audio-mémoire brut nécessite torchaudio. Pour une parité de référence, conservez audio_vae en FP32 comme indiqué ci-dessus. Les flux de travail modulaires peuvent mettre en cache les tenseurs normalisés et dépaquetés de l'encodeur VAE. Les latents vidéo ont la forme (batch, channels, frames, height, width) et les latents audio ont la forme (batch, channels, time, mel_bins). Le bloc denoise principal paquet ces tenseurs, étend le conditionnement pour num_videos_per_prompt et dépaquete les sorties débruitées pour les ramener à la même forme VAE. Transmettez également les latents et audio_latents initiaux dans cette forme dépaquetée. Les décodeurs reçoivent les tenseurs VAE normalisés et les dénormalisent immédiatement avant le décodage. output=["latents", "audio_latents"] renvoie les tenseurs VAE normalisés. Avec output_type="latent" et output=["videos", "audio"], vous obtenez les tenseurs VAE dénormalisés sans décodage.

EchoModularPipeline[[diffusers.EchoModularPipeline]]

diffusers.EchoModularPipeline[[diffusers.EchoModularPipeline]]

diffusers.EchoModularPipeline(blocks: diffusers.modular_pipelines.modular_pipeline.ModularPipelineBlocks | None = None, pretrained_model_name_or_path: str | os.PathLike | None = None, components_manager: diffusers.modular_pipelines.components_manager.ComponentsManager | None = None, collection: str | None = None, workflow: str | None = None, modular_config_dict: dict[str, typing.Any] | None = None, config_dict: dict[str, typing.Any] | None = None, **kwargs)

Source

Un ModularPipeline pour le point de contrôle DMD de la vidéo longue Echo.

EchoBlocks[[diffusers.EchoBlocks]]

diffusers.EchoBlocks[[diffusers.EchoBlocks]]

diffusers.EchoBlocks()

Source

Génération de référence à vidéo Echo avec un conditionnement propre de la première image, des emplacements de mémoire image/audio ordonnés et un débruitage DMD stochastique.

Composants : text_encoder (PreTrainedModel) tokenizer (PreTrainedTokenizerBase) connectors (LTX2TextConnectors) vae (AutoencoderKLLTX2Video) audio_vae (AutoencoderKLLTX2Audio) transformer (LTX2VideoTransformer3DModel) video_processor (VideoProcessor) vocoder (LTX2Vocoder)

Entrées : prompt (str) : Le prompt ou les prompts pour guider la génération d'image. max_sequence_length (int, facultatif, par défaut 1024) : Longueur de séquence maximale pour l'encodage du prompt. image (Image | Tensor, facultatif) : Première image unique facultative utilisée comme condition de référence propre. memory_images (list, facultatif) : Images de référence ordonnées, une par emplacement de mémoire Echo. memory_audio_waveforms (list, facultatif) : Formes d'onde de mémoire ordonnées sous forme de tenseurs (channels, samples). Les entrées supérieures à 9,62 secondes sont rognées à leur fenêtre de réponse maximale. Utilisez None pour un emplacement silencieux. memory_audio_sample_rates (int | list, facultatif) : Taux d'échantillonnage partagé par toutes les formes d'onde de mémoire, ou un taux par emplacement. height (int, facultatif, par défaut 512) : La hauteur en pixels de l'image générée. width (int, facultatif, par défaut 704) : La largeur en pixels de l'image générée. model_frame_rate (float, facultatif, par défaut 24.0) : Taux d'images par seconde utilisé à l'entraînement pour les coordonnées RoPE vidéo d'Echo. memory_position_offset (float, facultatif, par défaut 500.0) : Centre temporel attribué au premier emplacement de mémoire. memory_position_slot_stride (float, facultatif, par défaut 50.0) : Distance temporelle entre les centres des emplacements de mémoire consécutifs. num_videos_per_prompt (int, facultatif, par défaut 1) : Nombre de vidéos par prompt. num_frames (int, facultatif, par défaut 241) : Nombre de trames de pixels générées ; doit être 1 + k * vae_temporal_compression_ratio. frame_rate (float, facultatif, par défaut 25.0) : Taux d'images par seconde de la vidéo générée. latents (Tensor, facultatif) : Bruit vidéo initial facultatif sous forme VAE (B, C, F, H, W). audio_latents (Tensor, facultatif) : Bruit audio initial facultatif sous forme VAE (B, C, L, M). generator (Generator, facultatif) : Générateur Torch pour une génération déterministe. sigmas (list | tuple) : Planification des sigmas DMD, incluant le zéro terminal. attention_kwargs (dict, facultatif) : Arguments supplémentaires pour les processeurs d'attention. output_type (str, facultatif, par défaut pil) : Format de sortie : 'pil', 'np', 'pt'. decode_timestep (None, facultatif, par défaut 0.0) : Pas de temps utilisé pour décoder les latents finaux. decode_noise_scale (None, facultatif) : Facteur d'interpolation du bruit appliqué au pas de temps de décodage.

Sorties : vidéos (list) : Les vidéos générées. audio (Tensor) : La forme d'onde audio générée.

Xet Storage Details

Size:
9.03 kB
·
Xet hash:
9afda2c0f74e6b6fb4153ba16ce5adad481a5c6bb7e3a667515582907660b021

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