網(wǎng)站開發(fā)工具發(fā)展史營銷方案包括哪些內(nèi)容
之前博客進行了COLMAP在服務(wù)器下的測試
實驗筆記之——Linux實現(xiàn)COLMAP-CSDN博客文章瀏覽閱讀794次,點贊24次,收藏6次。學習筆記之——NeRF SLAM(基于神經(jīng)輻射場的SLAM)-CSDN博客NeRF 所做的任務(wù)是 Novel View Synthesis(新視角合成),即在若干已知視角下對場景進行一系列的觀測(相機內(nèi)外參、圖像、Pose 等),合成任意新視角下的圖像。傳統(tǒng)方法中,通常這一任務(wù)采用三維重建再渲染的方式實現(xiàn),NeRF 希望不進行顯式的三維重建過程,僅根據(jù)內(nèi)外參直接得到新視角渲染的圖像。之前博客跑instant-NGP的時候,除了用官方的數(shù)據(jù)集,用自己的數(shù)據(jù)則是通過手機采集,同時獲得pose與image。https://blog.csdn.net/gwplovekimi/article/details/135389922?spm=1001.2014.3001.5501而下面兩個博客則分別實現(xiàn)了NGP與3DGS
實驗筆記之——基于Linux服務(wù)器復現(xiàn)Instant-NGP及常用的tmux指令-CSDN博客文章瀏覽閱讀255次,點贊7次,收藏6次。學習筆記之——NeRF SLAM(基于神經(jīng)輻射場的SLAM)-CSDN博客NeRF 所做的任務(wù)是 Novel View Synthesis(新視角合成),即在若干已知視角下對場景進行一系列的觀測(相機內(nèi)外參、圖像、Pose 等),合成任意新視角下的圖像。傳統(tǒng)方法中,通常這一任務(wù)采用三維重建再渲染的方式實現(xiàn),NeRF 希望不進行顯式的三維重建過程,僅根據(jù)內(nèi)外參直接得到新視角渲染的圖像。配置好后,通過./instant-ngp或者scripts/run.py就可以運行了。這個編譯好像比較耗費時間~https://blog.csdn.net/gwplovekimi/article/details/135365847?spm=1001.2014.3001.5501實驗筆記之——Gaussian Splatting-CSDN博客文章瀏覽閱讀691次,點贊23次,收藏8次。之前博客對NeRF-SLAM進行了調(diào)研學習筆記之——NeRF SLAM(基于神經(jīng)輻射場的SLAM)-CSDN博客NeRF 所做的任務(wù)是 Novel View Synthesis(新視角合成),即在若干已知視角下對場景進行一系列的觀測(相機內(nèi)外參、圖像、Pose 等),合成任意新視角下的圖像。傳統(tǒng)方法中,通常這一任務(wù)采用三維重建再渲染的方式實現(xiàn),NeRF 希望不進行顯式的三維重建過程,僅根據(jù)內(nèi)外參直接得到新視角渲染的圖像。
https://blog.csdn.net/gwplovekimi/article/details/135349210?spm=1001.2014.3001.5501這兩篇博客中,測試public的數(shù)據(jù)集效果都不錯,但是用iphone的record3D錄制的要么不能用要么效果很差,為此統(tǒng)一采用COLMAP來計算pose,再次進行測試以及對比兩個方法
目錄
基于COLMAP的3DGS
基于COLMAP的NGP
3DGS訓練好的模型加載進行可視化
基于COLMAP的3DGS
GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"
首先分別運行下面的命令來啟動3DGS并可視化其在線訓練的過程
conda activate 3DGScd gaussian-splatting/python train.py -s /home/gwp/dataset/30fps下面在MobaXterm下運行conda activate 3DGScd gaussian-splatting/./SIBR_viewers/install/bin/SIBR_remoteGaussian_app
訓練5分鐘左右的結(jié)果
訓練過程的各種視角請見下視頻
基于COLMAP測試3D Gaussian Splatting(訓練過程可視化)
基于COLMAP的NGP
GitHub - NVlabs/instant-ngp: Instant neural graphics primitives: lightning fast NeRF and more
https://github.com/NVlabs/instant-ngp/blob/master/docs/nerf_dataset_tips.md
由于NGP支持的數(shù)據(jù)格式跟3DGS稍有不同,為此需要進行處理
對于參數(shù)“aabb_scale
?”,如說明文檔所言:
“The?aabb_scale
?parameter is the most important?instant-ngp?specific parameter. It specifies the extent of the scene, defaulting to 1; that is, the scene is scaled such that the camera positions are at an average distance of 1 unit from the origin. For small synthetic scenes such as the original NeRF dataset, the default?aabb_scale
?of 1 is ideal and leads to fastest training. The NeRF model makes the assumption that the training images can entirely be explained by a scene contained within this bounding box. However, for natural scenes where there is a background that extends beyond this bounding box, the NeRF model will struggle and may hallucinate "floaters" at the boundaries of the box. By setting?aabb_scale
?to a larger power of 2 (up to a maximum of 128), the NeRF model will extend rays to a much larger bounding box. Note that this can impact training speed slightly. If in doubt, for natural scenes, start with an?aabb_scale
?of 128, and subsequently reduce it if possible. The value can be directly edited in the?transforms.json
?output file, without re-running the?scripts/colmap2nerf.py?script.”
aabb_scale 參數(shù)是最重要的 instant-ngp 特定參數(shù)。指定場景的范圍,默認為1;也就是說,場景被縮放,使得攝像機位置距原點的平均距離為 1 個單位。對于小型合成場景(例如原始 NeRF 數(shù)據(jù)集),默認的 aabb_scale 1 是理想的,并且可以實現(xiàn)最快的訓練。 NeRF 模型假設(shè)訓練圖像可以完全由該邊界框內(nèi)包含的場景來解釋。然而,對于背景超出此邊界框的自然場景,NeRF 模型將陷入困境,并可能在框的邊界處產(chǎn)生“漂浮物”的幻覺。通過將 aabb_scale 設(shè)置為更大的 2 次方(最大可達 128),NeRF 模型會將光線擴展到更大的邊界框。請注意,這可能會稍微影響訓練速度。如果有疑問,對于自然場景,請從 128 的 aabb_scale 開始,然后在可能的情況下減小它。該值可以直接在transforms.json輸出文件中編輯,無需重新運行scripts/colmap2nerf.py腳本。
那么此處就先設(shè)置為128吧~
data-folder$ python ~/instant-ngp/scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 128
注意圖片的文件名字需要是images(當然也可以通過輸入?yún)?shù)修改了)
過程感覺跟3DGS中的差不多~也是一樣的耗時hhh(記得要開tmux),只是數(shù)據(jù)格式支持不一樣~
不知道為啥生成的transform.json只有2個camera~
改為下面的命令測試則可以了!(添加了--colmap_camera_model SIMPLE_PINHOLE)
data-folder$ python ~/instant-ngp/scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 32 --colmap_camera_model SIMPLE_PINHOLE
同時用colmap gui也試試
NGP的運行代碼如下:
conda activate nerf-ngpcd instant-ngp/./instant-ngp /home/gwp/dataset/30fps_for_ngp/
結(jié)果如下圖所示
雖然渲染久一些效果會有點提升
但是這個效果應(yīng)該是不如3DGS的~(這可能也跟上面提到的aabb_scale有關(guān))
把值從32改為1的效果如下:
好像更差~那改為128呢?
好像有點提升,但是比起3DGS還是差一些~
渲染的過程可視化如下
基于COLMAP測試Instant-NGP(訓練過程可視化)
3DGS訓練好的模型加載進行可視化
上面的測試中都是邊訓練邊看效果,此處看看直接訓練好開獎的結(jié)果吧哈~
如下圖所示,大概半個小時左右,訓練好了一個3DGS,看著PSNR還挺高的,打算加載看看效果~
平時邊訓練邊看結(jié)果的代碼如下:
conda activate 3DGScd gaussian-splatting/./SIBR_viewers/install/bin/SIBR_remoteGaussian_app
但如果當前沒有訓練會看到加載的空空如也~
細看gaussian-splatting/的文件組成會發(fā)現(xiàn),它會把訓練的結(jié)果保存在output中
這個就是當前訓練好的模型了。如果要指向某個訓練好的模型,應(yīng)該是
./<SIBR install dir>/bin/SIBR_gaussianViewer_app -m <path to trained model>./SIBR_viewers/install/bin/SIBR_gaussianViewer_app -m "/home/gwp/gaussian-splatting/output/1f6d93f1-5/"
效果如下視頻所示
基于COLMAP測試3D Gaussian Splatting(訓練好的模型)