本地沉浸式体验阿里多模态模型Wan2.1:从文本和图像创建视频


Wan2.1 是一个由阿里千问开源的一个视频生成模型,它能够根据文本描述和图像这些不同类型的输入生成高质量的视频。



Wan2.1 兼具强大的视频生成能力和高可用性。与许多需要昂贵硬件的 AI 视频模型不同,它可以在消费级 GPU 上运行,使其更具实用性。


该模型基于 Diffusion Transformer 技术,这种方法使其能够生成流畅、逼真的视频,并具备出色的运动质量。此外,Wan2.1 引入了一种独特的视频变分自编码器(Video Variational Autoencoder,VAE),即使在 1080P 这样的高分辨率下,也能保持视频的一致性和细节。



主要特点  



性能先进


Wan2.1 在多个基准测试中超越了开源和商业 AI 视频模型,能够生成比许多其他方案更逼真、高质量的视频。



在上表中,我们可以看到不同视频生成模型在多个 Wan-Bench 维度上的对比评估,这些维度涵盖了运动生成、视觉稳定性、物体准确性和指令遵循等关键性能指标。每个类别中表现最优的模型已用加粗标注。


Wan-14B 以 0.724 的最高加权总分领跑,展现了其在多个基准测试中的强大能力。


可在消费级 GPU 上运行


与大多数需要昂贵硬件的高端 AI 视频模型相比,Wan 2.1 的 T2V-1.3B 仅需 8.19GB 的显存。这意味着你可以在普通 GPU(如 RTX 4090)上生成视频,仅需几分钟,无需依赖超级计算机。


支持多种视频生成任务和功能


Wan 2.1 不仅支持文本生成视频(Text-to-Video, T2V),还提供一系列高级功能来优化视频生成和个性化定制,包括:

  • 提示增强(Prompt Enhancement):启用后,模型会优化输入提示,以生成更高质量、更精准的视频。

  • 纵横比控制(Aspect Ratio Control):允许用户选择最佳输出比例,如 16:9、9:16、1:1、4:3 或 3:4。

  • 灵感模式(Inspiration Mode):通过增强视觉表现力,使画面更具艺术感,可能会略微偏离输入提示。

  • 音效支持(Sound Effects):生成适配视频的音效,或创建背景音乐。


此外,Wan 还支持图像生成视频(Image-to-Video, I2V),可将静态图像转换为动画视频。你还可以添加文本提示以更精准地控制视频生成,并定义首帧和末帧,以塑造视频的构图和流畅度。


视觉文本生成(支持中英文)


Wan 2.1 是首个支持在视频中生成可读文本的 AI 视频模型,支持英文和中文。这对于创建字幕、动画文字和视频叠加效果十分有用。


视频变分自编码器(VAE)


Wan 2.1 采用先进的视频变分自编码器(Video Variational Autoencoder, Wan-VAE),能够:

  • 编码和解码任意长度的 1080P 高清视频,并保持流畅的运动效果。
  • 保持细节和时间一致性,确保物体和角色在各帧之间不会闪烁或变形。
  • 高效压缩视频数据,提升存储和传输效率。



在本地运行 Wan2.1  




安装


首先,从 GitHub 下载 Wan 2.1 代码:

git clone https://github.com/Wan-Video/Wan2.1.gitcd Wan2.1


准备安装依赖项,确保已安装 Python 和 PyTorch(2.4.0 或更高版本),然后安装所需的库:

pip install -r requirements.txt


最后从 Hugging Face 或 ModelScope(魔搭)下载预先训练的模型文件。以下是不同型号的下载地址:

  • T2V-14B,支持 480P 和 720P,下载地址:

    • https://huggingface.co/Wan-AI/Wan2.1-T2V-14B

    • https://www.modelscope.cn/models/Wan-AI/Wan2.1-T2V-14B

  • I2V-14B-720P,支持 720P,下载地址:

    • https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-720P

    • https://www.modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-720P

  • I2V-14B-480P,支持 480P,下载地址:

    • https://huggingface.co/Wan-AI/Wan2.1-I2V-14B-480P

    • https://www.modelscope.cn/models/Wan-AI/Wan2.1-I2V-14B-480P

  • T2V-1.3B,支持 480P,下载地址:

    • https://huggingface.co/Wan-AI/Wan2.1-T2V-1.3B

    • https://www.modelscope.cn/models/Wan-AI/Wan2.1-T2V-1.3B


