【数字人】10、HyperLips | 使用 audio 实现高保真高清晰的唇部驱动

在这里插入图片描述

文章目录

    • 一、背景
    • 二、相关工作
      • 2.1 Audio-Driven Talking Face Generation
      • 2.2 HyperNetwork
      • 2.3 Prior Based Face Restoration
    • 三、方法
      • 3.1 Base Face Generation
      • 3.2 High-Fidelity Rendering
    • 四、效果

论文:HyperLips: Hyper Control Lips with High Resolution Decoder for Talking Face Generation

代码:https://github.com/semchan/HyperLips

时间:2023.10

效果:需要 audio-driven + 待需要驱动人物的视频来实现唇部的驱动,测试给定样例后发现嘴部抖动严重,测试其他自有样例发现,脸部颜色偏红,嘴唇不清晰,牙齿不清晰

一、背景

talking head 可以用于很多场景,如数字助手、虚拟人、动画人物等待

talking head 一般可以进行如下分类:

  • 只使用 audio-driven,也就是输入一段音频和一张图片,使用输入的音频来驱动这个图片来得到很多帧对应的图片来组成最终的视频。这种方式一般是 person-specific 的,如果需要对新的没见过的 person 来生成视频,需要重新训练,而且使用单帧图像驱动的效果不是很自然,容易产生形变。
  • 同时使用 audio-driven 和 source video,也就是有一段该 person 的视频和驱动的音频,使用音频驱动模特的嘴部附近运动,这样得到的视频保真性更高。

在这里插入图片描述
如图 1 所示,本文的的方法就是同时需要 audio-driven 和 source video 的方法,表情和动作都来自于 source video,比较自然。

所以作者在这里就提出了这种方法面临的两个问题:

  • 如何生成更准确的唇形
  • 如何渲染出更保真的面部,尤其是更清晰的牙齿和唇部

在之前:

  • wav2lip:提出了唇形合成判别器来提升唇部的准确性
  • SyncTalkFace:提出了 audio lip memory,也就是使用嘴部区域的视觉特征和对应的 audio 来强化 audio-visual 的关系
  • IP_LAP:使用 transformer-base 关键点生成,来推理 lip 和 关键点的关系

这些方法主要是聚焦于在 decoding 之前对 audio 和 visual 进行融合,但是 audio 和 visual 的维度不同,所以需要将这两个特征变成相同的尺寸再进行特征融合

本文的方法:两阶段

  • 第一阶段:使用了一个基于 audio information 的 hypernetwork 来控制嘴唇的合成形状

    将视觉的 face 信息编码到隐空间,然后使用 HyperConv convolution 对隐空间特征进行特征修正,将修正后的特征 decode 得到 visual face content。HyperConv的权重参数是通过使用音频特征作为输入来构建一个超网络来生成的,从而实现在渲染的视觉内容中对嘴唇运动的音频控制。使用超网络是为了避免在视觉和音频特征融合过程中的额外操作,并更好地确保生成视频中的嘴唇同步。本文想法与音频条件扩散模型[24]类似,它将音频信息作为条件变量,但这种方法采用扩散模型作为网络架构,这增加了对计算资源的需求。

  • 第二阶段:提出了一个高分辨率解码器(HRDecoder)来进一步优化生成面部的保真度。利用第一阶段生成的面部数据和相应的面部草图训练网络,在草图的指导下,实现面部增强。

    为了渲染出更高保真度的面部,DINet[22] 提出了一种形变填充网络来实现高分辨率视频上的面部视觉配音,但如果嘴部区域覆盖了背景,它可能会产生面部以外的人工痕迹。IP_LAP[21]利用从下半部遮挡的目标面部和静态参考图像中提取的先验外观信息,但如果在参考图像中无法检测到 landmark,它可能会失败。另一种可能的方法是基于如 Wav2lip[8] 或 SyncTalkFace[20] 等网络增加输入分辨率,但这不仅增加了训练资源的需求,而且渲染效果不佳,导致持续的人工痕迹。所以本文使用的是 HRDecoder 来提升面部保真度

