Wan2.1 图生视频模型内部协作流程
Wan2.1 图生视频模型内部协作流程
flyfish
Wan2.1作为一个多模态生成模型,其内部涉及多个子模型的协同工作。
1. 模型架构概览
Wan2.1主要由以下核心组件构成:
- 文本编码器:基于T5的文本理解模型,将prompt转换为语义向量
- 图像编码器:基于DiT的图像理解模型,提取输入图像的视觉特征
- 时空UNet:核心生成模型,基于文本和图像条件生成视频序列
- 帧间对齐模块:确保生成的视频帧之间具有时间连贯性
- 上采样模块:将低分辨率视频提升到目标分辨率
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
(λ为权衡系数)
四、级联上采样+残差连接+对抗训练的协同效应
低分辨率视频 ──→ 级联上采样模块(含残差连接) ──→ 高分辨率视频 ──→ 对抗训练优化(逐步提升分辨率并保留细节) (增强视觉真实性)
-
分辨率提升路径:
64×64 → 128×128 → 256×256 → 512×512 → 1024×1024
(4级联) -
细节保留机制:
每级上采样中的残差连接确保前一级的细节不丢失,例如在从256×256到512×512的过程中,残差连接传递256×256的边缘信息,避免放大后模糊。 -
真实性增强:
对抗训练使最终的1024×1024视频在纹理(如发丝、布料)和动态(如水流、烟雾)上更接近真实世界视频。
相关文章:
Wan2.1 图生视频模型内部协作流程
Wan2.1 图生视频模型内部协作流程 flyfish Wan2.1作为一个多模态生成模型,其内部涉及多个子模型的协同工作。 1. 模型架构概览 Wan2.1主要由以下核心组件构成: 文本编码器:基于T5的文本理解模型,将prompt转换为语义向量图像编…...

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、无线收发器、…...
qt QAxWidget
QAxWidget 是 Qt 中用于嵌入 ActiveX 控件或 COM 对象的类,主要用于 Windows 平台。以下是其使用方法的详细步骤和示例: 1. 环境配置 在 .pro 文件中添加 axcontainer 模块: QT axcontainer2. 基本使用 创建控件实例 #include <QAxW…...
机器学习与深度学习04-逻辑回归02
目录 前文回顾6.正则化在逻辑回归中的作用7.特征工程是什么8.逻辑回归的预测结果如何9.什么是ROC曲线和AUC值10.如何处理类不平衡问题11.什么是交叉验证 前文回顾 上一篇文章地址:链接 6.正则化在逻辑回归中的作用 逻辑回归中,正则化是一种用于控制模…...
CQF预备知识:Python相关库 -- NumPy 基础知识 - 通用函数
文中内容仅限技术学习与代码实践参考,市场存在不确定性,技术分析需谨慎验证,不构成任何投资建议。 通用函数 另请参阅 通用函数(ufunc) 通用函数(或简称 ufunc)是一种对 ndarrays 进行逐元素操…...

基于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…...
@Async 注解 走的是主线程 还是子线程呢
Asyncz注解所在的包 package org.springframework.scheduling.annotation; Async 注解在Spring框架中用于标记一个方法为异步方法。当这个方法被调用时,它不会阻塞调用线程,而是会在一个单独的线程中执行。因此,Async 注解走的是子线程&…...
前端面经 React 组件常见的声明方式
react类组件和函数式组件 函数组件返回值的内容就是要渲染的内容 函数组件使用useState更新状态 ,使用类中变量更新 常见hook 官方 : useEffect 处理副作用,请求APIuseState 更新UIuseLayout 同步更新,会阻塞进程,…...

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

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

