一、背景及意義
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項目,包括使用示例數據集和你自己的數據集。這個工作流程涵蓋了從環境設置到訓練、可視化和測試的所有關鍵步驟,如果有感興趣的同學,歡迎評論區留言討論!!