-
Notifications
You must be signed in to change notification settings - Fork 73
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
How to determine the parameters in the plane.txt? #26
Comments
Here is the code that reads planes.txt as an input Lines 93 to 107 in eeff38c
if the last number is missing, it will use a default variable which is 200 Line 38 in eeff38c
Please take a look at the explanation of the first 3 numbers. Here is more explanation that might help you. First and Second number - near / farAbout the method to find the near and far (the first and the second number), the easiest way is using the percentile of the location of the point cloud. COLMAP also generates a point cloud besides of camera parameter. You can take a look at LLFF's code on how to do a percentile.
Third number - inverse depthinverse depth is determined by 0 or 1. If it contains things that places far away, set to 1. Far away mean when the camera is moved, the object has a little (or even doesn't have) a parallax effect at all. Fourth number - offsetWhen you look into if the offset is set to But if set the offset too much, it will take a lot of memory while training. and total variation regularization might wipe out high-frequency detail. If you wish to use a large offset, you have to reduce the Feel free to ask if things still not clear enough 😄😄😄 |
Hi Pakkapon, Thank you so much for the extremely helpful answer! After carefully checking your wiki and code, I still have some questions regarding those parameters:
Thank you in advance for you effort in answering these questions! |
1. what is the purpose of separating these 4 parameters in a 'plane.txt' file rather than putting them altogether with other parameters in a configuration of args?Each scene has a different parameter near/far parameter, while parameters that list in args are shared across every scene. Actually, you can provide argument Lines 70 to 72 in eeff38c
2.1 Does that mean that we are free to choose the inverse depth parameter to be 0 or 1 depends on the scene property?depends on the scene property. Choose 1 if the scene contains things that place far away. but if not an important object. So, we use denser plane in the object near the caemra. see 2.2 for example that we want to use a denser plane on pasta and food. The background is not so important so we use only a few planes to represent it. That is why we set it into 1. 2.2 For scenes like food or pasta, is that the case that the scene contains objects lie far away from the cameraThe green highlight show far away part that we want to represent in the scene but with only a few planes. 3. must the "reference camera" be one of those cameras that takes the picturesYou can use a virtual camera to be a reference camera. You can set Line 539 in eeff38c
However, be careful on picking a reference camera. Some ray (pixel in MPI factum) might never be seen by any image in training set. So, we avoid this problem by select one of the training images as a reference camera to guarantee that the ray was seen at least in 1 image. 4. Can we automatically find dmin/dmax by the code of load_llff?Yes, we can. However, this requires a point cloud in COLMAP to be good. Sometimes these points are missing in some parts of an object. (usually, affect dmin). So, we need to re-adjust the near plane (admin) to become closer to the camera) 5.1 scene 'crest' dmin/dmax are 4.7 200, where do they come from?red: require a near plane to very close to the camera. 5.2 Does this mean we are also free to choose the first 2 parameters as long as they cover the real range of scene depthWe want to select the range that covers the entire scene. This near and far plane is considered from the reference camera. You can freely set it. the homography will wrap the plane from the reference view into the training/testing view. However, you still have to be careful on freely picking dmin/dmax if the dmin/dmax doesn't cover entire scene,
If the dmin/dmax set is too large to cover everything, |
Hi, I read the code of depth generation in LLFF, and checked the point cloud file. So the source point cloud itself misses some parts of the scene right? Does it mean we can't generate the correct d_min and d_max from the provided data strictly, and we can only manually re-adjust the depth boundary? Thanks a lot! |
I think so. We manually adjust to maximize MPI utilization. However, the depth generation from LLFF produces reasonable dmin/dmax in most all cases. |
Hey @pureexe , |
total variation is using for smoothing mpi_c. with a larger offset, it introduces more noise (more pixel to smoothing) lead to higher total variation. The network will try to reduce the loss by smoothing mpi_c instead of reducing the reconstruction error. This can lead to a poor results. |
Hi,
I am trying to reproduce the colmap results in your shiny datasets. I tried the exact same command for the scene "food". It generates 'hwf_cxcy.npy' and 'poses_bounds.npy', which are similar to your results.
However, how to determine the 4 parameters in the 'plane.txt'? For example, in your 'plane.txt', the four numbers for this scene are:
2.6 100 1 300
Where do these numbers come from? My colmap result shows:
Post-colmap
Images # 49
Points (50725, 3) Visibility (50725, 49)
Depth stats -0.06422890217140988 273.68360285004354 25.033925606886992
How to determine the first two numbers based on this information in your 'plane.txt'? And what about the last two numbers?
Moreover, I observe for some other scenes the 'plane.txt' contains only 3 numbers. For example, for the scene 'lab', the numbers in the file are
46 206 1
How to deal with the 4th missing value? What does that mean?
Thank you very much!
The text was updated successfully, but these errors were encountered: