论文解析:V3D: Video Diffusion Models are Effective 3DGenerators

news2024/11/13 15:19:09

摘要: 

自动三维生成最近引起了广泛关注。最近的方法大大加快了生成速度,但由于模型容量有限或三维数据,生成的物体通常不够精细。在视频扩散模型最新进展的推动下,我们引入了 V3D,利用预训练视频扩散模型的世界模拟能力来促进三维生成。为了充分发挥视频扩散感知三维世界的潜力,我们进一步引入了几何一致性先验,并将视频扩散模型扩展为多视角一致性三维生成器。得益于此,最先进的视频扩散模型可以进行微调,从而在给定单个图像的情况下生成围绕物体的 360° 轨道帧。利用我们量身定制的重建管道,我们可以在 3 分钟内生成高质量的网格或三维高斯。此外,我们的方法还可扩展到场景级新颖视图合成,在输入视图稀疏的情况下实现对摄像机路径的精确控制。广泛的实验证明了所提方法的卓越性能,尤其是在生成质量和多视图一致性方面。我们的代码见 https://github.com/heheyas/V3D。

1.介绍:

随着基于扩散的图像生成技术的进步,自动三维生成技术近来也取得了显著进展。基于分数蒸馏采样[67]的方法直接从文本到图像的扩散模型中提取先验[14, 18,44,58,99] ,在三维生成领域取得了巨大成功。然而,这种基于优化的方法速度相对较慢,而且存在模式崩溃 [93, 99] 和杰纳斯问题 [1, 78]。

随后的研究提出了各种替代途径来解决这些问题,主要包括直接将图像映射为三维表示[30, 32, 40, 63, 85, 117](如 Triplane NeRF [8] 或 3DGS [35]),或首先生成一致的多视角图像,然后进行三维重建以获得底层三维模型[48, 50, 52]。随着三维数据量和模型容量的增加,这些方法已将生成时间从几小时缩短到几分钟。然而,这些模型的训练过程仍有一定的局限性;直接映射到三维表征的方法需要在三维数据集上进行训练,这使得利用更高质量的图像数据和大规模预训练图像扩散模型变得不切实际。同时,基于多视图生成的方法由于需要消耗内存的交叉注意或中间三维结构来确保各视图之间的一致性,因此难以直接生成足够数量的图像进行重建。

最近,视频扩散模型因其生成错综复杂场景和复杂动态的卓越能力以及极高的时空一致性而备受关注[2, 4, 5, 7, 13, 24, 25, 109]。许多视频都包含视角变化,可从不同视角自然观察三维物体[43],使扩散模型能够感知物理三维世界[7]。目前的多视角生成方法基于图像扩散模型,只能生成几个视角(少于 6 个)。相比之下视频扩散模型可以生成数百帧图像,足以满足下游三维任务的需要。这些进步使我们有可能利用视频扩散模型生成一致的多视角图像,然后重建底层三维资产,从而实现高质量的三维生成。然而,从多视角重建对一致性提出了很高的要求,这对当前的视频扩散模型来说是很困难的。在本文中,我们旨在充分释放视频扩散模型感知三维世界的潜力,并在扩散模型成为有效的多视角生成器之前注入几何一致性。有鉴于此,我们提出了利用视频扩散模型生成 3D 的新方法 V3D。具体来说,我们建议在三维数据集上对视频扩散模型进行微调,并附加额外的条件,以便在以物体为中心和场景级场景中生成新颖的视图。对于以物体为中心的三维生成,我们以合成三维物体的 360° 轨道视频为条件,对基础视频扩散模型进行微调。我们发现,微调后的模型可以生成可靠的多视角三维重建。然而,在某些细节上仍存在不一致性,这可能会降低重建质量。为了解决这个问题,我们采用感知损失而不是像素损失作为重建目标。由于高斯拼接法的重建和渲染效率高,我们采用了高斯拼接法作为三维表示。为了进一步加快重建速度,我们提出了一种高斯空间雕刻初始化方法,即把多视角物体遮罩解投影回三维空间,从而在物体表面对高斯进行大致定位,消除了对空白空间的无效优化。考虑到现实世界的应用需求,我们还提出了一种新颖的网格提取方法,该方法最初使用 SDF 提取表面,随后在生成的视图上利用图像级损失完善外观。此外,我们还展示了我们的方法在场景级三维生成中的有效性。为了实现精确的摄像机路径控制并适应多视图输入,我们集成了 PixelNeRF 编码器,利用鲁棒 3D 信号增强视频扩散模型。结合辅助损耗和对真实世界摆拍视频的微调,我们扩展了视频扩散模型,以在给定稀疏视图输入的任意摄像机路径上生成新视图。我们的贡献如下:

  • 我们提出了 V3D 框架,该框架首先采用视频扩散模型,以生成一致的多视角帧,然后重建底层三维内容。通过对三维数据集进行微调,我们成功地提高了视频扩散模型的几何一致性能力。我们的框架普遍适用于对象和场景生成。
  •  我们为视频扩散输出设计了一个重建管道,以便生成高质量的三维高斯或纹理网格。通过我们设计的高效初始化和细化,V3D 可以在 3 分钟内重建精细的三维资产。
  • 我们通过实验验证了 V3D 的有效性。对象中心和场景级实验表明,我们的方法在重建质量和多视角一致性方面达到了最先进的水平。

