【论文解读】基于神经辐射场NeRF的像素级交互式编辑(Seal-3D)

来源:投稿 作者:橡皮
编辑:学姐

论文链接:https://arxiv.org/pdf/2307.15131

项目主页:https://windingwind.github.io/seal-3d/

摘要:

随着隐式神经表征或神经辐射场(NeRF)的普及,人们迫切需要与隐式三维模型交互的编辑方法,以完成重建场景的后期处理和三维内容创建等任务。虽然以前的作品从不同角度探索了神经辐射场编辑,但它们在编辑灵活性、质量和速度方面受到限制,无法提供直接的编辑响应和即时预览。关键的挑战在于如何构想一种本地可编辑的神经表征,它能直接反映编辑指令并即时更新。为了弥补这一缺陷,我们提出了一种新的隐式表征交互式编辑方法和系统,称为 Seal-3D 1,它允许用户以像素级和自由的方式编辑 NeRF 模型,并可使用各种类似 NeRF 的骨干,还能即时预览编辑效果。为了实现这些效果,我们提出了将编辑指令映射到 NeRF 模型原始空间的代理函数,以及具有局部预训练和全局微调功能的师生训练策略。我们建立了一个 NeRF 编辑系统来展示各种编辑类型。我们的系统能以约 1 秒的交互速度实现引人注目的编辑效果。

图 1:Seal-3D:首个交互式像素级 NeRF 编辑工具。我们设计了一种交互式用户编辑方法和系统 Seal-3D,通过新颖的预训练策略实现即时(≈1 秒)预览(左图)。通过短时间(1 到 2 分钟)的微调,可以进一步获得高质量的编辑结果。我们所实现的编辑工具(右图)的编辑结果与原始表面(左图)上丰富的阴影细节(如阴影)一致。")

1.引言

隐式神经表征,如神经辐射场(NeRF),作为利用神经网络对三维场景进行建模的新型三维表征,受到越来越多的关注。NeRF 及其变体得益于较高的重建精度和渲染质量以及相对较低的内存消耗,已在三维重建、新颖视图合成和虚拟/增强现实等许多三维应用中展现出巨大潜力。

随着新的隐式表示法的普及和隐式三维模型数量的不断增加,人们迫切地需要便于人类使用的编辑工具来与这些三维模型进行交互。使用隐式神经表征进行编辑是全面增强表征能力所需的一项基本技术。由于采集数据的噪声和重建算法的局限性,从真实世界重建的物体很可能包含人工痕迹。在典型的三维扫描流程中,手动校正和细化以去除伪影是常见的阶段。另一方面,在 3D 游戏、动画和拍摄等 3D 内容创建应用中,艺术家通常需要根据现有 3D 模型创建新内容。

之前的工作已经尝试编辑 NeRF 表示的三维场景,包括对象分割 、对象移除 、外观编辑和对象混合等。这些现有的 NeRF 编辑方法主要侧重于粗粒度的对象级编辑,收敛速度无法满足交互式编辑的需求。最近的一些方法通过引入网格作为编辑代理,将 NeRF 编辑转化为网格编辑。这就要求用户在额外的网格工具上进行操作,从而限制了交互性和用户友好性。据我们所知,目前还没有一种方法能够支持以快速收敛速度对神经辐射场进行交互式像素级编辑,这主要是由于下面讨论的挑战所造成的.

现有的显式三维表示法(如点云、纹理网格和占位体积)存储了物体和场景的显式几何结构,与之不同的是,隐式表示法使用神经网络来查询三维场景的特征,包括几何和颜色。以基于网格的表征为例,现有的三维编辑方法可以通过移动与目标对象表面区域和对象纹理相对应的顶点来改变对象的几何形状。由于视觉效果和底层表示之间没有明确的可解释的对应关系,因此编辑隐式三维模型是间接和具有挑战性的。此外,很难在场景的局部区域找到隐式网络参数,这意味着网络参数的调整可能会导致不希望发生的全局变化。这给精细编辑带来了更多挑战。

