多模态MLLM都是怎么实现的(11)--从SadTalker到快手LivePortait

 我之前出差带休假差不多两个礼拜吧,今天回北京更新一篇

      我确实找到了一个有意思的东西,LivePortrait

      这东西开源了,你可以认为是目前做得最好的"Sadtalker",国内也有dream-talker,EMO之类的。

      我之前看EMO的效果最好,先不说EMO(它虽然标称A2V,实际上就是ASR+T2V+openpose)这种不开源,光拿git上挂个demo测不出来好坏,实际产品力有待观察,主要是LivePortrait的表情位移和精确度要吊打其他任何一个目前我看到的产品,包括EMO。

      有兄弟也会说了,这Sadtalker有什么可说的,SDwebui的插件就玩过,那你错了,咱们频道从来不讲具体应用软件,也不愿意码代码,咱们还是讲的咱们老铁愿意听的东西。

     讲什么呢?   

     就讲它发的这个论文 2407.03168 (arxiv.org)

  LivePortrait: Efficient Portrait Animation with Stitching and Retargeting Control

    效果还是不错的。

    那具体技术有什么创新点呢?

    其实有,但是都是微创新

    首先模型分为两个阶段训练

    第一阶段,在考虑了Diffusion路径还是其他路径之后,快手的LivePortrait团队, 没有选择市面上比较流行的Diffusion架构来做自己的模型,而是采用了GAN网络,直接从比较成熟的一个开源的paper Face-vid2vid开始做起。

     face-vid2vid (nvlabs.github.io)

   face-vid2vid也是很早的一个东西了,Nvidia team发的论文,Sadtalker的核心思想就是它。

    为了承上启下,给没看过这块的老铁们简单讲讲这个face-vid2vid都干了啥?

    简单说它就是能从一个图片s和一个给定的视频d(大多数是头部视频为主),用图片里的那个人来重生成一个能张嘴说话的视频d'

     

图片

    上面的图展示了face-vid2vid模型的工作流程和功能。

  • 左侧:有两个输入,分别是源图像s(Source image)和驱动视频d(Driving video)。

  • 中间:有四个模块,分别是外观(Appearance)、表情(Expression)、头部姿态(Head pose)和用户指定的头部姿态(User-specified head pose)。

  • 右侧:有两个输出,分别是重建视频(Reconstructed video)和用户旋转后的重建视频(User-rotated reconstruction)。

工作流程上:

  1. 源图像s(Source image):这是模型的起始输入,提供了目标视频中主体的基本外观特征。

  2. 驱动视频d(Driving video):这是另一个输入,提供了模型需要模仿的表情、头部姿态等动态信息。

  3. 模块解释:

    • 外观(Appearance):从源图像中提取的主体外观特征,用于确保合成视频中的主体外观与源图像一致。

    • 表情(Expression):从驱动视频中提取的表情信息,用于在合成视频中模仿驱动视频的表情变化。

    • 头部姿态(Head pose):从驱动视频中提取的头部姿态信息,用于在合成视频中模仿驱动视频中的头部运动。

    • 用户指定的头部姿态(User-specified head pose):用户可以手动指定头部姿态,用于控制合成视频中的头部方向。

  4. 重建视频(Reconstructed video):将外观、表情和头部姿态结合起来,生成与驱动视频中的动态信息匹配的新视频。

  5. 用户旋转后的重建视频(User-rotated reconstruction):结合用户指定的头部姿态,生成特定方向上的视频。

      

     训练的方法呢?

  1. 将一段视频给拆帧,每一帧的3D关键点都用序列表示,同时3D关键点表示被分解为 人物身份表示 和 运动信息表示。使用无监督学习方法学习这些3D关键点。

  2. 可以对 人物身份的3D关键点表示 进行3D矩阵变换,来模拟人物头部位姿的改变,比如,在生成视频时可以旋转人物的头部,侧脸旋转成正脸等。

3个任务 video reconstruction, motion transfer, face redirection。

使用 s 表示目标人物的源图像,d{d1,d2....dN}表示一段视频帧序列,d1就表示第一帧,其他的依次就是2到N,这个也很容易看明白,第一帧里面的人和图片是一样的就是s=d1,这就是个视频重建任务,如果s≠d1,那任务就是重建+动作迁移了。

图片

     