2.相关工作

2.1 3D 生成 

早期的 3D 生成工作主要集中在基于 CLIP 的每个场景优化方法上 [17, 31, 36, 59, 70, 73, 92]。DreamFusion [67]是其中的先驱,它通过引入分数蒸馏采样(Score Distillation Sampling)来利用更强的扩散先验,从而最小化底层三维资产的渲染图像与扩散先验之间的差异。随后的方法进一步在质量[14, 44, 99, 114]、优化速度[58,86]、缓解 Janus 问题[1,18,42,78,80]等方面对这一范例进行了大幅改进,并将其应用扩展到编辑[16, 29, 65, 98, 116]、纹理生成[14, 58, 108]和单图像到三维[69, 82,87, 95]等生成任务。尽管已经取得了巨大成功,但基于优化的方法仍然存在生成速度慢和成功率低的问题。为了克服这些挑战,研究人员探索了一些非优化范例。其中一种方法是首先生成一致的多视角图像,然后利用重建方法获得相应的三维模型 [47, 48, 88, 89]。SyncDreamer [50] 将显式体素和三维卷积与扩散模型相结合,增强了生成的多视图的一致性。Wonder3D [52] 对图像扩散模型进行了微调,以生成具有相应法线图的稀疏视图,并利用 NeuS [94] 重建底层几何图形。Direct2.5 [55] 采用基于重镶嵌的技术,从生成的稀疏法线图中恢复几何图形。另一个研究方向是将稀疏视图直接映射为三维表示[11, 51, 68, 81, 83, 84, 97, 103-105]。LRM[30]、PF-LRM[40]和 Instant3D[41]采用一个巨大的变换器,直接从单一或稀疏视图预测三维平面。TriplaneGaussian [117] 和 LGM [85] 则将稀疏视图映射到内存效率更高的三维高斯拼接中,从而支持更高分辨率的监督。我们的并行工作 IM-3D [56] 也探索了视频扩散模型在以物体为中心的多视图生成中的能力,我们在场景级新颖视图合成中进一步扩展了这一范例,并取得了更好的性能。

2.2 新颖视图合成的生成模型

虽然 NeRF [60] 和 3D Gaussian Splatting [35] 在有足够数量输入的新视图合成中表现出令人印象深刻的性能,但由于所提供的信息不完整,稀疏视图的重建需要额外的先验。早期的工作主要集中在使用基于回归的 [12, 21, 28, 72, 90, 91,96,106,111] 或基于 GAN 的 [8,9,22,23,27,62,64,77,113] 方法进行可通用的场景重建。然而,由于缺乏高质量数据和模型容量有限,生成的新视图往往比较模糊,泛化能力较差。随后的工作进一步整合了扩散前验,以实现更好的场景级新视图合成 [33, 100]。SparseFusion [112] 提出了带有外极性特征变换器的视图条件扩散技术,以合成新视图的稀疏输入。GeNVS [10] 利用 PixelNeRF 编码器纳入几何信息,并利用自动进取生成策略增强多视图一致性。ZeroNVS [74] 将 Zero-1-to-3 [49] 扩展到无边界场景,并通过更好的相机姿态调节解决了比例模糊问题。ReconFusion[102]建议对图像扩散模型进行微调,以适应多视角输入,并利用新颖的样本损失从稀疏的姿态输入重建三维场景。我们从 ReconFusion 和 GeNVS 中汲取灵感,采用基于 PixelNeRF 的调节器来适应任意数量的输入图像,并在场景级生成中提供精确的摄像机路径控制。

3.方法

3.1 总体结构

如图 2 所示,V3D 的核心洞察力在于将密集多视角合成概念化为视频生成,从而利用大规模预训练视频扩散模型的结构和强大先验来促进一致的多视角生成。对于以物体为中心的图像到三维(image-to-3D),我们在以固定圆形摄像机姿势渲染合成三维物体的 360° 轨道视频上微调基础视频扩散模型(第 3.2 节),并为生成的多视图量身定制重建和网格提取管道(第 3.3 节)。对于场景级的新颖视图合成,我们通过加入 PixelNeRF 编码器来增强基础视频扩散模型,使其能够精确控制生成帧的摄像机姿势,并无缝适应任意数量的输入图像(第 3.4 节)。详细的 V3D 方法介绍如下。

3.2 作为视频生成的密集视图预测

以往的多视角生成模型 [15, 89, 101] 通常是从图像扩散模型延伸而来,并结合了多视角交叉注意(如 Wonder3D [52] 等)。和 Zero123-XL [79])或中间三维表示法(例如使用三维体素的 SyncDreamer [50],以及使用三平面 NeRF 的 Viewset Diffusion [84] 和 DMV3D [104]),以提高不同视图下生成图像的一致性。前者由于使用具有二次复杂性的交叉注意,往往涉及有限数量的视图,而后者由于三维表示和体积渲染耗费内存,往往导致图像分辨率较低。为了克服这些弊端,V3D 采用了一种与众不同的方法,在单视图的基础上生成密集的多视图图像。受稳定视频扩散(SVD)[4] 的启发,我们将围绕物体旋转的连续多视角图像解释为视频,从而将多视角生成视为一种以前方视角为条件的图像到视频的生成形式。这种方法利用大规模预训练视频扩散模型对三维世界的全面理解来解决三维数据稀缺的问题,并利用视频扩散模型固有的网络架构来有效生成足够数量的多视角图像。

调节。与 SVD 相似,我们通过交叉注意将相应的 CLIP 嵌入注入扩散 U-Net 来提供前视图的高级语义信息,并通过沿输入的通道维度串联其潜在信息来提示扩散模型的低级信息。为了更好地适应图像到 3D 的转换,我们删除了包括运动桶 ID 和 FPS ID 在内的无关条件,并选择不以仰角为条件。相反,我们随机旋转物体的仰角,使生成模型与非零仰角的输入相兼容。我们对条件的修改源于实验证明,将生成的多视角图像的仰角完全限制在指定角度是不可行的。视频中的摄像机姿态与用于重建的摄像机姿态之间的错位可能会对最终结果造成重大损害。

数据我们在 Objaverse 数据集[19]上微调了以物体为中心的图像到三维的基础视频扩散模型。众所周知,Objaverse 数据集中包含大量低质量的三维物体[47, 52],这可能会大大降低模型的性能[49]。因此,我们首先手工整理了一个质量较高的子集,其中包括约 29 万个合成三维三角形网格。然后,我们通过在 N = 18 个固定摄像机姿势上渲染该过滤子集中的合成三维物体,构建 360° 轨道视频数据集。具体来说,对于每个物体,我们将网格归一化为单位长度,将摄像机距离固定为 2,将仰角设置为 0,并在方位角上均匀移动摄像机 N 次(从 0 到 2π),以生成分辨率为 512 的平滑轨道视频。

训练我们沿用 SVD 方法,采用常用的 EDM [34] 框架,并简化了用于微调的扩散损失。对于训练中使用的噪声分布,我们受文献[46,79]的启发,采用了 P = 1.5 和 P = 2.0 的相对较大的噪声分布。为了实现无分类器引导,我们随机设置了前视图的潜伏嵌入和 CLIP 嵌入独立为零的概率为 20%。为了加快训练速度并节省 GPU VRAM,我们事先对所有视频帧的潜在嵌入和 CLIP 嵌入进行了预处理和存储。在训练过程中,我们直接从磁盘加载这些张量,而不是即时计算。我们对基础扩散模型进行了 22.5k 步的微调,耗时约一天。更详细的训练设置见补充材料。

3.3 鲁棒三维重建和网格提取

利用微调视频扩散模型获得物体的密集视图后,我们的下一步是根据这些视图重建底层三维物体。虽然获得的多视图图像分辨率高且一致性令人满意,但要确保不同视图之间像素与像素严格对齐是一项挑战。在这种情况下,直接应用像素损耗进行三维重建往往会导致浮点或纹理模糊等假象 [3,45,66]。对此,我们建议使用图像级感知损失来解决多个输入图像之间的不一致问题。为了支持图像级损失,我们选择了三维高斯拼接技术,因为它训练速度快,内存效率高,能以最低成本渲染完整图像。我们采用 LPIPS [110] 作为感知损失,并将其与 3DGS 的原始损失相结合,即

其中,I 和 I 分别代表渲染图像和地面实况图像(我们生成的视图),λ 和 λ 指损失权重。

初始化。初始化是三维高斯拼接技术取得良好效果的关键[35, 115]。由于在以物体为中心的重建中没有可用的稀疏点云,原始的 3DGS 使用高斯球(Gaussianblob)对高斯进行初始化,并通过重置不透明度去除不必要的高斯。这需要多次优化迭代才能消除浮点,而且当输入图像不完全一致时,可能会出现伪影。为了加快重建速度,我们建议通过空间雕刻来初始化高斯[38,55]。具体来说,我们首先使用现成的背景去除模型对生成帧的前景进行分割,从而获得每个视图的对象掩码。然后,通过将体素投影到图像平面来确定投影像素是否属于物体,并汇总所有视图下的所有投影结果,从而建立占用网格。最后,我们利用行进立方体[54],根据占据网格获得一个曲面,并在曲面上均匀采样 N 个点作为高斯的初始化位置。 

网格提取。针对现实世界的应用需求,我们还提出了一个生成视图的网格提取管道。与文献[50, 52, 88]类似,我们采用 NeuS[94] 和多分辨率哈希网格[61]进行快速曲面重建。

虽然 V3D 可以生成相当数量的视图,但与 NeuS 的典型使用案例相比,它的数量仍然不多,因为后者通常涉及 40 多张摆好姿势的图像 [53, 94]。因此,我们采用了正常平滑损失和稀疏正则化损失,以确保合理的几何形状。此外,由于我们生成的图像并不完全一致,而 NeuS 利用图像级损失又因渲染成本较高而不可行,因此 NeuS 提取的网格纹理往往比较模糊。针对这一问题,我们在保持几何图形不变的情况下,利用 LPIPS 损失进一步细化 NeuS 提取的多视图网格纹理,从而大大降低了渲染成本,提高了最终输出的质量。由于可微分网格渲染的高效性[39],这一细化过程可在 15 秒内完成。

3.4 场景级新颖视图合成

除了以物体为中心的生成外,我们还将视频扩散进一步扩展到场景级的新颖视图合成。与生成物体视图不同,新颖视图合成需要沿着给定的摄像机路径生成图像,这就需要精确控制摄像机的姿势并适应多个输入图像。

调节。以前的方法,如 Zero-1-to-3 [49],通过引入摄像机嵌入,将摄像机姿态纳入图像扩散。然而,这种方法并没有明确利用三维信息,因此在确保多个视图的一致性和精确控制摄像机姿势方面具有挑战性[48, 102]。为了更好地将三维先验信息纳入视频扩散并精确控制生成帧的姿势,我们从 GeNVS [10] 和 ReconFusion [102] 中汲取灵感,将 PixelNeRF [106] 特征编码器集成到视频扩散模型中。具体来说,给定一组姿势图像作为条件π,I = {(I, π)},我们采用 PixelNeRF 通过以下方式渲染目标摄像机姿势 {π} 的特征图:

其中,{π} 指的是我们要生成的帧的摄像机姿态。然后,我们将此特征图连接到 U-Net 的输入中,以明确编码相对相机姿态信息。这种方法可无缝支持任意数量的图像输入。其他条件与以对象为中心的生成方法类似,只是 CLIP 图像嵌入的数量从一个增加到了多个。 

