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

The reason why distillation is necessary #15

Open
kwea123 opened this issue Dec 2, 2021 · 1 comment
Open

The reason why distillation is necessary #15

kwea123 opened this issue Dec 2, 2021 · 1 comment

Comments

@kwea123
Copy link

kwea123 commented Dec 2, 2021

From the result I can see that the result without distillation has artifacts. However I don't understand why.
Did you dig into the w/o distillation model to see where the artifacts come from?
Is it a problem occurring at grid boundaries? Since the MLPs are all independent, it is possible that at boundaries the adjacent MLPs generate very different results, which might cause artifacts.

@creiser
Copy link
Owner

creiser commented Dec 7, 2021

That's an interesting question. My hypothesis is that smoothness priors of an MLP are helpful for avoiding bad local minima. An 8-layer MLP with 256 hidden units might simply have better priors than a small 4-layer MLP with 32 hidden units. The second thing that might be at play here is that for KiloNeRF any smoothness prior is not effective across regions belonging to individual networks. In order to verify that the smaller size of the MLP is not the root cause for these issues, one could see what happens when training with a high number of big MLPs. If the artifacts persist then it's more probable that the independence of the network causes these problems (and not the different network architecture). It would be also interesting to see if the artifacts are indeed more likely to appear at boundaries. In that case, it might help to overlap individual networks slightly and interpolate outputs when querying the representation close to the boundary (a popular technique for avoiding discretization artifacts).

Anyhow, I think there are much cheaper ways for bootstrapping. Recently, it was shown that a voxel grid can be optimized directly (takes < 5 minute) and used to bootstrap a feature-conditioned MLP. Instead of the feature-conditioned MLP one could use KiloNeRF.

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