YuxueYang1204 / TrimGS

Trim 3D Gaussian Splatting for Accurate Geometry Representation
https://trimgs.github.io/
188 stars 4 forks source link

large scene reconstruction #8

Open leewoosub opened 3 months ago

leewoosub commented 3 months ago

I'm trying to reconstruct the mesh of large scene such as Mill 19 - Building dataset. But the results are not good. Since the Building dataset is drone-view dataset and it is quite different with 360 degree multi-view datasets such as DTU and MipNerf360, it might not work well. However, when I train with Trim2DGS script (mip360 config), I get PSNR only about 18 (original 3DGS gives me about 25). And also the reconstructed mesh is unrecognizable.

Can you give me any suggestion for large scene? What parameters or configs should I change to get better results?

Abyssaledge commented 3 months ago
  1. Does the original 2DGS work well on your dataset? Let's first find out whether this is caused by 2D representation or our trimming strategy.
  2. Does Trim3DGS work fine?
leewoosub commented 3 months ago

I will do some tests based on your suggestions and share the results.

Thanks!

dhgras commented 2 months ago

I encountered the same problem. I trained the original 3DGS on my own dataset and then used Trim3DGS for fine-tuning. But after triming, the result was even worse. My dataset has a large scene with over 7000 images. May I ask what the reason is? How should I adjust training parameters? Snipaste_2024-07-09_15-36-46 Snipaste_2024-07-09_15-37-12 Training parameters: python tune.py -s /workspace/data/grf -i images -r 2 -m output/grf_tune --iterations 7000 --pretrained_ply output/grf_ori/point_cloud/iteration_60000/point_cloud.ply --split scale --position_lr_init 0.0000016 --densification_interval 1000 --opacity_reset_interval 999999 --normal_regularity_param 0.01 --contribution_prune_from_iter 0 --contribution_prune_interval 1000

18128381510 commented 2 months ago

我猜测是否因为作者在class FlattenGaussianModel(GaussianModel)类中 将def get_normal(self)函数重定义为取旋转矩阵x轴方向作为点云法线方向(而不是最短轴方向)导致的?希望作者能解答为什么要这样定义? 这部分原始代码:

class FlattenGaussianModel(GaussianModel):
    def __init__(self, sh_degree : int):
        super().__init__(sh_degree)
        self.eps_s0 = 1e-8
        self.s0 = torch.empty(0)

    @property
    def get_normal(self):
        R = build_rotation(self.get_rotation) # (n,3,3)
        gs_normal = R[..., 0] # (n,3) x轴
        gs_normal = F.normalize(gs_normal, dim=1) # (n,3)
        return gs_normal
YuxueYang1204 commented 2 months ago

Hi, @18128381510 ! You can refer to issue #15 about the FlattenGaussianModel.

18128381510 commented 2 months ago

Hi, @18128381510 ! You can refer to issue #15 about the FlattenGaussianModel.

如果高斯被限制为更新y和z轴会不会在视图覆盖不密集稀疏的场景中表现变差,因为高斯成2d片状了,当渲染深度图不准确时在视图稀疏下容易过拟合特定视角,导致换一个视角观看相比3d高斯会撕裂明显