ACM MM24 | Hi3D: 3D生成领域再突破!新视角生成和高分辨率生成双SOTA(复旦智象等)

news2024/9/23 9:49:18

文章链接:https://arxiv.org/pdf/2409.07452
Github 链接:https://github.com/yanghb22-fdu/Hi3D-Official

亮点直击

  • 本文提出了高分辨率图像到3D模型(Hi3D),这是一种基于视频扩散的新范式,将单个图像重新定义为多视角图像,作为3D感知的序列图像生成(即轨道视频生成)。该方法深入探讨了视频扩散模型中潜在的时间一致性知识,这些知识在3D生成中能够很好地推广到多个视角之间的几何一致性。

  • 提出了基于视频扩散模型的图像到3D生成方法,通过利用视频扩散模型的时间一致性来增强3D几何一致性。

  • 提出了高分辨率图像到3D模型(Hi3D),在两阶段中生成高分辨率的3D网格和纹理:首先生成低分辨率轨道视频,然后通过3D感知精化器生成高分辨率视频。

  • 在新视角合成和单视角重建任务中表现出色,实现了高质量的3D网格和纹理。

总结速览

解决的问题

Hi3D框架旨在解决从高分辨率图像生成3D模型时面临的挑战,特别是如何在多个视角之间保持几何一致性和高质量的纹理细节。传统方法往往在生成多视角图像时缺乏时间一致性,导致生成的3D内容在视觉上不连贯。

提出的方案

Hi3D提出了一种基于视频扩散的新范式,通过将单个图像重新定义为多视角图像,形成一个序列图像生成的过程(即轨道视频生成)。该方案利用3D感知先验(如相机姿态条件)来增强预训练的视频扩散模型,从而生成低分辨率的多视角图像。接着,使用学习到的3D感知视频到视频的细化器进一步提升这些图像的分辨率和细节。

应用的技术

视频扩散模型:用于生成多视角图像,特别关注时间一致性。 3D感知先验:通过相机姿态条件增强模型的生成能力。 3D高斯点云:用于进一步增强生成的多视角图像,以便进行高保真网格重建。

达到的效果

实验结果表明,Hi3D能够生成具有高度详细纹理的优越多视角一致图像。大量关于新视图合成和单视图重建的实验验证了该方法在生成高保真3D模型方面的有效性,显著提升了生成内容的几何一致性和视觉质量。

方法

本文设计了一种新的高分辨率图像到3D生成架构,称为Hi3D,创新性地将视频扩散模型整合到3D感知的360°序列图像生成中(即轨道视频生成)。 本文的出发点是利用视频扩散模型中固有的时间一致性知识,以增强3D生成中的视角一致性。首先在本节中详细阐述图像到3D生成的问题表述,再详细介绍Hi3D框架中两阶段视频扩散范式的细节。

第一阶段,本文重新构建了预训练的图像到视频扩散模型,增加了相机姿态的条件,然后在3D数据上进行微调,以实现轨道视频生成。在第二阶段,本文通过3D感知的视频到视频细化器进一步提升多视角图像的分辨率。最后,本文引入了一种新颖的3D重建 pipeline,从这些高分辨率的多视角图像中提取高质量的3D网格。Hi3D的整体架构如下图2所示。

问题表述

给定一张 RGB 图像 (源视图),目标是生成其对应的 3D 内容(即,纹理三角网格)。与之前的图像到 3D 生成方法类似,分解为两个步骤:

  1. 生成围绕物体 的多视角图像序列。

  2. 从这些生成的多视角图像重建 3D 内容。

在技术上,首先以两阶段的方式,从与输入条件图像 对应的 个不同摄像机姿态 合成物体的多视角图像序列 。在本工作中,生成 张高分辨率的多视角图像,分辨率为 。值得注意的是,之前的最先进的图像到 3D 模型只能生成低分辨率(即 )的多视角图像。相比之下,据本文所知,本文的工作是首个实现高分辨率(即 )图像到 3D 生成的研究,这可以保留输入图像更丰富的几何和纹理细节。

