| --- |
| license: apache-2.0 |
| language: |
| - en |
| base_model: |
| - Wan-AI/Wan2.1-I2V-14B-720P |
| - Wan-AI/Wan2.1-I2V-14B-720P-Diffusers |
| pipeline_tag: image-to-video |
| tags: |
| - text-to-image |
| - lora |
| - diffusers |
| - template:diffusion-lora |
| widget: |
| - text: >- |
| dajia,这是一个两个人对打得视频,镜头拉远,保持人物不变,这两个人开始对打,两个人不断旋转,拳打脚踢,姿势像是传统武术, |
| 十分专业,两个人相互比试,打的有来有回,突然左边的人腾空跳起,保持飞在空中用腿不停踢另一个人上半身, |
| 男人被踢得一边用手阻挡女人的飞踢一边后退,镜头跟随,保持背景和人物的服装不改变. |
| output: |
| url: result/people_fight1.mp4 |
| - text: >- |
| dajia,这是一对情侣对打得视频,镜头拉远,保持人物不变,这两个人开始对打,两个人不断旋转,拳打脚踢,姿势像是传统武术, |
| 十分专业,两个人相互比试,打的有来有回,突然左边的人腾空跳起,保持飞在空中用腿不停踢另一个人上半身, |
| 男人被踢得一边用手阻挡女人的飞踢一边后退,镜头跟随,保持背景和人物的服装不改变。 |
| output: |
| url: result/people_fight2.mp4 |
| - text: >- |
| dajia,这是一对闺蜜对打得视频,镜头拉远,保持人物不变,这两个人开始对打,两个人不断旋转,拳打脚踢,姿势像是传统武术, |
| 十分专业,两个人相互比试,打的有来有回,突然右边的人腾空跳起,保持飞在空中用腿不停踢另一个人上半身, |
| 右边的女人被踢得一边用手阻挡女人的飞踢一边后退,镜头跟随,保持背景和人物的服装不改变。 |
| output: |
| url: result/people_fight3.mp4 |
|
|
| --- |
| <div style="background-color: #f8f9fa; padding: 20px; border-radius: 10px; margin-bottom: 20px;"> |
| <h1 style="color: #24292e; margin-top: 0;">valiantcat LoRA for Wan2.1 14B I2V 720p</h1> |
| |
| <div style="background-color: white; padding: 15px; border-radius: 8px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
| <h2 style="color: #24292e; margin-top: 0;">Overview</h2> |
| <p>This LoRA is trained on the Wan2.1 14B I2V 720p model.</p> |
| </div> |
| |
| <div style="background-color: white; padding: 15px; border-radius: 8px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
| <h2 style="color: #24292e; margin-top: 0;">Features</h2> |
| <ul style="margin-bottom: 0;"> |
| <li>Transform any image into a video of two people began to fight</li> |
| <li>Trained on the Wan2.1 14B 720p I2V base model</li> |
| <li>Consistent results across different object types</li> |
| <li>Simple prompt structure that's easy to adapt</li> |
| </ul> |
| </div> |
| |
| <div style="background-color: white; padding: 15px; border-radius: 8px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
| <h2 style="color: #24292e; margin-top: 0;">Community</h2> |
| <ul style="margin-bottom: 0;"> |
| <li> |
| <b>Company:</b> |
| <a href="https://www.vvicat.com/" style="color: #0366d6; text-decoration: none;"> |
| Join us to generate interesting video models together |
| </a> to generate videos with this LoRA for free |
| </li> |
| </ul> |
| </div> |
| |
| <Gallery /> |
|
|
| # Model File and Inference Workflow |
|
|
| ## 📥 Download Links: |
|
|
| - [wan2.1-fight.safetensors](./wan2.1-fight.safetensors) - LoRA Model File |
| - [wan_img2video_lora_workflow.json](./result/wanvideo_720p_I2V.json) - Wan I2V with LoRA Workflow for ComfyUI |
|
|
| ## Using with Diffusers |
| ```py |
| pip install git+https://github.com/huggingface/diffusers.git |
| ``` |
|
|
| ```py |
| import torch |
| from diffusers.utils import export_to_video, load_image |
| from diffusers import AutoencoderKLWan, WanImageToVideoPipeline |
| from transformers import CLIPVisionModel |
| import numpy as np |
| |
| model_id = "Wan-AI/Wan2.1-I2V-14B-720P-Diffusers" |
| image_encoder = CLIPVisionModel.from_pretrained(model_id, subfolder="image_encoder", torch_dtype=torch.float32) |
| vae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32) |
| pipe = WanImageToVideoPipeline.from_pretrained(model_id, vae=vae, image_encoder=image_encoder, torch_dtype=torch.bfloat16) |
| pipe.to("cuda") |
| |
| pipe.load_lora_weights("valiantcat/Wan2.1-Fight-LoRA") |
| |
| pipe.enable_model_cpu_offload() #for low-vram environments |
| |
| prompt = "dajia,这是一个两个人对打得视频,镜头拉远,保持人物不变,这两个人开始对打,两个人不断旋转,拳打脚踢,姿势像是传统武术, 十分专业,两个人相互比试,打的有来有回,突然左边的人腾空跳起,保持飞在空中用腿不停踢另一个人上半身, 男人被踢得一边用手阻挡女人的飞踢一边后退,镜头跟随,保持背景和人物的服装不改变." |
| |
| image = load_image("https://huggingface.co/valiantcat/Wan2.1-Fight-LoRA/blob/main/result/test.jpg") |
| |
| max_area = 512 * 768 |
| aspect_ratio = image.height / image.width |
| mod_value = pipe.vae_scale_factor_spatial * pipe.transformer.config.patch_size[1] |
| height = round(np.sqrt(max_area * aspect_ratio)) // mod_value * mod_value |
| width = round(np.sqrt(max_area / aspect_ratio)) // mod_value * mod_value |
| image = image.resize((width, height)) |
| |
| output = pipe( |
| image=image, |
| prompt=prompt, |
| height=height, |
| width=width, |
| num_frames=81, |
| guidance_scale=5.0, |
| num_inference_steps=25 |
| ).frames[0] |
| export_to_video(output, "output.mp4", fps=16) |
| ``` |
|
|
| --- |
| <div style="background-color: #f8f9fa; padding: 20px; border-radius: 10px; margin-bottom: 20px;"> |
| <div style="background-color: white; padding: 15px; border-radius: 8px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
| <h2 style="color: #24292e; margin-top: 0;">Recommended Settings</h2> |
| <ul style="margin-bottom: 0;"> |
| <li><b>LoRA Strength:</b> 1.0</li> |
| <li><b>Embedded Guidance Scale:</b> 6.0</li> |
| <li><b>Flow Shift:</b> 5.0</li> |
| </ul> |
| </div> |
| |
| <div style="background-color: white; padding: 15px; border-radius: 8px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
| <h2 style="color: #24292e; margin-top: 0;">Trigger Words</h2> |
| <p>The key trigger phrase is: <code style="background-color: #f0f0f0; padding: 3px 6px; border-radius: 4px;">dajia</code></p> |
| </div> |
| |
| <div style="background-color: white; padding: 15px; border-radius: 8px; margin: 15px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
| <h2 style="color: #24292e; margin-top: 0;">Prompt Template</h2> |
| <p>For best results, use this prompt structure:</p> |
| <div style="background-color: #f0f0f0; padding: 12px; border-radius: 6px; margin: 10px 0;"> |
| <i>dajia,这是[object]对打得视频,镜头拉远,保持人物不变,这两个人开始对打,两个人不断旋转,拳打脚踢,姿势像是传统武术,十分专业,两个人相互比试,打的有来有回,突然左边的人腾空跳起,保持飞在空中用腿不停踢另一个人上半身,男人被踢得一边用手阻挡女人的飞踢一边后退,镜头跟随,保持背景和人物的服装不改变。</i> |
| </div> |
| <p>Simply replace <code style="background-color: #f0f0f0; padding: 3px 6px; border-radius: 4px;">[object]</code> with whatever you want to let these two people fight!</p> |
| </div> |
| |