深度學習降噪專題課:整體介紹降噪算法
大家好~本課程基于全連接和卷積神經網絡,學習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等算法
深度學習蒙特卡洛降噪的基本思想
主要包括下面幾個部分:
輸入->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
浙公網安備 33010602011771號