Wan2.1 图生视频模型内部协作流程

news2025/6/2 9:56:28

Wan2.1 图生视频模型内部协作流程

flyfish

Wan2.1作为一个多模态生成模型,其内部涉及多个子模型的协同工作。

1. 模型架构概览

Wan2.1主要由以下核心组件构成:

  1. 文本编码器:基于T5的文本理解模型,将prompt转换为语义向量
  2. 图像编码器:基于DiT的图像理解模型,提取输入图像的视觉特征
  3. 时空UNet:核心生成模型,基于文本和图像条件生成视频序列
  4. 帧间对齐模块:确保生成的视频帧之间具有时间连贯性
  5. 上采样模块:将低分辨率视频提升到目标分辨率

2. 数据流向与协作流程

输入文本(prompt)     输入图像(img)
      │                  │
      ▼                  ▼
┌─────────────┐    ┌─────────────┐
│ T5文本编码器 │    │ DiT图像编码器│
│ 生成文本嵌入  │    │ 生成图像特征 │
└──────┬──────┘    └──────┬──────┘
       │                  │
       ▼                  ▼
┌─────────────────────────────┐
│        交叉注意力融合        │
└─────────────────────────────┘
                │
                ▼
┌─────────────────────────────┐
│       时空UNet生成器        │
│  ┌───────────────────────┐  │
│  │ 1. 噪声调度器         │  │
│  │ 2. 多帧联合去噪       │  │
│  │ 3. 帧间对齐           │  │
│  └───────────────────────┘  │
└─────────────────────────────┘
                │
                ▼
┌─────────────────────────────┐
│       超分辨率模块          │
│  ┌───────────────────────┐  │
│  │ 1. 低分辨率视频       │  │
│  │ 2. 渐进式上采样       │  │
│  │ 3. 细节增强           │  │
│  └───────────────────────┘  │
└─────────────────────────────┘
                │
                ▼
┌─────────────────────────────┐
│        输出视频张量         │
└─────────────────────────────┘

3. 伪代码

3.1 文本编码阶段
# T5文本编码器处理流程
text_embeddings = t5_model.encode(prompt, max_length=77)  # 编码为77×768的文本嵌入
text_embeddings = text_projection(text_embeddings)  # 投影到模型内部维度
  • 功能:将自然语言描述转换为模型可理解的语义向量
  • 优化:使用CLIP文本编码器的变种,增强多模态对齐能力
3.2 图像编码阶段
# DiT图像编码器处理流程
image_features = dit_model.encode(img)  # 提取图像特征
image_features = image_projection(image_features)  # 投影到模型内部维度
image_features = spatial_pooling(image_features)  # 空间池化,获取全局特征
  • 功能:提取输入图像的视觉特征,作为视频生成的基础
  • 优化:使用预训练的DiT-XL/2模型,增强图像理解能力
3.3 多模态融合阶段
# 文本和图像特征融合
conditioning = cross_attention(text_embeddings, image_features)  # 交叉注意力机制
conditioning = time_embedding(conditioning, timestep)  # 结合时间步嵌入
  • 技术:使用Transformer架构的交叉注意力机制
  • 作用:将文本语义和图像特征融合为统一的条件表示
3.4 视频生成阶段
# 时空UNet生成过程
noise = torch.randn(batch_size, channels, frames, height, width).to(device)  # 初始噪声

# 扩散过程(反向去噪)
for t in reversed(range(num_timesteps)):
    timestep_emb = get_timestep_embedding(t)  # 当前时间步嵌入
    
    # 预测噪声
    noise_pred = unet(
        x=noise,
        timestep=timestep_emb,
        encoder_hidden_states=conditioning
    )
    
    # 应用噪声预测更新样本
    noise = p_sample(noise, noise_pred, t)  # 基于预测噪声更新样本
    
video = noise  # 最终去噪结果即为生成的视频
  • 核心技术
    • 时空UNet架构:同时处理空间和时间维度
    • 扩散模型:通过逐步去噪生成高质量视频
    • 帧间注意力机制:确保视频帧之间的连贯性
3.5 超分辨率阶段
# 视频超分辨率过程
low_res_video = video  # 从UNet输出的低分辨率视频

# 渐进式上采样
for i in range(num_upscale_steps):
    low_res_video = upsampler_module[i](low_res_video)  # 逐级上采样
    
high_res_video = detail_enhancer(low_res_video)  # 细节增强

技术

  • 级联上采样模块:逐步提升视频分辨率
  • 残差连接:保留细节信息
  • 对抗训练:增强视觉真实性

级联上采样模块中的残差连接与对抗训练

一、级联上采样模块的核心作用

级联上采样模块是视频超分辨率(Video Super-Resolution)的关键组件,其设计目标是将低分辨率视频(如256×256)逐步提升至高分辨率(如1024×1024),同时保持时间维度的连贯性。
核心逻辑:通过多个上采样层的级联(如4级联),每次将分辨率翻倍(×2),最终达到目标尺寸。