数据为了进行场景级的新颖视图合成,我们在 MVImgNet [107] 上对基础视频扩散模型进行了微调。为了使 MVImgNet 中的视频与视频扩散的输入大小相匹配,我们使用现成的背景移除工具获取物体遮罩,然后根据前景遮罩裁剪、重新调整图像的中心点和焦距。

训练除了视频扩散模型中使用的简化扩散损耗外,我们按照 ReconFusion [102] 的方法,用向下采样的光度损耗来调节 PixelNeRF 编码器的参数: 

其中,f 指的是 PixelNeRF 编码器的另一个颜色分支,该分支可预测降采样图像,x 指的是降采样目标帧。 

正如文献[102]所述,我们在实验中发现这一损失对于避免局部最小值至关重要。我们遵循 InstructPix2Pix [6],将扩散 U-Net 第一层中新添加的 PixelNeRF 特征输入通道初始化为零,以最好地保持预先训练的先验。在输入视图调节方面,我们随机选择 1 到 4 幅图像作为输入,并以 20% 的概率将条件独立设置为零。我们将在补充材料中介绍场景级模型的更多训练细节。

4.实验

在本节中,我们将介绍验证所提方法在以对象为中心和场景级三维生成方面有效性的实验。具体来说,我们将 V3D 与之前图像到 3D 和新型视图合成的最先进方法进行了定量和定性比较。此外,我们还进行了多项消融研究,以评估模型设计的重要性,包括噪声分布、微调步骤数量、预训练先验和相机调节。详细结果如下。

4.1 以对象为中心的三维生成

定性比较。我们评估了所提出的 V3D 在图像到 3D 方面的性能,并将结果与最先进的方法进行了比较。图 3 的上半部分展示了我们的方法与基于 3DGS 的 TriplaneGaussian [117] 和 LGM [85] 方法之间的定性比较。我们的方法展示了令人印象深刻的质量改进,而 TriplaneGaussian 和 LGM 由于能生成的高斯数量有限,往往会产生更加模糊的外观。图 3 的下部显示了基于 SDS 的先进方法之间的比较,包括 Magic123 [69] 和 ImageDream [95]。V3D 在前视对齐和保真度方面都胜出一筹。相比之下,Magic123 生成的对象显示出不准确的几何形状和模糊的背面,而 ImageDream 生成的资产往往具有过度饱和的纹理。重要的是,我们的方法能在 3 分钟内实现这些结果,与需要 30 分钟以上的基于优化的方法相比,速度明显加快。图 4 展示了与 SyncDreamer [50] 和 Wonder3D [52] 在多视图生成方面的比较,我们的方法始终能以更高的 512 分辨率和更精细的细节获得更出色的结果。SyncDreamer 生成的多视图图像往往几何形状简单,纹理过于饱和。我们将此归因于 SyncDreamer 与原始稳定扩散模型在结构上的显著差异,因此未能充分利用图像预训练的信息。至于 Wonder3D,我们的模型生成的多视图数量增加了三倍,分辨率提高了一倍,在纹理质量和多视图一致性方面都取得了显著改善。

定量比较。在定性比较方面,我们进行了一项用户研究,通过人工评分对生成的 3D 资产进行评估。具体来说,我们请 58 名志愿者通过观看渲染的 360° 螺旋视频,在 30 张条件图像下对 V3D 和其他方法生成的物体进行评估,并在以下方面选择最佳方法:(a)对齐度:三维资产与条件图像的对齐程度;(b)逼真度:生成物体的逼真程度。表 1表 1 显示了每种方法在这两个标准中的胜出率。V3D 被认为是最有说服力的模型,在图像对齐和逼真度方面都明显优于其他竞争者。 

4.2 新观点合成

在场景级新颖视图合成方面,我们在 CO3D 数据集的 10 类子集上测试了所提出的 V3D 的性能。为了与之前方法的设置保持一致,我们只在每个类别的视频上对 V3D 进行了一次历时微调(记为 "微调")。结果如表 3 所示。3.我们的方法

 

在图像指标方面,V3D 的性能始终优于之前最先进的新视角合成器,这证明了在场景级新视角合成中使用预训练视频扩散模型的有效性。此外,V3D 还显示出令人印象深刻的泛化能力,因为零镜头版本的 V3D(仅在 MVImgNet 上训练)击败了大多数竞争对手。 

