【思路合集】talking head generation+stable diffusion

news2024/9/29 13:16:08

1 以DiffusionVideoEditing为baseline:

改进方向

针对于自回归训练方式可能导致的漂移问题:

  1. 训练时,在前一帧上引入小量的面部扭曲,模拟在生成过程中自然发生的扭曲。促使模型查看身份帧以进行修正。
  2. 在像VoxCeleb或LRS这样的具有不受限制条件的训练集中,训练更多样化的说话人数据。

针对训练速度慢,算力消耗大的问题:

作者尝试在潜空间中进行训练以加快训练速度,但是样本质量下降,因此在像素空间中操作,且只能训练128x128大小的数据。改进模型的训练速度对我们来说是首要任务,这将使我们能够在更大、更多样化的“野外”数据集上进行训练,如VoxCeleb [45]或LRS [12]。

希望尝试用LDM的方法训练,看如何在latent space训练且不降低样本质量。

语音条件:计划探索使用更广泛的语音特征作为模型条件的潜力,例如使用预训练的音频编码器,如Wav2Vec2 [3]、Whisper [52]或DeepSpeech2 [1]。相信结合这些特征可能会提高我们模型的唇部同步性能,并生成更逼真、表现力更强的唇部运动。

针对生成的说话头的抖动问题:

  1. 时间一致性:确保生成的说话头在时间上是连续和平滑的。在模型中引入时间依赖性,使用前一帧或前几帧的信息作为输入,增加生成的连贯性。
  2. 噪声注入:在输入数据中添加噪声或随机性,帮助减少生成结果中的抖动。通过在训练过程中或生成过程中引入适量的噪声,可以使模型更具鲁棒性。
  3. 重复惩罚:在生成过程中,通过记录已生成的特征或帧,并在后续生成中降低其权重,可以减少重复出现的特征或帧。这有助于生成更加平稳和多样化的说话头。
  4. 额外的约束或先验知识:对说话头进行进一步控制。例如,可以限制嘴唇形状的变化范围、语音速度的变化范围等,以减少不自然的抖动。
  5. 数据增强和多样性:用更多的训练数据、数据增强技术和多样性增强方法,使模型更好地学习说话头的多样性,并减少抖动。

用到的方法

1.Palette: Image-to-image diffusion models:通过将前一帧和身份帧连接到遮挡帧上,来训练模型生成所需的帧。

2.可以在我们的解决方案之上应用诸如[Learning trajectory-aware transformer for video superresolution]的视频超分辨率技术,以获得高分辨率的样本。

3.在U-Net内的条件残差块中发送音频特征,来驱动面部动画,对unet的改动详见[Diffused heads: Diffusion models beat gans on talking-face generation. ]

2 以DreamTalk为baseline:

改进方向

1. 风格与内容分离:研究如何将说话头的风格和内容进行有效地分离和控制。通过引入额外的约束或正则化项来实现,在保持风格一致的同时,灵活地修改或替换内容。

一种方法是条件生成模型,将风格信息作为附加输入,使模型能够根据给定的风格,生成相应说话头。通过调整风格输入,可以改变生成结果的风格,例如从正式到随意的转变。

另一种方法是风格迁移,通过将源样本(具有某种风格)与目标样本(希望采用的另一种风格)进行对齐和学习,从而将源样本的内容转移到目标样本的风格中,从而在不改变内容的情况下修改风格。

用到的方法

1.人脸运动由渲染器 [Pirenderer: Controllable portrait image generation via semantic neural rendering] 渲染成视频帧,并对其微调,使渲染器具有情感表达生成能力。还负责将将输出的人脸运动渲染为视频。

2. 人脸运动被参数化为来自3D可变形模型[A morphable model for the synthesis of 3d faces.]的表情参数序列。

3.仅使用标准扩散模型中的去噪损失,会导致不准确的唇部运动。补救方法:由预训练的唇部专家[A lip sync expert is all you need for speech to lip generation in the wild]提供唇动指导。(然而,唇部专家只关注一般的说话风格,这导致生成统一风格的面部运动。)

4.为了从人脸运动m中获取唇动信息,首先将m转换为相应的人脸网格,并选择嘴巴区域的顶点作为唇部运动表示[Styletalk: One-shot talking head generation with controllable speaking styles]。嘴唇运动和音频编码器分别主要由MLPs和1d卷积实现。

5.开发了一个去噪网络:创建富有表现力的、音频驱动的面部动作。风格感知嘴唇专家:优化口型同步,同时不影响风格表达。风格预测器:直接从音频中推断说话风格,从而消除了对视频参考的需要。

基线方法:MakeitTalk[105]、Wav2Lip[49]、PCAVS[104]、AVCT[84]、GC-AVT[37]、EAMM[30]、StyleTalk[46]、DiffTalk[58]、SadTalker[100]、PDFGC[78]和EAT[20]。

