【基于3D Gaussian Splatting的三維重建】保姆級教程 | 環境安裝 | 制作-訓練-測試自己數據集 | torch | colmap | ffmpeg | 全過程圖文by.Akaxi

目錄

一.【3DGS環境配置】

1.1 克隆3DGS倉庫

1.2 安裝Visual Studio 2022

1.2.1 下載Visual Studio 2022

1.2.2 更改環境變量?

1.3 創建環境

1.3.1 創建python環境?

1.3.2 離線安裝torch包

1.3.3 安裝依賴包

1.3.4安裝子模塊

(1)報錯解決(vs2022降級到vs2019)

(2)再次安裝子模塊

二、【初步訓練&可視化測試】

2.1 官方數據集訓練與可視化

2.2 報錯解決(顯卡驅動升級至12.7)

2.2.1 錯誤嘗試?

2.2.2 正確操作

2.3 可視化測試

三、【訓練自己的數據集】

3.1 下載Colmap

3.2 下載Ffmpge

3.3 數據集制作

3.3.1 拍攝一段視頻

3.3.2?視頻轉連續圖片

3.3.3 連續圖片轉點云

3.4 訓練數據集

3.5 可視化三維重建效果

四、【更多信息】

4.1?自己的數據集全場景

4.2 最終三維重建效果視頻

4.3 參考鏈接


最終效果:

基于3D_Gaussian_splatting的“小王”三維場景重建

------------------------全文6614字88圖一步一步完成大約耗時5h------------------------

所需軟件以及環境:?

顯卡:NVIDA RTX 3050

Nvidia顯卡驅動:566.36

CUDA version:12.7

運行CUDA11.7&pytorch2.0.0

一.【3DGS環境配置】

1.1 克隆3DGS倉庫

【指令】git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

輸入指令克隆倉庫

克隆到本地文件夾里哦~

可以看到在本地文件目錄是這樣的

1.2 安裝Visual Studio 2022

后面會遇到關于vs2022的報錯哦, 這里裝2022會與cuda11.7版本不適配哈,需要降級到vs2019,請參考1.3.4安裝子模塊報錯解決章節

1.2.1 下載Visual Studio 2022

https://visualstudio.microsoft.com/zh-hans/vs/

去到官網下載Visual Studio,然后安裝

選擇使用C++的桌面開發:

然后更改安裝路徑:

指定一下安裝路徑:

然后點擊右下角安裝

耐心等待即可,大概5min

完成~

1.2.2 更改環境變量?

然后需要更改一下Path路徑

在自己電腦目錄下找到cl.exe文件:

【我的路徑】E:\Akaxi_Microsoft_Visual_Studio_build_tools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64

然后打開【系統屬性-高級-環境變量】

在環境變量中找到【系統變量】-【Path】點擊它,然后點【新建】

將剛剛在目錄下找到的cl.exe路徑,如:
E:\Akaxi_Microsoft_Visual_Studio_build_tools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
添加到系統變量Path路徑里面即可

然后新建終端,輸入命令【cl】測試是否有以上輸出,有的話說明配置成功嚕

1.3 創建環境

1.3.1 創建python環境?

在文件目錄的environment.yml中可以看到對環境的要求,這里要求cuda11.6(我用的是cuda11.7),python至少3.8(我的是python3.8),然后pytorch至少是1.12.1 (我的是pytorch2.0.0),滿足要求哦

查看自己用的cuda版本,輸入指令

【指令】ncvv --version

?(出現cuda11.7即可)

然后開始創建一個python3.8.20的環境,我們使用的是anaconda工具對環境進行創建,關于anaconda的安裝和使用參考Windows下的Anaconda詳細安裝教程_windows安裝anaconda-CSDN博客

使用conda指令創建環境:?

【指令】conda create -n 3dgs python=3.8.20

激活環境,看到里面有python3.8.20啦

【指令】conda activate 3dgs
【指令】conda list

繼續下載:

【命令】conda install -c conda-forge vs2022_win-64

完成后可以看到:

1.3.2 離線安裝torch包

因為環境是CUDA11.7,那我們pytorch選擇2.0.0版本

我們最重要的是安裝這個:pytorch-2.0.0-py3.8_cuda11.7_cudnn8_0.tar.bz2