1.3B 模型可以生成 720P 分辨率的视频,但由于在此质量下训练较少,结果可能不如 480P 稳定。为了获得最佳性能,建议使用 480P 分辨率。


简单的文本生成视频


Wan 2.1 提供了两个从文本生成视频的模型版本:

  • T2V-14B:更大、更强大,支持 480p 和 720p 分辨率。

  • T2V-1.3B:更小,需要更少的电力,仅支持 480p。


如果你只是想快速生成视频,可以使用以下命令,其中未启用提示增强功能。

  • 对于 T2V-14B 模型(更高质量,更大的模型):

python generate.py --task t2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-T2V-14B --prompt "A futuristic city with flying cars and neon lights."


  • 对于 T2V-1.3B 模型(较小,在低端 GPU 上运行):
python generate.py --task t2v-1.3B --size 832*480 --ckpt_dir ./Wan2.1-T2V-1.3B --prompt "A futuristic city with flying cars and neon lights."


如果你的计算机内存不足,你可以使用 –offload_model True 和 –t5_cpu 来减少内存使用量。


使用多 GPU 运行文本转视频


如果你有多个 GPU,则可以通过运行以下命令来加快视频生成速度:

torchrun --nproc_per_node=8 generate.py --task t2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-T2V-14B --dit_fsdp --t5_fsdp --ulysses_size 8 --prompt "A futuristic city with flying cars and neon lights."


这样可以将工作负载分散到多个 GPU 上,从而加快处理速度。


使用提示扩展


Wan 2.1 可以自动改进你的提示,因此你可以使视频更详细、更具视觉吸引力。


有两种方法可以扩展提示:

  • 使用 Dashscope API(需要 API key):

DASH_API_KEY=your_key python generate.py --task t2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-T2V-14B --prompt "A futuristic city with flying cars and neon lights." --use_prompt_extend --prompt_extend_method 'dashscope'
  • 使用本地模型:
python generate.py --task t2v-14B --size 1280*720 --ckpt_dir ./Wan2.1-T2V-14B --prompt "A futuristic city with flying cars and neon lights." --use_prompt_extend --prompt_extend_method 'local_qwen'

使用 Diffusers 运行 Wan 2.1


如果你想使用 Hugging Face 的 Diffusers 库,而不是运行原始脚本,可以通过下面的 Python 脚本生成视频:

import torchfrom diffusers.utils import export_to_videofrom diffusers import AutoencoderKLWan, WanPipelinefrom diffusers.schedulers.scheduling_unipc_multistep import UniPCMultistepScheduler
# Available models: Wan-AI/Wan2.1-T2V-14B-Diffusers, Wan-AI/Wan2.1-T2V-1.3B-Diffusersmodel_id = "Wan-AI/Wan2.1-T2V-14B-Diffusers"
# Load the autoencoder for video generationvae = AutoencoderKLWan.from_pretrained(model_id, subfolder="vae", torch_dtype=torch.float32)
# Define the scheduler for controlling video motion flowflow_shift = 5.0  # 5.0 for 720P, 3.0 for 480P
scheduler = UniPCMultistepScheduler(    prediction_type='flow_prediction'    use_flow_sigmas=True    num_train_timesteps=1000    flow_shift=flow_shift)
# Load the video generation pipeline with the modelpipe = WanPipeline.from_pretrained(model_id, vae=vae, torch_dtype=torch.bfloat16)pipe.scheduler = schedulerpipe.to("cuda")
# New promptprompt = "A futuristic city at sunset, filled with flying cars and neon lights. The buildings have a sleek, cyberpunk design, and people walk on glowing sidewalks. The scene is full of vibrant colors, reflections, and dynamic movement."
# New negative promptnegative_prompt = "Dull colors, grainy texture, washed-out details, static frames, incorrect lighting, unnatural shadows, distorted faces, artifacts, low-resolution elements, flickering, blurry motion, repetitive patterns, unrealistic reflections, overly simplistic backgrounds, three legged people, walking backwards."
# Generate the video framesoutput = pipe(     prompt=prompt,     negative_prompt=negative_prompt,     height=720,     width=1280,     num_frames=81,     guidance_scale=5.0,).frames[0]
# Export the generated frames as a videoexport_to_video(output, "output.mp4", fps=16)