二、相关工作

2.1 Audio-Driven Talking Face Generation

在只使用音频输入的音频驱动的说话面部生成方法中[12]–[16],通常需要收集特定于人物的音频和视频并进行重新训练。通过引入神经辐射场(NeRF)[25]来表示说话头部的场景[13],可以控制它以在新视角下渲染面部。RAD-NeRF [12]将本质上高维的说话肖像表示分解为三个低维特征网格,使得可以实时渲染说话肖像。GeneFace [14]提出了一个变分运动生成器,以生成准确和富有表现力的面部标志,并使用基于NeRF的渲染器来渲染高保真帧。由于缺乏先验信息,这些任务仍然难以渲染出逼真的表情和自然的动作。

为了驱动单个面部图像,ATVGnet [17]设计了一种级联 GAN 方法来生成说话面部视频,该视频对不同的面部形状、视角、面部特征和嘈杂的音频条件具有鲁棒性。

最近,SadTalker [18]提出了一个新颖的系统,用于使用生成的逼真的3D运动系数,进行风格化的音频驱动单图像说话面部动画,改善了运动同步和视频质量,但仍然无法生成准确的表情和自然的运动序列。

使用源视频驱动音频的方法是最具竞争力的,因为它可以提供足够逼真的面部表情和自然运动信息。Wav2lip [8]、SyncTalkFace [20]、IP LAP [21]、DINET [22]都属于这一类别,主要关注如何生成更好的唇部同步和更高保真度的面部。

2.2 HyperNetwork

Hypernetwork 最初提出是为了生成一个更大网络的权重。在进化计算中,直接操作由数百万个权重参数组成的大型搜索空间是困难的。一种更有效的方法是进化一个较小的网络来生成一个更大网络的权重结构,以便搜索被限制在更小的权重空间内。

权重生成的概念易于用于可控生成任务。Chiang等人[27]利用它来控制3D场景表示的风格。UPST-NeRF[28]使用hypernetwork来控制3D场景的通用真实风格转换。

随着大型语言模型(LLMs)[29]–[32]和生成模型[33]的兴起,hypernetwork 也成为了微调 LLMs的 必要技能之一。本质上,hypernetwork 中生成权重参数以控制大型网络方法的想法与Audio Conditioned Diffusion Model[24]和Latent Diffusion Models中的Conditioning Mechanisms[33]相似,这两者都通过控制变量实现了解码的可控输出。然而,在本文的方法中,执行可控生成相对简单,而不是使用扩散模型进行生成。

2.3 Prior Based Face Restoration

面部修复是指从降质的面部图像中恢复高质量面部图像的过程。

面部修复分为无先验和基于先验的方法。

FSRNet使用一个粗糙的超分辨率(SR)网络来恢复粗糙图像,然后分别通过精细的SR编码器和先验面部传递图估计网络进行处理。最后,将图像特征和先验信息输入到精细的SR解码器中以获得结果。

在文献[37]中,它使用语义标签作为面部先验。语义标签是通过面部解析网络从输入图像或粗糙去模糊图像中提取的。最终的清晰图像是通过输入模糊图像和面部语义标签的拼接来由去模糊网络生成的。

Yin等人提出了一个联合对齐和面部超分辨率网络,以共同学习地标定位和面部修复。

在本文的工作中,作者使用从第一阶段生成的相对低质量面部检测到的地标草图作为输入,以指导 HRDecoder 实现面部增强,以渲染高保真度面部。

三、方法

在这里插入图片描述
本文方法的框架结构如图 2 所示,给定一个 audio 和一段视频:

  • 第一阶段:使用基于 audio feature 的 hypernetwork 来控制视觉上自然的视觉特征
  • 第二阶段:使用第一阶段得到的 faec data 和对应的面部 sketches 来提升质量

3.1 Base Face Generation

