RGL
Realistic Graphics Lab
EPFL Logo

Radiative Backpropagation: An Adjoint Method for Lightning-Fast Differentiable Rendering

In Transactions on Graphics (Proceedings of SIGGRAPH 2020)

Our meth­od is able to re­con­struct the tex­ture of a globe seen through a bell jar in this in­teri­or scene with com­plex ma­ter­i­als and in­ter­re­flec­tion. Start­ing from a dif­fer­ent ini­tial­iz­a­tion (Mars), it at­tempts to match a ref­er­ence ren­der­ing by dif­fer­en­ti­at­ing scene para­met­ers with re­spect to L2 im­age dis­tance. The plot on the right shows con­ver­gence over time for pri­or work and mul­tiple vari­ants of ra­di­at­ive back­propaga­tion. Our meth­od re­moves the severe over­heads of dif­fer­en­ti­ation com­pared to or­din­ary ren­der­ing, and we demon­strate spee­dups of up to ~1000× com­pared to pri­or work.

 

Abstract

Phys­ic­ally based dif­fer­en­ti­able ren­der­ing has re­cently evolved in­to a power­ful tool for solv­ing in­verse prob­lems in­volving light. Meth­ods in this area per­form a dif­fer­en­ti­able sim­u­la­tion of the phys­ic­al pro­cess of light trans­port and scat­ter­ing to es­tim­ate par­tial de­riv­at­ives re­lat­ing scene para­met­ers to pixels in the rendered im­age. To­geth­er with gradi­ent-based op­tim­iz­a­tion, such al­gorithms have in­ter­est­ing ap­plic­a­tions in di­verse dis­cip­lines, e.g., to im­prove the re­con­struc­tion of 3D scenes, while ac­count­ing for in­ter­re­flec­tion and trans­par­ency, or to design meta-ma­ter­i­als with spe­cified op­tic­al prop­er­ties.

The most ver­sat­ile dif­fer­en­ti­able ren­der­ing al­gorithms rely on re­verse-mode dif­fer­en­ti­ation to com­pute all re­ques­ted de­riv­at­ives at once, en­abling op­tim­iz­a­tion of scene de­scrip­tions with mil­lions of free para­met­ers. However, a severe lim­it­a­tion of the re­verse-mode ap­proach is that it re­quires a de­tailed tran­script of the com­pu­ta­tion that is sub­sequently re­played to back-propag­ate de­riv­at­ives to the scene para­met­ers. The tran­script of typ­ic­al ren­der­ings is ex­tremely large, ex­ceed­ing the avail­able sys­tem memory by many or­ders of mag­nitude, hence cur­rent meth­ods are lim­ited to simple scenes rendered at low res­ol­u­tions and sample counts.

We in­tro­duce ra­di­at­ive back­propaga­tion, a fun­da­ment­ally dif­fer­ent ap­proach to dif­fer­en­ti­able ren­der­ing that does not re­quire a tran­script, greatly im­prov­ing its scalab­il­ity and ef­fi­ciency. Our main in­sight is that re­verse-mode propaga­tion through a ren­der­ing al­gorithm can be in­ter­preted as the solu­tion of a con­tinu­ous trans­port prob­lem in­volving the par­tial de­riv­at­ive of ra­di­ance with re­spect to the op­tim­iz­a­tion ob­ject­ive. This quant­ity is “emit­ted” by sensors, “scattered” by the scene, and even­tu­ally “re­ceived” by ob­jects with dif­fer­en­ti­able para­met­ers. Dif­fer­en­ti­able ren­der­ing then de­com­poses in­to two sep­ar­ate prim­al and ad­joint sim­u­la­tion steps that scale to com­plex scenes rendered at high res­ol­u­tions. We also in­vest­ig­ated biased vari­ants of this al­gorithm and find that they con­sid­er­ably im­prove both runtime and con­ver­gence speed. We show­case an ef­fi­cient GPU im­ple­ment­a­tion of ra­di­at­ive back­propaga­tion and com­pare its per­form­ance and the qual­ity of its gradi­ents to pri­or work.

Code: we are pre­par­ing the Ra­di­at­ive Back­propaga­tion im­ple­ment­a­tion for re­lease. A link will be ad­ded to this page when it is ready.

Figures

Text citation

Merlin Nimier-David, Sébastien Speierer, Benoît Ruiz, and Wenzel Jakob. 2020. Radiative Backpropagation: An Adjoint Method for Lightning-Fast Differentiable Rendering. In Transactions on Graphics (Proceedings of SIGGRAPH) 39(4).

BibTeX
@article{NimierDavid2020Radiative,
    author = {Merlin Nimier-David and Sébastien Speierer and Benoît Ruiz and Wenzel Jakob},
    title = {Radiative Backpropagation: An Adjoint Method for Lightning-Fast Differentiable Rendering},
    journal = {Transactions on Graphics (Proceedings of SIGGRAPH)},
    volume = {39},
    number = {4},
    year = {2020},
    month = jul,
    doi = {10.1145/3386569.3392406}
}