Comments (21)
A note on parsing colmap camera K Rt: I used the the handy script provided by the NeRF research group (https://github.com/Fyusion/LLFF/tree/master/llff/poses). The negation (compared to the NeRF/LLFF convention) of the 2nd and 3rd column of camera extrinsics is accounted for.
Ok. We are using OpenCV style coordinates for extrinsics. Do you mean we need to manually change the code to run your Colmap data?
No, not at all! Everything is accounted for and you only need to copy, paste and run!
from nsvf.
Thank you for such prompt reply! I've uploaded the data here: https://github.com/yxie20/lego_nsvf. To use it, simply copy the following:
pose
,bbox.txt
,intrinsics.txt
to the root folder. The original NSVF folder structure is followed here.
I'll look into your comment 2 and 3. Thanks!Can you also share some comparison with NeRF where you observe the clear difference?
Thanks!
Here's the NeRF training progress for 40 minutes or 5k steps, with colmap poses on Lego:
from nsvf.
I have similar experience as @yxie20.
NSVF - default configuration, 62.5k steps
NSVF - enabled trainable_extrinsics
and lowered learning rate to 0.0001 as suggested by @MultiPath . 25k steps then OOM
nerf (@kwea123 implementation) - original, validation image, and depth map.
I used same images and poses from COLMAP for all experiments.
from nsvf.
Hey @MultiPath, you might be right that poses and images are not aligned properly.
I am using @yxie20 script (https://github.com/yxie20/lego_nsvf/blob/master/poses/pose_utils.py) to generate poses, intrinsics and bounding box as well, and it seems that there's assumption that cameras.bin
from COLMAP contains sorted poses based on image file names (which it does not). This would explain why both of us have poor results on real datasets.
In original LLFF they use np.argsort()
to account for it (see variable perm
in https://github.com/Fyusion/LLFF/blob/c6e27b1ee59cb18f054ccb0f87a90214dbe70482/llff/poses/pose_utils.py#L33). I tried to fix it and ran training using default config, however, it seems that results are still poor.
You can download the new pose.zip here.
I will take a look at it again, there might be another bug that causes improper alignment between images and poses or something similar.
Meanwhile, if you have time it would be awesome if you could provide your own script to convert COLMAP's model files (cameras.bin
, images.bin
, points3D.bin
) to format that NSVF expects, i.e. bbox.txt
, intrinsics.txt
and poses folder.
from nsvf.
Hi, thanks for posting this! It is interesting that NSVF will be more sensitive to camera errors compared to the original NeRF. In my view, they should face the same learning issue as the ray-marching part is the same.
Also we did not observe the same phenomena on the real datasets we have tested compared to the original NeRF.
- Can you please share the three Lego dataset for us to take a look?
- In our code, we also implement an option to fix the camera pose errors (while this function is sometimes not stable)
by adding--trainable-extrinsics
in the training arguments. - Decreasing the learning rate might also be helpful. To speed up learning, we usually used
lr=0.001
. You can try training withlr=0.0001
.
from nsvf.
Thank you for such prompt reply! I've uploaded the data here: https://github.com/yxie20/lego_nsvf. To use it, simply copy the following: pose
, bbox.txt
, intrinsics.txt
to the root folder. The original NSVF folder structure is followed here.
I'll look into your comment 2 and 3. Thanks!
from nsvf.
A note on parsing colmap camera K Rt: I used the the handy script provided by the NeRF research group (https://github.com/Fyusion/LLFF/tree/master/llff/poses). The negation (compared to the NeRF/LLFF convention) of the 2nd and 3rd column of camera extrinsics is accounted for.
from nsvf.
Thank you for such prompt reply! I've uploaded the data here: https://github.com/yxie20/lego_nsvf. To use it, simply copy the following:
pose
,bbox.txt
,intrinsics.txt
to the root folder. The original NSVF folder structure is followed here.I'll look into your comment 2 and 3. Thanks!
Can you also share some comparison with NeRF where you observe the clear difference?
Thanks!
from nsvf.
A note on parsing colmap camera K Rt: I used the the handy script provided by the NeRF research group (https://github.com/Fyusion/LLFF/tree/master/llff/poses). The negation (compared to the NeRF/LLFF convention) of the 2nd and 3rd column of camera extrinsics is accounted for.
Ok. We are using OpenCV style coordinates for extrinsics. Do you mean we need to manually change the code to run your Colmap data?
from nsvf.
To help us better pinpoint the problem, I added my pose parsing code to https://github.com/yxie20/lego_nsvf. This code takes in colmap .bin files and output pose/
, bbox.txt
and intrinsics.txt
in NSVF standard. The initial voxel size (side length) is automatically set to 1/8 of the total volume side length.
from nsvf.
Here I provide some results with --trainable-extrinsics enabled. The result is still far from that achieved by ground truth poses.
Here is the loss curve comparison (purple is gt poses, blue is colmap+trainable-extrinsics)
from nsvf.
Telling from the depth map, it seems that it doesn't learn the correct structure either...
Haven't tried NSVF yet, but I have a doubt on your NeRF result, because in my experiments, it works pretty well on real world objects for which the poses are also estimated by colmap.
From your very first picture already, I doubt that the reconstructed poses are not correct at all, because the gt poses are distributed rather uniformly on the upper hemisphere if I remember correctly like in Fig. 1 ; your reconstructed poses seem very irregular. I suspect that it is due to the white background which makes the pose reconstruction difficult. I would suggest that you align the gt poses and the reconstructed poses to see how much they differ, before digging into either NeRF or NSVF.
from nsvf.
Telling from the depth map, it seems that it doesn't learn the correct structure either...
Haven't tried NSVF yet, but I have a doubt on your NeRF result, because in my experiments, it works pretty well on real world objects for which the poses are also estimated by colmap.
From your very first picture already, I doubt that the reconstructed poses are not correct at all, because the gt poses are distributed rather uniformly on the upper hemisphere if I remember correctly like in Fig. 1 ; your reconstructed poses seem very irregular. I suspect that it is due to the white background which makes the pose reconstruction difficult. I would suggest that you align the gt poses and the reconstructed poses to see how much they differ, before digging into either NeRF or NSVF.
Thanks for the comment. If you do decide to run NSVF, I look forward to hearing how it goes! Note that the same colmap poses were used in NeRF and NSVF, that's the key of this thread here.
from nsvf.
Hi I haven't had time looking into it yet. I will take a look at this issue this weekend
from nsvf.
@yxie20 Have you solve this issue? I decided to run colmap on real-world dataset by myself.
from nsvf.
No... Still waiting on the author @MultiPath to provide some insights.
from nsvf.
Sorry about that. I was busy with other papers recently. will debug this for a bit
from nsvf.
Hi @kondela can you also share your dataset? if possible
from nsvf.
Hey @MultiPath, sure! You can download it from my google drive. I used first 142 images for training and left last 2 for validation.
from nsvf.
Hi @kondela, just for double check.. Are you sure the pose files and the images are aligned? In my code, I sorted the poses and images separately by string order.
Also, how do you get your boundingbox?
from nsvf.
I also met this problem. I think, to reproduce the original result with other datasets, I would like to ask author to give the code for that( camera.bin/image.bin to bbox.txt, intrinsic.txt)
Please help us! thank you~!
from nsvf.
Related Issues (20)
- stuck with arg distributed-no-spawn, strange OUT OF MEMORY message without that
- Why the validation loss is smaller than the training loss?
- Build is not working HOT 4
- question about the dynamic scene HOT 1
- Conda environment files HOT 1
- CUDA kernel failed : no kernel image is available for execution on the device in clusters. HOT 2
- Too slow training HOT 3
- How to get the correct bbox.txt intrinsic.txt ? HOT 5
- Please share training script for large objects HOT 2
- AttributeError: module 'fairnr' has no attribute 'clib' HOT 3
- Request for official results on testing set.
- Hello, it says in your code that the hypernetwork does not work, but why?And your paper shows that hypernetwork works HOT 2
- why to add a 10% bias on x? HOT 4
- How to produce datatset for training in NSVF?
- NSVF dataset convention HOT 2
- How to obtain test_traj.txt
- Why so slow for training HOT 2
- a bug in inverse_cdf_sampling_kernel HOT 1
- Wired Depth Image of Free Viewport Rendering
- Error undefined symbol when import build_octree, is there a python implementation for build_octree?
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 nsvf.