Closed Runyu-Zhou05 closed 3 months ago
Hi, thanks for your interest. Your data have a large difference in viewpoint, which is a challenge for our model.This is why COLMAP cannot be run on this dataset due to lack of features.
However, here are some things that might be worth trying:
i) I noticed that you set bg_color: [1,1,1]
considering that your data background is white. However, for our nerf-synthetic dataset, which also has a white background, setting bg_color: [1,1,1]
will cause performance degradation (PSNR from 26.46 to 23.39). This is because we pre-train on the dtu data set with a setting of bg_color: [0,0,0]
, so I recommend you try bg_color: [0,0,0]
.
ii) If you used the same near-far settings as the nerf dataset near_far = np.array([2.5 * self.scale_factor, 5.5 * self.scale_factor]).astype(np.float32)
, the scale_factor
in the config file should also be modified to 200
, the same as in nerf-synthetic config file.
iii) You can also modify the number of sampling points volume_planes
in the config file, commonly used settings are [64,8], [48,8] and [16,8].
BTW, the cause of the error when the input size is set to 400 is that H and W need to be integer multiples of 32.
Thanks a lot for your informative response. Through extensive experimentation, I've improved my PSNR a lot but still have some issues with the exported PLY file. (Having a large difference in viewpoint isn't actually the issue, since my dataset has ample views and nuanced difference between neighboring views.)
For improving PSNR, I've discovered:
bg_color
to [0, 0, 0]
indeed improves PSNR by ~2.scale_factor
to 200
results in the best PSNR.volume_planes
to [48, 8]
is the most effective.640
is better than 320
.(0, 0, 0)
in the world frame, I choose the images with the most similar z-axis in the C2W matrix for a target view as source views.Finally, I've got a PSNR of ~25 and these rendered images:
However, I've got weird PLY pointcloud despite reasonable PSNR. The exported PLY file has only ~300KB in size, and here is the visualization:
My command was:
python run.py --type evaluate --cfg_file configs/mvsgs/mydataset_eval.yaml save_ply True dir_ply models/mvsgs test_dataset.data_root mydataset
Should I tweak something further?
Glad to hear that you have made a big improvement on PSNR, and thank you for sharing.
Run this command python run.py --type evaluate --cfg_file configs/mvsgs/mydataset_eval.yaml save_ply True dir_ply models/mvsgs test_dataset.data_root mydataset
can obtain a normal geometric point cloud, but not a Gaussian point cloud.
This point cloud will be used as the initialization for subsequent per-scene optimization, and then you can get the optimized Gaussian point cloud.
Please note that we clarified this in the readme, see here. And we updated two files: lib/networks/mvsgs/network.py
and lib/scene/dataset_readers.py
.
Thanks a million!
Hi there! Thanks for your great work! I've encountered some unexpected behaviors when evaluating the model pretrained on the DTU dataset (the default one). My dataset consists of ~200 views of a Blender-synthesized LEGO object, with some of the images shown below: The original sizes of the images are 800x800. The poses are specified in a transforms_train.json file just like the NeRF-synthetic dataset. I've combined the dataset modules for colmap and nerf to obtain that of this dataset. Here is my config file:
The reason why I use 640 for the input size is because 800 will cause out-of-memory. I failed to run COLMAP on this dataset due to lack of features, so I used the same near-far settings as the nerf dataset:
The near-far settings seem to play a crucial role since when I set near=0.1 and far=10, the PSNR is only ~8.
Also I noticed that when the input size is set to 400, I got this error:
Anyway, when input size = 640, I got PSNR of about 14 and these test results:
Have you ever encountered similar problems? Should I try other near-far settings or condition-views selection approaches?
Additionally, in case of need, here is my dataset module: