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