去清華鏡像網站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/

找到【pytorch-2.0.0-py3.8_cuda11.7_cudnn8_0.tar.bz2】,點擊下載到本地離線安裝

【指令】pip install "E:\AAA_download\torch-2.0.0+cu117-cp38-cp38-win_amd64.whl"

注意這里的指令install后面需要接上你剛剛自己下載torch包的安裝路徑哦

成功

然后再裝一些依賴:

【指令】pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu117

成功啦:

1.3.3 安裝依賴包

可以看到我們需要安裝一些依賴包:

裝一下plyfile

【指令】pip install plyfile

然后裝一下tqdm

【指令】pip install tqdm

同理裝一下opencv-python和joblib

【指令】pip install opencv-python
【指令】pip install joblib

當前conda環境如下

1.3.4安裝子模塊

進入目錄繼續下載子目錄下的內容

【指令】pip install submodules/diff-gaussian-rasterization

(1)報錯解決(vs2022降級到vs2019)

報錯遇到

原因:?

可能是vs2022的問題,vs2022與我的cuda11.7沖突,降低一下版本

卸載vs2022,準備安裝vs2019

注意:官網已經不再提供vs2019的版本啦,需要自己去找vs2019的下載包哦

下載完成后重復1.2.1和1.2.2的步驟

同理需要設置環境變量,找到cl.exe文件的路徑哦:

降級成功~

(2)再次安裝子模塊

降級后再次嘗試:

【指令】pip install submodules/diff-gaussian-rasterization

~~~~~~~~~成功啦~~~~~~~~~

原因總結,cuda11.7和vs2019適配,故前面裝的2022不行哈

同理下載其他兩個子模塊:

【指令】pip install submodules/simple-knn
【指令】pip install submodules/fused-ssin

最終環境是這樣的:

環境配置成功啦~~~~~~~~~~~~~~~~

二、【初步訓練&可視化測試】

2.1 官方數據集訓練與可視化

去到github官網下載 T&T+DB COLMAP (650MB) 4個場景的圖片:

【github官網】https://github.com/graphdeco-inria/gaussian-splatting

補充:

這一排的鏈接分別是:
T&T+DB COLMAP (650MB) :包含了4個場景的圖片,并已經通過convert.py進行colmap轉換。可以直接用來做train.py訓練測試。

Pre-trained Models (14 GB):論文中提到的各種場景的預訓練模型。可以通過viewer查看效果

Viewers for Windows (60MB):作者已經編譯好的SIBR點云查看工具,不需要按照教程再編譯。

Evaluation Images (7 GB) :這是項目訓練過程中,同一批數據在不同的算法之下訓練出來的場景數據對比圖片。

colmap下載(如需使用自己的圖片訓練):可以從照片集合中進行三維重建,可以識別運動結構 (Structure-from-Motion, SfM)、也可以進行多視圖立體 (Multi-View Stereo, MVS)構建。

ImageMagick下載(如需針對自己的圖片進行裁剪)

下載T&T+DB COLMAP (650MB),下載完成后輸入指令(注意自己的路徑):

【命令】
python train.py -s E:\AAA_3D_Gaussian-splatting\gaussian-splatting\my_download_data\tandt_db\db\playroom --iterations 6000

報錯了,應該是cuda內存不足

這里在指令后面加上【--resolution 2】讓分辨率減少一半試一試,指令:

【指令】
python train.py -s E:\AAA_3D_Gaussian-splatting\gaussian-splatting\my_download_data\tandt_db\db\playroom --iterations 6000 --resolution 2

然后這邊在訓練的過程中,新建一個終端,在目錄下E:\AAA_3D_Gaussian-splatting\gaussian-splatting\viewers\bin執行命令進行可視化

【命令】.\SIBR_remoteGaussian_app.exe

可以看到:

【期間又是因為內存不足導致提前中斷】

試一試再低一點:

【指令】
python train.py -s E:\AAA_3D_Gaussian-splatting\gaussian-splatting\my_download_data\tandt_db\db\playroom --iterations 6000 --resolution 4 --percent_dense 0.3

含義

--resolution 4 降低分辨率

--percent_dense 0.3 控制點云密度為 30%

【訓練完成】