3 其他论文及方法

有效利用隐空间:DAE (Diffusion Autoencoder) ,DAE-Talker的前置文章。将DDIM的控制信息编码到类似StyleGAN的隐空间,借此实现与StyleGAN类似的可控图像生成。它将latent code分为两部分,分别是有语义意义的线性隐码和捕捉随机细节的“Noise”。 

DAE-talker:

  • 解决视频抖动的方法:使用相同噪声做起始点,保证latent code的平滑性。
  • 增强音频的表征能力:选择预训练Wav2vec 2.0提取音频特征。
  • 平滑latent code:使用堆叠的Comformer[7]来构建局部和全局的上下文关联,以生成变化更加平滑的latent code。
  • 学习音频和姿态之间的对应关系:在Conformer的Encoder和Decoder之间,加入了姿态控制器(Pose Adaptor),用来学习音频和姿态之间的对应关系。(语音驱动动画的问题是一个一对多的问题。在头部姿态的情况下尤其如此,同一段音频很容易对应许多不同的姿态。为了缓解这个问题,作者提出在speech2latent网络中添加一个特定的组件来建模姿态。姿态预测器从语音中预测姿态,而姿态投影器将姿态添加回网络的中间特征中。通过在此阶段添加姿态损失,可以更好地建模姿态。由于姿态被投影到特征中,可以使用预测的姿态或真实的姿态。)
  • 是否可以将latent code进一步拆分为id, pose, expression的latent representation?
  • 局限性:模型仅在单个演讲者的12分钟数据上进行训练,没有环境变化。实验仅限于一个数据集。除了奥巴马之外,没有其他人的实验结果。且不易训练。

LAUGHING MATTERS:

  • Video diffusion models:采用了可分解的时空U-Net架构,扩展了图像扩散模型中使用的标准2D U-Net。由四个通过残差连接连接的下采样和上采样块组成。
  • Make-a-video:用伪3d卷积层和注意力层来平衡计算效率和网络中的信息共享。对于每一层,不使用完整的3D卷积,而是对空间维度应用2D卷积,然后通过合并其他维度对时间维度应用1D卷积。对注意力层应用类似的策略。

提高分辨率:加入metaportrait之类的超分算法,或最后接gfpgan进行图像修复,高清细节恢复。 

插帧:RIFE,可以改善说话头生成效果:Real-Time Intermediate Flow Estimation for Video Frame Interpolation

利用面部先验:Talking Head Generation with Probabilistic Audio-to-Visual Diffusion Priors

TH-PAD (zxyin.github.io)

端到端无监督运动迁移框架:Thin-Plate Spline Motion Model for Image Animation,TPSMM,code:GitHub - yoyo-nb/Thin-Plate-Spline-Motion-Model: [CVPR 2022] Thin-Plate Spline Motion Model for Image Animation.

高清:从GFPGAN 改为 ONNX / TensorRT.

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

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

相关文章

EasyX的安装与使用(VisualStudio C++免费绘图库)

EasyX Graphics Library 是针对 Visual C 的免费绘图库 安装教程 安装到Visual C 2010 EasyX 安装完毕。 在VC2010中建立控制台工程 工程建好后,鼠标右键点击工程名,并选择属性 安装到Visual C 2010 EasyX 安装完毕。 安装示例程序 easyxdemo.cpp 在VC…

Vulnhub-dc4

靶场下载 https://download.vulnhub.com/dc/DC-4.zip 信息收集 判断目标靶机的存活地址: # nmap -sT --min-rate 10000 -p- 192.168.1.91 -oN port.nmap Starting Nmap 7.94 ( https://nmap.org ) at 2024-01-21 16:36 CST Stats: 0:00:03 elapsed; 0 hosts completed (1 up…

机器学习 | 掌握Matplotlib的可视化图表操作

Matplotlib是python的一个数据可视化库,用于创建静态、动态和交互式图表。它可以制作多种类型的图表,如折线图、散点图、柱状图、饼图、直方图、3D 图形等。以渐进、交互式方式实现数据可视化。当然博主也不能面面俱到的讲解到所有内容,详情请…

装完32G内存条 电脑飞跃提升!

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 大家…

如何使用阿里云CDN服务?

如何使用阿里云CDN服务 一、开通阿里云CDN服务 注册自己阿里云账号,找到CDN服务,进行加速即可 二、配置域名信息 1、各配置参数的含义 添加加速域名: 如果需要使用CDN加速指定网站上的业务,则需要将该网站作为源站&#xff0…

ubuntu 20.04 使用 webrtc-streamer自动退出,报错GLIBC 问题解决方法

文章目录 前言Ubuntu 20.4中使用webrtc-streamer报错总结 前言 前端vue2 项目需要播放海康的视频流,本地启动起来了,现在需要的服务器上部署,服务器是Ubuntu 20.04,下面是部署时遇到的问题及解决方法,总耗时2天。 不知…

<蓝桥杯软件赛>零基础备赛20周--第16周--GCD和LCM

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上交流答疑&am…

dolphinscheduler节点二次开发需要改动的部分

dolphinscheduler节点二次开发需要改动的部分 前端 在dolphinscheduler-ui/public/images/task-icons/目录下新增两个节点的logo图片,一个为激活状态的一个为非激活状态的,如下。 修改文件dolphinscheduler-ui/src/views/projects/task/constants/task…

git bash右键菜单失效解决方法

git bash右键菜单失效解决方法 这几天重新更新了git,直接安装新版本后,右键菜单失效找不到了。找了好几个博客,发现都不全面,最后总结一下解决方法: (1)按winr,输入regedit打开注册…

【学网攻】 第(3)节 -- 交换机配置聚合端口

文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用 前言 网络已经成为了我们生活中不可或缺的一部分,它连接了世界各地的人们,让信息和资源得以自由流动。随着互联网的发展,我们可以通过网络学习、工作、娱乐…

idea创建公用依赖包项目

创建parent项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/…

C++读取txt文件中的逐个字符

为了增加读取的灵活性&#xff0c;所以separator和filename都设置为在主函数中获取输入或者在函数中传参的视线方法 举个例子&#xff0c;txt文件如下&#xff1a; household;2;true; 首先声明一个读取数据的文件 void read_data_file(const string& filename,char se…

使用Fiddler进行弱网测试

测试APP、web经常需要用到弱网测试&#xff0c;也就是在信号差、网络慢的情况下进行测试。我们自己平常在使用手机APP时&#xff0c;在地铁、电梯、车库等场景经常会遇到会话中断、超时等情况&#xff0c;这种就属于弱网。 普通的弱网测试可以选择第三方工具对带宽、丢包、延时…

代码随想录算法训练营第29天(回溯算法05 | * 491.递增子序列 * 46.全排列 * 47.全排列 II

回溯算法part05 491.递增子序列解题思路与 90.子集II 不同的点回溯三部曲 46.全排列解题思路遇到的难点思考 47.全排列 II解题思路注意点拓展需要加深理解的点&#xff08;需复习 小总结 491.递增子序列 本题和大家刚做过的90.子集II非常像&#xff0c;但又很不一样&#xff0c…

简单实现网络编程

1. 前置知识 在学习网络编程前&#xff0c;我们需要先了解一些前置知识 1.1 客户端和服务器 在网络编程中&#xff0c;客户端和服务器是两个关键的角色。 客户端是发起连接并向服务器发送请求的一方。客户端通常是一个应用程序或设备&#xff0c;通过与服务器建立连接&…

线性表--链表--带头双向循环链表

目录 1.什么是带头双向循环链表&#xff1f; 2.实现增删查改功能&#xff1a; 2.1使用链表前必须对头节点初始化 2.2尾插 2.3尾删 2.4头插 2.5头删 2.8查找 2.7指定位置插入 2.8指定位置删除 2.9改变数据 ​编辑 2.10打印 2.11销毁 3.代码 1.什么是带头双向循环链表&…

docker 基础手册

文章目录 docker 基础手册docker 容器技术镜像与容器容器与虚拟机docker 引擎docker 架构docker 底层技术docker 二进制安装docker 镜像加速docker 相关链接docker 生态 docker 基础手册 docker 容器技术 开源的容器项目&#xff0c;使用 Go 语言开发原意“码头工人”&#x…

【C++练级之路】【Lv.7】【STL】vector类的模拟实现

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《C语言》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、成员变量二、默认成员函数2.1 constructor2.2 destructor2.3 copy constructor2.4 operator 三、迭代器…

Vue3+TS+dhtmlx-gantt实现甘特图

实现样式 因为只做展示&#xff0c;所以实现很简单 实现功能 自定义列头增加斑马线&#xff0c;实际结束时间&#xff08;自定义实现&#xff09;自定义进度展示&#xff0c;根据层级让进度背景颜色变浅marker标记今天自定义提示框内容 实现 import { gantt } from "d…

某顺cookie逆向

目标网站:aHR0cHM6Ly9xLjEwanFrYS5jb20uY24v 这个网站是对cookie进行反爬虫的&#xff0c;可以看到cookie中有一个加密参数v 二、分析参数 可以使用hook方法&#xff0c;来hook住cookie中v生成的位置&#xff0c;可以直接在控制台中输入hook函数 (function () {use strict;v…