Differentiable Rendering using RGBXY Derivatives and Optimal Transport

Published in Siggraph Asia 2022, ACM Transactions on Graphics, Volume 41, Issue 6, 2022

Jiankai Xing, Fujun Luan, Ling-Qi Yan, Xuejun Hu, Houde Qian, Kun Xu

width=20%Paper width=20%Code

Fig. 1 Optimize furniture position through differentiable rendering.

Abstract

Traditional differentiable rendering approaches are usually hard to converge in inverse rendering optimizations, especially when initial and target object locations are not so close. Inspired by Lagrangian fluid simulation, we present a novel differentiable rendering method to address this problem. We associate each screen-space pixel with the visible 3D geometric point covered by the center of the pixel and compute derivatives on geometric points rather than on pixels. We refer to the associated geometric points as point proxies of pixels. For each point proxy, we compute its 5D RGBXY derivatives which measures how its 3D RGB color and 2D projected screen-space position change with respect to scene parameters. Furthermore, in order to capture global and long-range object motions, we utilize optimal transport based pixel matching to design a more sophisticated loss function. We have conducted experiments to evaluate the effectiveness of our proposed method on various inverse rendering applications and have demonstrated superior convergence behavior compared to state-of-the-art baselines.

Video

@article{Xing2022drot,
    title = {Differentiable Rendering using RGBXY Derivatives and Optimal Transport},
    author = {Xing, Jiankai and Luan, Fujun and Yan, Ling-Qi and Hu, Xuejun and Qian, Houde and Xu, Kun},
    journal = {ACM Trans. Graph.},
    volume = {41},
    number = {6},
    year = {2022},
    issue_date = {December 2022},
    publisher = {Association for Computing Machinery},
    address = {New York, NY, USA},
    url = {https://doi.org/10.1145/3550454.3555479},
    issn = {0730-0301},
    doi = {10.1145/3550454.3555479},
    month = {dec},
    articleno = {189},
    numpages = {13}
}