这个脚本

  • 首先加载 Wan2.1-T2V-14B-Diffusers 模型,用于创建视频。同时,它还加载了一个 VAE(自编码器),帮助处理和优化视频帧。为了控制视频中运动的平滑度,脚本使用了一个调度器(UniPCMultistepScheduler)。flow_shift 设置调整运动的处理方式,5.0 更适用于更高分辨率(720P),而 3.0 更适合较低分辨率(480P)。

  • 接下来,脚本设置视频生成管道(WanPipeline),并应用调度器以确保帧之间的过渡更加平滑。提示描述了一个未来的城市,拥有飞行汽车和闪烁的霓虹灯,而负面提示(negative prompt )帮助去除不需要的效果,如模糊的细节、褪色的颜色和闪烁的帧。

  • 然后,模型创建了 81 帧,这大约是 5 秒钟的视频,帧率为每秒 16 帧(FPS)。guidance_scale 设置为 5.0,这有助于模型遵循提示,同时允许一定的创意。一旦视频生成完成,帧会被合并并保存为 “output.mp4″(16 FPS)。


负面提示在提高最终视频质量中起着重要作用,它告诉模型需要避免什么。这有助于消除诸如图像质量差、奇怪的失真或任何可能让视频看起来不真实的东西。在这种情况下,它确保了未来场景看起来干净、清晰且视觉上吸引人。


使用本地 Gradio 界面运行 Wan 2.1


如果你更喜欢使用交互式网页界面生成视频,而不是使用代码,可以通过 Gradio 运行 Wan 2.1。


对于 Dashscope 提示扩展:

DASH_API_KEY=your_key python t2v_14B_singleGPU.py --prompt_extend_method 'dashscope' --ckpt_dir ./Wan2.1-T2V-14B

对于本地提示扩展:

python t2v_14B_singleGPU.py --prompt_extend_method 'local_qwen' --ckpt_dir ./Wan2.1-T2V-14B


与从文本生成视频类似,从图像生成视频也分为有提示扩展步骤和没有提示扩展步骤的过程。有关实现的更多细节,你可以访问官方 GitHub:

https://github.com/Wan-Video/Wan2.1?tab=readme-ov-file



Wan 2.1 的工作原理  



Wan 2.1 是使用先进的 AI 技术构建的,旨在生成高质量、真实感的视频。它采用基于扩散(diffusion-based)的方式,并集成了 transformer,以确保视频中的动作在每一帧之间都流畅、一致且细致。


Diffusion Transformer 技术


Wan 2.1 使用一种称为扩散模型(diffusion model)的技术,该技术分为两个步骤:

  1. 从噪声开始:模型从一个完全随机、静态的图像开始。

  2. 逐渐细化:在多次步骤中,模型去除噪声,并按照输入的提示逐帧塑造视频。


这有点像在暗房中冲洗照片——图像一开始模糊且颗粒感强,但随着每一步的处理,图像变得更加清晰。


Wan 2.1 通过使用 Diffusion Transformer(DiT)来改进这种方法,DiT 帮助在生成多个视频帧时保持图像的细节清晰和运动流畅。



该图展示了 Wan 2.1 如何使用增强型扩散模型(配合 DiT)生成视频帧。该过程从输入的描述开始(例如,“一只熊猫举着写有‘Wan2.1’的纸板”)。这段文本会通过 UMT5 语言模型进行处理,帮助系统理解并优化提示。


