張靖儀
(四川大學計算機學院,成都610065)
隨著深度學習技術的發展,研究人員已提出諸多基于深度學習的反走樣算法,用于提升圖形渲染的質量,然而現有的深度學習反走樣算法并未有效利用圖形渲染的優勢。針對上述問題,將圖形繪制過程中涉及到的G-Buffer信息、時序反走樣的理念及循環神經網絡相結合,提出一種基于G-Buffer的深度學習反走樣算法。實驗結果表明,該算法可有效解決幾何邊緣等高頻區域的走樣現象,并取得和超采樣反走樣算法類似的效果。
圖形繪制離散化過程中,若采樣率不滿足奈奎斯特采樣定理,便會引起渲染失真等圖形走樣現象。這種走樣現象在圖形繪制方面通常表現為幾何走樣和著色走樣,這些走樣將對圖形繪制結果產生不利影響。
為了消除走樣現象,提升圖形繪制質量,研究人員提出了大量基于圖形的反走樣算法。比較典型的圖形反走樣算法有超采樣反走樣算法[1]、多重采樣反走樣算法[2]和時序反走樣算法[3]等。其中超采樣反走樣算法是圖形繪制領域比較常用的一種反走樣算法,該算法通過增加著色樣本數量的方式,有效改善了幾何走樣和著色走樣等圖形繪制失真現象,然而該算法需要額外的著色計算,這顯著增加了著色帶寬。多重采樣反走樣算法則是一種利用幾何掩碼來降低幾何反走樣計算開銷的反走樣算法,然而該算法并不能起到著色反走樣的目的。時序反走樣算法是另一種圖形反走樣算法,該算法通過時間平攤超采樣的方式也能取得較好的反走樣效果,但是該算法會帶入額外的鬼影、模糊等問題。
為了解決圖形反走樣算法的缺陷,受數據驅動的啟發,研究人員已提出大量基于深度學習的反走樣算法。如Nalbach[4]提出過一種基于U-shaped的深度學習反走樣算法,該算法通過數據驅動的方式來解決超采樣反走樣算法著色代價過高、多重采樣反走樣算法著色走樣等問題;NVIDIA[5]提出過一種深度學習反走樣算法,該算法利用深度學習推理加速技術有效解決了深度學習反走樣算法的效率問題,并通過采集大規模圖形繪制場景的方式,顯著提升了反走樣網絡的泛化能力。
雖然已有的深度學習反走樣算法能有效規避圖形反走樣算法的缺陷,但是這些反走樣算法并未有效利用圖形渲染的優勢。針對上述問題,本文將G-Buffer信息、時序反走樣理念等圖形渲染技術和循環神經網絡相結合,提出了一種新的深度學習反走樣算法。并通過實驗驗證本文算法的有效性。
圖形繪制過程中需要對時序信號進行離散化處理,然而對于時序信號頻率變化較高的區域,若時序信號的采樣率不能滿足奈奎斯特采樣定理,便會出現時序走樣現象。這種走樣現象在時序上主要表現為閃爍、車輪效應等圖形時序信號失真現象。
時序反走樣算法是解決時序走樣現象的常用算法。該算法最早由Yang[3]提出,其基本思想是通過重投影等方式將一個像素空間域上的多個采樣點平攤到歷史幀中,并通過混合歷史樣本的方式來達到時序反走樣的目的。通過這種時間平攤超采樣的方式,時序反走樣算法不僅能取得超采樣反走樣算法類似的優勢,還能有效節省反走樣算法的時間開銷。
然而該算法會帶入額外的鬼影、模糊等問題。其中鬼影具體表現為當前幀中殘留了過時的歷史數據,模糊具體表現為畫質退化現象。研究人員通常使用啟發式算法來規避上述問題。常用的啟發式算法有鄰域裁剪[6]、基于指數的混合系數計算方式[7]等。
循環神經網絡是深度學習領域常用的一種處理時序信息的網絡結構。其核心思想是:通過復用上一時刻隱藏數據的方式來提高網絡處理時序信息的能力。由于循環神經網絡具有良好的處理時序數據的能力,因此該網絡也被廣泛應用于視頻處理、語音識別等圖像處理領域。
近年來,隨著深度學習技術的興起,循環神經網絡也被應用于圖形繪制領域。例如,Schied[8]將循環神經網絡和圖形降噪技術相結合,提出了一種能高效解決蒙特卡洛降噪問題的神經網絡。基于該網絡的降噪算法不單能提高圖形降噪的質量,還能顯著改進連續幀畫面的時序穩定性。
G-Buffer中存儲了大量有助于提升圖形繪制質量的有效信息,如法線、深度等。近年來的研究成果也表明基于G-Buffer的深度學習圖形繪制技術往往能幫助神經網絡取得更好的圖形泛化能力。如Nalbach[5]提出過一種基于G-Buffer和U-shaped結構的神經網絡,該網絡在圖像反走樣、景深、運動模糊等領域都能取得不錯的泛化效果。Schied[9]將G-Buffer和深度學習技術將結合,取得了比原始深度學習圖形降噪算法更好的圖形降噪效果及網絡泛化能力。
已有的圖形反走樣算法雖然能取得較好地反走樣效果,但這些反走樣算法并不能完全解決圖形走樣現象。例如超采樣反走樣算法并不能解決圖形繪制過程中的閃爍現象;多重采樣反走樣算法并不能起到著色反走樣的作用;時序反走樣算法會帶入潛在的模糊、重影等問題。
為了規避圖形反走樣算法的缺陷,研究人員通常使用啟發式的方法來解決上述問題。例如超采樣反走樣算法通過邊緣超采樣或改進采樣模式的方式來緩解圖形繪制過程中的閃爍問題,多重采樣反走樣算法通過改進高光濾波模式的方式可以在一定程度上緩解著色走樣現象;時序反走樣算法通過運動濾波、鄰域裁剪等方式來規避潛在的重影問題。
然而這種基于啟發式的方法通常是基于某種預定的假設而產生的某種暫時可行的處理方法,并不具有較強的普適性。相對而言,基于數據驅動的深度學習反走樣算法雖然能有效規避圖形反走樣算法的缺陷,但已有的深度學習反走樣算法并沒有充分利用圖形渲染的優勢。
針對上述問題,本文將圖形繪制過程中涉及到的G-Buffer信息、時序反走樣理念及循環神經網絡相結合,提出了一種基于G-Buffer的深度學習反走樣算法。該算法通過融合已有時序反走樣算法和循環神經網絡的方式來實現時間平攤超采樣的目的,并利用GBuffer數據來訓練反走樣網絡的模型參數。
具體的算法流程框架如圖1所示,首先利用重采樣時域數據模塊來實現時序反走樣的目的,再將重采樣時域數據模塊的輸出結果和當前時刻的G-Buffer數據作為神經網絡的輸入,然后經神經網絡訓練得到最終反走樣結果。其中重采樣時域數據模塊的目的是復現時域反走樣算法中時域樣本采集的功能;而循環神經網絡則是為了提升神經網絡的時域融合效果;GBuffer信息作為神經網絡輸入參數的目的是為了改進反走樣網絡的泛化能力。