定性比较。图 5 显示了 SparseFusion [112] 在 CO3D 数据集[71]的消防栓子集上生成的多视图的定性比较。为了更好地进行比较,我们使用 COLMAP [75, 76] 对给定的相机姿态进行多视角立体重建,并在图 5 中展示了获得的点云中的点数以及与地面实况图像重建的点云之间的倒角距离。由 V3D 生成的图像重建的点云包含更多的点,而且更接近于由真实图像重建的点云。这表明我们的方法在重建质量和多视角一致性方面都具有显著优势。

5 局限性和结论

局限性。虽然 V3D 在三维生成方面达到了最先进的性能,但对于某些复杂的物体或场景,例如多个视图之间的不一致性或不合理的几何形状,V3D 会产生令人不满意的结果。具体的失败案例和分析将在补充材料中讨论。

结论在本文中,我们提出了 V3D,这是一种利用图像到视频扩散模型生成一致的多视角图像的新方法。通过在三维数据集上微调基础视频扩散模型,我们将视频扩散模型扩展为有效的三维生成器。具体来说,对于以物体为中心的三维生成,我们在合成三维物体的 360° 视频时对视频扩散进行微调,以预测给定单张图像的密集视图。为了从生成的视图中获取底层三维资产,我们提出了一种具有设计初始化和纹理细化功能的定制重建管道,从而能够重建高质量的三维视图。

三维高斯或精细纹理网格,只需 3 分钟。我们进一步将框架扩展到场景级的新颖视图合成,实现了对摄像机路径的精确控制和多视图一致性。我们进行了大量实验来验证所提方法的有效性,证明它在生成一致的多视图和泛化能力方面表现出色。我们希望我们的方法能成为高质量三维生成的一种高效而强大的方法,并为视频扩散模型在三维任务中的更广泛应用铺平道路。

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

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

相关文章

【已解决】MySQL:常用的除法运算+精度处理+除数为0处理

目录 问题现象: 问题分析: 拓展: 1、除法运算: 拓展:MySQL中常用的几种除法运算 1、取整除法 2、浮点数除法 3、取余除法 4、向上取整除法 5、向下取整除法 2、运算结果的精度处理 1.1、浮点数 1.2、总位数 1.3、…

蓝桥杯练习题——健身大调查

