深度學習降噪專題課:整體介紹降噪算法

大家好~本課程基於全連接和卷積神經網絡,學習LBF等深度學習降噪算法,實現實時路徑追蹤渲染的降噪

本課程偏向於應用實現,主要介紹深度學習降噪算法的實現思路,演示實現的效果,給出實現的相關代碼

線上課程資料:
本節課錄像回放

加QQ羣,獲得相關資料,與羣主交流討論:106047770

本系列文章爲線上課程的覆盤,每上完一節課就會同步發佈對應的文章

本課程系列文章可進入合集查看:
深度學習降噪專題課系列文章合集

降噪的目的

光追、路徑追蹤 都會產生噪點,需要降噪

實時路徑追蹤渲染中,降噪是重點

傳統降噪方法

小波過濾

SVGF、BMFR

針對1 spp降噪

算法的基本思想:

  • 通過幀間複用,累積多幀的採樣數,從而提升1 spp到X spp
  • 在Compute Shader中使用小波過濾、線性代數過濾等傳統過濾方法對採樣的圖片降噪
  • 結合TAA,實現抗鋸齒

它們屬於實時降噪,其中:
SVGF耗時:4ms
BMFR耗時:1.6ms

深度學習降噪方法

這是最近的趨勢,目前已經有了深度學習蒙特卡洛實時渲染降噪,如WSPK,它只耗時7ms左右

深度學習蒙特卡洛降噪和深度學習圖片降噪區別

前者多出了使用輔助特徵來加速收斂,輔助特徵包括:normal、world position、camera space depth、albedo等

深度學習蒙特卡洛降噪介紹

深度學習蒙特卡洛降噪主要包括LBF、KPCN、WPSK等算法

  • LBF
    2015年提出,用於離線渲染降噪,屬於參數預測

  • KPCN
    2017年提出,用於離線渲染降噪

  • WSPK
    2021年提出,用於實時渲染降噪,是對KPCN的改進

深度學習蒙特卡洛降噪的基本思想

主要包括下面幾個部分:
輸入->network->輸出

其中,分爲訓練、推理兩個階段

在訓練階段中:
輸入是包含輔助特徵的多個patch數據,如對於KPCN而言,輸入的tensor的shape爲[64,28,128,128],它是一個batch的輸入數據,batch size爲64,有28個channel,大小爲(128寬,128高)
輸出是包含顏色(也就是輻射亮度)的patch數據,如對於KPCN而言,輸出的tensor的shape爲[64,3,128,128],它是一個batch的輸出數據,batch size爲64,有3個channel(輻射亮度的r、g、b),大小爲128*128

在推理階段中:
輸入是包含輔助特徵的整個場景圖片,如對於KPCN而言,輸入的tensor的shape爲[1,28,720,1280],它是一個batch的輸入數據,batch size爲1,有28個channel,大小爲場景大小(這裏爲1280寬,720高)
輸出是包含顏色(也就是輻射亮度)的整個場景圖片,如對於KPCN而言,輸出的tensor的shape爲[1,3,720,1280],它是一個batch的輸出數據,batch size爲1,有3個channel(輻射亮度的r、g、b),大小爲場景大小(這裏爲1280寬,720高)

訓練通常是離線的,它的dataset是預先準備好的圖片。訓練完成後,將模型數據保存到文件中。
推理通常是實時的,它的dataset是圖片或者GPU數據(如WebGPU中的GBuffer數據,它保存了輔助特徵以及color),需要先讀取模型數據到network中

爲了提高訓練和推理速度,我們通常是優化network這部分:
如使用更快收斂的network,以及改進network的輸出層(如通過核預測實現類似於softmax的輸出);
另外,對於WPSK而言,由於network使用了RepVGG塊,可以通過結構重參數化來使得訓練和推理的network的結構不一樣(訓練的network是多路架構,推理的network是單路架構),從而提高network的收斂速度

深度學習蒙特卡洛降噪的實現

我們會使用pytorch框架來實現訓練,使用WebNN API來實現推理

WebNN API是瀏覽器提供的深度學習API,底層調用了深度學習硬件來加速,同時使用WebGPU、WebGL來做polyfill

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章