<圖學玩家 第020篇 原創文>
Differentiable Rendering(以下簡稱DR)在筆者先前的文章常被提及,例如DIB-R或Nvdiffrast等。在許多研究中,DR更像是一種技法,用來訓練Neural Network以進行3D生成。然而以一個更宏觀的角度來看,其實DR是一種用來解決Inverse Graphics的問題。
所以什麼是Inverse Graphics? 上圖其實給了非常直觀的答案。傳統圖學Pipeline討論的多是透過3D環境資訊,去Render出2D的畫面。而Inverse Graphics要討論的,就是如何透過2D圖像的資訊,去重現3D環境。
而以DR來解決Inverse Graphics的問題在這幾年也慢慢有許多不錯的成果,搭配Neural Network訓練也是其中一種常見的應用。
Differentiable Rasterization
Rendering可以粗略分為Rasterization和Ray Tracing兩種方式,其差異也就導致各有不同的DR設計。
以Rasterization來說,Nvdiffrast就有提到其設計重點在於,最終未對2D影像造成影響的Primitive (例如三角形或頂點),並不應該接收到Gradient。這與DIB-R的設計精神就有所不同,DIB-R的Background Rasterization,會對所有Primitive給予一Alpha Channel的預測值。換句話說,即使是被遮蔽住的三角形,也會對DR造成影響。
a 3D primitive that has no effect on the image — for instance, due to being off the screen or occluded by other primitives — should, by our premise, receive a zero gradient.
Differentiable Ray Tracing
以Redner這篇為例,從Shading Point向Pixel隨機發出Ray後,再去積分以算出該Pixel的顏色。然而傳統的Monte Carlo Sampling方式,會在三角形邊緣以及遮蔽等情況下,造成不連續的狀況。
這種不連續由下圖左側可以看出。假設今天由某個Pixel Filter看出去所看到的兩個三角形如下圖(紅色與綠色),而今天當場景中的綠色三角形向上移動時,若照傳統Monte Carlo Sampling (黃色點)的方式,我們無法得知該Pixel其實變綠了點(綠色三角形向上造成綠色面積增加,白色面積減少)。
Redner主要就是提出Edge Sampling的方式來處理這個問題,進而設計出一種Differntiable Ray Tracing方法。
Conclusion
如同David Marr (ICCV的Marr Prize即是為了紀念David Marr)在其Representational Framework中所討論,計算機視覺的問題即是Inverse Graphics的問題。
而伴隨著機器學習的發展,這方面的研究也越來越多。期待這類技術在搭配如Midjouney等生成式AI後,能更快速創造出3D模型與場景。