在浏览器中预览 index.html 页面效果如下: 目标 完成 js/index.js 中的 formSubmit 函数,用户填写表单信息后,点击蓝色提交按钮,表单项隐藏,页面显示用户提交的表单信息(在 id 为 result 的元素显示&#…

2024年敏捷产品负责人CSPO认证培训

课程名称:Scrum Product Owner CSPO产品负责人认证 课程类型:经理级 课程简介: Scrum Product Owner产品负责人在Scrum产品开发当中扮演“舵手”的角色,他决定产品的愿景、路线图以及投资回报,他需要回答为什么做&am…

【ZooKeeper】2、安装

本文基于 Apache ZooKeeper Release 3.7.0 版本书写 作于 2022年3月6日 14:22:11 转载请声明 下载zookeeper安装包 wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz解压 tar -zxvf apache-zookeeper-3.7.0-b…

OpenCV Steger算法提取条纹中心线

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 Steger 算法是一种常用的图像边缘检测算法,可以用于提取图像中的中心线或边缘信息。它的理论假设是:条纹的亮度是按照高斯分布呈现的,即中心亮两侧渐暗。 其计算过程如下所述: 1、首先,我们需要计算每个点Hess…

汽车制造业供应商管理会面临哪些问题?要如何解决?

汽车行业的供应链是及其复杂的,并且呈全球化分布,企业在知识产权方面的优势很可能是阶段性的。企业需要持续保持领先,将面临巨大的挑战,尽快地将产品推向市场是保持领先的唯一途径。然而,如果没有正确的方式去实现安全…

Flutter 运行 flutter doctor 命令长时间未响应

由于 Flutter 运行 flutter doctor 命令,会从 pub(https://pub.dev/ 类似于 Node.js 的 npm) 上进行资源的下载,如果没有配置国内镜像,可能会由于其服务器在国外导致资源下载慢或者下载不下来,所以出现了运行 flutter doctor 命令…

中国银行信息系统应用架构发展历程

概述: 从 20 世纪 80 年代开始至今,我国银行业信息化历程已 有四十年历史。虽然相对于发达国家来讲,我国银行业务信 息化起步较晚,但发展速度很快, 目前我国一些大型商业银行的信息化程度已经处于全球领先水平。 “银行…

【IC设计】Verilog线性序列机点灯案例(四)(小梅哥课程)

文章目录 该系列目录:设计环境设计目标设计思路RTL及Testbench代码RTL代码Testbenchxdc约束 仿真结果 声明:案例和代码来自小梅哥课程,本人仅对知识点做做笔记,如有学习需要请支持官方正版。 该系列目录: Verilog线性…

使用Composer安装Laravel框架

使用Composer安装Laravel框架,不指定版本则安装当下最新版本 composer create-project laravel/laravel laravel-demo 至此,安装框架完成,这里安装的是Laravel11.0.7版本的 进入项目根目录,运行项目 cd laravel.11.0.7 // 进…

maven一点通

1.maven简介 Maven是一个基于Java的工程构建工具,用于管理和构建项目的依赖关系。它提供了一种标准的项目结构和一组约定,使得项目的开发、构建、部署和文档化更加容易和可靠。 Maven的主要功能包括: 依赖管理:Maven可以自动下载…

最细致最简单的 Arm 架构搭建 Harbor

更好的阅读体验:点这里 ( www.doubibiji.com ) ARM离线版本安装 官方提供了一个 arm 版本,但是好久都没更新了,地址:https://github.com/goharbor/harbor-arm 。 也不知道为什么不更新,我看…

Cookie 信息泄露 Cookie未设置http only属性 原理以及修复方法

漏洞名称:Cookie信息泄露、Cookie安全性漏洞、Cookie未设置httponly属性 漏洞描述: cookie的属性设置不当可能会造成系统用户安全隐患,Cookie信息泄露是Cookiehttp only配置缺陷引起的,在设置Cookie时,可以设置的一个…

利用textarea和white-space实现最简单的文章编辑器 支持缩进和换行

当你遇到一个非常基础的文章发布和展示的需求,只需要保留换行和空格缩进,你是否会犹豫要使用富文本编辑器?实际上这个用原生的标签两步就能搞定! 1.直接用textarea当编辑器 textarea本身就可以保存空格和换行符,示例如…

Spring mvc的响应

1、static是静态页面的存放 templates是动态模板,不需要可以直接删掉 2、我们要是想访问static下的页面我们只需要他的文件名字就可以访问(如果有多层可以在url中加入相关路径) 3、get可以缓存(是幂等的) post 不能被缓存 4、返回Json响应 …

【数据挖掘】练习2:数据管理2

课后作业2&#xff1a;数据管理2 一&#xff1a;上机实验2 # 编写函数stat&#xff0c;要求该函数同时计算均值&#xff0c;最大值&#xff0c;最小值&#xff0c;标准差&#xff0c;峰度和偏度。 install.packages("timeDate") library(timeDate) stat <- func…

面试经典150题【81-90】

文章目录 面试经典150题【81-90】530.二叉搜索树的最小绝对差值230.二叉搜索树中第k小的元素98.验证二叉搜索树92.反转链表II25.K个一组翻转链表146.LRU缓存909. 蛇梯棋&#xff08;未做&#xff09;433.最小基因变化127.单词接龙&#xff08;未做&#xff09;17.电话号码的字母…

HTTP 工作流程请求响应 - 面试常问

文章目录 HTTP 工作流程请求和响应格式HTTP请求格式请求行&#xff1a;请求头部字段&#xff1a;空行&#xff1a;消息正文&#xff08;请求正文&#xff09;&#xff1a; HTTP响应格式状态行&#xff1a;响应头部字段&#xff1a;空行&#xff1a; HTTP方法HTTP状态码常用HTTP…

论文笔记:液体管道泄漏综合检测与定位模型

0 简介 An integrated detection and location model for leakages in liquid pipelines 1 摘要 许多液体&#xff0c;如水和油&#xff0c;都是通过管道运输的&#xff0c;在管道中可能发生泄漏&#xff0c;造成能源浪费、环境污染和对人类健康的威胁。本文描述了一种集成的…

C++进阶之路---手撕“红黑树”

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、红黑树的概念与性质 1.概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点…