Buckets:
| # | |
| # Лицензия Apache License, Version 2.0 («Лицензия»); | |
| # вы можете использовать этот файл только в соответствии с Лицензией. | |
| # Вы можете получить копию Лицензии по адресу | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Если это не требуется применимым законодательством или не оговорено письменно, программное | |
| # распространяется по Лицензии на условиях «КАК ЕСТЬ», | |
| # БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, прямо указанных или подразумеваемых. | |
| # См. Лицензию для получения конкретных условий, регулирующих разрешения и | |
| # ограничениями Лицензии. --> | |
| # Wan-Animate-2 | |
| [Wan-Animate-2](https://github.com/Wan-Video/Wan2.2) от команды Alibaba Wan Team анимирует изображение эталонного персонажа, используя движения из управляющего видео. Управляющее видео обрабатывается в сегментах фиксированной длины: для каждого сегмента выполняется проход извлечения эталона, который кэширует K/V управляющего сегмента в каждом слое трансформера, выполняет денойзинг относительно этого кэша и декодируется внутри цикла, поскольку следующий сегмент зависит от декодированных хвостовых кадров предыдущего сегмента. | |
| Доступны два пресета: базовая контрольная точка выполняет сэмплирование с использованием classifier-free guidance, а дистиллированная контрольная точка выполняет сэмплирование за несколько шагов без него (её guider зафиксирован на `guidance_scale=1.0`). | |
| ```python | |
| import torch | |
| from diffusers import ModularPipeline | |
| from diffusers.utils import export_to_video, load_image, load_video | |
| pipe = ModularPipeline.from_pretrained("Wan-AI/Wan2.2-Animate-2-14B-Diffusers") | |
| pipe.load_components(dtype=torch.bfloat16) | |
| # The transformer weights and the per-segment reference KV cache do not co-reside on one 80 GB | |
| # card at the default resolution, so stream the transformer's blocks. Compiling the blocks is | |
| # required as the in-context attention runs on the flex backend | |
| pipe.transformer.enable_group_offload( | |
| onload_device=torch.device("cuda"), | |
| offload_device=torch.device("cpu"), | |
| offload_type="block_level", | |
| use_stream=True, | |
| ) | |
| pipe.text_encoder.to("cuda") # or "mps", "xpu", "cpu" | |
| pipe.image_encoder.to("cuda") | |
| pipe.vae.to("cuda") | |
| pipe.transformer.compile_repeated_blocks(fullgraph=False) | |
| # The first demo from the official repository: https://github.com/Wan-Video/Wan-Animate-2 | |
| demo = "https://raw.githubusercontent.com/Wan-Video/Wan-Animate-2/main/examples/demo1" | |
| image = load_image(f"{demo}/reference.png") | |
| driving_video, driving_video_fps = load_video(f"{demo}/template.mp4", return_fps=True) | |
| prompt = "人物外观描述:一只银灰色虎斑纹的小猫,拥有圆润的脸庞、竖立的耳朵和巨大的圆形眼睛。它身穿一套深蓝色的制服套装,包括一件带有金色纽扣的西装外套和一条百褶裙。外套里面搭配着白色衬衫,领口处系着一个红色的蝴蝶结,袖口露出白色的衬衫边缘。背景描述:背景为纯白色,光线均匀明亮,无其他杂物或装饰。" | |
| videos = pipe( | |
| image=image, | |
| driving_video=driving_video, | |
| driving_video_fps=driving_video_fps, | |
| prompt=prompt, | |
| output="videos", | |
| ) | |
| export_to_video(videos[0], "output.mp4", fps=24) | |
| ``` | |
| Для дистиллированной контрольной точки загрузите `Wan-AI/Wan2.2-Animate-2-14B-Distilled-Diffusers` тем же способом — ничего другого менять не нужно. Каждый пресет содержит собственные значения по умолчанию для сэмплирования (40 шагов для базовой контрольной точки и 10 для дистиллированной), а аргумент `guidance_scale` отсутствует везде: управление guidance осуществляется компонентом guider в пайплайне (classifier-free guidance со значением 3.0 для базового пресета, отключено для дистиллированного). | |
| `height` и `width` (по умолчанию 800 и 640) задают целевую *область* генерируемого видео; фактический размер кадра сохраняет соотношение сторон исходного изображения, а управляющие кадры дополняются чёрными полосами до этого размера. Входы, которые уже соответствуют целевому размеру с чёрными полосами, проходят предобработку без изменений, поэтому предобработку можно выполнять полностью вне конвейера. | |
| ## WanAnimate2ModularPipeline[[diffusers.WanAnimate2ModularPipeline]] | |
| #### diffusers.WanAnimate2ModularPipeline[[diffusers.WanAnimate2ModularPipeline]] | |
| ```python | |
| diffusers.WanAnimate2ModularPipeline(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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/wan_animate_2/modular_pipeline.py#L23) | |
| Модульный ModularPipeline для анимации персонажей Wan-Animate-2. | |
| ## WanAnimate2DistilledModularPipeline[[diffusers.WanAnimate2DistilledModularPipeline]] | |
| #### diffusers.WanAnimate2DistilledModularPipeline[[diffusers.WanAnimate2DistilledModularPipeline]] | |
| ```python | |
| diffusers.WanAnimate2DistilledModularPipeline(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) | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/wan_animate_2/modular_pipeline.py#L62) | |
| ModularPipeline для дистиллированной модели Wan-Animate-2, которая выполняет сэмплирование за несколько шагов без классификаторно-свободного наведения (classifier-free guidance). | |
| ## WanAnimate2Blocks[[diffusers.WanAnimate2Blocks]] | |
| #### diffusers.WanAnimate2Blocks[[diffusers.WanAnimate2Blocks]] | |
| ```python | |
| diffusers.WanAnimate2Blocks() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/wan_animate_2/modular_blocks_wan_animate_2.py#L252) | |
| Модульные блоки конвейера для анимации персонажей Wan-Animate-2: опорное изображение персонажа и управляющее видео формируют видео, в котором персонаж повторяет движения из управляющего ролика. | |
| Компоненты: text_encoder (`UMT5EncoderModel`) tokenizer (`AutoTokenizer`) image_processor (`WanAnimate2VideoProcessor`) image_encoder (`CLIPVisionModel`) video_processor (`WanAnimate2VideoProcessor`) vae (`AutoencoderKLWan`) transformer (`WanAnimate2Transformer3DModel`) scheduler (`SchedulerMixin`) guider (`ClassifierFreeGuidance`) | |
| Входные данные: prompt (`str`): Промпт или промпты для управления генерацией изображения. negative_prompt (`str`, *необязательный*): Промпт или промпты, которые не должны влиять на генерацию изображения. prompt_ref (`str`, *необязательный*, по умолчанию 人物动作的参考视频): Справочный промпт для контекста управляющего видео max_sequence_length (`int`, *необязательный*, по умолчанию 512): Максимальная длина последовательности для кодирования промпта. image (`Image | list`): Справочное изображение, содержащее персонажа для анимации. height (`int`, *необязательный*, по умолчанию 800): Вместе с `width` определяет целевую *область* сгенерированного видео; соотношение сторон берётся из `image`. Замещается разрешённой высотой кадра. width (`int`, *необязательный*, по умолчанию 640): См. `height`. Замещается разрешённой шириной кадра. driving_video (`list`): Управляющее видео, обеспечивающее движение, в любом формате, поддерживаемом `VideoProcessor.preprocess_video`. driving_video_fps (`float`, *необязательный*): Частота кадров, с которой было записано `driving_video` — `load_video(..., return_fps=True)` сообщает её. Если задано, кадры управляющего видео пересэмплируются из него в `fps`; если `None`, они используются как есть. fps (`int`, *необязательный*, по умолчанию 24): Частота кадров, с которой модель генерирует segment_frame_length (`int`, *необязательный*, по умолчанию 81): Количество кадров в каждом сегменте вывода prev_segment_conditioning_frames (`int`, *необязательный*, по умолчанию 1): Количество кадров условия, передаваемых из предыдущего сегмента generator (`Generator`, *необязательный*): Генератор Torch для детерминированной генерации. num_inference_steps (`int`, *необязательный*, по умолчанию 40): Количество шагов денойзинга. **denoiser_input_fields (`None`, *необязательный*): входные данные условной модели для денойзера: например, prompt_embeds, negative_prompt_embeds и т. д. output_type (`str`, *необязательный*, по умолчанию np): Тип выходных данных декодированных видео | |
| Результаты: видео (`list`): сгенерированные видео. | |
| ## WanAnimate2DistilledBlocks[[diffusers.WanAnimate2DistilledBlocks]] | |
| #### diffusers.WanAnimate2DistilledBlocks[[diffusers.WanAnimate2DistilledBlocks]] | |
| ```python | |
| diffusers.WanAnimate2DistilledBlocks() | |
| ``` | |
| [Источник](https://github.com/huggingface/diffusers/blob/main/src/diffusers/modular_pipelines/wan_animate_2/modular_blocks_wan_animate_2_distilled.py#L254) | |
| Модульные блоки конвейера для анимации персонажей с использованием дистиллированной модели Wan-Animate-2, выборка за несколько шагов без классификаторного наведения (classifier-free guidance). | |
| Компоненты: text_encoder (`UMT5EncoderModel`) tokenizer (`AutoTokenizer`) image_processor (`WanAnimate2VideoProcessor`) image_encoder (`CLIPVisionModel`) video_processor (`WanAnimate2VideoProcessor`) vae (`AutoencoderKLWan`) transformer (`WanAnimate2Transformer3DModel`) scheduler (`SchedulerMixin`) guider (`ClassifierFreeGuidance`) | |
| Входные данные: prompt (`str`): Промпт или промпты для управления генерацией изображения. negative_prompt (`str`, *необязательный*): Промпт или промпты, которые не должны влиять на генерацию изображения. prompt_ref (`str`, *необязательный*, по умолчанию 人物动作的参考视频): Справочный промпт для контекста управляющего видео max_sequence_length (`int`, *необязательный*, по умолчанию 512): Максимальная длина последовательности для кодирования промпта. image (`Image | list`): Справочное изображение, содержащее персонажа для анимации. height (`int`, *необязательный*, по умолчанию 800): Вместе с `width` определяет целевую *область* сгенерированного видео; соотношение сторон берётся из `image`. Замещается разрешённой высотой кадра. width (`int`, *необязательный*, по умолчанию 640): См. `height`. Замещается разрешённой шириной кадра. driving_video (`list`): Управляющее видео, обеспечивающее движение, в любом формате, поддерживаемом `VideoProcessor.preprocess_video`. driving_video_fps (`float`, *необязательный*): Частота кадров, с которой было записано `driving_video` — `load_video(..., return_fps=True)` сообщает её. Если задано, кадры управляющего видео пересэмплируются из него в `fps`; если `None`, они используются как есть. fps (`int`, *необязательный*, по умолчанию 24): Частота кадров, с которой модель генерирует segment_frame_length (`int`, *необязательный*, по умолчанию 81): Количество кадров в каждом сегменте вывода prev_segment_conditioning_frames (`int`, *необязательный*, по умолчанию 1): Количество кадров условия, передаваемых из предыдущего сегмента generator (`Generator`, *необязательный*): Генератор Torch для детерминированной генерации. num_inference_steps (`int`, *необязательный*, по умолчанию 10): Количество шагов денойзинга. **denoiser_input_fields (`None`, *необязательный*): входные данные условной модели для денойзера: например, prompt_embeds, negative_prompt_embeds и т. д. output_type (`str`, *необязательный*, по умолчанию np): Тип выходных данных декодированных видео | |
| Результаты: видео (`list`): сгенерированные видео. | |
Xet Storage Details
- Size:
- 16.3 kB
- Xet hash:
- d8ba0de06ffdc21386945663df694376b6e581b4659669912e86d12800fa7d3a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.