圖1 本文算法的處理流程
神經網絡的具體結構如圖2所示。其中網絡的輸入是重采樣得到的時域數據和T時刻的法線、深度等G-Buffer信息,網絡的輸出是T時刻的反走樣結果。網絡前半部分由3×3×32大小的卷積核及ReLU結構堆砌而成,網絡后半部分采用一個3×3×3大小的卷積核。最后網絡的輸出結果不僅作為當前時刻的反走樣輸出結果,還作為下一時刻重采樣時域數據模塊的輸入數據,經重采樣時域數據模塊處理后作為循環神經網絡的隱藏狀態,并和下一時刻的G-Buffer信息一同作為下一時刻網絡的輸入數據。

圖2 本文算法的網絡結構圖
實驗部分使用的數據集是NVIDIA提供的Amazon Lumberyard Bistro[9]場景經裁剪旋轉等數據增強技術處理后得到的1900段包含G-Buffer信息及超采樣反走樣結果的圖像序列數據集。其中每段圖像序列由7組連續的幀畫面組成。并按3:1:1的方式隨機分成訓練集、驗證集及測試集。且訓練過程中迭代次數設置為300,批處理數量設置為8。
為了驗證本文算法的有效性,本文通過對比時序反走樣算法、超采樣反走樣算法的反走樣繪制結果及性能指標來衡量本文算法的有效性。其中圖3是一個典型的反走樣效果對比圖,且從左到右分別為未反走樣的圖像、經時序反走樣算法處理后的圖像、經本文算法處理后的圖像及經超采樣反走樣算法處理后的圖像。對比圖3中的四幅圖像,可以明顯看出,本文算法具有較好的反走樣效果,且這種反走樣效果優于時序反走樣算法,又近似于超采樣反走樣算法取得的效果。表1則是本文算法與時序反走樣算法的在測試集上統計得到的平均性能對比結果,其中SSIM指標越大,則說明該算法的反走樣效果越接近于超采樣反走樣算法。從表1中明顯可以看到,本文算法的SSIM指標遠大于時序反走樣算法的SSIM指標,即本文算法優于時序反走樣算法。

表1 反走樣性能對比結果

圖3 反走樣效果對比圖
本文提出了一種基于G-Buffer的深度學習反走樣算法,該算法通過重采樣時域數據、循環神經網絡等方式實現了時域反走樣的目的,并利用G-Buffer數據來訓練反走樣網絡的模型參數。實驗結果證明,本文算法可有效解決幾何邊緣等高頻區域的走樣現象,并取得和超采樣反走樣算法類似的效果。且這種反走樣效果優于典型的時序反走樣算法。后續的研究中,將考慮使用網絡剪枝、深度學習推理加速等技術來提升本文算法的反走樣效率。