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

self.num_points suddenly decreased to 0 when training on my own dataset. #12

Open
xuxumiao777 opened this issue Aug 15, 2024 · 11 comments

Comments

@xuxumiao777
Copy link

Hi, author!
Thanks for your fantastic work. I have encountered a problem when training on my own datasets. I have created tsv file for my own dataset. But the training process was terminated because self.num_points and num_splits suddenly decreased to zero(yes, I have monitered this parameter during the whole process). All datasets creashed at about 3000 iterations.
image

hope for your answer.

@KevinXu02
Copy link
Owner

KevinXu02 commented Aug 15, 2024

Can you please try using splatfacto-w-light? That method should be using nerfstudio dataparser and might work for such datasets.
splatfacto-w was basically designed for phototourism datasets.

@xuxumiao777
Copy link
Author

Can you please try using splatfacto-w-light? That method should be using nerfstudio dataparser and might work for such datasets. splatfacto-w was basically designed for phototourism datasets.

I have tried splatfacto-w-light, but it needs transforms.json. I have used colmap2nerf.py from nerf to generate a transforms.json. Honestly, it can run fluently without any error, but the result is a mess. I guess the coordinate system is not correct. Could you please provide a script, so that i can generate a correct transforms.json from colmap.
Thanks.

@KevinXu02
Copy link
Owner

ns-train splatfacto-w-light [OPTIONS] --data [PATH] [dataparser] colmap You can use colmap dataparser this way. And I think if you add --help in the end it will show the usage of colmap datapraser from nerfstudio.

@xuxumiao777
Copy link
Author

ns-train splatfacto-w-light [OPTIONS] --data [PATH] [dataparser] colmap You can use colmap dataparser this way. And I think if you add --help in the end it will show the usage of colmap datapraser from nerfstudio.

image
tried_but_failed😂, here is my command:
ns-train splatfacto-w --data /gpfs/dataset/jingxigudao_tiankong/VID_20240804_111824/undistorted_colmap/dense --pipeline.datamanager.eval-image-indices None --viewer.make-share-url True colmap

@KevinXu02
Copy link
Owner

Please try splatfacto-w-light.

@xuxumiao777
Copy link
Author

Please try splatfacto-w-light.

Sorry for that, I have now used splatfacto-w-light. It can run smoothly. But I can only see a mess in the viewer, which is different from the result by command splatfacto-w.
image

@KevinXu02
Copy link
Owner

Please consider enabling these options.

If you want to train datasets without nerf-w's train/test split or your own datasets, we provided a light-weight version of the method for general cases. To train with it, you can run the following command

ns-train splatfacto-w-light [OPTIONS] --data [PATH] [dataparser]
You can add these options to enhance the training process:

--pipeline.model.enable_bg_model True

Enables background modeling
Useful for scenes with distinct foreground and background
--pipeline.model.enable_alpha_loss True

Enables alpha loss for punishing gaussians from occupying sky areas.
Should be used with background modeling
--pipeline.model.enable_robust_mask True

Improves handling of transient objects (things that appear/disappear between views)

@xuxumiao777
Copy link
Author

Please consider enabling these options.

If you want to train datasets without nerf-w's train/test split or your own datasets, we provided a light-weight version of the method for general cases. To train with it, you can run the following command

ns-train splatfacto-w-light [OPTIONS] --data [PATH] [dataparser]
You can add these options to enhance the training process:

--pipeline.model.enable_bg_model True

Enables background modeling
Useful for scenes with distinct foreground and background
--pipeline.model.enable_alpha_loss True

Enables alpha loss for punishing gaussians from occupying sky areas.
Should be used with background modeling
--pipeline.model.enable_robust_mask True

Improves handling of transient objects (things that appear/disappear between views)

use the following command and still a mess
ns-train splatfacto-w-light --data /gpfs/dataset/jingxigudao_tiankong/VID_20240804_111824/undistorted_colmap/dense --pipeline.datamanager.eval-image-indices None --viewer.make-share-url True --pipeline.model.enable_bg_model True --pipeline.model.enable_alpha_loss True --pipeline.model.enable_robust_mask True colmap
strange

@EliasDeSmijter
Copy link

EliasDeSmijter commented Nov 26, 2024

Hi! Did you manage to find a solution? I am training splatfacto-w-light on a custom dataset (with a transforms.json) as well and have similar messy outputs when rendering images... Even when I train it on the nerfstudio poster dataset with
ns-train splatfacto-w-light --pipeline.model.enable_robust_mask True --pipeline.model.enable_bg_model True --pipeline.model.enable_alpha_loss True --data nerfstudio/poster --pipeline.model.random-init True I get a messy output

@KevinXu02
Copy link
Owner

Hi! Could you please try turn off these loss since they are mostly designed for outdoor scene. And splatfactow relies heavily on the sfm init. So maybe try ns-train splatfacto-w-light --data nerfstudio/poster and see if it works.

Hi! Did you manage to find a solution? I am training splatfacto-w-light on a custom dataset (with a transforms.json) as well and have similar messy outputs when rendering images... Even when I train it on the nerfstudio poster dataset with ns-train splatfacto-w-light --pipeline.model.enable_robust_mask True --pipeline.model.enable_bg_model True --pipeline.model.enable_alpha_loss True --data nerfstudio/poster --pipeline.model.random-init True I get a messy output

@EliasDeSmijter
Copy link

Hi, unfortunately this does not fix it.. Is the sfm init the most important aspect? When I train splatfacto-w-light with random-init on brandenburg the scene seems to converge which suggests it is not as important.

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

3 participants