







摘要:針對基于神經輻射場的渲染方法雖然具備低人工參與度下的照片級別圖像生成能力,但是生成圖像的時間過長、難以實現實時渲染的問題,文章聚焦于提升神經輻射場的實時渲染性能,從神經輻射場體渲染環節處著手,以烘焙數據為渲染資產,針對利用八叉樹保存體素數據無法達到常數訪問時間復雜度的問題,提出了一種基于八叉樹的扁平化稀疏體素存儲方式,以及相應的渲染采樣算法。實驗結果表明,在使用神經輻射場(NeuralRadianceField,NeRF)合成數據集渲染800×800分辨率的圖像時,可以達到268.83的平均幀率,高于其他對比方法。
關鍵詞:神經輻射場;渲染;稀疏體素;空間數據結構優化
中圖分類號:TP37文獻標志碼:A
0引言(Introduction)
神經輻射場(NeuralRadianceField,NeRF)是一種新興三維場景表征方法。NeRF[1]能夠利用一系列照片生成任意視角下對應的三維對象和場景的逼真圖像,這一突破極大地降低了生成照片級別質量圖像的建模成本。NeRF憑借其出色的三維重建能力,在自動駕駛[2]、人體建模[3]、醫學[4]、文物數字化[5]等領域引起了廣泛的關注和探討。盡管如此,神經輻射場渲染方法仍面臨實時渲染的重大挑戰,這主要歸咎于其極端的采樣要求和昂貴的神經網絡查詢代價,嚴重制約了該方法在實時渲染場景中的廣泛應用。
本文針對神經輻射場的渲染速度問題展開研究,重新組織了八叉樹節點的存儲形式,設計了一種具有常數訪問時間復雜度的體素數據存儲結構,將場景的三維信息以一種更加直接和高效的方式存儲,減少了渲染時的計算負擔。實驗結果表明,相比于其他神經輻射場渲染方法,本文方法在渲染時的幀率表現更好,實現了渲染速度的提升。
[BT(3+1*[HJ1mm]1[ZK(]神經輻射場數據的表現形式(DatarepresentationofNeRF)[HJ][BT)]
1.1神經網絡
基于神經輻射場的渲染方法通常采用與NeRF[1]相同的做法,將渲染對象以神經網絡形式表示,并在此基礎上進行優化和調整。FastNeRF[6]分解了神經輻射場網絡結構,并為空間中的每個位置緊湊地緩存深度輻射圖,使渲染速度得以提高;KiloNeRF[7]通過訓練數千個小型多層感知機和稀疏采樣加速渲染;Instant\|NGP[8]設計了一種被稱為多分辨率哈希編碼的方法,可以利用小型網絡生成高質量圖像,縮短了從輸入照片到輸出新視角圖像的整體時間。然而,此類方法渲染圖像時需要經過網絡的層層計算,在渲染速度的提升方面仍存在局限性。
1.2烘焙數據
在神經輻射場訓練完成后,可以通過特定的采樣策略和后處理技術,將場景中的每個體素的顏色和密度信息預先計算并存儲下來。在計算機圖形學中,這種方法被稱作烘焙,相當于將動態的渲染過程轉換為靜態的數據集采樣過程。在渲染過程中使用這類烘焙數據,可以將神經網絡推理與合成指定視角圖像的過程分離。通過使用預提取的顯式體素數據,可以避免重復的神經網絡推斷,直接獲取體素的顏色和密度信息,從而顯著提高渲染效率。
球諧光照是一種計算機圖形學三維空間照明技術。球諧函數為球諧光照技術的數學工具,為一組基函數,可以通過不同的系數對不同的原函數進行模擬,從而獲取近似值。不同階數的球諧函數可以不同程度地還原光照信息。PlenOctree[9]將球諧函數用于體渲染環境中,使神經網絡輸出球諧函數系數[WTHX]k[WTBX]和體素空間密度值σ。
使用球諧函數系數代替RGB顏色作為輸出,可以從神經網絡中將體素數據顯式地提取出來,在渲染時直接作為像素顏色的生成數據,節省了神經網絡的推理時間。
針對神經輻射場渲染方法的實時性問題,本文使用烘焙數據進行渲染,以避免渲染過程中神經網絡的密集推理進程。
2研究方法(Researchmethod)
2.1問題描述
對于體渲染來說,一個重要挑戰就是在保證渲染質量的同時,盡量減少所需的體數據訪問次數和計算時間,滿足不斷增長的渲染需求和變化的應用場景。在光線投射算法中,體素的存儲方法對于訪問次數具有非常重要的影響。
稀疏體素八叉樹是一種利用八叉樹結構存儲稀疏體素的結構。相比于神經網絡采用網絡函數隱式地存儲體素數據,八叉樹存儲的是離散的顯式數據,這意味著渲染時可以直接使用指定位置存儲的顏色信息,從而可以節省大量的推理計算時間。除此之外,八叉樹的分支結構與稀疏體素的分布特性相契合,空間中體素密集的區域對應八叉樹深層次的分叉,體素稀疏區域則對應八叉樹淺層部分的葉節點。這些位于八叉樹上層的葉節點,在空間上表征大尺寸的空白區域,在光線穿過這些節點時,可以實現長距離的跳躍,在渲染時就可以避免持續在對顏色無貢獻的區域選取采樣點。如圖1所示,四叉樹為二維空間中的八叉樹,用層級結構表達體素的空間位置,固定分叉數的樹形結構可合并鄰近的稀疏空間。光線在不同尺寸的節點間跳躍前進,遇到滿足閾值條件的節點時,就會累計顏色。
使用八叉樹存儲體素數據,可以在渲染時實現更高效的訪問與采樣。然而,隨著所存儲的體素數據分辨率的提高,八叉樹會向更深的方向擴展,從根節點到葉節點的查詢路徑可能會更長。這種無限的增長機制,使隨機訪問體素數據的時間代價不可控,限制了體渲染速度的進一步提升。
2.2基于八叉樹的扁平化稀疏體素存儲方式
針對神經輻射場渲染方法存在的實時性挑戰,本文使用烘焙數據進行渲染,旨在避免渲染過程中神經網絡的密集推理進程。同時,重新組織八叉樹節點的組織形式,設計了一種具有常數訪問時間復雜度的體素數據存儲結構,將場景的三維信息以一種更加直接和高效的方式存儲,減少了實時渲染時的計算負擔。
相比于八叉樹,使用均勻網格存儲體素時,射線只需要對其穿過的每個單元進行一次查詢,因為每個單元的位置是預先確定的,與其他單元并不存在父子關系,所以不需要進行額外的搜索。但是,均勻網格無法合并大量的空白區域,在渲染時,光線每經過一個體素單元格就要進行一次訪問,這限制了光線行進速度的提升。
本小節提出了一種能提供八叉樹層級指引信息的扁平數據結構用來存儲體素,以此實現對數據的高效組織和管理??傮w而言,對于從神經網絡中預提取出的數據(球諧函數系數和密度)存儲至八叉樹后,首先將八叉樹層級信息單獨提取至一個指定分辨率水平的均勻網格,以下稱其為索引區;其次重新排布體素數據至一個連續的列表,以下稱其為體素數據區。二維空間的索引區和體素數據區如圖2所示。
索引區的每個單元格都存儲了一個編碼,編碼為32位,前5位表示當前體素立方體的尺寸,后27位表示該單元在體素數據區的索引。若該單元格對應體素塊內的數據為空,則將后27位用0填充。體素數據區的每一個單元格存儲了一個體素對應的三組球諧函數系數和體素空間密度。圖2(a)索引區單元格內的數字代表了可在渲染時進行的體素塊跳躍度量標準。以圖2為例,光線行進至所含數字為2的單元格時,可沿光線方向跳躍〖SX(〗1〖〗22〖SX)〗個標準立方體(三維空間中包圍所有體素的邊界正方體)。二維單元格所映射的三維空間范圍大小與八叉樹的層級信息相對應,由cube表示。cubemax為八叉樹存有顏色及空間密度信息的葉節點所代表的體素塊層級信息,可以用于表示體素塊的大小。體素數據區的項數為八叉樹所包含的有效體素個數,即存在渲染對象顏色和密度信息的體素個數。這種存儲方式將一棵八叉樹“拍平”成一個均勻網格和一個數據列表,是一種扁平化的存儲方式。
圖3展示了構建新數據結構的遞歸算法流程圖,詳細描繪了如何使用處理節點函數,從八叉樹中遞歸構建索引區和體素數據區的過程。在該流程中輸入八叉樹根節點索引、標準正方體體素尺寸和原點坐標至處理節點函數后,即可生成本文使用的體素存儲結構。
2.3渲染過程中的快速訪問算法
渲染時需要根據體渲染公式沿光線方向計算出像素顏色。對于行進中的光線,使用軸對齊包圍盒(Axis\|AlignedBoundingBox,AABB)算法與三維空間中的體素立方體進行碰撞檢測。
算法1給出了像素著色算法的偽代碼。確定射線與數據邊界的空間關系,算法1中的t為光線行進的時間點。若射線與數據邊界不相交,則像素顏色等于背景顏色;若射線與數據邊界相交,計算出交點P之后,射線自適應調整步長前進,累計顏色信息,直到超出空間范圍。函數AcuqireDataFromSparseVolume首先讀取P點對應的CubeSize和位置索引,其次按照此位置索引讀取體素數據區存儲的球諧函數顏色系數color和體素空間密度sigma。若P處對應位置為空,則color和sigma為0。
依照此算法進行光線投射,可達到常數訪問時間復雜度。具體而言,只需一次查詢即可定位空間位置的體素數據。此外,本文設計的體素存儲結構用索引區保留了八叉樹的稀疏存儲信息,因此渲染時仍然能夠自適應地調整采樣步長。
3實驗分析(Experimentalanalysis)
3.1實驗環境和實驗數據集
本文實驗是在配備單個NVIDIAGeForceRTX3070GPU和i7\|11800HCPU的筆記本電腦上進行的。項目通過跨平臺的渲染庫bgfx構建。
NeRF合成數據集為NeRF[1]生成的數據集,本文選擇了其中6個模型來運行實驗:麥克風、椅子、熱狗、樂高、鼓和船。每個模型有100張視圖作為輸入,200張視圖用于測試,所有圖像均為800×800像素。
此外為了實現移動端的實時渲染,我們使用由PlenOctree[9]提供的用于網絡端渲染的預提取體素數據。
3.2實驗結果
本文選擇以下幾種方法與本文方法進行實驗對比:NeRF[1]、PlenOctree[9]和Instant\|NGP[8]。
本文提出的混合渲染方法可以在NeRF合成數據集上以268.83的平均幀率渲染800×800像素的圖像。圖4展示了使用不同方法渲染樂高模型的圖像。
表1列出了使用幾種方法渲染800×800像素的圖像平均質量和渲染速度比較結果。具體比較了峰值信噪比(PSNR)、結構相似性(SSIM)、學習感知圖像相似度(LPIPS)和每秒幀數(FPS)。PSNR數值越大,代表圖像間的相似度越高。SSIM數值處于[-1,1],數值越大,代表圖像間的相似度越高。LPIPS數值越小,代表圖像間的相似度越高。其中,體量表示預提取體素數據文件的大小,單位為MB。各指標最佳結果使用粗體顯示。
由表1可知,作為一種烘焙數據的渲染方法,本文方法在保持高渲染質量的同時具有更快的渲染速度,而且使用的存儲空間與PlenOctree[9]基本持平。
本文方法與PlenOctree[9]均使用了對普通設備更適用的烘焙數據方式,鑒于此共性,下文將重點對這兩種方法進行比較分析。圖5具體展示了各種模型的渲染圖,同時在上方列出了PlenOctree和本文方法在渲染時的幀率數值。
圖6使用折線圖和柱狀圖對兩種方法進行了更加直觀的比較。折線圖顯示了PlenOctree和本文方法對各種模型的預提取數據文件大??;柱狀圖展示了使用PlenOctree和本文方法渲染各種模型時的幀率。
4結論(Conclusion)
神經渲染能夠以三維場景為主體生成高質量的圖像,但其巨大的計算需求一直是實時渲染領域的一大難題。因此,本文針對神經輻射場的實時渲染問題展開研究,在渲染時采用烘焙數據,并設計了一種基于八叉樹的扁平化稀疏體素數據存儲結構和對應的訪問算法,提高了渲染速度。未來,基于神經輻射場的渲染方法的發展需要考慮更多的應用場景,期待本文提出的渲染方法能為神經輻射場在更廣泛渲染應用中的實踐提供有益借鑒。
參考文獻(References)
[1]MILDENHALLB,SRINIVASANPP,TANCIKM,etal.NeRF:representingscenesasneuralradiancefieldsforviewsynthesis[M]∥Springer.ProceedingsoftheSpringer:VEDALDIA,BISCHOFH,BROXT,etal.LectureNotesinComputerScience.Cham:SpringerInternationalPublishing,2020:405\|421.
[2]成歡,王碩,李孟,等.面向自動駕駛場景的神經輻射場綜述[J].圖學學報,2023,44:1091\|1103.
[3]ISIKM,RNZM,GEORGOPOULOSM,etal.HumanRF:high\|fidelityneuralradiancefieldsforhumansinmotion[J].ACMtransactionsongraphics,2023,42(4):1\|12.