为了弥补这一差距,我们在本文中提出了一种用于三维场景隐式神经表征的交互式像素级编辑方法和系统,并将其命名为 Seal-3D。这个名称借用了流行的二维图像编辑软件 Adobe PhotoShop,因为它的封印工具提供了类似的编辑操作。如图 1 所示,该编辑系统由四种编辑方式组成: 1) 边框工具。它可以变换和缩放边界框内的事物,就像复制粘贴操作一样。2) 画笔工具。它可以在选定的区域涂上指定的颜色,还可以增加或减少表面高度,就像油画笔或画笔一样。3) 锚点工具。它允许用户自由移动控制点,并根据用户输入影响其邻近空间。4) 颜色工具。它可以编辑对象表面的颜色。

为了实现交互式 NeRF 编辑效果,我们解决了上述隐式表征的难题。首先,为了建立显式编辑指令与隐式网络参数更新之间的对应关系,我们提出了一种代理函数,将目标三维空间(由交互式图形用户界面中的用户编辑指令确定)映射到原始三维场景空间,并提出了一种师生提炼策略,利用代理函数从原始场景中获取的相应内容监督来更新参数。其次,为了实现局部编辑,即在非局部隐式表征下减轻局部编辑效应对全局三维场景的影响,我们提出了一个两阶段的训练过程:预训练阶段仅对编辑区域的位置嵌入网格进行局部损失更新,同时冻结后续的 MLP 解码器以防止全局退化;微调阶段对嵌入网格和 MLP 解码器进行全局光度损失更新。通过这种设计,预训练阶段更新局部编辑特征,微调阶段将局部编辑区域与未编辑空间的全局结构和颜色相融合,以实现视图一致性。这种设计的好处是可以即时预览编辑效果:预训练可以快速收敛,并在大约 1 秒钟内呈现局部编辑效果。

总之,我们的贡献如下:

  • 我们首次提出了针对神经辐射场的交互式像素级编辑方法和系统,其中体现了多种类型的细粒度编辑工具,包括几何(边界框工具、画笔工具和锚点工具)和颜色编辑;

  • 我们提出了一个代理函数来建立显式编辑指令与隐式网络参数更新之间的对应关系,并提出了一种师生提炼策略来更新参数;

  • 我们提出了一种两阶段训练策略,以便在不污染全局三维场景的情况下即时预览局部细粒度编辑。

2.方法

图 2:编辑框架示意图。左图:用户编辑后,目标空间的三维点和视角方向被映射到原始源空间,从而从教师模型 f T θ 中获得指导ct、σt,用于学生训练。右图:学生训练包括两个阶段:快速预训练,通过局部损失更新网络部分参数和全局损失进行微调,提供即时预览。

我们介绍了神经辐射场的交互式像素级编辑方法 Seal-3D。整个流程如图 2 所示,由像素级代理映射功能、师生训练框架和框架下学生 NeRF 网络的两阶段训练策略组成。我们的编辑工作流程从代理功能开始,该功能根据用户指定的编辑规则映射查询点和射线方向。然后是一个从 NeRF 到 NeRF 的教师-学生提炼框架,在这个框架中,具有几何和颜色编辑映射规则的教师模型监督学生模型的训练(第 3.2 节)。交互式精细编辑的关键是对学生模型进行两阶段训练(第 3.3 节)。在额外的预训练阶段,教师模型中的点数、射线方向和编辑空间内的推断地面实况会被采样、计算和缓存;只有具有局部性的参数会被更新,而导致全局变化的参数会被冻结。在预训练阶段之后,通过全局训练阶段对学生模型进行微调。

2.1 基于 NeRF 的编辑问题概述

我们首先简要介绍了神经辐射场,然后分析了基于神经辐射场的编辑问题所面临的挑战以及现有解决方案的局限性。

2.1.1 NeRF 预备知识

神经辐射场 (NeRF) 以 5D 函数的形式对三维场景进行隐式表示:f : (x, y, z, θ, φ) ̹→ (c, σ),其中 x = (x, y, z) 是三维位置,d = (θ, ϕ) 是视角方向,c 和 σ 分别表示颜色和体积密度。5D 函数的典型参数是 MLP fθ。

要渲染一个图像像素,需要根据摄像机的内在和外在特性,从摄像机位置 o 出发,经过像素中心,射出一条方向为 d 的射线 r。K 个点 xi = o + tid,i = 1, 2, . 沿射线对 K 个点进行采样,并通过网络 fθ 查询其对应的颜色和密度:

