三维场景重建3D高斯点渲染复现


🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊

目录


参考文献:需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获取完整版:地址

三维场景重建概述

MVSNet

  • 多视图立体视觉网络(MVSNet, Multi-View Stereo Network)是计算机视觉领域中用于从多视角图像中重建3D几何结构的一种深度学习方法。MVSNet通过利用卷积神经网络(CNNs)对输入的多张图像进行特征提取,然后基于这些特征来计算不同视角之间的匹配代价,并构建代价体积(cost volume)。接下来,通过3D卷积操作对这个代价体积进行处理,以预测每个像素的深度值,最终生成稠密的深度图和点云数据。

  • MVSNet的优势在于它能够自动地从大量未标注的多视角图像中学习到有效的特征表示,从而简化了传统MVS算法中复杂的参数调整过程。此外,由于其基于深度学习的设计,MVSNet还具有较好的泛化能力,可以适应不同类型的场景和摄像机配置。

Nerf

  • NeRF (Neural Radiance Fields) 是一种革命性的3D场景表示方法,它使用全连接神经网络来隐式地建模场景的辐射场(radiance field),即给定任意位置和观察方向时的颜色和密度。通过在训练过程中优化网络参数,NeRF可以从一组稀疏的2D图像中重建出高质量的3D场景,并支持自由视角的渲染。

  • NeRF的主要特点是它能够捕捉到非常精细的细节和复杂光照条件下的效果,这得益于其对场景内部结构的连续、分层表示。然而,这种高精度是以较高的计算成本为代价的,因为每次渲染新视角都需要重新评估整个神经网络。此外,NeRF模型通常需要大量的训练时间和存储空间。

3D gaussian-splatting

  • 3D Gaussian-splatting是一种新兴的3D场景表示技术,它将场景中的每个点视为一个带有方向性的高斯分布。这种方法不仅记录了点的位置信息,还包含了颜色、法线方向以及不确定性等属性。相比传统的点云或网格模型,Gaussian-splatting能够在较低的内存占用下提供更加细腻和平滑的表面细节,特别适合于表现具有复杂几何结构和纹理变化的场景。

  • 3D Gaussian-splatting结合了点云的灵活性和体素表示的紧凑性,同时提供了类似于NeRF的高质量渲染结果。更重要的是,它的渲染速度远快于NeRF,且更容易实现动态更新和交互,因此在实时应用中展现出巨大的潜力。

效果演示

3D gaussian-splatting原理

  • 3D Gaussian-splatting的核心思想是将3D空间中的每一个点都用一个多维高斯分布来表示,其中每个高斯分布不仅描述了该点的空间位置,还编码了颜色、法线和其他物理属性。具体来说,一个高斯分布由均值向量μ(代表点的位置)和协方差矩阵Σ(定义了分布的形状和方向)组成。对于彩色高斯分布,还会包含一个额外的颜色向量c。

高斯分布的数学基础

高斯分布是概率论中用来描述随机变量概率分布的一种常见函数,其一维形式如下:

渲染过程

当渲染一个场景时,3D Gaussian-splatting通过以下步骤来合成图像:

投影:首先,根据相机的姿态(位置和朝向),将所有高斯分布投影到图像平面上。这一步骤决定了哪些高斯分布会在最终图像中可见。

累积贡献:对于每个像素,累加所有投影到该像素上的高斯分布的贡献。这是通过计算每个高斯分布在该像素处的概率密度值并乘以其颜色来完成的。

融合与后处理:最后,对所有像素的累积贡献进行融合,得到最终的图像。可能还需要执行一些后处理步骤,如抗锯齿、色调映射等,以提高输出质量。

优化与加速

为了使3D Gaussian-splatting能够高效运行,研究者们提出了一系列优化策略,包括但不限于:

层次结构:构建多层次的数据结构,如八叉树或kd-tree,以便快速查找和剔除远离视线的高斯分布。

重要性采样:在渲染过程中,优先考虑那些对最终图像影响较大的高斯分布,减少不必要的计算。

GPU加速:充分利用现代图形处理器的强大计算能力,加速高斯分布的投影、累积等操作。

3D Gaussian-splatting模型部署

安装相关依赖

1.进入附件下面

python 复制代码
conda env create --file environment.yml
conda activate gaussian_splatting
  1. 安装diff-gaussian-rasterization
    下载如下两个项目,将第二个项目放在第一个项目的diff-gaussian-rasterization/third_party/glm
python 复制代码
https://github.com/graphdeco-inria/diff-gaussian-rasterization
https://github.com/g-truc/glm/tree/5c46b9c07008ae65cb81ab79cd677ecc1934b903

然后安装依赖

python 复制代码
pip install .

3.安装simple-knn

下载如下一个项目

python 复制代码
https://gitlab.inria.fr/bkerbl/simple-knn

安装相应依赖

pip install .

自定义数据集

照片采集

你可以随意采取自己附近的物品图片,尽量50+张,放入附件./data/input文件夹下

数据转换

python 复制代码
python convert.py -s ./data

模型训练

python 复制代码
python train.py -s ./data -m ./output/mydata

效果演示

https://playcanvas.com/supersplat/editor/

将训练完的点云

拖入页面即可

附件包含:

源码可执行文件(exe、dmg等)部署文档

参考文献:需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获取完整版:地址


相关推荐
天天代码码天天3 分钟前
C# OpenCvSharp 部署表格检测
人工智能·目标检测·表格检测
姓学名生4 分钟前
李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕
vscode·python·深度学习·ffmpeg·github·视频
斯多葛的信徒7 分钟前
看看你的电脑可以跑 AI 模型吗?
人工智能·语言模型·电脑·llama
正在走向自律8 分钟前
AI 写作(六):核心技术与多元应用(6/10)
人工智能·aigc·ai写作
AI科技大本营8 分钟前
Anthropic四大专家“会诊”:实现深度思考不一定需要多智能体,AI完美对齐比失控更可怕!...
人工智能·深度学习
Cc不爱吃洋葱8 分钟前
如何本地部署AI智能体平台,带你手搓一个AI Agent
人工智能·大语言模型·agent·ai大模型·ai agent·智能体·ai智能体
网安打工仔9 分钟前
斯坦福李飞飞最新巨著《AI Agent综述》
人工智能·自然语言处理·大模型·llm·agent·ai大模型·大模型入门
AGI学习社9 分钟前
2024中国排名前十AI大模型进展、应用案例与发展趋势
linux·服务器·人工智能·华为·llama
AI_Tool9 分钟前
纳米AI搜索官网 - 新一代智能答案引擎
人工智能·搜索引擎
Damon小智10 分钟前
合合信息DocFlow产品解析与体验:人人可搭建的AI自动化单据处理工作流
图像处理·人工智能·深度学习·机器学习·ai·自动化·docflow