Qt 的简单示例 -- 地址簿
这个工程里有两个窗口,都是QWidget派生的窗口 主窗口: 1. 运用了布局,按钮控件,单行编辑框,富文本编辑框等窗口部件; 2. 运用了 QMap 类; 3. 实现了点击按钮弹出子窗口的功能,这里子…...
Linux 下 C 语言实现工厂模式
Linux 下 C 语言实现工厂模式:设计理念与实战 🧠 一、工厂模式简介什么是工厂模式?C 语言实现设计模式的挑战 🏗️ 二、实现简单工厂模式(Simple Factory)1. 定义传感器接口(device.h࿰…...

什么是DevOps的核心目标?它如何解决传统开发与运维之间的冲突?
在当今数字化转型加速的时代,DevOps 已成为软件开发领域备受瞩目的明星理念。今天,本文将聚焦于 DevOps 的核心目标,并深入探讨它如何巧妙化解传统开发与运维之间的冲突,为大家揭开 DevOps 的神秘面纱并分享实用经验。本次介绍的与…...
RocketMQ 死信队列(DLQ)实战:原理 + 开发 + 运维 + 架构应用指南
🚀RocketMQ 死信队列(DLQ)实战:原理 开发 运维 架构应用指南 第一章:什么是死信队列(DLQ)? 1.1 死信队列定义 在 RocketMQ 中,死信队列(Dead Letter Que…...

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,于是便想着将模型压缩一下。本文探索了两种压缩方法&…...
PHP 垃圾回收高级特性
PHP 垃圾回收高级特性 1. 循环引用与内存泄漏 单纯的引用计数在遇到循环引用时会导致内存泄漏,主要原因是引用计数无法正确识别那些仅通过循环引用相互关联但实际上已经不可达的对象。 1.1 引用计数的基本原理 引用计数是一种内存管理机制,通过维护每…...
OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景
OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景 引言 在微服务架构中,服务之间的通信方式直接影响系统的性能、可靠性和可维护性。常见的通信方式有 OpenFeign(同步HTTP调用) 和 MQ(消息队…...
如何用命令行将 PDF 表格转换为 HTML 表格
本文将介绍如何使用命令行将可填写的 PDF 表单转换为 HTML 表单。只需几行代码即可完成转换。将可填写的 PDF 表单转换为 HTML 表单后,你可以在网页上显示这些表单。本指南使用 FormVu 来演示转换过程。 使用命令行将可填写 PDF 表单转换为 HTML 表单 你可以通过命…...
html5的响应式布局的方法示例详解
以下是HTML5实现响应式布局的5种核心方法及代码示例: 1. 媒体查询(核心方案) /* 默认样式(移动优先) */ .container {padding: 15px; }/* 中等屏幕(平板) */ @media (min-width: 768px) {.container {padding: 30px;max-width: 720px;} }/* 大屏幕(桌面) */ @media …...

如何用Python抓取Google Scholar
文章目录 [TOC](文章目录) 前言一、为什么要抓取Google Scholar?二、Google Scholar 抓取需要什么三、为什么代理对于稳定的抓取是必要的四、一步一步谷歌学者抓取教程4.1. 分页和循环4.2. 运行脚本 五、完整的Google Scholar抓取代码六、抓取Google Scholar的高级提…...
电脑革命家测试版:硬件检测,6MB 轻量无广告 清理垃圾 + 禁用系统更新
各位电脑小白和大神们,我跟你们说啊!有个超牛的东西叫电脑革命家测试版,这是吾爱破解论坛的开发者搞出来的免费无广告系统工具集合,主打硬件检测和系统优化,就像是鲁大师这些软件的平替。下面我给你们唠唠它的核心功能…...

Wireshark对usb设备进行抓包找不到USBPcap接口的解决方案
引言 近日工作需要针对usb设备进行抓包,但按照wireshark安装程序流程一步步走,即使勾选了安装USBPcap安装完成后开启wireshark依然不显示USBPcap接口,随设法进行解决。 最终能够正常显示USBPcap接口并能够正常使用进行抓包 解决方案&#x…...
题目 3298: 蓝桥杯2024年第十五届决赛真题-兔子集结
题目 3298: 蓝桥杯2024年第十五届决赛真题-兔子集结 时间限制: 2s 内存限制: 192MB 提交: 2499 解决: 309 题目描述 在森林幽静的一隅,有一村落居住着 n 只兔子。 某个月光皎洁的夜晚,这些兔子列成一队,准备开始一场集结跳跃活动。村落中…...
Unity开发之Webgl自动更新程序包
之前让客户端更新webgl程序是在程序里写版本号然后和服务器对比,不同就调用 window.location.reload(true);之前做的客户端都是给企业用,用户数少看不出来啥问题。后来自己开发一个小网站,用户数量还是挺多,然后就会遇到各种各样的…...
深入理解设计模式之状态模式
深入理解设计模式之:状态模式(State Pattern) 一、什么是状态模式? 状态模式(State Pattern)是一种行为型设计模式。它允许一个对象在其内部状态发生改变时,改变其行为(即表现出不…...

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…...