4.如上图在网络功能设计上:

  • F网络来提特征,不是静态特征,是长宽高深都包含的3D特征(fs),提取之后就允许在三维空间里面来操作了,比如转脑袋之类的。

  • L网络来提取K个3D keypoints,提取的人物中立表情下和头部姿势居中时候的特征,论文里设置为20

                                    

图片

  • H网络使用两个矩阵,来表示脑袋的相对位置(Rs,ts),R是旋转矩阵,表示脑袋旋转的位移,ts是位移矩阵

图片

图片

  •     除了以上的网络以外,又提出一个网络△,用来评估表情

图片

  •    以上的信息就可以表达为

图片

   即提取了原始图片的3D Keypoints

  •    然后再提取视频那边的,因为最终还是要拿图片去deformate视频

图片

   视频就是多帧,所以没啥区别,为了区分开,用d表示视频,s表示原始图。这俩公式都一样

  • 在合成的过程中,还允许手动改变 3D 头部位置。分别设置特定的Ru(旋转),Tu(平移),生成新的Rd和td

                                  

    图片

    图片

图片

  • 上图就是每一种网络提取出来的特征3D图的一个大概例子  

图片

   5. 视频生成的流程

    我们前面讲过了怎么取Xs,k和Xd,k,如上图所示,要正式开始生成了。

  •  拿这K个3D keypoints(s的和d的)都给送进网络, 每一个keypoint都引入一个一阶近似计算函数,原论文叫flow。flow的作用就是算出关于被选中的keypoint的特征fs,经过warping后的值wx(fs)。warping可以理解为对原始特征的非线性变换。

  • 再把所有算完的值wx(fs)过一个mask,mask决定每个wx(fs)生成多个值里,哪个算的最好(算的不好都给mask掉就留个最好的)

  • 现在就得到了每一个keypoints也就是每一个关键点的warping后的特征。

  • 然后把多个warping后的特征w(fx)聚合成函数W(fs),这个聚合后的W函数,可以直接去把原始特征的s的所有keypoints的warping值计算出来,然后发送给generate G(生成器),去做生成。

     

      这论文还挺经典的是CVPR 2021年的入围,感兴趣可以自己看一下2011.15126 (arxiv.org)

      我们今天讲它只是因为它是base很重要,否则后面内容听不懂,为什么它是base呢?

     刚才说了快手的LivePortrait,就采用了NV的face-vid2vid这个流派来做的延伸,创造了自己的产品和项目。

      Live Portrait,分为两阶段训练

      第一阶段就是找个face-vid2vid的模型来做自己的base model,但是不管是网络还是训练设计上,都做出了非常好的创新,下面我们一起来看一下我认为有提一提价值的第一阶段的创新。

   1-  升级后的网络架构。快手团队将原始的canonical keypoint特征提取网络 L,头部姿态估计网络 H, 和表情变形估计网络 ∆ 统一为一个模型 M(端到端了,不用多个模型的api互调了,延迟低,但是训练难度会增加),该模型M以 ConvNeXt-V2-Tiny 作为主干,直接预测输入图像的规范关键点、头部姿态和表情变形。

        使用 SPADE decoder 替代了原始的生成器(generator G),这比 face vid2vid 中的decoder更厉害。在decoder的最后层插入了一个 PixelShuffle 层,将分辨率能从 256×256 升级到 512×512。

   2-    对原始的算法Xs和Xd加了缩放因子,为啥加这玩意呢?

图片

       因为原始implict keypoint变换忽略了缩放因子,这往往会将缩放纳入表情变形中,从而增加训练的难度。为了解决这个问题,快手团队在运动变换中引入了一个缩放因子(别到表情那步弄了,要不太麻烦)

      Ss和Sd自己管自己的缩放,Ss管图片,Sd管视频

      分开比合起来好,合起来比如如下面的公式

      

图片

      如果按上面的公式来搞,单个参数肯定比训练两个参数简单,但是,实验证明,这样会导致学习到的表情变形 δ过于灵活(因为被缩放因子给加成了),这会在驱动不同身份时引起纹理闪烁(所有闪烁基本都是cross-角色,导致生成不稳定问题,做过sd 相关animated motion类似项目的都懂)。

图片

    3- 新的损失函数

    为了提升质量,除了face-vid2vid提供的E,L,H ,△这几个loss以外,它引入了好几个新的损失函数

   在输入图像的全局区域和脸部、嘴唇的局部区域应用了感知损失和GAN损失,这些损失分别表示为级联感知损失LP,cascade和级联GAN损失LG,cascade。LG,cascade 由LGAN,global、LGAN,face和LGAN,lip 组成,这些损失依赖于相应的判别器Dglobal、Dface 和Dlip的训练(生成器和判别器就没啥可解释的了,如果不懂,可以先去学学GAN)。脸部和唇部区域通过2D语义标记点来定义。还采用了一个面部识别损失Lfaceid来保持源图像的身份一致性。

     还是那句话,从我的角度上,这样肯定网络会比普通的face-vid2vid难训练很多,但是如果效果好,就有道理。

      第一阶段主要就是这些网络和算法的微创新。

      第二阶段是和face-vid2vid最不一样的地方。

      

图片

     如上图所示,在第一阶段的网络基础上,冻结训练好的参数,然后在特征提取和warping函数之间,插3个模块,都是MLP,用原文的话讲就是计算量不大,但是效果特别好。

    这三个模块分别是

  •    Stitching module

  •    Eyes retargeting

  •    Lip retrargeting

         不太好直译的stitchiing ,我们就叫Stitching吧,我们主要知道它是干啥的。

          简单讲,就是将动态的头像能无缝重新粘贴回原始图像空间,确保没有像素错位,例如在肩部区域。这使得可以处理更大尺寸的图像并同时动画化多个面孔。(和原始图像的空间感几乎一致)

    简单说一下相关的技术和算法。

在训练过程中,stitching模块S接收xs(图片,前文有,公式看糊涂了,看前文) 和xd作为输入,去评估视频的keypoint的变形偏移Δst。把Δst送入stitching网络S

图片

     注意,第二阶段的xd的变换与第一阶段训练阶段不同,特意就使用跨身份(cross-id)而不是同一身份(same-id)的运动,以增加训练难度,旨在提高拼接的泛化能力。

     然后和原来的Xd相加就得到了。

图片

对于一个正常的图像预测

图片

D 表示decoder,W表示Warping

然后我们把原始图像Xs也代入到这个式子,得出下式

图片

现在就可以来设计损失函数了,拼接预测图像,和用原始图像进行计算的两个I,整体损失函数计算公式如下

     

图片

用人话来解释一下吧(我估计上面公式大多数人容易看懵)

  1. 训练过程:

    •     用预测值减去代入原始图像的Ip,recon(self-reconstruction)的值去和1-Mst(Is)做Hadamard积。

    •     Mst是个掩码矩阵,1-Mst(Is)就能把和这次计算无关的位移都掩掉

    •     Wregst(实在打不出来)是一个超参

    •     用这些乱七八糟的东西求L1范数,也就是曼哈顿距离

  • Stitching模块的作用:

    • 在训练过程中用于估计驱动关键点的变形偏移,以确保合成帧中s(原图像)和d(原视频) keypoint的对齐和变形一致。

  • 跨身份运动的使用:

    • 使用跨身份(cross-id,也就是照片和视频不是一个人)而非同一身份(same-id)的运动,以增加模型训练的难度,从而提高模型在处理不同身份之间运动时的泛化能力。

  • 损失函数的组成:

    • 像素一致性损失:确保预测图像和(self-reconstruction)图像在具体部位(比如肩膀)区域的一致性。

    • L1 范数正则化:对变形偏移Δst 进行正则化,防止过度变形。

      通过这些机制和损失函数的设计,Stitching模块能够在训练过程中有效地学习如何将源图像和视频的keypoint进行对齐和变形,从而生成高质量的视频合成效果。

    另外两个模块,一个管眼睛,一个管嘴唇,我就不解释了(写不动了),其实道理都差不多,大家自己看论文去吧。

    他们这个项目,重点其实就是打这三个模块,可以看一下他们的论文比较表

    

图片

      快手团队,对自己的产品也没有太多的一昧硬夸,就给了4个星的评价,但是值得注意的是,采用它是唯一四星评价的非diffusion model,和友商企鹅的Face Adapter(主要针对图片,非视频)排在一个象限。

     他主要强调它与其他类似产品不一样的能力就是眼睛和嘴唇还有就是stitching这块,别的模型都不能像它一样(怎么动都能动),如果你用过别的产品比如说Sadtalker或者企鹅的FaceAdapter,你大概知道我在说什么 。

      确实大多数产品,对于眼睛和嘴唇的位移不太容易像LivePortrait能做到的夸张的程度(而且好多其实是不支持video的) ,从这个点上说,快手这个不算过度宣传。

      我其实本来这次休假更新就想随便写写,但是认真读了读快手的论文还是挺有意思的,所以就写多了...

      我哥们有快手可灵的账号,其实我第一时间就测试过了,效果挺好的,但是说实话没达到Sora刚出来时那样特别夸张的程度

       一个原因是最近如Luma还是gen-3啥的都出来了,大家都有纵向横向对比,各有长短。

      二比较有意思,它有一个很大的特点,就是你prompt如果给的不够清晰,它原生出来的视频都是"老铁"化,你们可以试试

图片

,基本能理解它的训练数据源的主力。所以就这个问题来讲,快手的多模态发展这么迅速和它本身的业务发展关系不可谓不大,有巨量的高质量的视频图文(这里高质量等于高清,数量多,多样性)

      这又一次佐证了目前看来模型,算力,数据这三剑客,目前看还是数据第一重要。

      从另一个层面也看出快手的这个多模态团队,确实很有能力和实力,从可灵到LivePortrait,其实都是在走微创新,而且目前看都是国内做的最好的,不是所谓第一梯队,就是最好的。确实是个很好的产品团队,不像国内有些愿意造轮子的公司(造出来的也不咋好用),也不像同样掌握着大量视频数据却啥也没做出来的公司。

     快手这个是实实在在的打造产品体验的团队,值得给一个赞

     其实除了让人跳舞动作控制(比如openpose),GenAI人物生成这块表情控制也是另一个难点,相当于运镜里的近景了,这块能挖的东西还有很多。当然也有两者结合做的,比如vimi,但是具体的五官效果看着就不如Liveportrait,如果Liveportrait的能力加到可灵里(做近景面部刻画,但是模型融合肯定没那么容易,可灵毕竟是Difussion,短期肯定无法端到端),再去和vimi或者sora啥的竞争,就有一定优势了,这其实是top-down和bottom-up两个路线,但是最后大家也都殊途同归了。

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

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

相关文章

C++——模板详解(下篇)

一、非类型模板参数 模板参数分为类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。 非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类&#…

kubernetes集群部署:node节点部署和CRI-O运行时安装(三)

关于CRI-O Kubernetes最初使用Docker作为默认的容器运行时。然而,随着Kubernetes的发展和OCI标准的确立,社区开始寻找更专门化的解决方案,以减少复杂性和提高性能。CRI-O的主要目标是提供一个轻量级的容器运行时,它可以直接运行O…

Docker学习笔记(三)Dockerfile

一、什么是Dockerfile Dockerfile 是一个用于自动化构建 Docker 镜像的文本文件,其中包含了从一个基础镜像开始,到最终形成所需定制镜像的所有指令集。这个文件中的每一条指令都对应着构建镜像过程中的一个步骤或一层,指导 Docker 如何安装软…

PHP智慧门店微信小程序系统源码

🔍【引领未来零售新风尚】🔍 🚀升级启航,智慧零售新篇章🚀 告别传统门店的束缚,智慧门店v3微信小程序携带着前沿科技与人性化设计,正式启航!这个版本不仅是对过往功能的全面优化&a…

从GREE格力看如何起全球商标名称!

有些主体需要走出去出口到国外,普推商标知产老杨看到在一些海外电商平台的出售产品,也会需要英文商标,有的会申请申请注册中英结合商标,在国外申请注册也是比较方便。 格力开始想用“GLEE”(快乐)这个词作为商标名称,但…

【JavaWeb程序设计】JSP编程II

目录 一、输入并运行下面的import_test.jsp页面 1.1 代码运行结果 1.2 修改编码之后的运行结果 二、errorPage属性和isErrorPage属性的使用 2.1 下面的hello.jsp页面执行时将抛出一个异常,它指定了错误处理页面为errorHandler.jsp。 2.1.2 运行截图 2.2 下面…

医疗器械FDA | FDA如何对医疗器械网络安全认证进行审查?