1、Hyper Control Lips:

  • 首先,给定 reference image I R I^R IR 和 masked image I M I^M IM(对 reference 遮挡下半部分),FaceEncoder 通过将 I R I^R IR I M I^M IM concat 起来,得到 latent code 如下:

    在这里插入图片描述

  • 然后,使用 HyperConv’s convolution 来对 L C L^C LC 进行处理,得到:
    在这里插入图片描述

    过程为如下,其中 Θ \Theta Θ 是 HyperConv 的权重参数,是由 HyperNet 预测得到的。HyperNet 由 MLP 组成

    在这里插入图片描述

    audio feature A M A^M AM 如下,是使用 AudioEncoder 得到的。声音特征的 mel 频谱的尺寸是 16*80,
    在这里插入图片描述

  • 最后,使用 FaceDecoer 来对 L H L_H LH 进行解码,得到预测的 base face:

    在这里插入图片描述

2、Loss Function for Base Face Generation

为了同时保证唇形同步性和保真性,作者使用多个 loss 来优化

① 优化 quality discriminator: HyperCtrolDiscriminator ( D B D^B DB),也就是质量判别器,所以整个生成过程用公式表达如下, ⊕ \oplus 表示 concat:

在这里插入图片描述

  • g B g^B gB:base face generation,包括: FaceEncoder, HyperConv, FaceDecoder, AudioEncoder 和 HyperNet
  • 公式 2 就表示,base face generation 的输入是 reference image I R I^R IR 和 masked image I M I^M IM 的 concat,以及声音特征 A M A^M AM
  • 经过生成器后,就得到了 predicated base face I B I^B IB

优化 quality discriminator 的 loss 如下:

在这里插入图片描述

  • Base Adversarial Loss:对抗 loss,来让生成的图片更真实

    在这里插入图片描述

  • Base Reconstruction Loss:使用 L1 loss 来衡量生成的 face 和 gt 的距离,让重建的 face 更接近 gt

    在这里插入图片描述

  • Base LPIPS Loss:使用可以学习的 LPIPS loss 来让生成的图片更加接近人眼视觉感受的真实性和自然性

    在这里插入图片描述

  • Base Audio-Visual Sync Loss:作者使用 LRS2 训练了一个 audio-visual 同步的模型, F A F^A FA F V F^V FV,用这两个模型提取到的特征分别是 f a f_a fa f v f_v fv,这两个模型输出的特征使用 cos 相似度来衡量如公式 7,loss 如公式 8

    在这里插入图片描述

  • 最终 base face generation stage 的训练 loss 如下

    在这里插入图片描述

3.2 High-Fidelity Rendering

1、HRDecoder

HRDecoder 组成如下:

  • base convolution module
  • upsampling convolution module,是 transposed convolution,主要用于将低分辨率特征提高到高分辨率
  • output convolution block

HRDecoder:

  • 输入:第一阶段输出的 base face,对应的 face landmark sketch(两者 concat)
  • 输出:高保真的 face(主要依靠的是 landmark sketch 的指导)

HRDecoder 的公式表达:

在这里插入图片描述

  • ⊕ \oplus :concat
  • I S I^S IS:face landmark sketch
  • I H R I^{HR} IHR:高保真的 face

第二阶段 HRDecoder 使用的训练数据是第一阶段训练好的模型生成的 base face 和 对应的 landmark sketches

2、High-Fidelity Rendering loss 函数

在这个阶段,为了生成高保真的 face,作者定义了一个判别器 HRDiscriminator,该 HRDiscriminator 的 loss 如下:

在这里插入图片描述

  • HR Adversarial Loss:对抗 loss,为了保证 HRDecoder 的真实性

    在这里插入图片描述

  • HR Perceptual Loss:感知 loss,使用预训练的 VGG ( ϕ \phi ϕ) 来抽取图像特征,并计算生成的图片和真实图片的 VGG 特征的 L1 loss

    在这里插入图片描述

  • HR Reconstruction Loss:重建 loss,计算生成图片和真实图片的 L1 loss

    在这里插入图片描述

  • HR Lip Loss:为了进一步优化嘴唇区域,作者使用嘴唇区域的 mask 来计算该区域的 lpips loss 和 重建 loss:

    在这里插入图片描述

  • 最终的 loss 如下:

    在这里插入图片描述