与此同时,系统引入了一个初始的噪声图像作为起点。然后,Wan-Encoder 处理这些输入,将其编码为模型可以操作的形式。N x DiT 块通过迭代方式不断优化图像。

扩散模型逐步去除帧中的噪声,使用跨注意力机制(cross-attention)将输出与提供的提示对齐。时间步(t)表示去噪的进度步骤,确保视频随着时间的推移平稳发展。


经过多次优化步骤后,Wan-Decoder 从处理过的数据中重建最终的视频帧。输出的是一系列与原始输入描述对齐的帧,保持清晰的细节、平滑的运动和一致性。


高质量视频的 Video Variational Autoencoder(VAE)


Wan 2.1 配备了 Wan-VAE,这是一种强大的压缩工具,帮助模型:

  • 保持帧之间的一致性,避免物体和人物形状随机变化。
  • 在高分辨率下(如 1080P)保留细节。
  • 处理较长的视频而不丢失之前的信息。


它就像是你为视频压缩文件时:它压缩并存储关键细节,然后在生成视频时准确地重建这些细节。



该图表比较了不同的视频压缩模型,基于视频质量(PSNR)和效率(处理帧的速度)。每个气泡代表一个模型,气泡的大小表示模型的大小。x 轴衡量模型处理视频帧的效率。数字越高,表示模型的处理速度越快。y 轴显示视频质量,数字越高,表示视频越清晰、细节越丰富。


Wan-VAE(橙色显示)通过平衡高视频质量与快速处理,表现优于其他模型,同时保持相对较小的规模(127M 参数)。其他模型,如 Step Video 和 Mochi,尽管更大,但处理帧的效率不如 Wan-VAE。这意味着 Wan-VAE 在生成长时间、高质量视频时,能够保持细节清晰和运动平滑,而不会造成速度下降。





Wan 2.1 的应用场景  



Wan 2.1 是一款多功能的 AI 视频生成模型,可以应用于多个行业。以下是一些不同应用场景的示例。


内容创作与社交媒体


Wan 2.1 可以帮助你在没有昂贵设备或长时间编辑的情况下生成独特的视频内容。假设我是一个小红书博主,想要制作一些关于我一天中悠闲时光的内容。我将使用以下提示来为我的视频创建一个片段:

A time-lapse animation of a cozy café from morning to evening, showing people coming and going, coffee being brewed, and the sunset reflecting on the windows.


翻译成中文就是:一间温馨咖啡馆从早到晚的延时动画,展示人们进进出出,咖啡正在酿造,夕阳照在窗户上。


为了使视频尽可能真实,我还启用了灵感模式。以下是我得到的结果:


当视频生成后,乍一看,我印象深刻。但仔细一看,我意识到了一些问题。首先,背景中的一个人消失了。此外,这根本不是一段延时动画,也没有咖啡正在酿造。所以,尽管视频看起来相当真实,但它并没有准确反映提示中的内容。


游戏、虚拟世界和动画


现在,假设你是一名游戏开发者。你可以使用 Wan 2.1 为你的项目生成真实的过场动画、背景动画或概念艺术。例如,如果你已经有了角色概念,并且创意团队提供了一些设计,你可以通过 Wan 2.1 的图像到视频功能将其栩栩如生地呈现出来。


除了角色动画,Wan 2.1 还可以帮助创建动态环境,例如变化的天气效果、繁忙的城市景观或神秘的风景,而无需手动逐帧动画。


此外,使用纵横比控制,你可以确保你的动画完美地融入不同的游戏场景,如宽屏电影效果(16:9)、适合手机的竖屏镜头(9:16)或社交媒体预告片的方形构图(1:1)。


你甚至可以使用音效功能生成背景氛围,例如树叶沙沙作响、未来城市的嗡嗡声或战斗音效。


让我们来尝试一下!我用 DALL-E 生成了这幅中世纪骑士的草图:



使用 Wan,我通过 GPT-4o-mini 输入了以下提示:

A medieval knight stands in a heroic stance, gripping a large sword with both hands. His cape flows in the wind as he surveys the battlefield. The knight slowly turns his head, scanning the horizon with a determined expression. The animation has a cinematic style.


