DarkGS:论文解读与全流程环境配置及数据集测试【基于Ubuntu20.04 】【2025最新实战无坑版!!】
一、背景及意义
DarkGS是一个创新性的研究项目,旨在解决机器人在黑暗或低光照环境中探索的问题。传统的3D重建和视觉定位系统在光照条件不佳时表现不佳,这严重限制了机器人在黑暗环境中的应用,如夜间救援、深海探索或洞穴勘测等场景。
这项工作的主要意义在于:
- 为低光照条件下的机器人视觉系统提供了新的解决方案
- 将神经照明模拟与3D高斯点云(Gaussian Splatting)结合,实现了黑暗环境中的高质量3D重建
- 支持实时的照明模拟和环境重光照(relighting),使机器人能够"看见"黑暗中的环境
可以点击下面的链接观看效果视频
[🌃DarkGS] 黑暗中用手电筒🔦构建3D高斯
论文标题:DarkGS: Learning Neural Illumination and 3D Gaussians Relighting for Robotic Exploration in the Dark
论文地址:https://arxiv.org/abs/2403.10814
二、解决的核心问题
DarkGS主要解决了三个关键问题:
- 低光照环境下的3D重建:在极低光照条件下准确重建3D场景
- 照明建模与模拟:学习并模拟照明源(如手电筒)的特性,实现虚拟照明
- 环境重光照:基于重建的3D模型和照明模型,可以从新视角重新照亮场景
三、使用的方法
项目融合了多种先进技术:
- 3D高斯点云(3D Gaussian Splatting):一种高效的3D场景表示方法,比NeRF更快且质量相当
- 神经照明模拟(Neural Illumination):使用神经网络学习照明特性
- 相机-光源标定:通过姊妹项目Neural Light Simulator进行光源与相机的标定
- RAW图像处理:直接处理低光照条件下的RAW图像,保留更多信息
四、效果和成果
根据项目展示:
- 能够在几乎完全黑暗的环境中进行3D重建
- 支持实时的光照模拟,可以通过键盘控制虚拟光源的方向
- 可以从新视角生成场景,并模拟手电筒光照效果
- 生成的3D模型保留了场景的详细纹理和几何信息
五、创新点
- 融合照明模型与3D高斯点云:首次将照明模型与高斯点云结合用于黑暗环境重建
- 直接处理RAW图像:不同于传统方法的预处理,直接利用RAW图像中的信息
- 实时交互式照明模拟:支持用户实时调整虚拟光源位置,模拟不同照明条件
- 无需额外硬件:只需普通相机和光源(如手电筒),无需特殊设备
六、主要工作流程
- 数据收集:在黑暗环境中使用相机和光源(如手电筒)拍摄RAW图像
- 相机-光源标定:使用Neural Light Simulator进行光源与相机的标定
- 数据预处理:
保存原始RAW图像到"raw"文件夹
对RAW图像进行亮度增强处理,保存到"input"文件夹用于COLMAP特征提取 - 模型训练:训练DarkGS模型,学习场景3D结构和照明特性
- 可视化与交互:使用SIRB viewer进行可视化,支持实时调整光源方向
七、开源情况
项目完全开源,代码可在GitHub获取:https://github.com/tyz1030/darkgs
数据集可在Google Drive或Dropbox下载:
Google Drive链接
Dropbox链接
八、环境配置(基于Ubuntu 20.04、CUDA11.8)
# 安装必要的系统依赖
sudo apt-get update
sudo apt-get install -y build-essential git cmake libboost-program-options-dev libboost-filesystem-dev libboost-graph-dev libboost-system-dev libboost-test-dev libeigen3-dev libsuitesparse-dev libfreeimage-dev libmetis-dev libgoogle-glog-dev libgflags-dev libglew-dev qtbase5-dev libqt5opengl5-dev libcgal-dev# 安装CUDA(如果需要GPU加速)
# 请根据你的GPU选择适合的CUDA版本
# CUDA安装略(建议CUDA 11.x)# 克隆项目仓库
git clone https://github.com/tyz1030/darkgs.git --recursive
cd darkgs# 创建并激活conda环境
conda env create --file environment.yml
conda activate darkgs# 安装lietorch
pip install git+https://github.com/princeton-vl/lietorch.git
九、数据准备
# 创建数据目录
mkdir -p data/# 下载示例数据集(可选择Google Drive或Dropbox)
# 使用gdown下载Google Drive文件
pip install gdown
gdown --folder https://drive.google.com/drive/folders/1EzhrEBCEHCSF3jtRwMXQpqF9wgh4KlPD# 解压数据集
unzip "*.zip" -d data/
如图所示:
十、光源标定
如果使用自己的相机-光源设置,需要进行标定:
# 克隆神经光源模拟器仓库
git clone https://github.com/tyz1030/neuralight.git
cd neuralight# 按照仓库指南进行标定
# 完成后,将生成的model_parameters.pth复制到darkgs根目录
cp model_parameters.pth ../
cd ..
十一、训练模型
# 使用示例数据集训练
python train.py -s data/lab1 # 训练完成后,检查点会保存在output目录中
十二、可视化与交互
# 编译SIBR查看器(如果需要)#安装依赖
sudo apt install -y libglew-dev libassimp-dev libboost-all-dev libgtk-3-dev libopencv-dev libglfw3-dev libavdevice-dev libavcodec-dev libeigen3-dev libxxf86vm-dev libembree-dev#进入文件夹
cd SIBR_viewers#因为我是20.04版本,所以还要加一句
#22.04版本不需要加
git checkout fossa_compatibility#构建安装
cmake -Bbuild . -DCMAKE_BUILD_TYPE=Release
在SIBR_viewers/install/bin文件夹内如下:
接下来可以启动可视化:
# 启动可视化服务器
python viz_chkpt.py -s data/lab1/ -m output/名称-时间戳 --start_checkpoint output/名称-时间戳/chkpnt30000.pth# 在另一个终端中启动查看器
./SIBR_remoteGaussian_app
# 然后可以使用键盘上的JKLI键控制光源方向
十三、基于自己的数据集进行测试
1、创建数据集目录结构
mkdir -p data/tunnel_all/raw
mkdir -p data/tunnel_all/input
2、准备数据
将R原始图像放入raw文件夹
注意:这些应该是暗光环境下拍摄的原始图像
数据集图像如下图所示:
由于是低光昏暗场景,很难对进行COLMAP特征提取,因此需要对原始图像进行处理:
对原始图像进行了伽马曲线/手动增加了亮度,以便进行特征提取和匹配。这些校正后的图像被放在 “input” 子文件夹中。我们只使用“原始”图像来构建 DarkGS。
# enhance.py (updated)
"""
Brighten + gamma‑correct dark images for COLMAP feature extraction.* Works with either:1. A flat directory of images (e.g. tunnel_all/raw/*.jpg)2. Nested folders named image1/ image2/ image3/ …Usage examples
--------------python enhance.py # default paths & paramspython enhance.py --src data/tunnel_all/raw \--dst data/tunnel_all/input \-e 2.5 -g 2.0Dependencies
------------pip install opencv-python rawpy tqdm
"""
具体数据处理代码可以评论区留言获取!!
3、COLMAP特征提取
# 处理图像以用于COLMAP特征提取
python convert.py -s data/tunnel_all
4、执行训练
# 然后使用处理后的数据集进行训练
python train.py -s data/tunnel_all
5、可视化
# 编辑scene/lighting.py文件,取消注释第129行
nano scene/lighting.py
# 取消注释第129行后保存# 然后运行可视化
python viz_chkpt.py -s data/my_dataset -m output/模型名称 --start_checkpoint output/模型名称/chkpnt30000.pth# 在另一个终端启动查看器
./SIBR_remoteGaussian_app -m output/模型名称
十四、推荐的测试数据集
- lab1(作者提供的示例数据集):包含实验室环境的暗光图像,适合初步测试
- hallway:走廊场景数据集,有更复杂的几何结构
- desk:桌面场景,包含多种小物体,适合测试细节重建效果
十五、性能优化建议
硬件推荐:
- 使用支持CUDA的GPU(推荐至少8GB显存)
- 至少16GB系统内存
- 多核CPU(推荐8核以上)
训练优化:
- 调整train.py中的批量大小以适应您的GPU
- 对于较大场景,可以减少点云密度以提高性能
问题排查:
- 如果遇到内存不足问题:减小图像分辨率或降低最大训练迭代次数
- 如果重建质量不佳:尝试增加更多视角的图像,或改善输入图像的光照条件
十六 总结
通过上述内容,应该能够在Ubuntu 20.04上使用conda环境完整测试DarkGS项目,包括使用示例数据集和你自己的数据集。这个工作流程涵盖了从环境设置到训练、可视化和测试的所有关键步骤,如果有感兴趣的同学,欢迎评论区留言讨论!!