四、效果

实验细节:

  • 对 video frame 从中间裁剪 128x128,25fps
  • HyperLips-Base 和 HyperLipsHR 的学习率都为 0.0001
  • 在这里插入图片描述

数据:

  • LRS2
  • MEAD-Neutral

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

着色器语言GLSL学习

1 初步尝试 import { Scene, WebGLRenderer, OrthographicCamera, PlaneGeometry, ShaderMateria } from three.jsconst scene new Scene() const camera new OrthographicCamera(-1,1,1,-1,0.1, 10)const renderer new WebGLRenderer() renderer.setSize(window.innerWidt…

springcloud之链路追踪

写在前面 源码 。 本文一起来看下链路追踪的功能,链路追踪是一种找出病因的手段,可以类比医院的检查仪器,服务医生治病救人,而链路追踪技术是辅助开发人员查找线上问题的。 1:为什么微服务需要链路追踪 孔子同志月过…

中仕公考:国考进面后资格复审需要准备什么?

参加国考面试的考生在资格审核阶段需要准备以下材料: 1、本人身份证、学生证或工作证复印件。 2、公共科目笔试准考证复印件。 3、考试报名登记表。 4、本(专)科、研究生各阶段学历、学位证书(应届毕业生没有可以暂时不提供)。 5、报名资料上填写的各类证书材料…

剑指 Offer 40.最小的k个数

剑指 Offer 40.最小的k个数 剑指 Offer 40.最小的k个数 设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例&#xff1a; 输入&#xff1a; arr [1,3,5,7,2,4,6,8], k 4 输出&#xff1a; [1,2,3,4] 提示&#xff1a; 0 < len(arr) &l…

Spring Boot3 跨域配置 Cors

什么是CORS&#xff1f; CORS&#xff0c;全称是“跨源资源共享”&#xff08;Cross-Origin Resource Sharing&#xff09;&#xff0c;是一种Web应用程序的安全机制&#xff0c;用于控制不同源的资源之间的交互。 在Web应用程序中&#xff0c;CORS定义了一种机制&#xff0c…

前端:布局(用于div中有多行元素,一行只显示四个,最左或最右要紧贴父div,最顶层和最底层也要紧贴父div)

效果 一、flex实现 html <!DOCTYPE html> <html><head><title>Flexbox Layout</title><style>.container {display: flex;flex-wrap: wrap;justify-content: space-between;gap: 10px;border: 1px solid red;}.box {flex: 1 0 calc(25% …

2023年中国传感器行业研究报告(附传感器产业链全景图谱)

​传感器是一种通常由敏感元件和转换元件组成的检测装置&#xff0c;测量并感知信息后&#xff0c;通过变换让传感器中的数据或价值信息转换成电信号或其他所需形式的输出&#xff0c;以满足信息的传输、处理、存储、显示、记录和控制等要求。传感器是数字经济时代关键的硬件入…

4.Swing常用组件

Swing常用组件 4. Swing常用组件4.1 面板组件4.1.1 JPanel4.1.1.1 构造方法4.1.1.2 常用方法 4.1.2 JScrollPane4.1.2.1 构造方法4.1.2.2 常用方法 4.2 文本组件4.2.1 JTextField4.2.1.1 构造方法4.2.1.2 常见方法 4.2.2 JTextArea4.2.2.1 构造方法4.2.2.2 常见方法 4.3 标签组…

Educational Codeforces Round 161 (Rated for Div. 2) B 2的零次方竟然是1

目录 心情&#xff1a; 55.999999999999993&#xff1a; 题意&#xff1a; 思路&#xff1a; 核心代码&#xff1a; 心情&#xff1a; Div.2&#xff0c;我竟然在50分钟内C题做掉了&#xff0c;想着B题做了基本上不会掉分了这把&#xff0c;B题要考什么我也清楚&#xff0…

【Kafka】Kafka介绍、架构和概念

目录 Kafka介绍Kafka优势Kafka应用场景Kafka基本架构和概念ProducerConsumer/Consumer GroupBrokerZooKeeperTopicPartitionReplicasOffsetsegment Kafka介绍 Kafka是是一个优秀的分布式消息中间件&#xff0c;关于常用的消息中间件对比可参考文章&#xff1a;消息中间件概述。…

【Docker】Nacos的单机部署及集群部署

一、Nacos的介绍 Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 动态服务发现&#xff1a;Nacos支持DNS与RPC服务发现&#xff0c;提供原生SDK、OpenAPI等多种服务注册方式和DNS、HTTP与API等多种服务发现方式。服务健康监测&#xff1a;Nacos提供…

Python数据分析案例32——财经新闻爬虫和可视化分析

案例背景 很多同学的课程作业都是需要自己爬虫数据然后进行分析&#xff0c;这里提供一个财经新闻的爬虫案例供学习。本案例的全部数据和代码获取可以参考&#xff1a;财经新闻数据 数据来源 新浪财经的新闻网&#xff0c;说实话&#xff0c;他这个网站做成这样就是用来爬虫的…

鸿蒙开发(五)鸿蒙UI开发概览

从用户角度来讲&#xff0c;一个软件拥有好看的UI&#xff0c;那是锦上添花的事情。再精确的算法&#xff0c;再厉害的策略&#xff0c;最终都得通过UI展现给用户并且跟用户交互。那么&#xff0c;本篇一起学习下鸿蒙开发UI基础知识&#xff0c;认识下各种基本控件以及使用方式…

Zoho Survey评价:功能全面,值得一试

通常来讲&#xff0c;我们在使用一款问卷调查制作工具制作问卷时会有哪些需求呢&#xff1f; 用户需求 1、操作简单&#xff0c;易上手。 2、能够满足用户个性化的需求。 3、提供多语言服务。 4、能够帮助发布以及数据收集。 5、简化数据分析 市面上的问卷调查制作工具都…

如何学习一些需要算法的程序

如何看懂一个程序&#xff0c;分三步&#xff1a; 流程每个语句的功能试数 如何学习一些需要算法的程序【如何掌握一个程序】&#xff1a; 尝试自己去编程解决它 但要意识到大部分人都是自己无法解决的&#xff0c;如果解决不了&#xff0c;这时不要气馁&#xff0c;如果十五…

探索FTP:原理、实践与安全优化

引言 在正式开始讲解之前&#xff0c;首先来了解一下文件存储的类型有哪些。 DAS、SAN和NAS是三种不同的存储架构&#xff0c;分别用于解决不同场景下的数据存储需求。 DAS (Direct Attached Storage 直接附加存储)&#xff1a;DAS 是指将存储设备&#xff08;如硬盘&#x…

阿里云国外云服务器地域、收费标准及活动报价参考

阿里云国外服务器优惠活动「全球云服务器精选特惠」&#xff0c;国外服务器租用价格24元一个月起&#xff0c;免备案适合搭建网站&#xff0c;部署独立站等业务场景&#xff0c;阿里云服务器网aliyunfuwuqi.com分享阿里云国外服务器优惠活动&#xff1a; 全球云服务器精选特惠…

AI语音合成工具-Lalamu Studio

近期&#xff0c;Lalamu Studio开启了beta版本测试&#xff1a;Lalamu Studio。该工具整合了TTS和lip sync功能&#xff0c;可以让任意视频中的人物开口说话&#xff0c;并精确模拟口型。 例如&#xff0c;选择一段视频素材&#xff0c;添加由Ai合成的语音&#xff0c;即可完成…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题三 模块二

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

李沐深度学习-softmax从零开始

import torch import torchvision import numpy as np import syssys.path.append("路径") import d2lzh_pytorch as d2l 1. 获取和读取数据 2. 初始化参数和模型 3. 定义softmax运算 4. 定义模型 5. 定义损失函数&#xff1a;交叉熵损失函数 6. 定义分类准确率 7. 训…