Comments (5)
Hi!
You're exactly right, I think this might have been a misnomer that carried over from previous' code bases that we never got around to fixing. Epoch is the same as an interation and not really an epoch, yeah.
from adanerf.
Hi!
The corresponding losses are implemented here:
https://github.com/thomasneff/AdaNeRF/blob/main/src/losses.py#L87
Essentially, we start with the NeRFWeightMultiplicationLoss
forcing initial outputs to be one (not zero) because lossBlendingStart
is at 25000. This means before iteration 25000, we only have the "One" loss in NeRFWeightMultiplicationLoss
. Afterwards, we slowly blend from "One" to "Zero" and also add in the "NerfA" that computes an L1 loss w.r.t. the alpha outputs. The logic of blending between the losses all happens within NeRFWeightMultiplicationLoss
.
Note that our configs have 0.0025
as a baseline value, and we show the exact loss weights we used for each scene in our supplementary material (Table 1):
https://thomasneff.github.io/adanerf/adanerf_supplementary.pdf
About the weight locking:
We mention that the sampling network is locked throughout the sparse training phase in the paper, and that the sparse training phase is done for around ~220k iterations, that's where the 80000 in the config comes from, as we lock if after 80000.
The shading network being locked for 1000 iteration at the start indeed seems to be missing from the paper, but this is just to ensure that the sampling network is actually outputting constant "One"s before we start with dense training - this likely is not super impactful and is only a minor detail.
Hope this explains your questions!
from adanerf.
@thomasneff
Thank you for your kind and quick reply!!
In addition, I have some more questions about the lossweight to train the sample network and nerf.
In your paper, you said that you initialize the sample network to make initial output to be zero and set the initial loss weight for each loss(mse loss and loss that makes initial sample importance to be 1) as 0.01 and 1.0 .
However, I cannot find that part in your code.
Loss weights are samely applied across the entire training as 1.0 and 0.0025 to mse and sparsity loss, except iterations before 25000 to apply the sparsity loss after dense training.
In addition, nerf network is locked before 1000 and sample network is locked after 80000 iters, which is not fully explained in your paper.
could you explain about this setting?
It will be really helpful to implement your code in my environment, which is purely coded in pure puthon and pytorch without cuda!
I'm really appreciate to your kind reply again!
from adanerf.
@thomasneff
Thank you for your kind reply!!
It really helpful to me to implement your idea!
by the way, do you still on the research field related to accelerate the nerf training or efficient rendering using nerf?
from adanerf.
I'm sorry to bother you again.
As I understand your code, dense training and fine training is executed separately when train the AdaNeRF.
Then, is it right that the learning rate to train the fine-tuning
is reset to 1e-4
after dense training + sparsification + sparse training
?
from adanerf.
Related Issues (9)
- Potential for a AMD ROCm port? HOT 1
- unrecognized arguments: --numRayMarchSamples 8 --numRayMarchSamples 8 HOT 2
- Generate more images! HOT 2
- Failed to train LLFF dataset HOT 4
- Where can I find supplementary material? HOT 1
- X Error of failed request: GLXBadFBConfig
- Fine-tuning stage process and filtering sample adaptively
- Image output quality when using Plenoxel with the DONeRF Dataset
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from adanerf.