二、残差连接(Residual Connection)
1. 技术原理

残差连接是深度学习中的一种架构设计,允许输入直接跳过若干层到达输出,数学表达为:
输出 = 输入 + 非线性变换(输入)
这种设计解决了深层网络的“梯度消失”问题,并能保留原始输入的细节信息。

2. 在视频超分辨率中的作用
  • 细节保留机制
    低分辨率视频中包含的高频细节(如边缘、纹理)在传统上采样中容易丢失,残差连接通过直接传递原始特征,让网络专注于学习“残差信息”(即低分辨率到高分辨率的差异),从而保留原始细节。

  • 网络优化
    级联上采样模块通常包含多层卷积,残差连接使梯度能更有效地反向传播,支持更深的网络结构,提升超分辨率质量。

3. 典型结构示例
低分辨率特征 ──┐
              ▼
      卷积层1 ──┐
              ▼    ┌──────────┐
      卷积层2 ───→─┤ 加法操作 │─→ 高分辨率特征
              ▲    └──────────┘
              ┘
低分辨率特征 ──┘
三、对抗训练(Adversarial Training)
1. 技术原理

对抗训练源于生成对抗网络(GAN),通过生成器(Generator)和判别器(Discriminator)的博弈提升生成质量:

  • 生成器:尝试生成逼真的高分辨率视频
  • 判别器:区分生成视频与真实视频
    两者相互对抗,最终生成器的输出趋近真实。
2. 在视频超分辨率中的作用
  • 视觉真实性增强
    传统上采样方法(如双三次插值)生成的视频可能模糊或出现伪影,对抗训练通过判别器的监督,迫使生成器学习真实视频的纹理、色彩分布和动态特性,提升视觉真实性。

  • 感知质量优化
    判别器通常基于预训练的视觉模型(如VGG)设计,关注人类感知层面的质量(如语义一致性、结构合理性),而非单纯的像素级匹配。

3. 损失函数设计
  • 对抗损失
    L_GAN = -E[log(D(G(z)))](生成器试图让判别器误判)
  • 内容损失
    L_content = ||VGG(G(z)) - VGG(x_real)||_2(特征空间匹配真实视频)
  • 总损失
    L_total = L_content + λ*L_GAN(λ为权衡系数)
四、级联上采样+残差连接+对抗训练的协同效应
低分辨率视频 ──→ 级联上采样模块(含残差连接) ──→ 高分辨率视频 ──→ 对抗训练优化
               (逐步提升分辨率并保留细节)        (增强视觉真实性)
  1. 分辨率提升路径
    64×64 → 128×128 → 256×256 → 512×512 → 1024×1024(4级联)

  2. 细节保留机制
    每级上采样中的残差连接确保前一级的细节不丢失,例如在从256×256到512×512的过程中,残差连接传递256×256的边缘信息,避免放大后模糊。

  3. 真实性增强
    对抗训练使最终的1024×1024视频在纹理(如发丝、布料)和动态(如水流、烟雾)上更接近真实世界视频。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2393519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SI24R05国产低功耗2.4GHz+125K低频唤醒SoC人员定位/畜牧业牛羊定位/资产管理定位方案芯片

目录 SI24R05简介功能框图 主要特性开发工具方案特性 SI24R05简介 Si24R05 是一款高度集成的低功耗 SOC 芯片,具有低功耗、Low Pin Count、 宽电压工作范围,集成了 13/14/15/16 位精度的 ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、无线收发器、…

基于ELK的分布式日志实时分析与可视化系统设计

目录 一、ELK平台介绍 1.ELK概述 2.Elasticsearch 3.Logstash 4.Kibana 二、部署ES群集 1.资源清单 2.基本配置 3.安装Elasticsearch(elk1上、elk2上、elk3上) 4.安装logstash(elk1上) 5.Filebeat 6.安装Kibana&#x…

酒店管理系统设计与实现

本科毕业设计(论文) 设计(论文)题目 酒店管理系统设计与实现 学生姓名 学生学号 所在学院 专业班级 校内指导教师 李建 企业指导教师 毕业设计(论文)真实性承诺及声明 学生对毕业设计(论文)真实性承诺 本人郑重声明:所提交的毕业设计(论文)作品是本人在指导教师的指…

OpenCV---pointPolygonTest

一、基本概念与用途 pointPolygonTest 是 OpenCV 中用于判断点与多边形关系的重要函数,常用于: 目标检测:判断像素点是否属于检测到的轮廓区域碰撞检测:检测物体是否重叠图像分割:确定点是否在分割区域内几何分析&am…

Qt 的简单示例 -- 地址簿

这个工程里有两个窗口,都是QWidget派生的窗口 主窗口: 1. 运用了布局,按钮控件,单行编辑框,富文本编辑框等窗口部件; 2. 运用了 QMap 类; 3. 实现了点击按钮弹出子窗口的功能,这里子…

什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?​

