论文笔记3-XCube: Large-Scale 3D Generative Modeling using Sparse Voxel Hierarchies
目录
Abtract
相关工作
核心算法:
整体流程概述
具体流程解析
1. 输入(Input)
2. 稀疏结构 VAE(Sparse Structure VAE)
3.分层体素潜在扩散(Hierarchical Voxel Latent Diffusion)
4. 生成层次结构(Generated Hierarchy)与网格和纹理(Mesh & Texture)
5. 实现细节
实验部分
创新点
PS:
分层体素潜在扩散模型
稀疏体素层次结构(Sparse Voxel Hierarchy)是一种用于表示 3D 场景或对象的数据结构,优势:
稀疏结构变分自编码器(稀疏结构 VAE)
协同工作
Abtract
Nvidia2023提出的一种新的生成模型,可生成具有任意属性的高分辨率稀疏3D体素网格,以前馈方式生成数百万体素,最细有效分辨率高达1024^3,而无需耗时的 test-time 优化,使用一种分层体素潜扩散模型,使用建立在高效VDB数据结构上的自定义框架,以从粗到细的方式生成逐步更高的分辨率网格。XCube在100 m×100 m规模的大型户外场景中的有效性,体素大小小至10 cm。
提出了名为 XCube的大规模 3D 生成模型,用于生成带有任意属性的高分辨率稀疏 3D 体素层次结构
相关工作
生成概率模型:
- 常见的生成模型包括变分自编码器(VAE)、生成对抗网络(GAN)、归一化流、自回归模型(AR)以及近来的扩散模型(DM)等。
- 一种流行的生成建模方法是潜在扩散,它在例如图像和视频领域已被发现很有用,其扩散过程发生在一个更简单生成模型(如 VAE)的潜在空间中。潜在扩散模型能够通过不同的解码器轻松对多个属性进行解码。在我们的工作中,我们在稀疏体素的层次结构上采用了潜在扩散模型。
3D 生成模型:
- 近期 3D 生成建模文献的大量涌现主要集中在物体级别的形状合成上。
- 一方面,部分工作选择通过逆渲染将 2D 图像先验知识提炼到 3D 中;另一方面,其他一些工作则专注于从大规模 3D 数据集中直接学习 3D 先验知识。近来,更好地利用图像先验知识和大规模 3D 数据集的混合 2D - 3D 方法也开始出现。
- 这些工作的基础是良好的 3D 先验知识,它能够在无需昂贵的测试时优化的情况下确保多视图的一致性,这也是我们这项工作所关注的。
- 针对大规模场景生成的工作,要么选择一种将不同场景组件(如道路、建筑物等)的生成解耦的程序化方法,要么采用一种更通用的一次性生成整个场景的方法。前者通常能提供更多细节,但仅限于生成可能场景的一个固定子集,且需要专门的数据来训练;后者理论上更灵活,但目前受其 3D 表示能力的限制(因此产生的细节较少),这也是我们在这项工作中要解决的一个问题。
用于生成任务的 3D 表示:
- 点云灵活且具有适应性,但无法表示实体表面,并且在建筑设计方面带来挑战。
- 三角网格更具表现力,但局限于固定的拓扑结构,因此难以优化。
- 神经场将场景几何形状隐式编码在网络权重中,缺乏对有效分布建模的明确归纳偏差。
- 三平面能够以较小的内存占用表示高分辨率的物体,但除了大的轴对齐平面外,基本上缺乏几何偏差,在对具有复杂几何形状的较大场景进行建模时会带来挑战。
- 相比之下,体素网格灵活,对块状和精细结构都有表现力,并且支持快速查询和处理。稀疏体素层次结构不会存储空区域的体素信息,因此效率更高。文献中一种常见的做法是使用八叉树变体或哈希表来实现这些,但之前的工作要么只关注几何形状,要么局限于 256³ 的有效分辨率,要么不考虑层次生成,要么未在真实世界数据集上进行评估。与之相反,我们的方法能够从层次潜在空间生成高分辨率的形状,并且在大规模的真实世界场景数据集上进行了评估。
核心算法:
整体流程概述
该图展示了 XCube 模型的方法流程,主要包括两个关 键步骤:首先使用稀疏结构变分自编码器(VAE)将层次结构中的稀疏体素网格编码为紧凑的潜在表示,然后通过分层体素潜在扩散模型以级联方式学习生成各级潜在表示,并最终生成包含多种属性的高分辨率体素网格用于不同应用。
具体流程解析
1. 输入(Input)
- 模型的输入是稀疏体素网格(Sparse Voxel Grids),这些体素网格包含了 3D 场景或对象的信息,并且可能带有如法线、语义等相关属性。
2. 稀疏结构 VAE(Sparse Structure VAE)
稀疏结构 VAE 旨在学习层次结构中每个体素网格及其相关属性的紧凑潜在表示。直接对包含连续和离散随机变量混合的联合分布进行建模较为困难,因此将它们编码为统一的连续潜在表示。
- 选择对层次结构的每一层
独立训练单独的 VAE。为了便于表示,在后续讨论中省略下标
。基于对稀疏体素网格的操作构建神经网络,以建模后验分布
和似然分布
,其中
和
分别是编码器和解码器的权重。
- 编码(Encoding):利用稀疏卷积神经网络处理输入体素网格G和其属性A,通过交替应用稀疏卷积和最大池化操作,将体素网格下采样到X的分辨率。
- 解码(Decoding):VAE 的解码器(
)则从潜在表示X开始,逐步恢复出体素网格及其属性。解码器借鉴了 2305.19590中的结构预测骨干网络,通过迭代地细分现有体素为八分形(octants)并剪枝掉多余的体素,根据细分掩码(subdivision mask)的预测来逐步增加分辨率,最终生成与输入分辨率相同的体素网格G和属性A。如图所示,较粗层级的网格
通过迭代地将现有体素细分为八分形并剪枝多余体素来上采样到更精细的网格
,每个层级可能包含多个使分辨率翻倍的上采样层。这种解码器设计能够预测输入中不存在的新颖稀疏体素,从而实现从潜在表示到原始分辨率体素网格的重建。
3.分层体素潜在扩散(Hierarchical Voxel Latent Diffusion)
PS:
分层体素潜在扩散模型(Hierarchical Voxel Latent Diffusion Model)优势:
- 能够生成高分辨率的 3D 内容:例如 XCube 模型可生成有效分辨率为 1024^3 的高分辨率场景。
- 捕捉数据从粗到细的性质:通过分层结构,模型可以更好地处理从整体结构到局部细节的信息,克服了传统 3D 生成方法在分辨率上的限制,适用于大规模户外场景等复杂场景的生成。
- 利用稀疏结构:基于稀疏体素层次表示,降低了模型的参数需求,简化了建模过程,同时保持了一定的表达能力。
- 具备灵活性:可以注入多种条件信息,如来自上一层级的属性、文本提示、类别标签等,实现多样化的控制生成,生成符合特定条件的 3D 形状和场景。例如,可根据文本描述生成 3D 内容,或从单一 2.5D 视图中填充被遮挡的区域来重建完整的 3D 网格。
- 具有可扩展性:能够扩展到 in-the-wild 输入图像,不需要多视角扩散模型或 SDS 优化。例如 MagicDrive3D 首先训练视频生成模型,然后从生成的数据中进行重建,使得生成过程易于控制,可实现高质量的场景重建。
- 生成的 3D 模型质量较高:如在各种实验中实现了较好的数值指标和视觉质量,生成的模型具有逼真感和多样化的特点。
- 便于进行概率建模:其分层结构自然地诱导了一种概率建模方式,能够更好地捕捉数据的分布特征
4. 生成层次结构(Generated Hierarchy)与网格和纹理(Mesh & Texture)
5. 实现细节
- 针对稀疏体素层次结构生成的优化措施
- 早期扩张:在体素尺寸较大的网络层中,对稀疏体素网格进行一次扩张,使稀疏拓扑的光晕区域也能表示非零特征,有助于后续层更好地捕捉局部上下文并生成平滑结构。
- 细化网络:因子化建模存在误差累积问题,高分辨率网格难以修复先前层产生的瑕疵。通过在 VAE 解码器输出后附加一个细化网络来细化 Gₗ和 Aₗ来缓解此问题,细化网络架构类似于 [21],其训练数据通过在解码前向 VAE 的后验添加噪声来增强。
- 稀疏 3D 学习框架
- 利用 VDB 结构存储稀疏 3D 体素网格,因其紧凑表示(340 万个体素仅需 11MB)和快速查找例程,能够高效实现卷积和池化等常见神经操作。该框架完全在 GPU 上运行(包括网格构建),处理 1024³ 的 3D 场景仅需几毫秒,比当前最先进的稀疏 3D 学习框架 TorchSparse 快约 3 倍,内存使用量约为其 0.5 倍,所有架构均基于此定制框架
实验部分
使用ShapeNet数据集,为构建用于训练的groundtruth体素层次结构,将每个网格体素化为 512^3分辨率,并使用的train/val/test分割。
ShapeNet 上的对象级 3D 生成
定量比较表明 XCube 优于基线方法,点云方法生成形状粗糙,三角平面方法在复杂几何形状(如汽车类别)表现不佳,3DShape2VecSet 存在信息过度压缩问题,NWD 和 LAS - Diffusion 受低分辨率限制,XCube 能生成高分辨率且细节丰富的形状,定性比较结果与定量一致,还展示了用户引导编辑能力。
Objaverse 上的对象级 3D 生成
XCube 能生成更多样、几何保真度更高且细节更精细的 3D 对象,生成一个对象(几何和纹理)约需 1 分钟。
大规模场景级 3D 生成
用户研究中 66.3% 倾向于模型生成结果,表明质量高, 展示了 Waymo 数据集上的无条件生成、解码语义和法线,还展示了单扫描条件生成,模型能在单 LiDAR 扫描输入时生成完整场景(几何和语义)。
消融研究
渐进式修剪:在 ShapeNet Chairs 上用单一步骤替换渐进式修剪,重建精度(网格 IoU)从 92.88% 降至 89.68%,GPU 内存使用增加 3 倍,表明渐进式修剪对保留形状细节和注入 3D 归纳偏差重要。
层次结构配置:比较不同层次结构配置在 ShapeNet Chairs 上的性能,发现层次模型优于单级模型,模型性能对初始层次分辨率鲁棒,16³ 足以捕获对象整体形状,两级和三级模型性能相当,无条件生成用两级模型快速采样,用户编辑设置用三级模型便于编辑。
创新点
- 提出 XCube,一种基于稀疏体素层次结构的新型生成模型,用于生成具有任意属性的高分辨率 3D 对象和场景。
- 采用分层体素潜在扩散模型,以粗到细的方式生成潜在的稀疏体素层次结构,每个层次基于更粗层次条件进行建模,提高了生成质量和效率。
- 利用稀疏结构变分自编码器(VAE)对体素网格及其属性进行紧凑的潜在表示学习,便于后续扩散模型处理,并通过分层概率模型提高了灵活性。
- 结合 VDB 数据结构构建了定制的 3D 深度学习框架,实现了高效的稀疏数据处理,支持更高的空间分辨率和更快的采样速度。
主要贡献
- 提出一种新的 3D 生成模型架构,在对象级和场景级生成任务上取得了较好效果,推动了 3D 生成领域的发展。
- 详细阐述了模型的各个组成部分,包括稀疏结构 VAE、分层体素潜在扩散模型等,为后续研究提供了理论和实践基础。
- 通过在多个数据集上的实验,验证了模型在无条件生成、条件生成、场景完成等任务上的有效性和优越性。
- 开源了代码,为社区提供了可复现的研究成果,有助于进一步的研究和应用开发。
PS:
分层体素潜在扩散模型
分层体素潜在扩散模型是 XCube 模型中用于生成 3D 场景或对象的关键技术,它结合了分层结构和潜在扩散模型的思想,能够生成具有高分辨率和丰富细节的 3D 内容。
- 分层结构
- 从粗到细生成:模型将 3D 场景或对象表示为一个分层的体素网格结构,包含多个层级(用表示层级数量),每个层级的体素网格分辨率逐渐提高,从最粗的层级开始,逐步生成更精细的层级。例如,在生成一个复杂的 3D 建筑场景时,先从一个较低分辨率的大致轮廓(粗层级)开始,然后逐步添加细节,生成更高分辨率的墙体、门窗等结构(更精细的层级)。
- 层级间依赖关系:每一层级的生成依赖于上一层级的结果,即层级的体素网格
和属性
的生成是基于上一层级(
层级)生成的体素网格
、属性
以及其他条件信息
。这种依赖关系使得模型能够在不同尺度上逐步细化对场景或对象的表示,捕捉到从整体结构到局部细节的信息。
- 潜在扩散模型
- 潜在表示学习:首先使用稀疏结构变分自编码器(VAE)将体素网格及其属性编码为紧凑的潜在表示
。这个潜在表示是在一个低维空间中对 3D 信息的一种抽象表达,相比于原始的体素网格,它更易于处理和学习。例如,一个复杂的 3D 物体的体素网格可能包含大量的体素信息,但通过 VAE 编码后的潜在表示可以用较少的参数来描述其关键特征。
稀疏体素层次结构(Sparse Voxel Hierarchy)是一种用于表示 3D 场景或对象的数据结构,优势:
- 数据存储优化
- 稀疏性优势:在 3D 空间中,只存储非空区域的体素信息,而不存储大量空区域的体素,大大减少了内存占用。
- 层次结构提升效率:通过构建层次结构,将不同分辨率的体素网格组织在一起。较粗层级的体素网格可以表示场景或对象的大致轮廓和整体结构,而更精细层级的体素网格则用于描述细节。例如,在快速浏览一个大型 3D 场景时,可以先加载较粗层级的体素网格,快速呈现场景的大致形状,然后根据用户的交互或需求,逐步加载更精细层级的体素网格,显示更多细节,而无需一次性加载所有高分辨率的体素数据。
- 生成模型中的应用优势
- 多分辨率生成能力:在 3D 生成模型(如 XCube 模型)中,稀疏体素层次结构允许模型从粗到细地生成 3D 内容。模型首先生成较粗层级的体素网格,确定场景或对象的基本形状和布局,然后逐步细化生成更精细层级的体素网格,添加更多细节。例如,在生成一个复杂的建筑模型时,模型可以先确定建筑的大致轮廓(如建筑的整体形状、高度、主要结构等),然后在后续层级中逐步生成窗户、门、装饰等细节部分。
- 支持概率建模和条件生成:稀疏体素层次结构便于进行概率建模,因为每个层级的生成可以基于上一层级的条件信息,这种分层的概率建模方式能够更好地捕捉数据的分布特征。同时,模型可以方便地注入各种条件信息(如文本提示、类别标签、单扫描数据等)到不同层级的生成过程中,实现多样化的条件生成。例如,根据用户提供的文本描述(如 “一座带有花园和游泳池的欧式别墅”),模型可以在不同层级上根据这些条件信息生成相应的 3D 别墅场景。
稀疏结构变分自编码器(稀疏结构 VAE)
用于对稀疏体素网格及其属性进行编码和解码,将其转换为紧凑的潜在表示,具有以下关键特性和作用:
- 编码紧凑潜在表示
- 统一连续表示:旨在将层次结构内每个体素网格及其相关属性编码为统一的连续潜在表示。相比于直接处理包含连续和离散随机变量混合的联合分布,这种编码方式更有利于后续的操作,尤其是与下游的扩散模型配合使用,无论是在训练阶段还是采样阶段都更加便捷。
- 降低计算量与保留表达力:以较粗的空间分辨率对体素网格进行编码,得到的潜在表示作为一种紧凑但仍具有意义的代理。这样做在减少计算资源消耗的同时,还能保留足够的表达能力来描述原始的 3D 场景或对象。例如,对于一个高分辨率的 3D 模型,直接处理其体素网格数据可能需要大量的计算资源,但通过稀疏结构 VAE 编码后,在较低维的潜在空间中进行操作,可以大大降低计算复杂度,同时又不会丢失太多重要信息,使得模型在后续的处理中能够更高效地学习和生成。
- 网络设计与操作
- 独立层级训练:选择对层次结构的每一层独立训练单独的 VAE。在构建神经网络时,基于对稀疏体素网格的操作来建模后验分布
和似然分布
,其中
和
分别是编码器和解码器的权重。这种独立训练的方式使得每个层级可以根据自身的特点和需求进行优化,提高了模型的灵活性和适应性。
- 编码器操作:利用稀疏卷积神经网络处理输入的体素网格和属性。通过交替应用稀疏卷积和最大池化操作,将体素网格下采样到较低分辨率,从而得到紧凑的潜在表示。例如,在对一个包含大量细节的 3D 物体体素网格进行编码时,稀疏卷积可以有效地提取局部特征,而最大池化操作则逐渐降低分辨率,减少数据量,最终得到一个能够概括物体主要特征的潜在表示。
- 解码器操作:解码器借鉴了预测骨干网络,从潜在表示开始,逐步恢复出体素网格及其属性。它通过迭代地细分现有体素为八分形并剪枝掉多余的体素,根据细分掩码的预测来逐步增加分辨率,最终生成与输入分辨率相同的体素网格和属性。例如,当从潜在表示解码一个 3D 场景时,解码器会根据学到的模式和特征,逐步将潜在向量转换为体素网格,先从粗略的结构开始,然后不断细分和优化,直到达到原始的分辨率,同时生成相应的属性信息,如法线方向、语义标签等。
- 对模型整体的贡献
- 连接体素与潜在空间:稀疏结构 VAE 在体素空间和潜在空间之间架起了一座桥梁,使得模型能够在这两个空间之间自由转换。通过编码过程,将复杂的体素网格信息压缩到潜在空间,便于模型学习数据的内在结构和分布;而解码过程则能够将潜在表示还原为体素网格,用于生成最终的 3D 场景或对象。这种转换能力是 XCube 模型能够有效生成高质量 3D 内容的关键之一。
- 支持分层生成框架:作为分层生成框架中的重要组成部分,稀疏结构 VAE 为后续的分层体素潜在扩散模型提供了基础。它生成的潜在表示可以被分层体素潜在扩散模型进一步处理,以生成具有不同分辨率和细节层次的体素网格。例如,在生成一个大型户外场景时,稀疏结构 VAE 先将初始的稀疏体素网格编码为潜在表示,然后分层体素潜在扩散模
协同工作
XCube 模型通过稀疏体素层次结构、分层体素潜在扩散模型和稀疏结构 VAE 的协同工作,实现了高分辨率 3D 对象和场景的生成,具体过程如下
- 稀疏体素层次结构
- 作为模型的数据基础,以稀疏方式存储 3D 场景或对象的体素信息,减少内存占用,提高处理效率。
- 不同分辨率的体素网格构成层次结构,从粗到细描述场景或对象,先呈现大致轮廓,再逐步细化细节。
- 稀疏结构 VAE
- 对稀疏体素层次结构中的每个体素网格及其属性进行编码,得到紧凑的潜在表示。
- 编码器利用稀疏卷积神经网络下采样,解码器基于结构预测骨干网络上采样并预测新体素,恢复原始分辨率信息。
- 分层体素潜在扩散模型
- 基于稀疏结构 VAE 的潜在表示,以级联方式从粗到细生成潜在表示。
- 通过扩散过程,先向潜在表示加噪,再去噪学习数据分布,每个层级依赖上一层级结果,融入条件信息生成符合要求的 3D 内容。
- 协同工作流程
- 输入稀疏体素网格,经稀疏结构 VAE 编码为潜在表示。
- 分层体素潜在扩散模型利用潜在表示,从最粗层级开始生成各级潜在表示和体素网格及属性。
- 最终生成包含多种属性的高分辨率体素网格,可转换为网格用于 3D 建模、渲染等,或添加纹理增强视觉效果。
相关文章:
论文笔记3-XCube: Large-Scale 3D Generative Modeling using Sparse Voxel Hierarchies
目录 Abtract 相关工作 核心算法: 整体流程概述 具体流程解析 1. 输入(Input) 2. 稀疏结构 VAE(Sparse Structure VAE) 3.分层体素潜在扩散(Hierarchical Voxel Latent Diffusion)…...
【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能
【组件】前端ElementUi 下拉Tree树形组件 带模糊搜索自动展开高亮功能 https://live.csdn.net/v/435737 <template><div><el-popoverstyle"overflow-y: auto; "placement"bottom"trigger"click"><el-inputstyle"margi…...
诠视科技受邀出席“中国虚拟现实产学研大会”
2024年11月2-3日,由中国虚拟现实技术与产业创新平台举办的第十届“中国虚拟现实产学研大会” 在北京顺利召开,大会围绕“虚拟现实技术与产业创新融合”这一主题进行深入探讨。诠视科技作为虚拟现实产业的创新领军企业,CEO林瓊受邀参加本次活动…...
【达梦数据库】授权查询
目录 授权查询EXPIRED_DATECLUSTER_TYPE 更换原则更换方法 授权查询 select * from v$license;EXPIRED_DATE 过期日期,如果是正式版会显示NULL CLUSTER_TYPE 授权使用的集群类型CLUSTER_TYPE,格式为字符串“XXXX”, 每一位上 0 表示禁止…...
探索 ZED 双目 3D 相机发展:ZED 2i 的创新功能扩展之路
在科技迅速发展的当下,3D 视觉技术在众多领域的发展中有着重要作用。Stereolabs 公司研发的 ZED 相机受到广泛关注。Stereolabs 于 2010 年在美国旧金山成立,一直专注于立体视觉和 3D 深度相机技术的研究。2015 年推出的 ZED 相机为无人机、机器人等设备…...
基于卷积神经网络的白菜病虫害识别与防治系统,resnet50,mobilenet模型【pytorch框架+python源码】
更多目标检测和图像分类识别项目可看我主页其他文章 功能演示: 白菜病虫害识别与防治系统,卷积神经网络,resnet50,mobilenet【pytorch框架,python源码】_哔哩哔哩_bilibili (一)简介 基于卷…...
计算机网络 | 7.网络安全
1.网络安全问题概述 (1)计算机网络面临的安全性威胁 <1>计算机网络面临的完全性威胁 计算机网络面临的两大类安全威胁:被动攻击和主动攻击 被动攻击 截获:从网络上窃听他人的通信内容。主动攻击 篡改:故意篡改…...
Opencv+ROS自编相机驱动
目录 一、工具 二、原理 代码 标定 三、总结 参考: 一、工具 opencv2ros ubuntu18.04 usb摄像头 二、原理 这里模仿usb_cam功能包对Opencv_ros进行修饰,加上相机参数和相机状态,难点在于相机参数的读取。 对于相机参数话题 camera…...
js---函数参数是值传递还是引用传递
理解1:都是值(基本/地址值)传递 理解2:可能是值传递,也可能是引用传递(地址值) 在JavaScript中,函数参数的传递方式取决于参数的类型: 值传递(Pass by Val…...
如何解决DDoS导致服务器宕机?
分布式拒绝服务攻击(DDoS攻击)是一种常见的网络安全威胁,通过大量恶意流量使目标服务器无法提供正常服务。DDoS攻击可能导致服务器宕机,严重影响业务的正常运行。本文将详细介绍如何检测和防御DDoS攻击,防止服务器宕机…...
临床检验项目指标学习笔记
声明: 家有病人,记录此学习笔记仅为了更好照顾家人。本文不负责内容的准确性和版权。如果存在侵权、或不希望被转载的媒体或个人可与我们联系,我将立即进行删除处理。 血脂四项 [Q&A] 血脂四项 指导意义 测定血清中血脂含量,…...
代码管理之Gitlab
文章目录 Git基础概述场景本地修改未提交,拉取远程代码修改提交本地,远程已有新提交 GitIDEA引入Git拉取仓库代码最后位置 Git基础 概述 workspace 工作区:本地电脑上看到的目录; repository 本地仓库:就是工作区中隐…...
秒杀系统三层架构设计:缓存、消息队列与数据库
秒杀是一种极端高并发场景,短时间内数百万用户涌入,抢购有限库存的商品。为了保证系统稳定性和数据一致性,同时提升用户体验,我们可以设计一个三层架构:缓存层、消息队列层、数据库层。本文将详细设计这一架构并探讨其…...
tauri2.0版本开发苹果ios和安卓android应用,环境搭建和最后编译为apk
官网链接:What is Tauri? | Tauri 初始准备 rust版本一定要1.77.2以上的版本,查看版本和升级版本: 升级命名: rustup update 不然会报错: error: package tauri-plugin-shell v2.0.2 cannot be built because it r…...
SCI论文部分题目
SC20243213 通过氢和氨集成增强Power-to-X灵活性和可持续成本降低:绿色实验室Skive案例研究 SC20243211 分析同时发电的综合系统中的能量和能量效率、环境影响和经济可行性,淡水、热水和天然气凝液 SC20243208 双燃料生物质-天然气系统中的氢、…...
使用PyTorch在AMD GPU上进行INT8量化实现精简化的LLM推理
Leaner LLM Inference with INT8 Quantization on AMD GPUs using PyTorch — ROCm Blogs 随着大型语言模型(LLMs)规模达到数千亿参数,我们在这些庞大模型中表示数据的方式极大地影响了训练所需的资源(例如,用于推理的…...
Solon 拉取 maven 包很慢或拉不了,怎么办?
注意:如果在 IDEA 设置里指定了 settings.xml,下面两个方案可能会失效。(或者直接拿 "腾讯" 的镜像仓库地址,按自己的习惯配置) 1、可以在项目的 pom.xml 添加 "腾讯" 的镜像仓库 "阿里&qu…...
spring的事务隔离?
在Spring中,事务的隔离级别是指在多事务并发执行时,事务之间的隔离程度,隔离级别定义了一个事务可以看到另一个事务的哪些数据,Spring事务管理器允许通过Transactional注解或者xml配置来指定事务的隔离级别。 事务的隔离级别有以…...
13 —— 开发环境调错-source map
问题:代码被压缩后,无法正确定位源代码的位置(行数和列数) source map:准确追踪error和warning在原始代码的位置 —— webpack.config.js配置devtool选项 module.exports { devtool: inline-source-map }; inline-s…...
【大数据分析深度学习】在Hadoop上实现分布式深度学习
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘,以提取有价值的信息和洞察。它结合了大数据技术、人工智能(AI)、机器学习(ML&a…...
【Linux探索学习】第十六弹——进程地址空间:深入解析操作系统中的进程地址空间
Linux学习笔记: https://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482 前言: 进程地址空间是操作系统进程管理的重要概念之一,它定义了进程在执行时所能访问的内存布局。理解进程地址空间不仅有助于掌握操…...
【数据结构与算法】相交链表、环形链表(判断是否有环)、环形链表(返回入环节点)
主页:HABUO🍁主页:HABUO 🍁如果再也不能见到你,祝你早安,午安,晚安🍁 1.相交链表 题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表…...
hubuctf-2024校赛-复现wp
web easyweb1 <?php error_reporting(0); highlight_file(__FILE__);$flag getenv("GZCTF_FLAG");if(isset($_GET[num])){$num $_GET[num];if(preg_match("/[0-9]/", $num)){die("You are failed.");}if(intval($num)){echo $flag;} } 利…...
.NET Core发布网站报错 HTTP Error 500.31
报错如图: 解决办法: 打开任务管理器》》服务》》找到这仨服务,右键启动即可,如果已经启动了就重启:...
RTSP摄像头、播放器为什么需要支持H.265?
H.264还是H.265? 好多开发者在做选RTSP播放器的时候,经常问我们的问题是,用H.264好还是H.265好?本文我们就H.264 和 H.265的主要区别和适用场景,做个大概的交流。 一、压缩效率 H.265 更高的压缩比 H.265 在相同视频…...
brynet源码阅读——解决文件描述符耗尽问题mIdle
1、背景 在高并发服务器程序中,文件描述符资源是有限的。当一个程序同时处理多个网络连接时,每个连接都会占用一个文件描述符。如果系统没有足够的文件描述符可用,调用 accept()(用于接收新的连接)或其他文件操作时可…...
学习Zookeeper
Zookeeper有手就行 1. 初识ZooKeeper1.1 安装ZooKeeper1.2 ZooKeeper命令操作1.2.1 Zookeeper数据模型1.2.2 Zookeeper 服务端常用命令1.2.3 Zookeeper客户端常用命令 2. ZooKeeperJavaAPl操作2.1 Curator介绍2.2 CuratorAPI常用操作2.2.0 引入Curator支持2.2.1 建立连接2.2.2 …...
css效果
css炫彩流光圆环效果 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style>*{margin: 0;padding: 0;}body{width: 100%;height: 100vh;}.container{position: relative;width: 100%;height: 100vh…...
【Python爬虫五十个小案例】爬取豆瓣电影Top250
博客主页:小馒头学python 本文专栏: Python爬虫五十个小案例 专栏简介:分享五十个Python爬虫小案例 🪲前言 在这篇博客中,我们将学习如何使用Python爬取豆瓣电影Top250的数据。我们将使用requests库来发送HTTP请求,…...
「Mac玩转仓颉内测版25」基础篇5 - 布尔类型详解
本篇将介绍 Cangjie 中的布尔类型,包括布尔值的定义、运算操作符、逻辑运算、布尔类型的常见应用场景及其在条件判断中的应用,帮助开发者理解和使用布尔类型。 关键词 布尔类型定义布尔运算逻辑运算符条件判断常见应用场景 一、布尔类型概述 布尔类型&…...
electron主进程和渲染进程之间的通信
主进程 (main.js) const { app, BrowserWindow, ipcMain } require("electron"); const path require("node:path"); // 导入fs模块 const fs require("fs");const createWindow () > {const win new BrowserWindow({width: 800,height…...
在 Spring Boot 中实现多种方式登录(用户名、手机号、邮箱等)的不正经指南
欢迎来到一场技术与幽默交织的冒险!今天,我们将跳进 Spring Boot 的世界,探索如何通过 用户名、手机号、邮箱 等多种方式实现登录。想象一下,用户在登录时可以随心所欲地选择——就像你今天早上纠结到底是要喝美式咖啡还是拿铁&am…...
JVM标量替换
JVM标量替换 简单来说 JVM 中的标量替换是一种编译优化技术,将未逃逸对象拆解成不能再分,标量在栈帧或寄存器中分配使用。将对象拆解后直接使用标量,不但避免了完整对象的创建和后续回收流程,而且能更快地获取和操作相应的数据&…...
Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!
前言 我们先简单了解一下PyTorch、Keras、Scikit-learn和TensorFlow都是什么。 想象一下你要盖一座大房子。你需要砖头、水泥、工具等等,对吧?机器学习也是一样,需要一些工具来帮忙。PyTorch、Keras、Scikit-learn和TensorFlow就是四种不同的…...
C语言蓝桥杯组题目
系列文章目录 文章目录 系列文章目录前言题目第一题.1, 2, 3, 4 能组成多少个互不相同且无重复数字的三位数?都是多少?思路 第二题: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少…...
用Matlab和SIMULINK实现DPCM仿真和双边带调幅系统仿真
1、使用SIMULINK或Matlab实现DPCM仿真 1.1 DPCM原理 差分脉冲编码调制,简称DPCM,主要用于将模拟信号转换为数字信号,同时减少数据的冗余度以实现数据压缩。在DPCM中,信号的每个抽样值不是独立编码的,而是通过预测前一…...
真实网络安全面试场景题
1.公司内部搭建了2台DNS服务器做主辅同步,公司的业务官网地址为 www.chinaddic.com。小明作为网络管理员把域名添加至DNS服务器进行测试。 问题1:使用自己电脑可以正常访问刚添加的域名,但处于同样网络环境同事电脑却访问不了。 出现此问题原因…...
速盾:ddos防御手段哪种比较好?高防cdn怎么样?
DDoS(分布式拒绝服务)攻击是一种威胁网络安全的常见攻击手段。为了保护网站和服务器免受DDoS攻击的影响,许多安全专家和公司开发了各种防御手段。在这篇文章中,我们将重点讨论一种常见的DDoS防御手段——高防CDN(内容分…...
【ArcGISPro】Sentinel-2数据处理
错误 默认拉进去只组织了4个波段,但是实际有12个波段 解决方案 数据下载 Sentinel-2 数据下载-CSDN博客 数据处理 数据查看 创建镶嵌数据集 在数据管理工具箱中找到创建镶嵌数据集...
【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配
接到一个需求是类似下图的3D多房间视角,需要拖拽屏幕 问题 在做这种屏幕拖拽的时候发现,需要拖拽起来有跟手的感觉,会存在不同分辨率机型的适配问题。 即:美术调整好了机型1的手感,能做到手指按下顶层地板上下挪动&…...
谷粒商城-消息队列Rabbitmq
RabbitMq参考文档 在谷粒商城项目中使用消息队列主要有以下几个重要原因: 异步处理提高性能 场景示例:在订单系统中,当用户提交订单后,系统需要完成多个操作,如更新库存、生成订单记录、发送订单通知等。如果这些操作…...
python-爬虫入门指南
前言:由于个人负责的运维组,其中有个同事每回在某个项目发版更新后,需手动在k8s容器平台web界面上复制出几百个微服务的名称以及镜像版本等信息,用来更新微服务清单,个人决定抽时间写个爬虫脚本自动完成手动执行的任务…...
力扣—53. 最大子数组和
53. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4…...
STM32H7开发笔记(2)——H7外设之多路定时器中断
STM32H7开发笔记(2)——H7外设之多路定时器中断 文章目录 STM32H7开发笔记(2)——H7外设之多路定时器中断0.引言1.CubeMX配置2.软件编写 0.引言 本文PC端采用Win11STM32CubeMX4.1.0.0Keil5.24.2的配置,硬件使用STM32H…...
kafka如何知道哪个消费者消费哪个分区?
在Kafka中,消费者和分区之间的分配是通过一个称为“消费者组协调器”(Consumer Group Coordinator)的组件来管理的。 以下是Kafka如何确定哪个消费者消费哪个分区的步骤: 消费者加入消费者组: 当消费者启动时…...
Dockerfile构建报错【ERROR: failed to solve: process】的解决办法
报错信息如下 ERROR: failed to solve: process “/bin/sh -c yarn install” did not complete successfully: exit code: 1 解决 从阿里云等镜像站点下载CentOS-7.repo文件 下载CentOS-7.repo文件:可以从阿里云等镜像站点下载CentOS-7.repo文件,…...
html渲染优先级
在前端开发中,优先布局是指在设计和构建页面时,将页面的各个部分按照其重要性和优先级进行排序,并依次进行布局和开发。这种方法可以帮助开发团队在项目初期就确定页面结构的核心部分,从而更好地掌控项目的整体进度和优先级。且确…...
AIX下crs-5005 ip address is aready in use in the network的解决办法
某业务生产系统中,三节点的rac数据库中3号节点因故障停机后,进行crs的重启。重启完成后,发现数据库的监听未起来,启动的过程中并提示crs-5005错误。 一、问题过程 查看监听,发现监听no service ywdb03/oracle/grid/c…...
Docker--通过Docker容器创建一个Web服务器
Web服务器 Web服务器,一般指网站服务器,是驻留于因特网上某种类型计算机的程序。 Web服务器可以向浏览器等Web客户端提供文档,也可以放置网站文件以供全世界浏览,或放置数据文件以供全世界下载。 Web服务器的主要功能是提供网上…...
C#里怎么样自己实现10进制转换为二进制?
C#里怎么样自己实现10进制转换为二进制? 很多情况下,我们都是采用C#里类库来格式化输出二进制数。 如果有人要你自己手写一个10进制数转换为二进制数,并格式化输出, 就可以采用本文里的方法。 这里采用求模和除法来实现的。 下…...