随后,通过体积渲染计算出预测的像素颜色 ˆC(r) 和深度值 ˆD(r):

其中,αi 是混合时的α值,Ti 是累积透射率,δi = ti+1 - ti 是相邻点之间的距离。NeRF 的训练方法是尽量减少像素预测颜色与地面真实颜色之间的光度损失。

在本文中,我们在 Instant-NGP的基础上构建了交互式 NeRF 编辑系统,该系统实现了近乎实时的 NeRF 渲染性能。虽然我们的即时交互式编辑实现依赖于 NeRF 的混合表示法,以达到最佳的速度性能,但我们提出的编辑框架并不依赖于特定的 NeRF 骨干,只要遵循上述体积渲染流水线,就可以移植到其他框架中。

2.1.2 基于 NeRF 编辑的挑战

类似 NeRF 的方法可实现最先进的场景重建质量。然而,三维场景是由网络参数隐式表示的,缺乏可解释性,难以操作。在场景编辑方面,很难找到显式编辑指令与隐式网络参数更新之间的映射关系。以前的作品试图通过几种限制性方法来解决这个问题:

NeRF-Editing和NeuMesh引入了网格支架作为几何代理来辅助编辑,从而将 NeRF 编辑任务简化为网格修改。虽然与现有的基于网格的编辑方法一致,但编辑过程需要提取额外的网格,非常麻烦。此外,编辑后的几何图形高度依赖于网格代理结构,因此难以编辑不容易或无法用网格表示的空间,而表示这些空间是隐式表示的一个主要特征。Liu 等人设计了额外的颜色和形状损失来监督编辑。然而,他们设计的损耗仅在二维光度空间中,这限制了三维 NeRF 模型的编辑能力。此外,他们的方法只支持简单对象中语义连续几何图形的编辑,而不支持任意像素级的复杂编辑。此外,据我们所知,现有方法还没有实现质量和速度兼顾的交互式编辑性能。Liu 等人[19]是现有方法中唯一能在一分钟内完成优化的方法(根据他们的论文,需要 37.4 秒),但他们的方法只支持极其简单的对象,而且不支持细粒度的局部编辑(详见图 10)。其他编辑方法(如 NeuMesh)通常需要数小时的网络优化才能获得编辑结果。

在本文中,我们实现了一个交互式像素级编辑系统,使用与传统显式三维表示编辑类似的编辑策略,可以轻松扩展到新的编辑类型。我们的方法不需要任何显式代理结构(取而代之的是代理函数,见第 3.2 节),无需显式几何代理即可定义各种像素级编辑效果。它还能实现即时预览(≈1 秒)(见第 3.3 节)。表格 1 比较了我们的方法和之前方法的编辑功能。

表 1:与最新方法在编辑能力方面的比较。我们的方法支持任意编辑,不需要任何显式几何代理,并能在数秒内实现交互式编辑。

2.2. 编辑生成指导

我们的设计将 NeRF 编辑作为一个知识提炼过程来实现。给定一个适合特定场景的预训练 NeRF 网络作为教师网络,我们用预训练的权重初始化一个额外的 NeRF 网络作为学生网络。教师网络 f T θ 根据用户输入的编辑指令生成编辑指导,而学生网络 f S θ 则通过从教师网络输出的编辑指导中提炼编辑知识进行优化。本小节将介绍学生模型监督的编辑指导生成,并在图 2 左侧进行说明。

首先,用户编辑指令作为像素级信息从交互式 NeRF 编辑器中读取。源空间 S ⊂ R 3 是原始 NeRF 模型的三维空间,目标空间 T ⊂ R 3 是编辑后 NeRF 模型的三维空间。目标空间 T 通过 F m : T ̹→ S 扭曲为原始空间 S。F m 根据下文举例说明的编辑规则变换目标空间内的点及其相关方向。利用该函数,可以通过查询教师 NeRF 模型 f T θ 来获取目标空间中每个三维点和视图方向的 "伪 "预期编辑效果 c T、σT:转换后的(源空间中的)点和方向被输入教师网络,从而获得颜色和密度。这一过程可表示为:

其中,x s , d s 表示源空间点的位置和方向,x t , d t 表示目标空间点的位置和方向。

为简洁起见,我们将整个过程定义为教师推理过程 F t := f T θ ◦ F m : (x t , d t ) ̹→ (c T , σT ) 。推理结果 c T , σT 模拟编辑后的场景并作为教师标签,其信息随后由学生网络在网络优化阶段进行提炼。

F m 的映射规则可根据任意编辑目标进行设计。具体来说,我们以 4 种编辑方式为例进行说明。

  • 边界形状工具,支持传统三维编辑软件的常见功能,包括复制粘贴、旋转和调整大小。用户提供一个边界形状来表示要编辑的原始空间 S,并旋转、平移和缩放边界框来表示目标效果。然后,我们的界面会解析目标空间 T 和映射函数 F m:

其中,R 为旋转,S 为比例,c s , c t 分别为 S、T 的中心。

有了这个工具,我们甚至可以支持跨场景对象转移,方法是将转移对象的 NeRF 作为额外的教师网络,负责目标区域内的部分教师推理过程。我们在图 7 中给出了结果。

  • 画笔工具,类似于传统 3D 编辑中的雕刻笔刷,可提升或降低绘制的表面。用户使用画笔涂鸦,S 是通过光线投射在刷过的像素上生成的。画笔法线 n 和压力值 p(-) ∈ [0, 1] 由用户定义,这决定了映射:

  • 锚定工具, 其中,用户定义了一个控制点 x c 和一个平移矢量 t。x c 周围的区域将被平移函数 stretch(-; x c , t)拉伸。那么这个映射就是它的逆映射:

关于 stretch(-; x c , t) 的明确表达式,请参阅补充材料。

  • 色彩工具,通过色彩空间映射(单一色彩或纹理)编辑色彩。在这里,空间映射是相同的,我们直接将网络输出的色彩映射到 HSL 空间,这有助于色彩的一致性。我们的方法能够保留修改后表面的阴影细节(如阴影)。我们通过将原始表面颜色的亮度(HSL 空间)偏移转移到目标表面颜色来实现这一点。有关这一阴影保留策略的实施细节,请参阅补充资料。

2.3 即时预览的两阶段学生训练

就蒸馏训练策略而言,学生模型 f S θ 是在上述教师推理过程 F t 生成的伪地面真值的监督下进行优化的。通过直接应用公式(2)中由教师推理和学生推理积累的像素值 ˆC、ˆD 之间的光度损失,将来自教师模型的编辑指导提炼到学生模型中。

然而,我们发现这一训练过程的收敛速度较慢(≈30 秒或更长),无法满足即时预览的需要。为了解决这个问题,我们设计了一种两阶段训练策略:第一阶段的目标是即时收敛(1 秒内),以便将粗略的编辑结果作为预览立即呈现给用户;第二阶段则对粗略预览进行进一步细化,以获得最终的细化结果。

图 3:画笔编辑示例: 使用颜色和厚度进行 3D 绘图。

图 4:边界形状编辑示例:灯泡缩放。

局部预训练,即时预览。 通常,与整个场景相比,编辑空间相对较小,因此对全局光度损失进行训练会造成浪费,并导致收敛缓慢。为了实现编辑的即时预览,我们在全局训练开始前采用了局部预训练阶段。局部预训练过程包括 1) 对目标空间内的一组局部点 X ⊂ T 和单位球面上的一组方向 D 进行均匀采样,并将其输入到教师推理过程 F t 中,以获得教师标签 c T、σT,并提前将其缓存;2) 通过局部相关损失 Llocal 对学生网络进行训练:

其中,c S、σS 是学生网络预测的取样点 x∈X 的颜色和密度,c T、σT 是缓存的教师标签。这个预训练阶段非常快:只需约 1 秒钟的优化,学生网络渲染的图像就能显示出与编辑指令一致的合理颜色和形状。

然而,由于非本地隐式神经网络的存在,只对编辑区域的局部点进行训练可能会导致与编辑无关的其他全局区域退化。我们注意到,在混合隐式表示法(如 Instant-NGP)中,局部信息主要存储在位置嵌入网格中,而随后的 MLP 则对全局信息进行解码。因此,在这一阶段,MLP 解码器的所有参数都被冻结,以防止全局退化。实验说明将在第 4.3 节和图 12 中介绍。