FDA医械网络安全文件出具​https://link.zhihu.com/?targethttps%3A//www.wanyun.cn/Support%3Fshare%3D24315_ea8a0e47-b38d-4cd6-8ed1-9e7711a8ad5e FDA对医疗器械的网络安全认证进行审查时,主要关注以下几个方面,以确保医疗器械在网络环境中的安全性…

2 极/2 零 (2P2Z) 补偿器

极/2 零 (2P2Z) 补偿器是模拟 II 型控制器的数字实现。它是一种滤波器,通过考虑两个极点和一个零点,将特定的增益和相位升压引入系统。您必须战略性地选择每个极点和零点的频率位置,这将有助于实现所需的系统性能。在该…

团队编程:提升代码质量与知识共享的利器

目录 前言1. 什么是团队编程?1.1 团队编程的起源1.2 团队编程的工作流程 2. 团队编程的优势2.1 提高代码质量2.2 促进知识共享2.3 增强团队协作2.4 提高开发效率 3. 团队编程的挑战3.1 开发成本较高3.2 需要良好的团队协作3.3 个人风格和习惯的差异3.4 长时间的集中…

大数据期末复习——hadoop、hive等基础知识

一、题型分析 1、Hadoop环境搭建 2、hadoop的三大组件 HDFS:NameNode,DataNode,SecondaryNameNode YARN:ResourceManager,NodeManager (Yarn的工作原理) MapReduce:Map&#xff0…

七人互助拼团模式:共创共赢的电商新篇章

在当今电商行业的繁荣浪潮中,七人互助拼团模式犹如一股清流,凭借其独特的激励机制与深厚的互助合作文化,赢得了消费者与商家的广泛赞誉。这一模式不仅重新定义了团购体验,更在无形中强化了社群间的联系与协作,共同绘制…

中英双语介绍日本东京(Tokyo)

中文版 东京介绍 东京是日本的首都,也是日本的政治、经济、文化和国际交流中心。以下是对东京的详细介绍,包括其地理位置、人口、经济、教育、文化和主要景点。 地理位置 东京位于日本关东地区的南部,地理坐标大致为北纬35度41分&#xf…

C语言_练习题

求最小公倍数 思路:假设两个数,5和7,那么最小至少也要7吧,所以先假定最小公倍数是两个数之间较大的,然后看7能不能同时整除5和7,不能就加1继续除 int GetLCM(int _num1, int _num2) {int max _num1>_n…

C++11中新特性介绍-之(二)

11.自动类型推导 (1) auto类型自动推导 auto自动推导变量的类型 auto并不代表某个实际的类型,只是一个类型声明的占位符 auto并不是万能的在任意场景下都能推导,使用auto声明的变量必须进行初始化,以让编译器推导出它的实际类型,…

Python入门 2024/7/6

目录 数据容器入门 列表的定义语法 基本语法 嵌套列表 ​编辑 列表的下表索引 ​编辑 列表的常用操作 列表的常见方法 查找元素的下标 修改下标索引的值 插入元素 追加元素 追加一批元素 删除元素 删除某元素在列表中的第一个匹配项 清空列表内容 统计元素在…

2024亚太杯中文赛数学建模B题完整论文讲解(含每一问python代码+结果+可视化图)

大家好呀,从发布赛题一直到现在,总算完成了2024 年第十四届 APMCM 亚太地区大学生数学建模竞赛B题洪水灾害的数据分析与预测完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人…

web服务之Nginx

web服务之Nginx 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Li…

将IConfiguration对象转换成一个具体的对象,以面向对象的方式来使用配置

我们倾向于将IConfiguration对象转换成一个具体的对象,以面向对象的方式来使用配置,我们将这个转换过程称为配置绑定。除了将配置树叶子节点配置节的绑定为某种标量对象外,我们还可以直接将一个配置节绑定为一个具有对应结构的符合对象。除此…

【音视频 | RTSP】RTSP协议详解 及 抓包例子解析(详细而不赘述)

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

华为开发者大会2024纪要:鸿蒙OS的全新篇章与AI大模型的革命

华为开发者大会2024纪要:鸿蒙OS的全新篇章与AI大模型的革命 在科技的浪潮中,华为再次引领潮流,2024年的开发者大会带来了一系列令人瞩目的创新成果。从鸿蒙操作系统的全新Beta版到盘古大模型的震撼发布,华为正以前所未有的速度重塑智能生态。以下是本次大会的亮点,让我们…