在当今数字化转型加速的时代,DevOps 已成为软件开发领域备受瞩目的明星理念。今天,本文将聚焦于 DevOps 的核心目标,并深入探讨它如何巧妙化解传统开发与运维之间的冲突,为大家揭开 DevOps 的神秘面纱并分享实用经验。本次介绍的与…

Android studio 查看aar源码出现/* compiled code */

如图查看aar源码时看不到具体实现,在排除是sdk版本导致的问题后,下面说解决方法 打开设置,找到插件 输入decompiler 搜索 这个是自带的反编译工具,启用就好了

用HTML5+JavaScript实现汉字转拼音工具

用HTML5JavaScript实现汉字转拼音工具 前一篇博文(https://blog.csdn.net/cnds123/article/details/148067680)提到,当需要将拼音添加到汉字上面时,用python实现比HTML5JavaScript实现繁琐。在这篇博文中用HTML5JavaScript实现汉…

基于Java,SpringBoot,Vue,UniAPP医院预约挂号买药就诊病例微信小程序系统设计

摘要 随着医疗信息化的不断推进以及“互联网医疗”模式的广泛普及,传统医院挂号流程中存在的排队时间长、资源分配不均等问题日益凸显,急需通过数字化手段加以解决。本研究设计并实现了一套基于Java、SpringBoot、Vue与UniAPP技术栈的医院预约挂号微信小…

ONNX模型的动态和静态量化

引言  通常我们将模型转换为onnx格式之后,模型的体积可能比较大,这样在某些场景下就无法适用。最近想在移动端部署语音识别、合成模型,但是目前的效果较好的模型动辄几个G,于是便想着将模型压缩一下。本文探索了两种压缩方法&…

如何用Python抓取Google Scholar

文章目录 [TOC](文章目录) 前言一、为什么要抓取Google Scholar?二、Google Scholar 抓取需要什么三、为什么代理对于稳定的抓取是必要的四、一步一步谷歌学者抓取教程4.1. 分页和循环4.2. 运行脚本 五、完整的Google Scholar抓取代码六、抓取Google Scholar的高级提…

Wireshark对usb设备进行抓包找不到USBPcap接口的解决方案

引言 近日工作需要针对usb设备进行抓包,但按照wireshark安装程序流程一步步走,即使勾选了安装USBPcap安装完成后开启wireshark依然不显示USBPcap接口,随设法进行解决。 最终能够正常显示USBPcap接口并能够正常使用进行抓包 解决方案&#x…

Socket 编程 UDP

目录 1. UDP网络编程 1.1 echo server 1.1.1 接口 1.1.1.1 创建套接字 1.1.1.2 绑定 1.1.1.3 bzero 1.1.1.4 htons(主机序列转网络序列) 1.1.1.5 inet_addr(主机序列IP转网络序列IP) 1.1.1.6 recvfrom(让服务…

Jenkins实践(8):服务器A通过SSH调用服务器B执行Python自动化脚本

Jenkins实践(8):服务器A通过SSH调用服务器B执行Python自动化脚本 1、需求: 1、Jenkins服务器在74上,Python脚本在196服务器上 2、需要在服务器74的Jenkins上调用196上的脚本执行Python自动化测试 2、操作步骤 第一步:Linux Centos7配置SSH免密登录 Linux Centos7配置S…

lua的注意事项2

总之,下面的返回值不是10,a,b 而且

前端八股之HTML

前端秘籍-HTML篇 1. src和href的区别 src 用于替换当前元素,href 用于在当前文档和引用资源之间确立联系。 (1)src src 是 source 的缩写,指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置&#xff1…

鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程

Rainbond V6 国产化部署教程,针对鲲鹏 CPU 麒麟 V10 的离线环境,手把手教你从环境准备到应用上线,所有依赖包提前打包好,步骤写成傻瓜式操作指南。别说技术团队了,照着文档一步步来,让你领导来都能独立完成…

【C++ Qt】认识Qt、Qt 项目搭建流程(图文并茂、通俗易懂)

每日激励:“不设限和自我肯定的心态:I can do all things。 — Stephen Curry” 绪论​: 本章将开启Qt的学习,Qt是一个较为古老但仍然在GUI图形化界面设计中有着举足轻重的地位,因为它适合嵌入式和多种平台而被广泛使用…

IoT/HCIP实验-1/物联网开发平台实验Part2(HCIP-IoT实验手册版)

文章目录 概述产品和设备实例的产品和设备产品和设备的关联单个产品有多个设备为产品创建多个设备产品模型和物模型设备影子(远程代理) 新建产品模型定义编解码插件开发编解码插件工作原理消息类型与二进制码流添加消息(数据上报消息&#xf…

Replacing iptables with eBPF in Kubernetes with Cilium

source: https://archive.fosdem.org/2020/schedule/event/replacing_iptables_with_ebpf/attachments/slides/3622/export/events/attachments/replacing_iptables_with_ebpf/slides/3622/Cilium_FOSDEM_2020.pdf 使用Cilium,结合eBPF、Envoy、Istio和Hubble等技术…