全局微调。 预训练结束后,我们继续对 f S θ 进行微调,将粗预览细化为完全收敛的结果。这一阶段与标准的 NeRF 训练类似,只是监督标签是由教师推理过程生成的,而不是图像像素。

其中,R 表示迷你批中的采样射线集,( ˆC T , ˆDT ),( ˆC S, ˆDS) 分别根据公式 (2) 沿着射线 r 按 (c T , σT ),(c S, σS) 进行累积。

值得一提的是,学生网络能够生成比教师网络质量更高的结果。这是因为教师推理过程中的映射操作可能会在伪地面真值中产生一些与视图不一致的伪影。但是,在蒸馏过程中,学生网络可以自动消除这些伪影,这是因为多视图训练可以增强视图一致性的鲁棒性。详见第 4.2 节和图 6。

3.实验和分析

图 5:锚点编辑示例:假牙。

3.1 实现细节

训练。 我们选择 Instant-NGP作为编辑框架 NeRF 骨干。我们的实现基于开源 PyTorch 实现 torchngp。所有实验均在一个 NVIDIA RTX 3090 GPU 上运行。请注意,我们对原始网络架构稍作修改。详情请参见补充材料。

在预训练阶段,我们设置 λ1 = λ2 = 1,学习率固定为 0.05。在微调阶段,我们设置 λ3 = λ4 = 1,初始学习率为 0.01。从一个预训练的 NeRF 模型开始,我们进行了 50100 个历元的局部预训练(约 0.5-1 秒)和约 50 个历元的全局微调(约 40-60 秒)。可以根据编辑类型和场景的复杂程度调整历元数和耗时。请注意,我们是在没有使用 tiny-cuda-nn的情况下测试我们的性能的,而 tiny-cuda-nn 的速度优于我们的主干系统,这表明我们的性能还有进一步优化的空间。

3.2 实验结果

图 6:真实场景编辑示例:大拇指向上到向下(DTU Scan 83)。

图 7:对象转移编辑示例:从乐高场景(NeRF Blender)到家庭场景(Tanks and Temples)。

定性 NeRF 编辑结果。 我们提供了我们设计的各种编辑类别的大量实验结果,包括边界形状(图 4 和图 6)、刷洗(图 3)、锚点(图 5)和颜色(图 1)。我们的方法不仅实现了性能的大幅提升,支持第二级即时预览,还能产生更逼真的编辑外观,如图 3 中抬起面的阴影效果和图 8 中凹凸面的阴影效果。此外,学生网络生成的结果甚至会优于教师标签,例如图 6 中的 F t 输出由于视图不一致而包含浮动伪影。正如第 3.3 节所分析的,蒸馏过程设法消除了这一问题。我们还提供了一个对象转移的示例(图 7):乐高场景(Blender 数据集)中的灯泡被转移到了坦克和寺庙数据集家庭场景中孩子的头部。

图 8:NeuMesh与我们的方法在纹理/颜色绘制方面的比较。请注意,NeuMesh 需要数小时的微调,而我们的方法只需要几秒钟。

图 9:NeuMesh与我们的方法在质量和数量上的比较。PSNR 是根据编辑结果和应用相同编辑的地面真实网格的渲染结果计算得出的。

图 10:基线与我们的比较。

与基准比较。 现有方法对编辑类型有严格限制,主要集中在几何图形编辑或外观编辑,而我们的方法能同时进行这两种编辑。我们的 "刷 "和 "锚 "工具可以创建用户引导的代理外几何结构,而现有方法都不支持这种功能。我们对 NeuMesh和 Liu 等人所支持的颜色和纹理绘制进行了比较。

图 8 展示了我们的方法与 NeuMesh在涂鸦和纹理绘画任务中的两个比较。我们的方法明显优于 NeuMesh,后者在结果中存在明显的色彩偏差和人工痕迹。相比之下,我们的方法甚至能成功呈现几何凹凸造成的阴影效果。

图 9 展示了对来自 NeRF Blender的 Mic 进行同样的非刚性混合的结果。这清楚地表明:1)非刚性编辑可以在我们的框架中轻松实现。

其中,R、t 是根据预先定义的三维混合控制网格的三个最近坐标的变换矩阵插值而成,每个控制点都有位置和变换。2) 由于无网格,我们比 NeuMesh拥有更多的细节,不受网格分辨率的限制。

在图 10 中,我们还将我们的方法与 Liu 等人的方法进行了比较。在他们的论文中,Liu 等人的方法只支持无纹理的简单物体,但在我们的论文实验中,他们的方法在处理更复杂的物体时却失效了。他们的方法会导致编辑对象的整体色彩恶化,这是非常不利的。这是因为他们的潜在代码只模拟了场景的整体色彩特征,而不是细粒度的局部特征。相反,我们的方法由于采用了局部感知嵌入网格,因此支持细粒度的局部编辑。

图 11:两阶段训练策略的消融研究。放大查看 "无微调 "的细节。

图 12:MLP 固定的消融研究。

3.4消融研究

两阶段训练策略的效果。为了验证预训练和微调策略的有效性,我们在图 11 中对完整策略(第 3 行)、纯微调策略(第 1 行)和纯预训练策略(第 2 行)进行了比较。我们的预训练只需 1 秒钟就能产生粗略的结果,而光度微调在如此短的时间内几乎无法改变外观。预训练阶段还能加强后续的微调,在 30 秒内,我们的完整策略就能产生更完整的结果。不过,预训练也有局部过拟合和全局退化的副作用。因此,我们的两阶段策略在两者之间取得了很好的平衡,并产生了最佳结果。

在预训练阶段固定 MLP。在图 12 中,我们验证了在预训练阶段固定所有 MLP 参数的设计。结果证实了我们的分析,即 MLP 主要包含全局信息,因此如果不固定 MLP 解码器,就会导致全局退化。

4.结论

我们介绍了一种支持即时预览的神经辐射场像素级编辑交互框架。具体来说,我们利用师生提炼法提供编辑指导,并设计了一种两阶段训练策略来实现网络的即时收敛,从而获得粗略结果作为预览。与以往的研究不同,我们的方法不需要任何显式代理(如网格),从而提高了交互性和用户友好性。我们的方法还支持保留编辑表面的阴影效果。一个局限是,我们的方法不支持复杂的视图照明效果,如镜面反射,也不能改变场景光照,这可以通过引入内在分解来改进。此外,我们的方法无法处理原始 NeRF 网络的重建失败(如浮动伪影)。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“NeRF”获取全部118篇神经辐射场论文

码字不易,欢迎大家点赞评论收藏!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐几个免费的HTTP接口Mock网站和工具

在前后端分离开发架构下,经常遇到调用后端数据API接口进行测试、集成、联调等需求,比如: (1)前端开发人员很快开发完成了UI界面,但后端开发人员的API接口还没有完成,不能进行前后端数据接口对接…

嵌入式开发——电源管理单元PMU

学习目标 了解什么是电池管理单元PMU了解ARM32中的电源域了解几种省电模式学习内容 PMU PMU全称Power Management Unit,电源管理单元。 电源域 总共有三大电源域,包括VDD / VDDA域,1.2V域和备份域。 VDD/VDDA域 VDD/VDDA域如下图: 提供PMU 常规电源供应以下模块的供电…

C# 反射的乌云,MethodInfo的Json序列化参数入参问题

文章目录 前言直接运行MethodInfo运行结果 Json解决ParamterInfo实例化运行结果无法实例化问题部分参数的问题 Json反序列化 经过长达一天的研究,我终于完全的解决的了实战思路方法测试用例运行测试运行结果 代码总结总结 前言 我上篇文章已经基本解决了反射的基本…

【SpringCloud】之远程消费(进阶使用)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《SpringCloud开发之远程消费》。🎯&a…

python画图工具总结

一、python工具 python运行工具:Anaconda3 Anaconda3运行模式:jupyter notebook 操作系统:window11 二、折线图 from matplotlib import pyplot import matplotlib.pyplot as plt from math import sqrt import pandas as pd from matplot…

ffmpeg.c(4.3.1)源码剖析