翻译成中文就是:“一名中世纪骑士以英雄姿态站立,双手紧握一把大剑。他的披风在风中飘扬,俯瞰着战场。骑士缓慢转动头部,扫视着地平线,脸上露出决心的表情。动画具有电影风格。”


然后,我点击了增强提示,得到了以下内容:

Cinematic Medieval Knight: A gallant knight stands resolute, clad in full plate armor, gripping a formidable broadsword with both hands. His visored helmet and shoulder pauldrons gleam under the sun, while a noble crest adorns his chestplate. A sash cinches his waist, securing his ensemble. His crimson cloak billows dramatically in the breeze, adding to his imposing presence. With a steely gaze, he pivots his head, surveying the vast, sandy battlefield. The scene unfolds on parchment-like textured paper, evoking an ancient manuscript feel. This is a grand, full-body shot, capturing the knight in a triumphant pose, reminiscent of epic medieval cinema.


翻译成中文就是:“电影风格中世纪骑士:一位英勇的骑士坚定地站立,穿着全套板甲,双手紧握一把威猛的弯刀。他的面盔和肩膀铠甲在阳光下闪闪发光,胸甲上装饰着高贵的徽章。腰间的束带系紧了他的装备,固定了他的装束。他的深红色披风在微风中剧烈飘扬,增添了他威风凛凛的气势。他的目光如钢铁般坚毅,转动头部,俯瞰着广阔的沙漠战场。场景在仿古卷轴的纸张上展开,营造出一种古老手稿的感觉。这是一幅宏伟的全身镜头,捕捉到骑士以胜利姿态的画面,仿佛来自史诗般的中世纪电影。”


我关闭了灵感模式并启用了音效功能。以下是结果:



不错!虽然我得承认,我原本期待的是草图的更具电影感的版本,而不是草图本身的动画。但也许我可以在提示中更加清晰一些。音乐很有趣,我想它和动画很搭配!


广告与营销

如果你是营销人员,可以使用 Wan 2.1 为品牌、产品和服务制作宣传视频,甚至为 logo 动画化。


假设你有一家冰淇淋店,你希望将 logo 动画化,以便放在广告或宣传视频的结尾。为了测试这个想法,我再次使用 DALL-E 生成了这张图像:



然后,我使用了这个提示:

The polar bear eats the ice cream


翻译成中文是:北极熊吃冰淇淋。 


这是图像到视频生成的结果:



前几帧有点奇怪,依我看,但这些可以裁剪掉,最后几秒钟可以用于广告目的,比如放在广告的结尾。


教育与培训

AI 生成的视频可以简化复杂的主题,使教育更加生动有趣。Wan 2.1 可以用来展示历史事件、科学概念或技术过程。


假设你是一个学校教师,正在讲解太阳系的运作方式。Wan 2.1可以生成该过程的AI模拟。让我们试试看!


使用以下提示:

Solar system showing the planets rotating around the sun. The video should show the orbital paths of each planet on their axis. The sun should have visible solar flares.


翻译成中文就是:展示太阳系,行星围绕太阳旋转。视频应展示每个行星在其轨道上的运动路径。太阳应有可见的太阳耀斑。


我得到的结果是:



好的,这个视频不行!这个太阳系视频有很多问题——绝对不能用于教育目的!

  • 首先,太阳不在太阳系的中心。

  • 轨道被描绘成厚重的环状结构,这并不准确地代表真实的行星轨道。

  • 行星没有围绕太阳旋转,轨道本身也不正确。尺寸也不对……


问题有很多,但是至少太阳耀斑部分应该做对了。


总之,Wan 2.1 是一个易于访问的开源 AI 工具,简化了视频创作。凭借其处理多任务的能力,包括文本到视频和图像到视频的生成,它为社交媒体、广告、娱乐、教育等内容创作开辟了新的可能性。

https://www.datacamp.com/tutorial/wan-2-1

https://github.com/Wan-Video/Wan2.1



(文:PyTorch研习社)

欢迎分享

发表评论