2.2 報錯解決(顯卡驅動升級至12.7)

2.2.1 錯誤嘗試?

~~~~~~~~~~~以下皆是錯誤嘗試哈~~~~~~~~~~~

但是又遇到報錯,找不到cudart64_12.dll:?

好像是conda里面的cudatoolkit沒有裝(不是,是CUDA驅動和版本的問題應該是)

【命令】conda search cudatoolkit --info

找到對應版本的cudatoolkit并且找到url,點擊手動下載(不使用命令的原因是因為網速太慢了)

下載完成后手動安裝:

【命令】conda install --use-local E:\AAA_download\cudatoolkit-11.8.0-hd77b12b_0.conda

成功,但是還是沒有用,這里手動將cudart64_12.dll放在目錄下的話可以運行,但是會報兼容問題的錯誤

在網站可以找到cudart64_12.dll下載文件

網址:https://www.dllme.com/dll/files/cudart64_12

后面還是運行沖突了

2.2.2 正確操作

更新了Nvidia顯卡驅動至版本566.36,且cuda version更新至12.7:

【并且將CUDART64_12.DLL文件復制到gaussian-splatting\viewers\bin目錄下】

CUDART64_12.DLL文件下載網址:https://www.dllme.com/dll/files/cudart64_12

2.3 可視化測試

再次運行可視化成功:

【指令】.\SIBR_gaussianViewer_app -m E:\AAA_3D_Gaussian-splatting\gaussian-splatting\output\e4ad78d4-b

【結論】cuda version>=12.X;cuda-toolkit11.7; torch2.0.0+cu117;可行

三、【訓練自己的數據集】

3.1 下載Colmap

Colmap:三維重建查看器?

【github網址】https://github.com/colmap/colmap/releases/tag/3.8

下載到文件夾下(新建一個tools文件夾)

然后將文件路徑添加到環境變量

然后新建終端輸入【命令】COLMAP即可打開軟件

3.2 下載Ffmpeg

Ffmpeg:視頻->連續圖片工具

【官網】https://www.gyan.dev/ffmpeg/builds/

下載后解壓到tools文件夾下

同樣把bin目錄添加到Path環境變量中

輸入【ffmpeg –version】

安裝成功~

3.3 數據集制作

3.3.1 拍攝一段視頻

用手機圍繞自己喜歡的物體拍攝一段視頻吧,作為自己的數據集~

3.3.2?視頻轉連續圖片

輸入指令開始將拍到的視頻轉圖片:

【指令】ffmpeg -i my_create_data/cake.mp4 my_create_input/input_%04d.png

?根據視頻拍攝時長大小轉換時間也會不同,我大概花了20min,視頻轉連續圖片幀完成

在my_create_input文件中可以看到,這是我制作的一個蛋糕數據集

注意:這里目錄結構要一致,不能取別名

3.3.3 連續圖片轉點云

連續圖片幀轉點云(耗時,大約2h左右)

【命令】python convert.py -s data

點云轉換成功,準備開始訓練

3.4 訓練數據集

在PS E:\AAA_3D_Gaussian-splatting\gaussian-splatting>目錄下開始訓練

【指令】python train.py -s data -m data/output --resolution 2

?訓練時間1.5h左右

3.5 可視化三維重建效果

迭代7000次,效果已經很不錯了,進行可視化:

四、【更多信息】

4.1?自己的數據集全場景

視頻轉圖片幀

【指令】ffmpeg -i my_data/input_1.mp4 my_data/input/input_%04d.png

一共生成1264張圖片

然后圖片轉點云:

【指令】python convert.py -s my_data

特征點匹配(這一步很耗時)這里就是要進行26x26=676次

使用COLMAP查看:

訓練后可視化:

效果蠻好,成功撒花~~~~~~~~~~~~~

4.2 最終三維重建效果視頻

基于3D

4.3 參考鏈接

?【github官網】https://github.com/graphdeco-inria/gaussian-splatting

【Youtube教程】https://www.youtube.com/watch?v=UXtuigy_wYc

【github教程】https://github.com/jonstephens85/gaussian-splatting-Windows

【csdn博客】https://blog.csdn.net/weixin_48400654/article/details/139456202?spm=1001.2014.3001.5506

----------------------------------------------------------------------------------------------------

