autonomousvision / differentiable_volumetric_rendering

This repository contains the code for the CVPR 2020 paper "Differentiable Volumetric Rendering: Learning Implicit 3D Representations without 3D Supervision"
http://www.cvlibs.net/publications/Niemeyer2020CVPR.pdf
MIT License
798 stars 90 forks source link

question on equation 8 #6

Closed hua-wu-que closed 4 years ago

hua-wu-que commented 4 years ago

Hey, On eq 8 in the paper (or the equation in fig1), why it is 1/(df/dpw) instead of (df/dpw)? Just imagine the case where df/dp is perpendicular to w, the gradient should be 0(as the case df/dp*w) instead infinite(according to eq8), right?

m-niemeyer commented 4 years ago

Hey @hua-wu-que , I think there are two answers to why the formula is like this: 1.) Because you can derive it like this. But also 2.) because it actually makes sense. Probably 2.) is more useful, so I will try to give some intuition:

First, we observe that (df/dp) points in the direction of steepest ascent, so it is basically the negative of the surface normal, and w is the ray vector. Let's first say w and (df / dp) are pointing in the same direction. Then if I change the parameters theta slightly, the occupancy f(p) changes slightly. Let's say it is reduced a little bit, so (df(p)\d theta) is negative. Then, because of the negative sign in the formula, the change in d (dd/d theta) is positive. This makes sense because you have to go a little further along the ray till you hit the surface. But you take the shortest path because your ray is pointing directly towards the surface (negative of the surface normal). Now, let's change the angle of the ray hitting the surface. Let's now say w and (df / dp) are in a 45 degree angle. I now change my parameters theta slightly and let's say again the change in occupancy (df(p) / d theta) is again negative. You now have to go even further along the ray to hit the surface as you are not pointing directly towards the surface anymore, but only in a 45 degree angle. If you now go to your extreme case towards w and df/dp being in a 90 degree angle, you would have to go infinitely long along the ray w to hit the surface again.

I hope this makes it clearer!

Best, Michael