Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Understanding to the "SampleNetwork" module #8

Closed
apchenstu opened this issue Nov 30, 2020 · 2 comments
Closed

Understanding to the "SampleNetwork" module #8

apchenstu opened this issue Nov 30, 2020 · 2 comments

Comments

@apchenstu
Copy link

Hi there, really nice work!
And I'm trying to understand this line code, it looks different from Eq.3 of the main paper, the "surface_output, surface_sdf_values" seems are the same value and it would be really helpful if you could explain it more. Thank you in advance!

@lioryariv
Copy link
Owner

Hi, thanks :)
You are right, it is a small issue (can be viewed as some implementation detail) which we did not describe in the paper.

First, note that : surface_sdf_values = surface_output.detach()
Meaning only one variable is in the computational graph.
Plug in : surface_output - surface_sdf_values
Instead of surface_output
Will give us the desired property of the function x(theta, c, v) (described in equation 3) which is:
x(theta0, c0, v0) = x0
Meaning the function is correct with respect to the current state.

This handles the case when surface_output is not exactly zero, meaning that the point x is on some s-levelest, so this correction will lead to the correct derivation.
Differentiate f(x;theta) = s ,as shown in section C in the appendix, will result the same.
Partially, it is not always guaranteed that s=0, but we do know it is very close as a result of our ray-marching algorithm.

In fact, this idea based on a former paper from our lab (https://arxiv.org/abs/1905.11911) where we developed the formula of how to control general s-levelsets of the network f.
It might have seen only as a numeric issue, since really the values surface_output are indeed close to zero, but this kind of correction is a more accurate implementation to eq 3.

Hope it clears your concern!

@apchenstu
Copy link
Author

Hi lioryariv, thanks for your timely reply, sounds really interesting, I will take a look at the paper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants