【AIGC】2023-ICCV-用于高保真语音肖像合成的高效区域感知神经辐射场
2023-ICCV-Efficient Region-Aware Neural Radiance Fields for High-Fidelity Talking Portrait Synthesis
- 用于高保真语音肖像合成的高效区域感知神经辐射场
- 摘要
- 1. 引言
- 2. 相关工作
- 3. 方法
- 3.1 准备工作和问题设置
- 3.2 三平面哈希表示
- 3.3. 区域注意模块
- 3.4 训练细节
- 4. 实验
- 4.1 实验设置
- 4.2 定量评估指标
- 4.3 定性评估
- 4.4 消融研究
- 5. 道德考虑
- 6. 结论
- 参考文献
用于高保真语音肖像合成的高效区域感知神经辐射场
作者:Jiahe Li, Jiawei Zhang, Xiao Bai1, Jun Zhou, Lin Gu
单位:School of Computer Science and Engineering, State Key Laboratory of Software Development, Environment, Jiangxi Research Institute, Beihang University, School of Information and Communication Technology, Griffith University, RIKEN AIP, The University of Tokyo
论文地址:https://openaccess.thecvf.com/content/ICCV2023/html/Li_Efficient_Region-Aware_Neural_Radiance_Fields_for_High-Fidelity_Talking_Portrait_Synthesis_ICCV_2023_paper.html?ref=https://githubhelp.com
摘要
本文介绍了一种基于条件神经辐射场(Neu-ral Radiance Fields,NeRF)的新型说话肖像合成架构 ER-NeRF
,它可以同时实现快速收敛、实时渲染和小模型尺寸的领先性能。我们的想法是明确利用空间区域的不平等贡献来指导说话肖像建模。具体而言,为了提高动态头部重建的准确性,通过使用三平面哈希编码器修剪空空间区域,引入了一种紧凑且富有表现力的基于 NeRF 的三平面哈希(Tri-Plane Hash Representation)表示。对于语音音频,我们提出了一个区域注意模块,通过注意机制生成区域感知条件特征。与现有利用基于 MLP 的编码器隐式学习跨模态关系的方法不同,注意机制在音频特征和空间区域之间建立明确的联系,以捕捉局部运动的先验。此外,引入了直接、快速的自适应姿势编码,通过将头部姿势的复杂变换映射到空间坐标来优化头部躯干分离问题。大量实验表明,与以前的方法相比,我们的方法可以呈现更好的高保真度和音频嘴唇同步的说话肖像视频,具有逼真的细节和高效率。代码可在 https://github.com/Fictionarry/ER-NeRF 获得。
1. 引言
音频驱动的说话肖像合成是一个重要且具有挑战性的问题,它有多种应用,如数字人、虚拟化身、电影制作和视频会议。在过去的几年中,许多研究人员已经使用深度生成模型解决了这一任务 [10, 28, 36, 52, 51, 25, 45]。最近,神经辐射场(NeRF)[26] 被引入到音频驱动的说话肖像合成中。它提供了一种新方法,可以通过深度多层感知器(MLP)学习从音频特征到相应视觉外观的直接映射。从那时起,一些研究以端到端的方式 [19, 24, 29, 42] 或通过一些中间表示 [43, 7] 对音频信号进行 NeRF 条件化,以重建特定的说话肖像。虽然这些基于 NeRF 的原始方法在合成质量方面取得了巨大的成功,但推理速度远远不能满足实时要求,严重限制了它们的实际应用。
最近几项关于高效神经表征的研究通过用稀疏特征网格替换部分 MLP 网络,证明了与 vanilla NeRF 相比速度有了巨大的提升 [33, 27, 6, 8, 15, 5, 16]。Instant-NGP [27] 引入了哈希编码的体素网格进行静态场景建模,从而通过紧凑的模型实现了快速和高质量的渲染。RAD-NeRF [35] 首次将这项技术应用于说话肖像合成,并构建了一个具有最先进性能的实时框架。然而,这种方法需要一个复杂的基于 MLP 的网格编码器来隐式学习区域音频运动映射,这限制了它的收敛和重建质量。
本文旨在探索一种更有效的解决方案,实现高效、高保真的说话肖像合成。基于前期的研究,我们注意到不同的空间区域对说话肖像的表示贡献并不均衡:(1)在体积渲染中,由于只有表面区域有助于表示动态头部,因此大多数其他空间区域都是空的,可以使用一些有效的 NeRF 技术进行修剪,以降低训练难度;(2)由于不同面部区域与语音音频具有不同的关联 [24],不同的空间区域本质上以自己独特的方式与音频信号相关,并导致独特的音频驱动的局部运动。受这些观察的启发,我们明确利用空间区域的不平等贡献来指导说话肖像建模,并提出了一种新颖的高效区域感知说话肖像 NeRF(ER-NeRF)框架,用于逼真、高效的说话肖像合成,该框架以小模型尺寸实现了高质量的渲染、快速收敛和实时推理。
我们的第一个改进侧重于动态头部表征。尽管 RAD-NeRF [35] 利用 Instant-NGP 来表征说话的肖像并实现了快速推理,但在对 3D 动态说话头部进行建模时,其渲染质量和收敛性受到哈希碰撞的阻碍。为了解决这个问题,我们引入了一个三平面哈希表征(Tri-Plane Hash Representation),通过基于 NeRF 的三平面分解将 3D 空间分解为三个正交平面 [6]。在分解过程中,所有空间区域都被挤压到 2D 平面上,相应的特征网格被修剪。因此,哈希碰撞仅发生在低维子空间中,并且数量减少。噪声越少,网络就可以更加专注于处理音频特征,从而能够重建更准确的头部结构和更精细的动态运动。
为了捕捉音频信号的区域影响,我们进一步探索了所提出的三平面哈希表示的音频特征和位置编码之间的相关性。我们提出了一个区域注意模块(Region Attention Module),它通过跨模态注意机制调整音频特征以最好地适应某些空间区域,而不是通过连接原始特征并通过大型基于 MLP 的编码器学习视听相关性。因此,肖像的动态部分可以获得更合适的特征来模拟准确的面部运动,而其他静态部分则不受变化信号的影响。通过获得区域意识,可以实现高质量和高效的局部运动建模。
此外,我们的框架提出了一种简单但有效的自适应姿势编码来解决头躯干分离问题。它将复杂的姿势变换映射到空间坐标上,并为躯干 NeRF 隐式学习自身姿势提供更清晰的位置关系。
我们工作的主要贡献总结如下:
- 我们引入了一种高效的三平面哈希表示法来促进动态头部重建,同时还实现了高质量渲染、实时推理和快速收敛,并且模型尺寸紧凑。
- 我们提出了一种新颖的区域注意模块来捕捉音频条件和空间区域之间的相关性,以实现准确的面部运动建模。
- 大量实验表明,所提出的 ER-NeRF 可以高效、高质量地渲染逼真的说话肖像,在客观评价和人类研究方面均优于最先进的方法。
2. 相关工作
基于 2D 的说话肖像合成。通过任意语音音频驱动说话肖像是计算机视觉和计算机图形学领域的一个活跃的研究课题。此任务旨在以高图像质量和视听一致性重新演绎特定人物。传统方法 [4, 3] 定义音素-嘴巴对应规则并拼接嘴形。早期基于深度学习的方法专注于为给定的面部图像合成音频同步的唇部运动 [28, 14, 23, 10, 41]。后来,为了增强可控性,在几种多阶段方法中使用了面部标志和 3D 面部模型等中间表示 [36, 39, 45, 25]。然而,在估计这些中间表示时会出现额外的错误和信息丢失。最近,扩散模型已用于改善唇形同步和图像质量 [44, 30, 32],但它们的推理速度很慢。由于缺乏明确的三维结构表示,基于二维的方法在头部姿势控制的自然性和一致性方面存在缺陷。
基于 NeRF 的说话肖像合成。3D 视觉技术旨在依靠多视图对应关系从图像和视频中学习 3D 结构,并已在许多领域得到广泛发展 [40、48、37、47、50]。最近,神经辐射场(NeRF)[26] 已被用于解决音频驱动的说话肖像合成中的 3D 头部结构问题。早期的工作 [19、42、29、24] 主要建立在原始 NeRF 渲染器上,这使得它们速度慢且内存成本高。其中,SSP-NeRF [24] 首次考虑音频对面部区域的不同影响,并采用语义采样策略来鼓励局部运动建模。通过应用 Instant-NGP [27],RAD-NeRF [35] 在视觉质量和效率方面取得了巨大的进步。然而,它需要一个复杂的模块来处理音频信号。这些端到端方法将整个或部分大型 MLP 网络作为编码器来学习音频和区域之间的联系,这增加了它们的复杂性和训练难度。一些多阶段方法 [43, 7] 预训练模型以通过中间表示来学习视听关系,并利用基于 NeRF 的渲染器来生成图像。然而,由于架构复杂,它们效率低下。本文提出了一种基于 NeRF 的高效方法,可显著提高视觉质量和口型同步。
高效的神经表征。许多已报道的研究都关注 NeRF 的效率。最近,提出了几种混合显式-隐式表示 [6, 8, 27, 33, 17] 用于静态场景重建,并在速度和内存成本之间取得平衡。在这些方法中,高维场景将被分离并存储到稀疏特征网格中。基于平面的方法 [6, 8] 将空间分解为多个低维平面和向量以获得紧凑的表示。Instant-NGP [27] 使用多个哈希表以多分辨率存储稀疏细节,假设大多数空区域已被修剪,这极大地提高了内存利用率和渲染质量。虽然每个哈希图的大小通常不足以表示空间中的所有位置,但该方法不显式处理哈希碰撞,而是将其留给 MLP 解码器。这些方法主要针对静态场景而设计,无法生成动态表示。在动态 NeRF 领域,目前有效的方法要么侧重于如何沿时间线重建场景 [5, 16, 31, 8, 15, 38],要么只能控制一些简单的变形 [46],这两种方法都不适合对音频驱动的说话肖像进行建模。通过利用哈希和基于计划的方法的优势,我们引入了一种有效的表示方法,用于高质量的动态头部建模,以较小的模型尺寸实现快速训练和推理。
3. 方法
3.1 准备工作和问题设置
给定一组多视图图像和相机姿势,NeRF [26] 用隐式函数 F : ( x , d ) → ( c , σ ) \mathcal{F}:\left(\mathbf{x},\ \mathbf{d}\right)\to \left(\mathbf{c},\ \sigma \right) F:(x, d)→(c, σ) 表示静态 3D 场景,其中 x = ( x , y , z ) \mathbf{x}=\left(x,\ y,\ z\right) x=(x, y, z) 是 3D 空间坐标, d = ( θ , ϕ ) \mathbf{d}=\left(\theta,\ \phi\right) d=(θ, ϕ) 是观察方向。输出 c = ( r , g , b ) \mathbf{c}=\left(r,\ g,\ b\right) c=(r, g, b) 表示发射的颜色, σ \sigma σ 是体积密度。通过沿射线聚合颜色 C ( r ) C\left(\mathbf{r}\right) C(r),可以计算出从相机中心 o \mathbf{o} o 发出的射线 r ( t ) = o + t d \mathbf{r}\left(t\right)=\mathbf{o}+t\mathbf{d} r(t)=o+td 穿过的一个像素的颜色 C ( r ) \mathbf{C}\left(\mathbf{r}\right) C(r):
其中 t n t_n tn 和 t f t_f tf 分别是近界和远界。 T ( t ) T\left(t\right) T(t) 是从 t n t_n tn 到 t t t 的累积透射率:
在基于哈希网格的 NeRF [27] 中,使用多分辨率哈希编码器 H \mathcal{H} H 通过其坐标 x \mathbf{x} x 对空间点进行编码。因此,以音频特征 a \mathbf{a} a 为条件,基于哈希 NeRF 的音频驱动说话肖像合成的基本隐式函数可以表示为:
在本文中,我们采用与以前基于 NeRF 的作品相同的基本设置 [19, 24, 35]。具体来说,我们使用几分钟的单人视频作为训练数据,该视频由静态摄像机从正面拍摄。相机每帧的内在和外在参数都是根据头部姿势计算出来的,头部姿势由 3DMM 模型估计。音频特征是从预先训练的 DeepSpeech [20] 模型中提取的。我们还采用了一种现成的语义解析方法来分离头部、躯干和背景以供各种用途。此外,我们分别训练和渲染头部和躯干以加速。
3.2 三平面哈希表示
Instant-NGP [27] 利用一组哈希表来减少特征网格的数量,从而实现高效的神经表示。受此想法的启发,RAD-NeRF [35] 被开发为一个实时、高质量的说话肖像合成框架,它利用哈希图以多分辨率表示肖像头部的少量表面区域。但是,一般的 3D 哈希网格表示并不适用于我们的任务。
一个特殊的问题是哈希碰撞。Instant-NGP 中的哈希平等对待 3D 空间中的每个位置,这增强了其对复杂场景的表达能力。然而,哈希碰撞的数量随着采样点的数量线性增加,这使得 MLP 解码器解决冲突梯度成为一种负担。该问题在重建静态场景时影响不大,但对于说话肖像合成,当 MLP 解码器需要同时处理多个音频特征时,问题就会变得严重,如图 3 所示。
哈希网格的分解。由于较少的采样点总是意味着较低的质量,因此很难通过直接减少每条射线的采样数来解决此问题。另一种思路是避免高维度的哈希冲突。正如之前的研究证明的那样,头部的静态三维空间可以用三个二维张量表示 [6],因此可以将动态说话的头部压缩到几个低维子空间中,而信息损失很少。从这个角度来看,我们将三维空间特征体积分解为三个正交的二维哈希网格。
对于给定的坐标 x = ( x , y , z ) ∈ R X Y Z \mathbf{x}=\left(x,\ y,\ z\right)\in \mathbb{R}^{\mathbf{X}\mathbf{Y}\mathbf{Z}} x=(x, y, z)∈RXYZ,我们分别通过三个二维多分辨率哈希编码器对其投影坐标进行编码 [27]:
其中输出 f a b A B ∈ R L F \mathbf{f}_{ab}^{\mathbf{AB}}\in \mathbb{R}^{LF} fabAB∈RLF 是投影坐标 ( a , b ) \left(a,\ b\right) (a, b) 的平面级几何特征, H A B \mathcal{H}^{\mathbf{AB}} HAB 是平面 R A B \mathbb{R}^{\mathbf{AB}} RAB 的多分辨率哈希编码器,级别数为 L L L,每个条目的特征维度为 F F F。然后我们将结果连接起来得到最终的几何特征 f g ∈ R 3 × L F \mathbf{f}_g\in \mathbb{R}^{3\times LF} fg∈R3×LF:
符号 ⊕ \oplus ⊕ 表示连接运算符,将特征连接成 3 × L F 3\times LF 3×LF 通道向量。
我们提出的分解显著减少了哈希碰撞,因为现在碰撞只发生在二维平面上。假设一个常见情况是查询射线几乎垂直于额平面,碰撞可以从 O ( R 2 N ) O\left(R^2N\right) O(R2N) 减少到 O ( R 2 + 2 R N ) O\left(R^2+2RN\right) O(R2+2RN),其中 R 2 R^2 R2 是目标像素的数量, N N N 是采样数。在 RAD-NeRF [35] 中,通常设置 N = 16 N=16 N=16 和 R ≈ 256 R\approx256 R≈256,我们的表示理想情况下可以在模型大小相同的情况下将哈希碰撞减少 5 倍。这种减少使 MLP 解码器能够更加专注于处理音频特征,从而提高收敛速度和动态渲染质量。1
1 在补充材料中可以找到额外的描述和详细的讨论。
整体头部表示(Overall Head Representation)。MLP 解码器的输入包括 f x \mathbf{f}_\mathbf{x} fx、视角方向 d \mathbf{d} d 和包括音频特征的动态条件特征集 D \mathcal{D} D。三平面哈希表示的隐式函数可以表示为:
其中 H 3 : x → f x \mathcal{H}^3:\mathbf{x}\to \mathbf{f}_\mathbf{x} H3:x→fx 表示由等式 4 中的所有三个平面哈希编码器组成的三平面哈希编码器。
3.3. 区域注意模块
音频等动态条件很少对整个肖像产生同等影响。因此,了解这些条件如何影响肖像的不同区域对于生成自然的面部运动至关重要。许多先前的研究 [19, 24, 42] 在特征层面忽略了这一点,并使用一些昂贵的方法来隐式学习相关性。通过利用存储在哈希编码器中的多分辨率区域信息,我们引入了一种轻量级区域注意机制来明确获取动态特征与不同空间区域之间的关系。
区域注意机制。区域注意机制包括一个外部注意步骤来计算注意向量,以及一个跨模态通道注意步骤来重新加权。我们的目标是将动态条件特征与多分辨率几何特征 f x ∈ R N \mathbf{f}_\mathbf{x}\in \mathbb{R}^N fx∈RN 连接起来,后者由哈希编码器 H \mathcal{H} H 对空间点 x \mathbf{x} x 进行编码。然而,由于这个分层特征是通过连接构建的,因此在编码过程中不存在显式的信息流。
为了有效地提高不同级别 f x \mathbf{f}_\mathbf{x} fx 之间的区域信息交换,并通过注意向量的范数进一步区分音频对每个区域的重要性,我们使用一个两层 MLP 来捕捉空间的全局上下文。因此,它可以解释为外部注意机制 [18] 的形式,其中两个外部记忆单元 M k M_k Mk 和 M v M_v Mv 用于各个级别连接和自我条件查询:
其中向量 f x \mathbf{f}_\mathbf{x} fx 被视为矩阵 F ∈ R N × 1 F\in \mathbb{R}^{N\times 1} F∈RN×1。
然后,类似于 Hu et al. [22] 提出的通道注意机制,我们将得到的特征 V o u t ∈ R O × 1 V_{out}\in \mathbb{R}^{O\times 1} Vout∈RO×1 作为区域注意向量 v ∈ R O \mathbf{v}\in \mathbb{R}^O v∈RO,以对动态条件特征 q ∈ R O \mathbf{q}\in \mathbb{R}^O q∈RO 的每个通道进行重新加权。最后,输出特征向量为:
其中 ⊙ \odot ⊙ 表示 Hadamard 积。由于区域注意向量 v \mathbf{v} v 包含空间的信息多分辨率表示,因此每个通道上得到的区域感知特征 q o u t \mathbf{q}_{out} qout 与 x \mathbf{x} x 所在的层次区域相关。因此,多分辨率空间区域可以决定 q \mathbf{q} q 中的哪部分信息应该保留或增强。
语音音频。对于音频信号,给定查询坐标 x \mathbf{x} x 和音频特征 a ∈ R A \mathbf{a}\in \mathbb{R}^A a∈RA,我们通过三平面哈希表示的三平面哈希编码器 H 3 \mathcal{H}^3 H3 计算 x \mathbf{x} x 的几何特征。然后我们将其输入到两层 MLP 中,为具有相同通道数 A A A 的音频生成区域注意向量 v a , x ∈ R A \mathbf{v}_{a,\ \mathbf{x}}\in \mathbb{R}^A va, x∈RA。之后,通过 v a , x \mathbf{v}_{a,\ \mathbf{x}} va, x 将通道注意力应用于 a \mathbf{a} a:
在训练过程中,在随音频变化的区域中,注意力向量 v a , x \mathbf{v}_{a,\ \mathbf{x}} va, x 被优化以更好地利用音频特征 a \mathbf{a} a。相反,对于静态部分,音频条件被视为噪声, v a , x \mathbf{v}_{a,\ \mathbf{x}} va, x 将成为零向量以帮助去除无用信息。
眨眼。我们还应用了显式眨眼控制机制。我们使用标量来描述眨眼动作,并将其视为一维向量 e \mathbf{e} e。不同的是,眨眼的区域注意向量 v e ∈ R 1 \mathbf{v}_e\in \mathbb{R}^1 ve∈R1 由 sigmoid 层输出:
结果 e r , x \mathbf{e}_{r,\ \mathbf{x}} er, x 根据其几何位置由 v e , x \mathbf{v}_{e,\ \mathbf{x}} ve, x 缩放。在眼睛区域, e r , x \mathbf{e}_{r,\ \mathbf{x}} er, x 显著影响外观,并且接近 e \mathbf{e} e 以最大化其效果。否则,它趋向于变为 0 \mathbf{0} 0 以减少负面干扰。
3.4 训练细节
自适应姿势编码。为了解决头部-躯干分离问题,我们在之前的工作 [35, 43] 的基础上进行了改进。我们不直接使用整个图像或姿势矩阵作为条件,而是将头部姿势的复杂变换映射到具有更清晰位置信息的几个关键点的坐标中,并引导 torso-NeRF 从这些坐标中学习隐式躯干姿势。
编码过程非常简单。我们用可训练的齐次坐标 X k e y s ∈ R 4 × N \mathbf{X}_{keys}\in \mathbb{R}^{4\times N} Xkeys∈R4×N 初始化 3D 规范空间中的 N N N 个点,并应用头部姿势 P = ( R , t ) \mathbf{P}=\left(\mathbf{R},\ t\right) P=(R, t) 来变换关键点 X ^ k e y s = P − 1 X k e y s \hat{\mathbf{X}}_{keys}=\mathbf{P}^{−1}\mathbf{X}_{keys} X^keys=P−1Xkeys。然后我们将 X ^ k e y s \hat{\mathbf{X}}_{keys} X^keys 投影到图像平面 上并得到 2D 坐标 X ˉ k e y s ∈ R 2 × N \bar{\mathbf{X}}_{keys}\in\mathbf{R}^{2\times N} Xˉkeys∈R2×N ,这是调节躯干 NeRF 的最终编码结果。在这项工作中,我们使用 N = 3 N=3 N=3 和 2D 可变形神经场 [35] 来渲染躯干的像素颜色。1
从粗到精的优化。我们采用两阶段从粗到精的训练过程来获得更好的图像质量。在粗阶段,我们遵循 vanilla NeRF,对图像 I \mathcal{I} I 的预测颜色 C ^ ( r ) \hat{C}\left(\mathbf{r}\right) C^(r) 使用 MSE 损失:
由于 MSE 损失在优化尖锐细节方面存在弱点,因此我们应用 LPIPS 损失进行整体微调 [49]。与 RAD-NeRF [35] 类似,我们从整个图像中随机抽取一组块 P \mathcal{P} P,并将 LPIPS 损失与权重 λ \lambda λ 相结合以增强细节:
1在补充材料中可以找到额外的描述和详细的讨论。
4. 实验
4.1 实验设置
数据集。为了公平比较,我们实验的数据集来自公开发布的视频集 [19, 24, 29]。我们收集了四个高清说话视频片段,平均长度约为 6500 帧,帧率为 25 FPS。每个原始视频都裁剪并调整为 512 × 512,中间有一个肖像,但 AD-NeRF [19] 的视频除外,其大小为 450 × 450。使用预先训练的 DeepSpeech 模型从语音音频中提取基本音频特征。
比较基线。我们将我们的方法与最近的代表性单样本和针对特定人员的模型进行了比较,包括 Wav2Lip [28]、PC-AVS [51]、NVP [36]、LSP [25] 和 SynObama [34]。此外,我们还将我们的方法与三个基于端到端 NeRF 的模型进行了比较:AD-NeRF [19]、SSP-NeRF 和 RAD-NeRF [24]。此外,我们直接在 Ground Truth 上评估我们的方法,以提供更清晰的比较。
实施细节。我们在 PyTorch 上实现了我们的方法。对于特定的肖像,我们分别在粗阶段和细阶段对头部部分进行 100,000 次和 25,000 次迭代训练。在每次迭代中,我们从一幅图像中随机抽取一批 2562 条射线。每个 2D 哈希编码器设置为 L = 14 , F = 1 L=14,\ F=1 L=14, F=1,分辨率从 64 到 512。躯干部分单独训练另外 100,000 次迭代。我们对两个网络都使用 AdamW 优化器,哈希编码器的学习率为 0.01,其他模块的学习率为 0.001。对于眨眼的控制,我们选择 AU45 [13] 来描述动作的程度。所有实验均在单个 RTX 3080Ti GPU 上进行。头部和躯干的训练均需约 2 小时。
4.2 定量评估指标
我们使用峰值信噪比(PSNR)来测量整体图像质量,并使用学习感知图像块相似度(LPIPS)[49] 来测量细节。由于我们已经在训练期间使用了 LPIPS,为了进行公平比较,我们引入了额外的基于特征的损失 Fréchet Inception Distance(FID)[21] 来评估图像质量。我们还利用界标距离(LMD)[9] 和 SyncNet 置信度得分(Sync)[11, 12] 来进行唇部同步和动作单元误差(AUE)[2, 1] 来评估面部运动准确性。
比较设置。在定量评估中,我们关注头部的合成质量。我们的比较分为两种设置:1)头部重建设置,我们将每个视频分成训练和测试数据集,以评估特定肖像的头部重建质量。2)唇同步设置,我们使用未见过的视频的音轨来驱动所有唇同步比较方法。
对于第一个设置,我们使用第 4.1 节中描述的收集数据集中的所有视频,并将每个视频拆分为训练和评估。对于第二个设置,我们从 NVP 和 SynObama 的公开演示中提取两个音频片段,分别命名为测试集 A 和测试集 B。由于缺乏 NVP、SynObama 和 SSP-NeRF 的预训练模型和代码,我们还从发布的演示中获取它们生成的视频进行评估。遵循先前的研究 [19, 24, 35],我们在 AD-NeRF [19] 发布的 Obama 数据集上训练我们的方法和其他基线。对于每个生成的结果,我们将面部区域裁剪并重新缩放为相同大小,以便进行公平比较。
评估结果。头部重建设置和唇部同步设置的结果分别如表 1 和表 2 所示。可以观察到:(1)在头部重建设置中,我们的方法在视觉和唇部同步方面实现了最佳重建质量。虽然一次性方法(Wav2Lip 和 PC-AVS)在同步方面表现最佳,并且可以在不进行每个场景训练的情况下合成说话的头部,但它们在其他指标中的得分较差,这表明它们无法准确重建特定肖像。为了进行公平的比较,我们还将整体 LPIPS 微调和 AU45 [13] 应用于 RAD-NeRF,以增强其图像质量和眨眼,但对图像细节没有明显改善。我们的 ER-NeRF 在大多数指标中表现最佳,同时在同步方面达到比其他基线更高的分数。结果表明,我们的方法可以合成具有高唇部同步精度的逼真肖像。(2)在唇形同步设置下,我们的方法显示出出色的泛化能力,可以合成唇形同步说话肖像。AD-NeRF 和 SSP-NeRF 遇到过度平滑的唇部运动,导致 LMD 得分较高但 SyncNet 置信度较低。在基于 NeRF 的方法中获得最高 Sync 分数的同时,我们的方法在唇形同步方面超越了一些有代表性的基线。(3)我们的方法实现了实时推理,训练时间更快,模型尺寸更小。在表 1 中,我们报告了推理 FPS、模型大小和训练特定于人员的模型的时间成本。相比之下,我们的 ER-NeRF 在这三个指标中都取得了最佳性能,证明了其高效率。
4.3 定性评估
评估结果。为了直观地比较整个肖像,我们在图 5 中展示了剪辑的关键帧和四个肖像的细节。对于基于 NeRF 的方法,我们合成躯干部分来评估整个肖像。结果表明,我们的 ER-NeRF 渲染了更多细节,并且具有最高的个性化口型同步准确度。虽然 Wav2Lip 和 PC-AVS 在同步方面取得了高分,但它们生成的结果与真实情况有明显的差距。为了评估躯干部分,所有三种基于 NeRF 的方法都分别渲染躯干和头部。AD-NeRF 严重受到头部躯干分离的影响(黄色箭头),RAD-NeRF 的躯干有时也无法与头部对齐(红色箭头)。我们的方法与 RAD-NeRF 具有相同的躯干基本表示,由于采用了自适应姿势编码的设计,因此具有更高的鲁棒性和质量。
此外,我们还将结果与一些超出范围的姿势进行了比较,如图 6 所示。尽管修剪了大多数特征网格,但我们的方法在图像质量和结构准确性方面表现最佳,这意味着我们的三平面哈希表示具有鲁棒性和效率。
用户研究。我们进行了一项用户研究,以更好地判断生成的头部的视觉质量。我们从定量评估中抽取了 28 个生成的视频片段,并邀请 18 位与会者参与研究。评估采用平均意见分数(MOS)评分协议,与会者需要从三个方面对生成的视频进行评分:(1)口型同步准确性;(2)视频真实性;(3)图像质量。表 3 显示了每种方法的平均得分。我们的 ER-NeRF 在口型同步准确度和真实度方面表现最佳。对于图像质量,只有 SynObama [34] 的得分高于我们的方法,但该方法依赖于大量训练视频,无法实时渲染。结果显示了我们的方法在高保真说话肖像合成方面的出色视觉质量。
4.4 消融研究
在本节中,我们报告了头部重建设置下的消融研究,以证明我们两个主要贡献的有效性。我们测试了不同主干、动态特征集成方法和注意目标的设置。结果如表 4 和表 5 所示。表示。我们评估了三种表示主干对头部重建质量的影响。第一个是基于 MLP 的网络,与 AD-NeRF [19] 相同。对于基于网格的主干,我们将我们的三哈希表示与 EG3D [6] 中的纯三平面以及 RAD-NeRF [35] 中使用的 Instant-NGP [27] 3D 哈希网格进行了比较。由于我们专门的架构,所提出的三哈希表示实现了最佳图像质量,并显着改善了唇部同步。
区域注意模块。我们在两个主干上评估了区域注意机制,并与直接连接进行了比较。结果表明,我们的方法对建模精确运动具有巨大影响。请注意,仅通过现有主干使用我们的注意机制,我们可以在图像质量和唇部同步方面获得比当前最先进的方法更好的分数,同时训练时间减少一半,参数减少,这表明我们的注意机制非常高效。
注意类型。在表 5 中,我们比较了区域注意机制的三种注意类型:特征注意和通道注意。特征注意使用一维注意向量缩放整个音频特征,而通道注意重新加权每个通道,如第 3.3 节所述。通道注意的优异表现表明,所提出的区域注意机制成功捕捉到了空间区域的不同影响,并显着提高了唇部运动质量。
5. 道德考虑
我们希望我们的 ER-NeRF 能够增强互动体验并造福人类。然而,它可能会被滥用于某些恶意目的。作为我们责任的一部分,我们将分享我们生成的结果,以帮助开发更强大的深度伪造检测器。我们相信,负责任地使用这项技术可以促进机器学习研究和数字产业的健康发展。
6. 结论
在本文中,我们提出了一种高效且有效的框架 ER-NeRF,用于高质量的说话肖像合成,主要由三平面哈希表示和区域注意模块组成。我们的框架在更高的效率下实现了逼真的说话肖像合成的显着改进。由于篇幅限制,我们将讨论放在补充材料中。我们希望我们的工作能够造福人类,并激发更多新颖的条件 NeRF 技术。
致谢:本研究中,李嘉禾、张嘉伟和白晓得到了中国国家自然科学基金 (编号 62276016) 的资助,顾林得到了日本 JST Moonshot R&D 资助编号 JPMJMS2011 的资助。
参考文献
[1] Tadas Baltrušaitis, Marwa Mahmoud, and Peter Robinson. Cross-dataset learning and person-specific normalisation for automatic action unit detection. In 2015 11th IEEE In- ternational Conference and Workshops on Automatic Face and Gesture Recognition (FG), volume 6, pages 1–6. IEEE, 2015. 6
[2] TadasBaltrusaitis,AmirZadeh,YaoChongLim,andLouis- Philippe Morency. Openface 2.0: Facial behavior analysis toolkit. In 2018 13th IEEE international conference on au- tomatic face & gesture recognition (FG 2018), pages 59–66. IEEE, 2018. 6
[3] Matthew Brand. Voice puppetry. In Proceedings of the 26th annual conference on Computer graphics and interac- tive techniques, pages 21–28, 1999. 2
[4] Christoph Bregler, Michele Covell, and Malcolm Slaney. Video rewrite: Driving visual speech with audio. In Pro- ceedings of the 24th annual conference on Computer graph- ics and interactive techniques, pages 353–360, 1997. 2
[5] Ang Cao and Justin Johnson. Hexplane: A fast representa- tion for dynamic scenes. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 130–141, 2023. 1, 3
[6] EricRChan,ConnorZLin,MatthewAChan,KokiNagano, Boxiao Pan, Shalini De Mello, Orazio Gallo, Leonidas J Guibas, Jonathan Tremblay, Sameh Khamis, et al. Efficient geometry-aware 3d generative adversarial networks. In Pro- ceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 16123–16133, 2022. 1, 2, 3, 4, 8
[7] Aggelina Chatziagapi, ShahRukh Athar, Abhinav Jain, Ro- hith Mysore Vijaya Kumar, Vimal Bhat, and Dimitris Sama- ras. Lipnerf: What is the right feature space to lip-sync a nerf. In International Conference on Automatic Face and Gesture Recognition 2023, 2023. 1, 2
[8] Anpei Chen, Zexiang Xu, Andreas Geiger, Jingyi Yu, and Hao Su. Tensorf: Tensorial radiance fields. In Computer Vision–ECCV 2022: 17th European Conference, Tel Aviv, Is- rael, October 23–27, 2022, Proceedings, Part XXXII, pages 333–350. Springer, 2022. 1, 3
[9] Lele Chen, Zhiheng Li, Ross K Maddox, Zhiyao Duan, and Chenliang Xu. Lip movements generation at a glance. In Computer Vision–ECCV 2018: 15th European Conference, Munich, Germany, September 8–14, 2018, Proceedings, Part VII 15, pages 538–553. Springer, 2018. 6
[10] Lele Chen, Ross K Maddox, Zhiyao Duan, and Chenliang Xu. Hierarchical cross-modal talking face generation with dynamic pixel-wise loss. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 7832–7841, 2019. 1, 2
[11] Joon Son Chung and Andrew Zisserman. Lip reading in the wild. In Computer Vision–ACCV 2016: 13th Asian Con- ference on Computer Vision, Taipei, Taiwan, November 20- 24, 2016, Revised Selected Papers, Part II 13, pages 87–103. Springer, 2017. 6
[12] JoonSonChungandAndrewZisserman.Outoftime:Auto- mated lip sync in the wild. In Computer Vision–ACCV 2016 Workshops: ACCV 2016 International Workshops, Taipei, Taiwan, November 20-24, 2016, Revised Selected Papers, Part II 13, pages 251–263. Springer, 2017. 6
[13] Paul Ekman and Wallace V. Friesen. Facial Action Coding System: Manual. Palo Alto: Consulting Psychologists Press, 1978. 6, 7
[14] Tony Ezzat, Gadi Geiger, and Tomaso Poggio. Train- able videorealistic speech animation. ACM Transactions on Graphics (TOG), 21(3):388–398, 2002. 2
[15] Jiemin Fang, Taoran Yi, Xinggang Wang, Lingxi Xie, Xi- aopeng Zhang, Wenyu Liu, Matthias Nießner, and Qi Tian. Fast dynamic radiance fields with time-aware neural vox- els. In SIGGRAPH Asia 2022 Conference Papers, pages 1–9, 2022. 1, 3
[16] Sara Fridovich-Keil, Giacomo Meanti, Frederik Rahbæk Warburg, Benjamin Recht, and Angjoo Kanazawa. K-planes: Explicit radiance fields in space, time, and appearance. In Proceedings of the IEEE/CVF Conference on Computer Vi- sion and Pattern Recognition, pages 12479–12488, 2023. 1, 3
[17] Sara Fridovich-Keil, Alex Yu, Matthew Tancik, Qinhong Chen, Benjamin Recht, and Angjoo Kanazawa. Plenoxels: Radiance fields without neural networks. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 5501–5510, 2022. 3
[18] Meng-Hao Guo, Zheng-Ning Liu, Tai-Jiang Mu, and Shi- Min Hu. Beyond self-attention: External attention using two linear layers for visual tasks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2022. 5
[19] Yudong Guo, Keyu Chen, Sen Liang, Yong-Jin Liu, Hujun Bao, and Juyong Zhang. Ad-nerf: Audio driven neural ra- diance fields for talking head synthesis. In Proceedings of the IEEE/CVF International Conference on Computer Vi- sion, pages 5784–5794, 2021. 1, 2, 3, 4, 6, 7, 8
[20] Awni Hannun, Carl Case, Jared Casper, Bryan Catanzaro, Greg Diamos, Erich Elsen, Ryan Prenger, Sanjeev Satheesh, Shubho Sengupta, Adam Coates, et al. Deep speech: Scaling up end-to-end speech recognition. arXiv preprint arXiv:1412.5567, 2014. 4
[21] Martin Heusel, Hubert Ramsauer, Thomas Unterthiner, Bernhard Nessler, and Sepp Hochreiter. Gans trained by a two time-scale update rule converge to a local nash equilib- rium. Advances in neural information processing systems, 30, 2017. 6
[22] Jie Hu, Li Shen, and Gang Sun. Squeeze-and-excitation net- works. In Proceedings of the IEEE conference on computer vision and pattern recognition, pages 7132–7141, 2018. 5
[23] Amir Jamaludin, Joon Son Chung, and Andrew Zisserman. You said that?: Synthesising talking faces from audio. Inter- national Journal of Computer Vision, 127:1767–1779, 2019. 2
[24] Xian Liu, Yinghao Xu, Qianyi Wu, Hang Zhou, Wayne Wu, and Bolei Zhou. Semantic-aware implicit neural audio- driven video portrait generation. In Computer Vision–ECCV 2022: 17th European Conference, Tel Aviv, Israel, Octo- ber 23–27, 2022, Proceedings, Part XXXVII, pages 106–125. Springer, 2022. 1, 2, 3, 4, 6
[25] Yuanxun Lu, Jinxiang Chai, and Xun Cao. Live speech por- traits: Real-time photorealistic talking-head animation. ACM Trans. Graph., 40(6), dec 2021. 1, 2, 6, 7
[26] Ben Mildenhall, Pratul P Srinivasan, Matthew Tancik, Jonathan T Barron, Ravi Ramamoorthi, and Ren Ng. Nerf: Representing scenes as neural radiance fields for view syn- thesis. In European Conference on Computer Vision, pages 405–421. Springer, 2020. 1, 2, 3
[27] Thomas Müller, Alex Evans, Christoph Schied, and Alexan- der Keller. Instant neural graphics primitives with a mul- tiresolution hash encoding. ACM Transactions on Graphics (ToG), 41(4):1–15, 2022. 1, 2, 3, 4, 8
[28] KR Prajwal, Rudrabha Mukhopadhyay, Vinay P Nambood- iri, and CV Jawahar. A lip sync expert is all you need for speech to lip generation in the wild. In Proceedings of the 28th ACM International Conference on Multimedia, pages 484–492, 2020. 1, 2, 6, 7
[29] Shuai Shen, Wanhua Li, Zheng Zhu, Yueqi Duan, Jie Zhou, and Jiwen Lu. Learning dynamic facial radiance fields for few-shot talking head synthesis. In Computer Vision–ECCV 2022: 17th European Conference, Tel Aviv, Israel, Octo- ber 23–27, 2022, Proceedings, Part XII, pages 666–682. Springer, 2022. 1, 2, 6
[30] ShuaiShen,WenliangZhao,ZibinMeng,WanhuaLi,Zheng Zhu, Jie Zhou, and Jiwen Lu. Difftalk: Crafting diffusion models for generalized audio-driven portraits animation. In Proceedings of the IEEE/CVF Conference on Computer Vi- sion and Pattern Recognition, pages 1982–1991, 2023. 2
[31] Liangchen Song, Anpei Chen, Zhong Li, Zhang Chen, Lele Chen, Junsong Yuan, Yi Xu, and Andreas Geiger. Nerfplayer: A streamable dynamic scene representation with decomposed neural radiance fields. arXiv preprint arXiv:2210.15947, 2022. 3
[32] Michał Stypułkowski, Konstantinos Vougioukas, Sen He, Maciej Zie ̨ba, Stavros Petridis, and Maja Pantic. Diffused heads: Diffusion models beat gans on talking-face genera- tion. arXiv preprint arXiv:2301.03396, 2023. 2
[33] Cheng Sun, Min Sun, and Hwann-Tzong Chen. Direct voxel grid optimization: Super-fast convergence for radiance fields reconstruction. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 5459– 5469, 2022. 1, 3
[34] Supasorn Suwajanakorn, Steven M Seitz, and Ira Kemelmacher-Shlizerman. Synthesizing obama: learn- ing lip sync from audio. ACM Transactions on Graphics (ToG), 36(4):1–13, 2017. 6, 7, 8
[35] Jiaxiang Tang, Kaisiyuan Wang, Hang Zhou, Xiaokang Chen, Dongliang He, Tianshu Hu, Jingtuo Liu, Gang Zeng, and Jingdong Wang. Real-time neural radiance talking portrait synthesis via audio-spatial decomposition. arXiv preprint arXiv:2211.12368, 2022. 1, 2, 3, 4, 5, 6, 7, 8
[36] Justus Thies, Mohamed Elgharib, Ayush Tewari, Christian Theobalt, and Matthias Nießner. Neural voice puppetry: Audio-driven facial reenactment. In Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part XVI 16, pages 716–731. Springer, 2020. 1, 2, 6, 7
[37] Chen Wang, Xiang Wang, Jiawei Zhang, Liang Zhang, Xiao Bai, Xin Ning, Jun Zhou, and Edwin Hancock. Uncer- tainty estimation for stereo matching based on evidential deep learning. Pattern Recognition, 124:108498, 2022. 2
[38] Feng Wang, Sinan Tan, Xinghang Li, Zeyue Tian, and Huap- ing Liu. Mixed neural voxels for fast multi-view video syn- thesis. arXiv preprint arXiv:2212.00190, 2022. 3
[39] Kaisiyuan Wang, Qianyi Wu, Linsen Song, Zhuoqian Yang, Wayne Wu, Chen Qian, Ran He, Yu Qiao, and Chen Change Loy. Mead: A large-scale audio-visual dataset for emo- tional talking-face generation. In Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23– 28, 2020, Proceedings, Part XXI, pages 700–717. Springer, 2020. 2
[40] Xiang Wang, Chen Wang, Bing Liu, Xiaoqing Zhou, Liang Zhang, Jin Zheng, and Xiao Bai. Multi-view stereo in the deep learning era: A comprehensive review. Displays, 70:102102, 2021. 2
[41] Olivia Wiles, A Sophia Koepke, and Andrew Zisserman. X2face: A network for controlling face generation us- ing images, audio, and pose codes. In Computer Vision– ECCV 2018: 15th European Conference, Munich, Germany, September 8-14, 2018, Proceedings, Part XIII 15, pages 690–706. Springer, 2018. 2
[42] Shunyu Yao, RuiZhe Zhong, Yichao Yan, Guangtao Zhai, and Xiaokang Yang. Dfa-nerf: Personalized talking head generation via disentangled face attributes neural rendering. arXiv preprint arXiv:2201.00791, 2022. 1, 2, 4
[43] Zhenhui Ye, Ziyue Jiang, Yi Ren, Jinglin Liu, Jinzheng He, and Zhou Zhao. Geneface: Generalized and high-fidelity audio-driven 3d talking face synthesis. In The Eleventh In- ternational Conference on Learning Representations, 2022. 1,2,5
[44] Zhentao Yu, Zixin Yin, Deyu Zhou, Duomin Wang, Finn Wong, and Baoyuan Wang. Talking head generation with probabilistic audio-to-visual diffusion priors. arXiv preprint arXiv:2212.04248, 2022. 2
[45] Chenxu Zhang, Yifan Zhao, Yifei Huang, Ming Zeng, Saifeng Ni, Madhukar Budagavi, and Xiaohu Guo. Facial: Synthesizing dynamic talking face with implicit attribute learning. In Proceedings of the IEEE/CVF international con- ference on computer vision, pages 3867–3876, 2021. 1, 2
[46] He Zhang, Fan Li, Jianhui Zhao, Chao Tan, Dongming Shen, Yebin Liu, and Tao Yu. Controllable free viewpoint video reconstruction based on neural radiance fields and motion graphs. IEEE Transactions on Visualization and Computer Graphics, 2022. 3
[47] Jiawei Zhang, Xiang Wang, Xiao Bai, Chen Wang, Lei Huang, Yimin Chen, Lin Gu, Jun Zhou, Tatsuya Harada, and Edwin R Hancock. Revisiting domain generalized stereo matching networks from a feature consistency perspective. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 13001–13011, 2022. 2
[48] Pengcheng Zhang, Lei Zhou, Xiao Bai, Chen Wang, Jun Zhou, Liang Zhang, and Jin Zheng. Learning multi-view visual correspondences with self-supervision. Displays, 72:102160, 2022. 2
[49] Richard Zhang, Phillip Isola, Alexei A Efros, Eli Shecht- man, and Oliver Wang. The unreasonable effectiveness of deep features as a perceptual metric. In Proceedings of the IEEE conference on computer vision and pattern recogni- tion, pages 586–595, 2018. 5, 6
[50] Youmin Zhang, Yimin Chen, Xiao Bai, Suihanjin Yu, Kun Yu, Zhiwei Li, and Kuiyuan Yang. Adaptive unimodal cost volume filtering for deep stereo matching. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 34, pages 12926–12934, 2020. 2
[51] Hang Zhou, Yasheng Sun, Wayne Wu, Chen Change Loy, Xiaogang Wang, and Ziwei Liu. Pose-controllable talking face generation by implicitly modularized audio-visual rep- resentation. In Proceedings of the IEEE/CVF conference on computer vision and pattern recognition, pages 4176–4186, 2021. 1, 6, 7
[52] Yang Zhou, Xintong Han, Eli Shechtman, Jose Echevar- ria, Evangelos Kalogerakis, and Dingzeyu Li. Makelttalk: speaker-aware talking-head animation. ACM Transactions On Graphics (TOG), 39(6):1–15, 2020. 1
相关文章:
【AIGC】2023-ICCV-用于高保真语音肖像合成的高效区域感知神经辐射场
2023-ICCV-Efficient Region-Aware Neural Radiance Fields for High-Fidelity Talking Portrait Synthesis 用于高保真语音肖像合成的高效区域感知神经辐射场摘要1. 引言2. 相关工作3. 方法3.1 准备工作和问题设置3.2 三平面哈希表示3.3. 区域注意模块3.4 训练细节 4. 实验4.1…...
如何写一份优质技术文档
作者简介: 本文作者拥有区块链创新专利30,是元宇宙标准化工作组成员、香港web3标准工作组成员,参与编写《数据资产确权与交易安全评价标准》、《链接元宇宙:应用与实践》、《香港Web3.0标准化白皮书》等标准,下面提供…...
ML 系列:第 35 节 - 机器学习中的数据可视化
ML 系列:第 35 天 - 机器学习中的数据可视化 文章目录 一、说明二、数据可视化2.1 直方图2.2 箱线图2.3 散点图2.4 条形图2.5 线图2.6 热图 三、结尾 一、说明 描述性统计和数据可视化是理解和解释机器学习数据的基础。它们有助于总结和直观地呈现数据,…...
存储服务器一般做是做什么阵列?详细列举一下
存储服务器通常使用 RAID(Redundant Array of Independent Disks) 阵列技术来管理磁盘,以提高数据的性能、可靠性和可用性。所选择的 RAID 类型取决于存储服务器的具体用途和需求,比如性能要求、容量需求、容错能力等。 以下是存…...
uniapp使用扩展组件uni-data-select出现的问题汇总
前言 不知道大家有没有学习过我的这门课程那,《uniCloud云开发Vue3版本官方推荐用法》,这么课程已经得到了官方推荐,想要快速上手unicloud的小伙伴们,可以学习一下这么课程哦,不要忘了给一键三连呀。 在录制这门课程…...
pdf.js 预览pdf的时候发票数据缺失显示不全:字体加载出错(缺失)导致部分缺失
首先,排除后端返回的PDF文件流是没有问题的: 但是在vue项目中是这样的: 明显是显示不全,F12查看报错信息,有以下警告: pdf.js:2153 Warning: Error during font loading: The CMap “baseUrl” paramet…...
【设计模式】【结构型模式(Structural Patterns)】之外观模式(Facade Pattern)
1. 设计模式原理说明 外观模式(Facade Pattern) 是一种结构型设计模式,它提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。通过隐藏子系统的复杂…...
Redis使用场景-缓存-缓存穿透
前言 之前在针对实习面试的博文中讲到Redis在实际开发中的生产问题,其中缓存穿透、击穿、雪崩在面试中问的最频繁,本文加了图解,希望帮助你更直观的了解缓存穿透😀 (放出之前写的针对实习面试的关于Redis生产问题的博…...
介绍 Apache Spark 的基本概念和在大数据分析中的应用
Apache Spark 是一个开源的大数据处理框架,它提供了快速、通用、可扩展的数据处理能力。Spark可以处理大规模数据集,并且在内存中进行数据操作,从而实现高速的数据处理和分析。 Spark的核心概念是弹性分布式数据集(Resilient Dis…...
OpenCPN-插件之Dashboard Tactics
1:相关链接Dashboard Tactics :: OpenCPN Dashboard Tactics Plugin rgleason/dashboard_tactics_pi: OpenCPN dashboard built-in plugin merger with external tactics_pi plugin NMEAconverter :: OpenCPN 2:显示样式 3:代码 这个插件…...
【LeetCode面试150】——20有效的括号
博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...
JWT介绍和结合springboot项目实践(登录、注销授权认证管理)
目录 一、JWT介绍(一)基本介绍(二)jwt有哪些库1、jjwt(Java JWT)2、nimbus - jwt - jwt - api 和 nimbus - jwt - jwt - impl3、spring - security - jwt(已弃用,但在旧项目中有参考…...
Linux 下安装 Golang环境
Linux 下安装 Golang 获取Golang下载地址 安装 进入终端,登入root来到应用安装目录使用 wget 下载解压文件配置环境变量查看golang版本,测试是否配置成功GO设置代理环境变量 本篇教程 以 centos7 为环境基础 不使用软件包管理器安装,原因&am…...
「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。 关键词 UI互动应用数字滚动动画效果状态管理用户交…...
安装使用Ubuntu18.04超级大全集最初版(anaconda,pycharm,代理,c/c++环境)
本文介绍ubuntu1804中我目前用到的环境的完整配置,包括ubuntu安装软件,更新环境变量等都有涉及。图片非常多,能给的连接和材料都给了。希望能帮助到新同学。 目录 目录 目录 环境及镜像文件 安装Ubuntu 编辑 开机之后 编辑 更新…...
Redis设计与实现第16章 -- Sentinel 总结1(初始化、主从服务器获取信息、发送信息、接收信息)
Sentinel是Redis的高可用解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主…...
ChatGPT科研应用、论文写作、课题申报、数据分析与AI绘图
随着人工智能技术的飞速发展,ChatGPT等先进语言模型正深刻改变着科研工作的面貌。从科研灵感的激发、论文的高效撰写,到课题的成功申报,乃至复杂数据的深度分析与可视化呈现,AI技术均展现出前所未有的潜力。其实众多科研前沿工作者…...
OceanBase数据库系列之:基于docker快速安装OceanBase数据库,基于linux服务器快速部署OceanBase数据库
OceanBase数据库系列之:基于docker快速安装OceanBase数据库,基于linux服务器快速部署OceanBase数据库 一、docker快速安装OceanBase数据库下载OceanBase数据库镜像查看镜像启动OceanBase数据库查看OceanBase数据库是否启动成功 二、基于linux部署OceanBa…...
无星的微前端之旅(四)——qiankun线上服务代理到本地
这个方式其实是我在上家公司的时候体验过,觉得确实很有意思。 所以这里来逆推一下实现方式。 解决了什么痛点 1.开发一个模块,需要启动2-3个项目 在微前端的开发过程中,如果我们要在主应用中看效果,我们至少需要启动一个主应用&am…...
鸿蒙进阶篇-Stage模型、UIAbility
“在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。” 各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今…...
快速上手:如何开发一个实用的 Edge 插件
在日常浏览网页时,背景图片能够显著提升网页的视觉体验。如果你也想为自己的浏览器页面添加个性化背景图片,并希望背景图片设置能够持久保存,本文将介绍如何通过开发一个自定义Edge插件来实现这一功能。我们将涵盖保存背景设置到插件选项页&a…...
java缓存技术点介绍
1. 缓存(Cache): • 缓存是指用于存储数据的临时存储区域,以便快速访问。在Java中,缓存通常用于存储频繁访问的对象、结果集或其他数据。 2. 缓存命中率(Cache Hit Ratio): • 缓存命…...
【单片机毕业设计12-基于stm32c8t6的智能称重系统设计】
【单片机毕业设计12-基于stm32c8t6的智能称重系统设计】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 🔥这里是小殷学长,单片机毕业设计篇12-基于stm32c8t6的智能称重系统设计 🧿创作不易,拒绝白嫖可私 一、功能介绍 ----…...
音视频流媒体直播/点播系统EasyDSS互联网视频云平台介绍
随着互联网技术的飞速发展,音视频流媒体直播已成为现代社会信息传递与娱乐消费的重要组成部分。在这样的背景下,EasyDSS互联网视频云平台应运而生,它以高效、稳定、便捷的特性,为音视频流媒体直播领域带来了全新的解决方案。 1、产…...
3dtile平移子模型以及修改 3D Tiles 模型的模型矩阵z平移
第一段代码:应用平移变换到子模型 这段代码的目的是获取子模型的变换矩阵,并将其平移 10 个单位。 if (submodel) {// 获取当前子模型的变换矩阵let transform submodel.transform// 创建一个向上的平移矩阵,平移 10 个单位let translation…...
JavaScript中类数组对象及其与数组的关系
JavaScript中类数组对象及其与数组的关系 1. 什么是类数组对象? 类数组对象是指那些具有 length 属性且可以通过非负整数索引访问元素的对象。虽然这些对象看起来像数组,但它们并不具备真正数组的所有特性,例如没有继承 Array.prototype 上…...
【机器学习】机器学习学习笔记 - 监督学习 - 逻辑回归分类朴素贝叶斯分类支持向量机 SVM (可分类、可回归) - 04
逻辑回归分类 import numpy as np from sklearn import linear_modelX np.array([[4, 7], [3.5, 8], [3.1, 6.2], [0.5, 1], [1, 2], [1.2, 1.9], [6, 2], [5.7, 1.5], [5.4, 2.2]]) y np.array([0, 0, 0, 1, 1, 1, 2, 2, 2])# 逻辑回归分类器 # solver:求解器&a…...
Python脚本文件开头两行#!/usr/bin/python和# -*- coding: utf-8 -*-的作用
Linux环境下,Python脚本代码文件,比如test.py,文件的第一行一般要指定解释器,使用Linux的Shebang的形式指定,第二行一般指定编码格式。 首行指定解释器工具,使用方式如下: # 第1种方式&#x…...
使用PyQt5开发一个GUI程序的实例演示
一、安装Python 下载安装到这个目录 G:\Python38-32 安装完成有这些工具,后面备用: G:\Python38-32\Scripts\pyrcc5.exe G:\Python38-32\Scripts\pyuic5.exe 二、PyQt环境配置 pip install PyQt5 pip install pyqt5-tools 建议使用国内源,…...
3d扫描建模产品开发-三维扫描检测蓝光检测
现当下,汽车制造、航空航天,还是消费电子、医疗器械,三维扫描检测与蓝光技术正以前所未有的精度和效率,推动着产品从概念到实物的快速转化。 三维扫描技术,简而言之,就是通过激光、结构光(如蓝…...
多线程——01
1. 进程/任务 process/task 进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程 每个进程想要执行,都需要消耗一定的系统资源(硬件资源) 1)进程在系统中的作用 a…...
Makefile中-D选项定义预编译处理宏
1.简单示例假设我们有一个简单的 C 程序main.c,内容如下: #include <stdio.h> #ifdef DEBUGvoid print_debug_info() {printf("This is debug information.\n");} #elsevoid print_debug_info() {} #endif int main() {print_debug_info();printf("Prog…...
NAPI杂记
NAPI和tasklet区别:NAPI是利用的软中断NET_RX_SOFTIRQ实现, tasklet是利用TASKLET_SOFTIRQ实现 另外文章说NAPI主要是采用轮询,可以减少中断触发次数。do_softirq里面是开中断执行的啊? 中断处理函数关闭中断开始处理。如果此时…...
006 MATLAB编程基础
01 M文件 MATLAB输入命令有两种方法: 一是在MATLAB主窗口逐行输入命令,每个命令之间用分号或逗号分隔,每行可包含多个命令。 二是将命令组织成一个命令语句文集,使用扩展名“.m”,称为M文件。它由一系列的命令和语句…...
使用Alpine镜像作为基础镜像的Dockerfile配置
配置阿里 apk源: /etc/apk/repositories: https://mirrors.aliyun.com/alpine/v3.13/main alpine-v3.13-community安装包下载_开源镜像站-阿里云 或者使用命令 sed -i sdl-cdn.alpinelinux.orgmirrors.aliyun.comg /etc/apk/repositories dockerfil…...
RAG (Retrieval Augmented Generation) 检索增强和生成
1 RAG技术简介 1.1 RAG技术概述 RAG(Retrieval Augmented Generation) 是一种结合了检索(Retrieval)和生成(Generation)的技术,旨在通过利用外部知识库来增强大型语言模型(LLMs&am…...
Figma入门-约束与对齐
Figma入门-约束与对齐 前言 在之前的工作中,大家的原型图都是使用 Axure 制作的,印象中 Figma 一直是个专业设计软件。 最近,很多产品朋友告诉我,很多原型图都开始用Figma制作了,并且很多组件都是内置的,…...
039集——渐变色之:CAD中画彩虹()(CAD—C#二次开发入门)
(来左边儿 跟我一起画个龙,在你右边儿 画一道彩虹 ~~~~~~~~~~~ ) 效果如下: namespace AcTools {public class Class1{public Wform.Timer timer;//定时器需建在类下面public static DateTime startTime;[CommandM…...
MTK主板_小型联发科安卓主板_行业智能终端主板基于联发科方案
MTK安卓主板是一款小巧而高效的科技产品,其尺寸仅为43.4mm x 57.6mm。采用了先进的联发科12nm制程工艺,这款主板搭载四核或八核64位A53架构的CPU,主频高达2.0GHz,不但保证了出色的计算能力,还实现了超低功耗的特点。系…...
Arrays.copyOfRange(),System.arraycopy() 数组复制,数组扩容
Arrays.copyOfRange() 当需要将数组中的 长度扩容时, 数组复制 使用 需要用到Arrays 类提供的的 参数解析 * param original the array from which a range is to be copied * param from the initial index of the range to be copied, inclusive * param to the final ind…...
Docker for Everyone Plus——No Enough Privilege
直接告诉我们flag在/flag中,访问第一小题: sudo -l查看允许提权执行的命令: 发现有image load命令 题目指明了有rz命令,可以用ZMODEM接收文件,看到一些write up说可以用XShell、MobaXterm、Tabby Terminal等软件连接上…...
ElasticSearch学习笔记把:Springboot整合ES(二)
一、前言 上一篇文章中我们学习了ES中的Term级别的查询,包括 term、terms、terms_set、rang等,今天我们使用Java代码实现一遍上述的查询。 二、项目依赖 POM <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…...
Linux系统之iotop命令的基本使用
Linux系统之iotop命令的基本使用 一、iotop命令介绍二、iotop命令的使用帮助2.1 安装iotop2.2 iotop命令help帮助信息2.3 iotop命令选项解释 三、 iotop命令的基本使用四、iotop使用注意事项 一、iotop命令介绍 iotop 是一个类似于 top 的命令行工具,但它专注于显示…...
根据合约地址判断合约协议的方法
判断合约协议之前,需要了解一下什么是ERC165协议: ERC165 是以太坊中用于标准化接口检测的协议,由 Fabian Vogelsteller 在 2018 年创建 ,其核心内容主要包括以下方面: 接口定义 单一函数接口:ERC165 协议…...
什么是sfp,onu,为什么PON(俗称“光猫”)模块使用SC光纤接口
在现代网络设备中,我们经常会看到SFP或SFP接口的身影,这些接口有时被简称为光口,但这个称呼并不严谨。有些厂商则称之为多功能口或多用途口,然而这对于不了解的人来说可能还是一头雾水。SFP,即Small Form-Factor Plugg…...
链表?->?(以尾插法说明,附头插法)
这篇文章做一些关于初学链表的一些问题的解答。 我知道有些朋友只是需要一份完整的关于链表的代码,我会附在后面,大家直接划到最后就好。 一、创建链表 (1 相信所有搜索过链表创建的朋友都看过这样一行: struct Line* head (struct Line…...
11.29周五F34-Day10打卡
文章目录 1. 问问他能不能来。解析答案:【解析答案分析】【对比分析】【拓展内容】2. 问题是他能不能做。解析答案:【解析答案分析】3. 问题是我们能否联系得上她。(什么关系?动作 or 描述?)解析答案:【解析答案分析】【对比分析】4. 我们在讨论是否要开一个会。解析答案:…...
【项目日记】仿mudou的高并发服务器 --- 实现HTTP服务器
对于生命,你不妨大胆一点, 因为我们始终要失去它。 --- 尼采 --- ✨✨✨项目地址在这里 ✨✨✨ ✨✨✨https://gitee.com/penggli_2_0/TcpServer✨✨✨ 仿mudou的高并发服务器 1 前言2 Util工具类3 HTTP协议3.1 HTTP请求3.2 HTTP应答 4 上下文解析模块…...
【SpringBoot问题】IDEA中用Service窗口展示所有服务及端口的办法
1、调出Service窗口 打开View→Tool Windows→Service,即可显示。 2、正常情况应该已经出现SpringBoot,如下图请继续第三步 3、配置Service窗口的项目启动类型。微服务一般是Springboot类型。所以这里需要选择一下。 点击最后一个号,点击Ru…...
Ubuntu20.04运行LARVIO
文章目录 1.运行 Toyish 示例程序2.运行 ROS Nodelet参考 1.运行 Toyish 示例程序 LARVIO 提供了一个简化的toyish示例程序,适合快速验证和测试。 编译项目 进入 build 文件夹并通过 CMake 编译项目: mkdir build cd build cmake -D CMAKE_BUILD_TYPER…...