通过精心设计的 3D 重建 pipeline,从这些合成的高分辨率多视角图像中提取 3D 网格。由于生成的视图数量相对有限,因此从这些稀疏视图中提取高质量网格是困难的。为了解决这个问题,本文利用新颖的视图合成方法(3D 高斯喷溅从多视角图像 重建隐式 3D 模型。然后,本文在多视角图像之间渲染额外的插值视图 ,并将这些渲染的视图添加到 中,从而获得物体 的稠密视图图像 。最后,采用基于 SDF 的重建方法从这些稠密视图 中提取高质量网格。

第一阶段:基本多视图生成

之前的图像到3D生成方法通常依赖于预训练的图像扩散模型来实现多视图生成。这些方法通常通过注入多视图交叉注意力层,将图像扩散模型中的2D UNet扩展为3D UNet。这些新增的注意力层在3D数据集上从头开始训练,以学习多视图一致性。然而,为了确保训练的稳定性,这些方法中的图像分辨率被限制在256×256。正如Zero123所指出的,保持预训练图像扩散模型中的原始分辨率(512×512)会导致收敛速度变慢和方差增加。因此,由于这种低分辨率限制,这些方法无法完全捕捉输入2D图像中的丰富3D几何和纹理细节。

此外,研究者们观察到这些方法仍然存在多视图不一致的问题,特别是对于复杂物体的几何形状。这可能是因为底层预训练的2D扩散模型仅在单个2D图像上训练,缺乏对多视图相关性的3D建模。为了解决上述问题,将单张图像到多视图图像重新定义为3D感知序列图像生成(即轨道视频生成),并利用预训练的视频扩散模型实现这一目标。特别是,重新利用Stable Video Diffusion (SVD) 从输入图像生成多视图图像。SVD的吸引力在于它在大量不同的视频上进行了训练,使网络在训练期间能够遇到物体的多个视图。这可能缓解了3D数据稀缺问题。此外,SVD已经通过时间注意力层明确建模了多帧关系。我们可以继承这些时间层中固有的多帧一致性知识,以追求3D生成中的多视图一致性。

训练数据。 首先从Objaverse的LVIS子集中构建一个高分辨率多视图图像数据集。对于每个3D资产,以1,024 × 1,024的分辨率在随机仰角 下渲染16个视图。需要注意的是,虽然仰角是随机选择的,但在单个视频中的所有视图中保持不变。对于每个视频,相机与物体的距离为 ,并在方位角从 到 均匀分布。训练数据集总共包含大约300,000个视频,记为 ,其中输入条件图像 是序列图像 的第一帧。

视频扩散微调 ,在第一阶段,重新利用预训练的图像到视频扩散模型,以生成多视角一致的顺序图像。因此,前述的多视角图像数据集 被用来对具有额外相机姿态条件的3D感知视频扩散模型进行微调。具体而言,给定输入的单视角图像 ,首先通过视频扩散模型的VAE编码器将其投影到潜在空间,并与噪声潜在序列在通道上进行拼接,这鼓励合成的多视角图像保留输入图像的身份和复杂细节。此外,通过交叉注意力机制将输入条件图像的CLIP embedding并入扩散UNet。在每个 transformer 块中,CLIP embedding 矩阵作为交叉注意力层的键和值,而层的特征则作为查询。

通过这种方式,输入图像的高层语义信息被传递到视频扩散模型中。由于多视角图像序列是在随机高度下渲染的,将高度参数作为额外条件输入到视频扩散模型中。相机高度角 首先被嵌入到到正弦位置 embeddings中,然后与扩散噪声时间步 一起输入到UNet中。由于所有多视角序列遵循相同的方位轨迹,本文不将方位参数输入到扩散模型中。在这里,本文省略了视频扩散模型中的原始“fps id”和“运动桶id”条件,因为这些条件与多视角图像生成无关。

改造后的视频扩散模型中的去噪神经网络(3D UNet)可以表示为 。给定多视角图像序列 ,预训练的VAE编码器 首先提取每幅图像的潜在编码,以构成潜在编码序列 。接下来,通过在每个时间步 采用典型的前向扩散过程,将高斯噪声 添加到 中,以获得噪声潜在编码 。具有参数 的3D UNet 被训练以基于噪声潜在编码 、输入图像条件 和高度角 估计添加的噪声 ,通过标准的均方误差(MSE)损失进行训练:

是一个对应的权重因子。本文并没有直接在高分辨率(即 1024 × 1024)下训练去噪神经网络,而是以粗到细的方式将这个复杂的问题分解为更稳定的子问题。在第一阶段,使用公式 (4) 在 512 × 512 分辨率下训练去噪神经网络,以生成低分辨率的多视角图像。第二阶段则进一步将 512 × 512 的多视角图像转换为高分辨率(1024 × 1024)的多视角图像。

第 2 阶段:3D 感知多视图细化

阶段一输出的 512 × 512 多视角图像展现了良好的多视角一致性,但仍未能完全捕捉输入的几何和纹理细节。为了解决这个问题,增加了一个额外的阶段,通过新的 3D 感知视频到视频的精细化器,进一步放大第一阶段的低分辨率输出,从而生成更高分辨率(即 1024 × 1024)的多视角图像,具有更精细的 3D 细节和一致性。

在这一阶段,还将预训练的视频扩散模型重塑为 3D 感知的视频到视频精细化器。形式上,这种去噪神经网络可以表示为 ,其中 表示与第一阶段输入图像 对应生成的多视角图像, 是生成的多视角图像 的估计深度序列。为了明确,输入条件 和 以与第一阶段相同的方式注入到预训练的视频扩散模型中。此外,本文采用 VAE 编码器提取预生成多视角图像 的潜在编码序列,并将其与噪声潜在变量 在通道维度上连接起来。

此外,为了充分利用生成的多视角图像的潜在几何信息,本文利用现成的深度估计模型来估计 中每幅图像的深度作为 3D 线索,从而生成深度图序列 。然后,本文将深度图直接调整为与潜在编码 相同的分辨率,并在通道维度上将其与 连接。

最后,重塑后的去噪神经网络通过扩散模型中的标准均方误差(MSE)损失进行训练:

这里 是一个加权因子。训练图像的分辨率在公式 (5) 中被放大到 1024 × 1024。

在训练过程中,采用了一些图像降质方法来合成 以进行数据增强,而不仅仅使用第一阶段生成的粗糙多视角图像。具体来说,本文利用高阶降质模型来合成训练数据,包括一系列模糊、调整大小、噪声和压缩过程。

为了复制超调伪影(例如,图像中锐利过渡处的振铃或重影),使用了 滤波器。此外,还使用随机遮罩技术来模拟形状变形的效果。这样不仅加快了训练过程,还增强了本文视频到视频的细化器的鲁棒性。

3D 网格提取

通过上述两阶段视频扩散基础范式,本文可以获得一个高分辨率图像序列 (),该序列以输入图像 为条件。本节旨在从这些生成的高分辨率多视角图像中提取高质量的网格。之前的图像到 3D 方法通常通过优化神经隐式符号距离场(SDF)来重建目标 3D 网格。然而,这些基于 SDF 的重建方法最初是为在真实世界中捕获的密集图像序列量身定制的,通常无法仅基于稀疏视图重建出高质量的网格。

为了解决这个问题,研究者们设计了一种独特的高分辨率稀疏视图 3D 重建pipeline。并不直接采用基于 SDF 的重建方法来提取 3D 网格,而是首先使用 3D 高斯喷溅(3DGS)算法从生成的高分辨率图像序列中学习一个隐式 3D 模型。3DGS 在新视角合成能力和渲染速度方面表现出色。在这里,本文试图利用 3DGS 的隐式重建能力,为第二阶段的输出稀疏多视角图像提供更多的新视角。具体来说,本文从重建的 3DGS 中渲染 个相邻图像之间的插值视图 。最后,本文基于增强后的密集视图 优化一个基于 SDF 的重建方法,以提取物体 的高质量 3D 网格。

实验

实验设置

数据集与评估。 通过在两个主要任务上进行实验来实证验证本文的Hi3D模型的优越性,即新视图合成和单视图重建。在Google扫描物体(GSO)数据集上进行定量评估。在新视图合成任务中,采用三种常用指标:PSNR、SSIM 和LPIPS。在单视图重建任务中,使用Chamfer距离和体积IoU来衡量重建3D模型的质量。此外,为了评估本文Hi3D的泛化能力,对来自互联网的各种风格的单幅图像进行了定性评估。

实现细节。 在基本多视图生成的第一阶段,将视频数据集缩放为512 × 512的视频。在多视图精细化的第二阶段,不仅使用第一阶段的输出,还采用合成数据生成策略(类似于传统的图像/视频恢复方法进行数据增强。该策略旨在加速训练过程并增强模型的鲁棒性。整体实验在八个80G A100 GPU上进行。具体来说,第一阶段经历了80,000个训练步骤(大约3天),学习率为1 × 10⁻⁵,总批量大小为16。第二阶段包含20,000个训练步骤(约3天),学习率为5 × 10⁻⁵,批量大小减少为8。

对比方法。 本文将Hi3D与以下最先进的方法进行比较:RealFusion和Magic123利用2D扩散模型(Stable Diffusion)和SDS损失从单视图图像重建。Zero123学习从不同视角生成同一物体的新视图图像,并可以与SDS损失结合进行3D重建。Zero123-XL和Stable-Zero123通过提高训练数据质量进一步升级Zero123。One-2-3-45通过多视图图像(即Zero123的输出)直接学习显式3D表示,利用3D有符号距离函数(SDFs)。Point-E和Shap-E在一个广泛的内部OpenAI 3D数据集上进行预训练,从而能够直接将单视图图像转换为3D点云或以MLP编码的形状。SyncDreamer引入了3D全局特征体积以保持多视图一致性。Wonder3D和EpiDiff利用3D注意力机制,通过交叉注意力层使多视图图像之间能够相互作用。值得注意的是,在新视图合成任务中,本文仅包含部分基线(即Zero123系列、SyncDreamer、EpiDiff),以便与本文的Hi3D进行公平比较。

新颖的视图合成

下表1总结了新视图合成任务的性能比较,下图3展示了在两种不同视图下的定性结果。Hi3D在性能上始终优于现有的基于2D扩散的方法。具体来说,Hi3D的PSNR达到了24.26%,比最佳竞争对手EpiDiff高出3.77%。Hi3D的最高图像质量得分突显了视频扩散基于范式的关键优势,即利用3D先验知识来提升新视图合成的效果。

由于图像独立翻译,Zero123系列(例如,Stable-Zero123)未能实现多视图一致性结果(例如,上图3(a)中闹钟头部在不同视图下的一/两个环)。SyncDreamer和EpiDiff通过利用3D中间信息或使用多视图注意机制进一步增强了多视图一致性。然而,由于受到限制的低图像分辨率(256×256),它们的新视图结果仍然存在模糊和不真实的问题(例如,上图3(a)中模糊的闹钟数字)。相反,通过挖掘3D先验并通过视频扩散模型提升多视图图像分辨率,本文的Hi3D成功生成了多视图一致且高分辨率的1024×1024图像,从而实现了最高的图像质量(例如,上图3(a)中清晰可见的闹钟数字)。

单视图重建

下表2中评估了Hi3D的单视图重建性能。此外,下图4展示了Hi3D与现有方法的定性比较。总体而言,Hi3D在两个指标上均优于最先进的方法。One-2-3-45直接利用Zero123的多视图输出进行重建,但其3D一致性较差,通常导致生成的网格过于平滑,细节较少。Stable-Zero123通过使用更高质量的训练数据进一步提高了3D一致性,但仍然存在缺失或过于平滑的网格问题。与Zero123中的独立图像翻译不同,SyncDreamer、EpiDiff和Wonder3D通过2D扩散模型同时进行多视图图像翻译,从而实现了更好的3D一致性。然而,由于低分辨率多视图图像的限制,它们在重建复杂的3D网格和丰富细节方面仍然面临挑战。相比之下,Hi3D充分发挥了预训练视频扩散模型中固有的3D先验知识,并将多视图图像提升到更高的分辨率。这种设计使得3D网格重建的质量更高,细节更丰富(例如,下图4中鸟和企鹅的脚部)。

消融研究

3D感知多视图优化阶段的效果。 在这里检查第二阶段(即3D感知多视图优化)对新视图合成的有效性。下表3详细列出了Hi3D的消融实验结果。具体而言,第二行去除了整个第二阶段,性能大幅下降。这验证了通过3D感知视频到视频的优化器提升多视图图像分辨率的有效性。此外,当仅去除第二阶段中的深度条件(第三行)时,性能明显下降,这表明深度条件在增强多视图图像之间的3D几何一致性方面的有效性。

3D重建中插值视图数量的影响。 下表4显示了使用不同数量的插值视图𝑀的单视图重建性能。在极端情况下,当𝑀 = 0时,不使用插值视图,3D重建流程退化为典型的基于SDF的重建。随着𝑀增加到16,重建性能明显提高,这基本上显示了通过3DGS插值视图的优势。然而,当进一步增大𝑀时,性能略有下降。推测这可能是由于视图之间不必要的信息重复和错误累积所致。在实际应用中,𝑀通常设置为16。

更多讨论

文本到图像再到3D。 通过将先进的文本到图像模型(例如,Stable Diffusion、Imagen)集成到Hi3D中,能够直接从文本描述生成3D模型,如下图5所示。本文的方法能够生成高保真度的3D模型,具有高度细致的纹理,这再次突显了高分辨率多视图图像生成与3D一致性的优点。

3D模型生成中的多样性和创造力。 在这里,本文通过使用不同的随机种子来考察本文的Hi3D的多样性和创造力。如下图6所示,Hi3D能够生成多样且合理的实例,每个实例都有独特的几何结构或纹理。这种能力不仅增强了3D模型创建的灵活性,还显著促进了在3D设计和可视化中的创造性探索。

结论

本文探讨了在预训练视频扩散模型中固有的3D先验知识,以促进图像到3D生成的提升。本文从一个新颖的视角研究了将单幅图像转化为多视图图像的问题,提出了3D感知的序列图像生成(即轨道视频生成)。为了实现本文的想法,本文引入了Hi3D,该方法采用两阶段视频扩散的范式,以触发高分辨率的图像到3D生成。

在技术上,在基本多视图生成的第一阶段,重新塑造了一个视频扩散模型,并增加了相机姿态的3D条件,旨在将单幅图像转化为低分辨率轨道视频。在3D感知的多视图细化的第二阶段,设计了一个带有深度条件的视频到视频细化器,以将低分辨率轨道视频放大为具有丰富纹理细节的高分辨率序列图像。最终,生成的高分辨率输出通过3D高斯点云进行插值视图增强,并采用基于SDF的重建方法实现3D网格。

在新视图合成和单视图重建任务上的实验验证了本文的方法在性能上优于最先进的技术。

参考文献

[1] Hi3D: Pursuing High-Resolution Image-to-3D Generation with Video Diffusion Models

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

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

相关文章

计算机毕业设计python+spark知识图谱房价预测系统 房源推荐系统 房源数据分析 房源可视化 房源大数据大屏 大数据毕业设计 机器学习

《PythonSpark知识图谱房价预测系统》开题报告 一、研究背景与意义 随着城市化进程的加速和房地产市场的不断发展,房价成为影响人们生活质量的重要因素之一。准确预测房价不仅有助于政府制定科学的房地产政策,还能为开发商提供市场参考,同时…

NLP-transformer学习:(7)evaluate实践

NLP-transformer学习:(7)evaluate 使用方法 打好基础,为了后面学习走得更远。 本章节是单独的 NLP-transformer学习 章节,主要实践了evaluate。同时,最近将学习代码传到:https://github.com/Mex…

c++类与对象一

C类与对象(一) 面向对象初步认识 在c语言中,编程是面向过程编程,注重求解问题列出过程,然后调用函数求解问题。 在日常生活中。我们经常会遇到面向过程的问题 手洗衣服就是面向过程 而C是基于面向对象的。关注的是对象,把事情…

SpringSecurity -- 入门使用

文章目录 什么是 SpringSesurity ?细节使用方法 什么是 SpringSesurity ? 在我们的开发中,安全还是有些必要的 用 拦截器 和 过滤器 写代码还是比较麻烦。 SpringSecurity 是 SpringBoot 的底层安全默认选型。一般我们需要认证和授权&#xf…

【Finetune】(三)、transformers之P-Tuning微调

文章目录 0、P-Tuning基本原理1、代码实战1.1、导包1.2、加载数据集1.3、数据集预处理1.4、创建模型1.5、P-tuning*1.5.1、配置文件1.5.2、创建模型 1.6、配置训练参数1.7、创建训练器1.8、模型训练1.9、模型推理 0、P-Tuning基本原理 P-Tuning的基本思想是在prompt-tuning的基…

Spring Boot管理用户数据

目录 学习目标前言Thymeleaf 模板JSON 数据步骤 1: 创建 Spring Boot 项目使用 Spring Initializr 创建项目使用 IDE 创建项目 步骤 2: 添加依赖步骤 3: 创建 Controller步骤 4: 新建index页面步骤 5: 运行应用程序 表单提交步骤 1: 添加 Thymeleaf 依赖在 Maven 中添加依赖 步…

Vue3.3新特性defineModel

defineModel的使用: defineModel选项可以帮我们省去很多麻烦 不仅需要上述操作,还需要进行一定的配置: 在vite.config.js中进行配置 defineModel是一个宏,所以不需要从vue中import导入,直接使用就可以了。这个宏可以用来声明一个…

Java之线程篇六

目录 CAS CAS伪代码 CAS的应用 实现原子类 实现自旋锁 CAS的ABA问题 ABA问题导致BUG的例子 相关面试题 synchronized原理 synchronized特性 加锁过程 相关面试题 Callable 相关面试题 JUC的常见类 ReentrantLock ReentrantLock 和 synchronized 的区别: 原…

Android 新增目录怎么加入git

工作中会遇到android系统源码系统增加第三方功能支持,需要增加目录,那么这个目录怎么提交到服务器上去呢?接下来我们就看下这个问题的解决 一服务器创建仓库 一个新的目录增加到仓库中,需要仓库有对应的仓库地址,这个让…

小记编程语言浮点精度问题

注意: 本文内容于 2024-09-15 20:21:12 创建,可能不会在此平台上进行更新。如果您希望查看最新版本或更多相关内容,请访问原文地址:小记编程语言浮点精度问题。感谢您的关注与支持! 浮点数在计算机中不能精确表示所有…

docker启动mysql未读取my.cnf配置文件问题

描述 在做mysql主从复制配置两台mysql时,从节点的my.cnf配置为: [mysqld] datadir /usr/local/mysql/slave1/data character-set-server utf8 lower-case-table-names 1 # 主从复制-从机配置# 从服务器唯一 ID server-id 2 # 启用中继日志 relay-l…

【小沐学CAD】3ds Max常见操作汇总

文章目录 1、简介2、二次开发2.1 C 和 3ds Max C SDK2.2 NET 和 3ds Max .NET API2.3 3ds Max 中的 Python 脚本2.4 3ds Max 中的 MAXScript 脚本 3、快捷键3.1 3Dmax键快捷键命令——按字母排序3.2 3dmax快捷键命令——数字键3.3 3dmax功能键快捷键命令3.4 3Dmax常用快捷键——…

对网页聊天项目进行性能测试, 使用JMeter对于基于WebSocket开发的webChat项目的聊天功能进行测试

登录功能 包括接口的设置和csv文件配置 ​​​​​​ 这里csv文件就是使用xlsx保存数据, 然后在浏览器找个网址转成csv文件 注册功能 这里因为需要每次注册的账号不能相同, 所以用了时间函数来当用户名, 保证尽可能的给正确的注册数据, 时间函数使用方法如下 这里输入分钟, 秒…

肝内胆管癌中三级淋巴结构分布与临床预后的相关性研究|文献精析·24-09-22

小罗碎碎念 这篇文章是关于肝内胆管癌(intrahepatic cholangiocarcinoma, iCCA)中三级淋巴结构(tertiary lymphoid structures, TLSs)的分布、密度及其对临床结果的预测价值的研究。 作者类型作者姓名单位名称(中文&a…

数据结构——串的模式匹配算法(BF算法和KMP算法)

算法目的: 确定主串中所含子串(模式串)第一次出现的位置(定位) 算法应用: 搜索引擎、拼写检查、语言翻译、数据压缩 算法种类: BF算法(Brute-Force,又称古典的…

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解

【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解 题目传送门 题解 CSP-S1 补全程序,致敬全 A 的答案,和神奇的预言家。 写一下这篇的题解说不定能加 CSP 2024 的 RP 首先看到 k k k 这么大的一个常数,就想到了二分。然后写一个判…

《深入理解JAVA虚拟机(第2版)》- 第13章 - 学习笔记【终章】

第13章 线程安全与锁优化 13.1 概述 面向过程的编程思想 将数据和过程独立分开,数据是问题空间中的客体,程序代码是用来处理数据的,这种站在计算机角度来抽象和解决问题的思维方式,称为面向对象的编程思想。 面向对象的编程思想…

一劳永逸:用脚本实现夸克网盘内容自动更新

系统环境:debian/ubuntu 、 安装了python3 原作者项目:https://github.com/Cp0204/quark-auto-save 感谢 缘起 我喜欢看电影追剧,会经常转存一些资源到夸克网盘,电影还好,如果是电视剧,麻烦就来了。 对于一…

Kettle的安装及简单使用

Kettle的安装及简单使用一、kettle概述二、kettle安装部署和使用Windows下安装案例1:MySQL to MySQL案例2:使用作业执行上述转换,并且额外在表stu2中添加一条数据案例3:将hive表的数据输出到hdfs案例4:读取hdfs文件并将…

Jboss常⻅中间件漏洞

一.CVE-2015-7501 环境搭建 cd vulhub-master/jboss/JMXInvokerServlet-deserialization docker-compose up -d 1.POC,访问地址 172.16.1.4:8080/invoker/JMXInvokerServlet 返回如下,说明接⼝开放,此接⼝存在反序列化漏洞 2.下载 ysose…