相信讀到這里的朋友,一定是堅持且優秀的

給博主一個免費的贊👍吧

掃描二維碼進博主交流群,問題交流 | 吹吹水 | 一起變得更加優秀

2025.3.16

兩江重大卓工院

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

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

相關文章

C#泛型委托講解

1. 泛型&#xff08;Generics&#xff09; 泛型允許編寫類型安全且可重用的代碼&#xff0c;避免裝箱拆箱操作&#xff0c;提高性能。 泛型類 // 定義泛型類 public class GenericList<T> {private T[] items;private int count;public GenericList(int capacity){items …

【DL學習筆記】DL入門指南

DL入門指南 資料課程 李沐老師 《動手學深度學習》 https://tangshusen.me/Dive-into-DL-PyTorch/李宏毅老師課程 https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php DL入門必掌握知識點 數據處理 &#xff1a; numpy、torch地址處理 &#xff1a; os、pathlib文件處…

在 uni-app 中進行路由跳轉前的權限驗證(檢查用戶是否登錄)

使用場景&#xff1a; 適用于需要登錄才能訪問的 uni-app 應用保護需要認證的頁面不被未授權用戶訪問統一處理路由跳轉的權限控制 /utils/cookies.js下的部分代碼內容&#xff1a; // #ifdef H5 import Cookies from js-cookie // #endif// ums const tokenKey user_center_to…

垃圾收集器ParNewCMS與底層三色標記算法詳解

垃圾收集技術詳解筆記 1. 分代收集理論 當前虛擬機的垃圾收集采用分代收集算法&#xff0c;根據對象存活周期將內存分為不同代區&#xff0c;以優化回收效率。 核心分區&#xff1a; 新生代&#xff08;Young Generation&#xff09;&#xff1a;對象存活周期短&#xff0c;約9…

全排列(回溯算法)

本文參考代碼隨想錄 給定一個 沒有重復 數字的序列&#xff0c;返回其所有可能的全排列。 示例: 輸入: [1,2,3] 輸出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] 思路 排列是有序的&#xff0c;在排列問題中不需要startIndex&#xff1b;但排列問題需要一個…

在線任意長度大整數計算器

具體請前往&#xff1a;在線大整數計算器--支持超大整數的加減乘除,冪運算/模運算,最大公約數&#xff0c;最小公倍數

AT6668B芯片說明書

這顆北斗專用單芯片解決方案AT6668B&#xff0c;采用射頻前端與基帶處理一體化設計&#xff0c;集成北斗二號/三號雙模B1IB1C信號處理器。通過優化星歷解碼算法實現秒級衛星鎖定&#xff0c;配合硬件加速的干擾監測模塊&#xff0c;在電磁環境復雜的應用場景中仍可維持10Hz高頻…

谷歌Chrome瀏覽器安裝插件

