原文標題:NeRF-XL: Scaling NeRFs with Multiple GPUs
論文連結:https://research.nvidia.com/labs/toronto-ai/nerfxl/assets/nerfxl.pdf
計畫連結:https://research.nvidia.com/labs/toronto-ai/nerfxl/
作者單位:NVIDIA 加州大學柏克萊分校
##論文想法:
圖 2:獨立訓練與多GPU聯合訓練。獨立地訓練多個NeRFs[9,15,18]要求每個NeRF既要建模焦點區域也要建模其周圍環境,這導致了模型容量的冗餘。相較之下,本文的聯合訓練方法使用不重疊的NeRFs,因此沒有任何冗餘。
圖 3:獨立訓練需要在新視角合成時進行混合。無論是在2D[9, 15]或3D[18]中進行混合,都會在渲染中引入模糊。
圖 4:獨立訓練導致不同的相機最佳化。在NeRF中,相機優化可以透過變換不準確的相機本身或所有其他相機以及底層3D場景來實現。因此,伴隨相機優化獨立訓練多個NeRF可能導致相機校正和場景幾何的不一致性,這給混合渲染帶來了更多困難。
圖 5:3D混合可能造成的視覺偽影。左圖展示了使用2個GPU訓練的MegaNeRF結果。在0%重疊時,由於獨立訓練,邊界出現了偽影;而在15%重疊時,由於3D混合,出現了嚴重的偽影。右圖闡釋了這種偽影的成因:雖然每個獨立訓練的NeRF渲染出正確的顏色,但混合後的NeRF並不保證正確的顏色渲染。
圖 6:本文的訓練流程。本文的方法共同訓練所有GPU上的多個NeRFs,每個NeRF涵蓋一個不相交的空間區域。 GPU之間的通訊僅發生在前向傳播中,而不發生在後向傳播中(如灰色箭頭所示)。 (a) 本文可以透過評估每個NeRF以獲得樣本顏色和密度,然後將這些值廣播到所有其他GPU以進行全域體渲染(見第4.2節)。 (b) 透過重寫體渲染方程,本文可以將資料傳輸量大幅減少到每條光線一個值,從而提高效率(見第4.3節)。
圖 7:定性比較。與先前的工作相比,本文的方法有效地利用多GPU配置,在所有類型的資料上提高了效能。
圖 8:定量比較。基於獨立訓練的先前工作未能隨著額外GPU的增加而實現效能提升,而本文的方法隨著訓練資源的增加,享受了渲染品質和速度的提升。
圖 9:本文方法的可擴展性。更多的GPU允許有更多的可學習參數,這導致了更大的模型容量和更好的品質。
圖 10:大規模擷取上的更多渲染結果。本文在更大的捕獲資料集上使用更多的GPU測試了本文方法的穩健性。請參閱本文的網頁,以取得這些資料的影片導覽。
圖 11:在University4資料集上與PyTorch DDP的比較。 PyTorch 分散式資料並行(Distributed Data Parallel,DDP)旨在透過跨GPU分佈光線來加快渲染速度。相較之下,本文的方法是跨GPU分佈參數,突破了叢集中單一GPU的記憶體限制,並且能夠擴大模型容量以獲得更好的品質。
圖 12:University4上的同步成本。本文基於分區的體渲染(見第4.3節)允許 tile-based 通信,這比原始的基於樣本的通信(見第4.2節)成本要低得多,因此能夠實現更快的渲染。
總結來說,本文重新檢視了將大規模場景分解為獨立訓練的NeRFs(神經輻射場)的現有方法,並發現了阻礙額外運算資源(GPUs)有效利用的重大問題,這與利用多GPU設定來提升大規模NeRF效能的核心目標相矛盾。因此,本文引入了NeRF-XL,這是一種原理性的演算法,能夠有效地利用多GPU設置,並透過聯合訓練多個非重疊的NeRFs來在任何規模上增強NeRF性能。重要的是,本文的方法不依賴任何啟發式規則,並且在多GPU設定中遵循NeRF的擴展規律(scaling laws),適用於各種類型的資料。
@misc{li2024nerfxl,title={NeRF-XL: Scaling NeRFs with Multiple GPUs}, author={Ruilong Li and Sanja Fidler and Angjoo Kanazawa and Francis Williams},year={2024},eprint={2404.16221},archivePrefix={arXiv},primaryClass={cs.CV}}
以上是史上最大重建25km²! NeRF-XL:真正有效利用多卡聯合訓練!的詳細內容。更多資訊請關注PHP中文網其他相關文章!