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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/903882.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/903882.shtml
英文地址,請注明出處:http://en.pswp.cn/news/903882.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(八)RestAPI 毛子(Unit Testing/Integration)

文章目錄 項目地址一、Unit Testing1.1 創建X unit 測試項目1. 創建項目目錄2. 管理包1.2 創建CreateEntryDtoValidator測試1.3 創建CreateEntryDtoValidator測試二、Integration test2.1 創建Integration test環境1. 安裝所需要的包2.2 配置基礎設置1. 數據庫鏈接DevHabitWebA…

設計模式--橋接模式詳解

橋接模式(bridge pattern) 橋接模式時將抽象部分與它的實現部分分離,使他們可以獨立的變化。它是一種對象結構型模式,又稱為柄體(Handle and Body)模式或者接口(interface)模式&…

關于 live555延遲優化之緩存區優化“StreamParser::afterGettingBytes() warning: read”” 的解決方法

若該文為原創文章,轉載請注明原文出處 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/146354088 長沙紅胖子Qt(長沙創微智科)博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV…

Vite 動態導入靜態資源與自動依賴發現實戰解析

一、Vite 動態導入靜態資源的實現方案 在 Vite 中,動態加載圖片、JSON 等靜態資源是高頻需求,但動態路徑拼接可能導致構建失敗或資源未識別。以下結合示例代碼,分析三種實現方案: 1. 方案一:new URL 動態路徑轉換 通…

在matlab中使用UAV123官方toolkits測試自己的數據集

一、前言 最近需要將自己的跟蹤代碼在自己拍攝的數據集上進行測試,這里我選擇使用 UAV123 官方 toolkits 進行配置。首先需要搞清楚這部分代碼是如何運行的,精度圖和成功率圖是如何繪制出來的,然后再將自己的數據集加進去進行測試。 二、UA…

9.idea中創建springboot項目_jdk1.8

9. idea中創建springboot項目_jdk1.8 步驟 1:打開 IntelliJ IDEA 并創建新項目 啟動 IntelliJ IDEA。在歡迎界面,點擊 New Project(或通過菜單欄 File > New > Project)。 步驟 2:選擇 Maven 項目類型 在左側…

SpringAI實現AI應用-搭建知識庫

SpringAI實戰鏈接 1.SpringAl實現AI應用-快速搭建-CSDN博客 2.SpringAI實現AI應用-搭建知識庫-CSDN博客 概述 想要使用SpringAI搭建知識庫,就要使用SpringAI中的TikaDocumentReader,它屬于ETL(提取、轉換、加載)框架中的提取&…

內網服務器映射到公網上怎么做?網絡將內網服務轉換到公網上

如何將內網映射到公網?本地局域網的網絡下部署的內網服務地址轉換到公網上連接訪問是大家比較關注的問題,特別是在無公網IP使用的情況下,很多人不知道怎么做。 在沒有公網 IP 的情況下,要將內網映射到公網,以便外網能…

intellij idea最新版git開啟Local Changes

習慣了在idea的git插件里,查看項目已修改的文件,但是新版idea默認不展示了,用起來很難受。 參考網上教程開啟方法如下: 1. 確保安裝Git Modal Commit Interface插件并開啟該插件 2. 在Advanced Settings開啟Use Modal Commit In…

??智能制造中的預測性維護:基于深度學習的設備故障預測??

智能制造中的預測性維護:基于深度學習的設備故障預測 引言 在智能制造領域,設備突發故障可能導致巨大的經濟損失。傳統維護方式(如定期檢修或事后維修)往往效率低下且成本高昂。預測性維護(Predictive Maintenance, PdM)通過實時監測設備狀態并預測潛在故障,能夠顯著減…

DeepSeek+即夢:AI視頻創作從0到1全突破

目錄 一、開啟 AI 視頻創作大門:前期準備1.1 注冊與登錄1.2 熟悉工具界面1.3 硬件與網絡要求 二、用 DeepSeek 構思視頻腳本2.1 明確創作主題與目標2.2 編寫優質提示詞2.3 生成并優化腳本 三、即夢 AI 實現畫面生成3.1 文生圖基礎操作3.2 調整參數提升畫質3.3 保持人…

初始化列表詳解

1.類中包含以下成員,必須放在初始化列表位置進行初始化: 1. 引用成員變量 2.const成員變量 3. 自定義類型成員(且該類沒有默認構造函數時 ) 2. 成員變量在類中聲明次序就是其在初始化列表中的初始化順序,與其在初始化列表中的先后次序無關…

基于建造者模式的信號量與理解建造者模式

信號量是什么? AI解釋:信號量(Semaphore)是操作系統中用于 進程同步與互斥 的經典工具,由荷蘭計算機科學家 Edsger Dijkstra 在 1965 年提出。它本質上是一個 非負整數變量,通過原子操作(P 操作…

開閉原則(OCP)

非常棒的問題!🔍 開閉原則(OCP, Open/Closed Principle)是軟件設計的核心原則之一,下面我將從定義、意義、優劣分析、Python示例和結構圖五個方面完整解析給你。 🧠 什么是開閉原則? 開閉原則&a…

python數據分析(七):Pandas 數據變形與重塑

Pandas 數據變形與重塑全面指南 1. 引言 在數據分析過程中,我們經常需要將數據從一種結構轉換為另一種結構,以適應不同的分析需求。Pandas 提供了豐富的數據變形與重塑功能,包括旋轉(pivot)、堆疊(stack)、融合(melt)等多種操作。本文將詳細…

Android學習總結之jetpack組件間的聯系

在傳統安卓開發中,UI 組件(Activity/Fragment)常面臨三個核心問題: 生命周期混亂:手動管理 UI 與數據的綁定 / 解綁,易導致內存泄漏(如 Activity 銷毀后回調仍在觸發)。數據斷層&am…

C++初階:類和對象(二)

大家好,我是小卡皮巴拉 文章目錄 目錄 一.運算符重載 1.1 基本概念 定義 參數規則 特性 選擇原則 重載要點 二.類的默認成員函數 2.1 構造函數 構造函數的特點 2.2 析構函數 析構函數的特點 2.3 拷貝構造函數 拷貝構造的特點 2.4 拷貝賦值運算符重…

【c++】【STL】priority_queue詳解

目錄 priority_queue的作用priority_queue的接口構造函數emptysizetoppushpopswap priority_queue的實現仿函數(函數對象)是什么?向上調整算法(adjustup)向下調整算法(adjustdown)迭代器構造pus…

測試——用例篇

目錄 1. 測試用例 1.1 概念 2. 設計測試用例的萬能公式 2.1 常規思考逆向思維發散性思維 2.2 萬能公式 3. 設計測試用例例的方法 3.1 基于需求的設計方法 ?編輯 3.2 具體的設計方法 3.2.1 等價類 3.2.2 邊界值 3.2.3 正交法 3.2.4 判定表法 3.2.5 場景法 3.2.6…

銷售總監求職簡歷模板

模板信息 簡歷范文名稱:銷售總監求職簡歷模板,所屬行業:其他 | 職位,模板編號:KREUNY 專業的個人簡歷模板,邏輯清晰,排版簡潔美觀,讓你的個人簡歷顯得更專業,找到好工作…