文章目录 前言一、FFmpeg 源码结构图二、ffmpeg.h 头文件详解三、main 函数主要流程分析四、ffmpeg_parse_options1、命令行例子①、解析命令行 split_commandline()②、parse_optgroup()③、MATCH_PER_XXX_OPT() 2、vf 选项解析①、filters②、vf 术语③、avfilter_graph_pars…

【LeetCode每日一题】2807. 在链表中插入最大公约数(模拟+求最大公约数的6中写法)

2024-1-6 文章目录 [2807. 在链表中插入最大公约数](https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/)思路:模拟求最大公约数的几种方法: 1.暴力枚举法2.辗转相除法3.辗转相除法 ---递归调用4.辗转相除法 ---递归调用---…

微服务注册中的负载均衡

背景 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 单体架构:简单方便,高度耦合,扩展性差,适合小型项目。…

【计算机毕业设计】SSM在线化妆品网站

项目介绍 本项目为前后台项目,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,分类管理,产品管理,用户管理,订单管理等功能。 用户角色包含以下功能: 提交订单,用户登录,用户首页,查看…

MySQL数据库期末知识点总结(复习版)

一、数据库基本知识 数据库中的数据有什么特点 1、数据是按某种结构组织的 2、数据有整体性、共享性和较高的独立性 数据管理技术经历了哪三个阶段 1、手工管理 2、文件管理 3、数据库管理 数据库管理系统的主要功能有哪些 数据库管理系统的主要功能包括数据定义、数据…

欧科云链研究院:奔赴2024,Web3与AI共振引爆数字时代潘多拉魔盒

出品|欧科云链研究院 2024年,Web3与AI两个数字科技的巅峰碰撞,欧科云链研究院探索AI与Web3的技术融合,与澎湃科技联合发布2024年展望,原标题为《2024年展望:Web3与AI共振引爆可信数字社会》,共…

Mybatis-Mapper代理开发

Mapper代理开发 目的使用Mapper代理方式入门1.定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下首先新建一个Mapper接口编译mybatis-demo更改sql映射文件路径 2.设置SQL映射文件的namespace属性为Mapper接口全限定名3.在Mapper 接…

数据在内存中的存储之大小端

今天也是努力学编程,敲代码的一天! 1.什么是大小端 其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序 存储和小端字节序存储,下面是具体的概念: &…

吉时利2601A数字源表Keithley 2601A

吉时利2601A源测量单元(SMU),也被称为源表,是一种高性能的仪器,能够提供100毫伏至40伏的电压范围,以及100纳至10安的电流范围。这种仪器能够提供的功率高达40.4瓦,使其在台式I-V表征工具或多通道…

如何充值GPT会员账号?

详情点击链接:如何充值GPT会员账号? 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己的…

TYPE-C接口取电芯片介绍和应用场景

随着科技的发展,USB PDTYPE-C已经成为越来越多设备的充电接口。而在这一领域中,LDR6328Q PD取电芯片作为设备端协议IC芯片,扮演着至关重要的角色。本文将详细介绍LDR6328Q PD取电芯片的工作原理、应用场景以及选型要点。 一、工作原理 LDR63…

2024年【危险化学品生产单位主要负责人】复审模拟考试及危险化学品生产单位主要负责人作业模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 2024年危险化学品生产单位主要负责人复审模拟考试为正在备考危险化学品生产单位主要负责人操作证的学员准备的理论考试专题,每个月更新的危险化学品生产单位主要负责人作业模拟考试祝您顺利通过危险化学品…

Beauty algorithm(六)大眼

前几篇主要介绍了唇妆、腮红、眼影、眉形渲染,它们都有一个共同点,关键点只需要检测一次,并且在获得目标区域融合渲染时,只是对像素点加权操作,处理速度快。而对于美颜,如大眼、缩鼻、缩下巴等操作,会产生局部形变,造成关键点移位。因此每次缩放后都要重新检测关键点,…

C++之STL库简介

目录 一、STL(Standard Template Library,标准模板库) 二、容器(Containers) 1.vector(动态数组) 2.list(双向链表) 3.deque(双端队列) 4.st…

【十】【C语言\动态规划】376. 摆动序列、673. 最长递增子序列的个数、646. 最长数对链,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…