因為google瀏覽器的應用市場(https://chrome.google.com/webstore/category/extensions)在國內無法訪問,所以無法在線安裝插件,這里提供開發者模式離線安裝插件的方法。 1、下載crx腳本 谷歌瀏覽器的插件離線文件的擴展名為:crx(Firefox火狐瀏覽器的插件擴展名為fpi)。…

【制造】erp和mes系統建設方案(word)

第一部分 概述 第二部分 方案介紹 第三部分 系統業務流程 3.1 關鍵需求概括分析 3.1.1 銷售管理方面 3.1.2 采購管理方面 3.1.3 倉庫管理方面 3.1.4 財務管理方面 3.1.5 人力資源方面 3.2 關鍵需求具體分析 3.2.1 財務管理 3.2.1.1會計憑證解決 3.2.1.2鈔票流…

Spring AI 系列之二十八 - Spring AI Alibaba-基于Nacos的prompt模版

之前做個幾個大模型的應用&#xff0c;都是使用Python語言&#xff0c;后來有一個項目使用了Java&#xff0c;并使用了Spring AI框架。隨著Spring AI不斷地完善&#xff0c;最近它發布了1.0正式版&#xff0c;意味著它已經能很好的作為企業級生產環境的使用。對于Java開發者來說…

IMAP電子郵件歸檔系統Mail-Archiver

簡介 什么是 Mail-Archiver &#xff1f; Mail-Archiver 是一個用于從多個 IMAP 賬戶歸檔、搜索和導出電子郵件的 web 應用程序。它提供了一種全面的解決方案&#xff0c;幫助用戶管理和存儲電子郵件。 主要特點 &#x1f4cc;自動歸檔&#xff1a;自動歸檔進出郵件&#xff…

李宏毅深度學習教程 第6-7章 自注意力機制 + Transformer

強烈推薦&#xff01;臺大李宏毅自注意力機制和Transformer詳解&#xff01;_嗶哩嗶哩_bilibili 目錄 1. 詞嵌入&問題情形 2. self-attention 自注意力機制 3. 自注意力的變形 3.1 多頭注意力&#xff08;multi-head&#xff09; 3.2 位置編碼 3.3 截斷自注意力&…

大模型幻覺的本質:深度=邏輯層次,寬度=組合限制,深度為n的神經網絡最多只能處理n層邏輯推理,寬度為w的網絡無法區分超過w+1個復雜對象的組合

大模型幻覺的本質&#xff1a;深度邏輯層次&#xff0c;寬度組合限制&#xff0c;深度為n的神經網絡最多只能處理n層邏輯推理&#xff0c;寬度為w的網絡無法區分超過w1個復雜對象的組合&#x1f9e9; "深度邏輯層次"具體含義&#x1f522; "寬度組合限制"具…

2419.按位與最大的最長子數組

Problem: 2419. 按位與最大的最長子數組 思路 子數組按位與的結果&#xff0c;不會超過子數組里的最大值&#xff08;因為 a & b ≤ max(a, b)&#xff09;。 進一步推導&#xff0c;整個數組最大按位與的結果就是數組本身的最大值。 因為最大的那個元素自己作為子數組時&a…

智能時代:先管端點,再談效率

為什么需要統一端點管理&#xff1f;在混合辦公常態化、設備類型爆炸式增長的2025年&#xff0c;分散的端點如同散落各地的哨所。傳統管理方式讓IT團隊疲于應對系統更新、漏洞修復、權限分配等重復勞動&#xff0c;不僅消耗60%以上的運維時間&#xff0c;更可能因響應延遲導致安…

Windows字體simsum.ttf的安裝與Python路徑設置指南

下載工具&#xff1a; https://fontforge.org/en-US/downloads/windows-dl/ 使用工具&#xff1a; 復制到c:\windows\fonts路徑下面。 并復制到運行的python程序同一路徑下。比如&#xff1a;c:\pythoncode\new\

GitHub下載項目完整配置SSH步驟詳解

GitHub下載項目完整配置步驟&#xff08;從零開始&#xff09; 默認下好了git &#xff0c;在文件夾中右鍵打開git bash &#xff0c; 如果沒有請在csdn搜索教程 第一步&#xff1a;檢查并清理現有SSH配置 # 進入.ssh目錄 cd ~/.ssh# 備份并刪除所有現有密鑰&#xff08;避免沖…

數據結構(9)棧和隊列

1、棧 1.1 概念與結構 棧是一種特殊的線性表&#xff0c;只允許在固定的一端進行插入和刪除元素的操作。進行數據插入和刪除的一端稱為棧頂&#xff0c;另一端稱為棧底。棧里面的數據元素遵循后進先出的原則。棧的底層實現一般可以使用數組或者鏈表來實現&#xff0c;但數組的…

湖北大學暑期實訓優秀作品:面向美麗中國的數據化可視平臺

開發背景2024年1月11日&#xff0c;《中共中央國務院關于全面推進美麗中國建設的意見》發布&#xff0c;明確了建設美麗中國的總體要求、主要目標和重點任務&#xff0c;為我國生態文明建設提供了頂層設計和行動指南。系統簡介當前&#xff0c;中國正以空前的力度推進生態文明建…

Ubuntu系統VScode實現opencv(c++)隨機數與隨機顏色

在圖像處理與計算機圖形學中&#xff0c;隨機數與隨機顏色的生成常用于增強圖像的多樣性、可視化多個目標區域、模擬自然現象以及生成測試數據等任務。通過隨機化元素的顏色、位置或形狀&#xff0c;可以使程序在動態展示、調試輸出、以及數據增強等方面更加靈活和豐富。例如&a…