city-super/Octree-GS

matrixCity street problem

XiaokangWei opened this issue · 5 comments

Hi, Great job! Thanks for release code. i try to run this method on matrixCtiy street scene and use you provided init_point_cloud.ply, but i cannot get a good performance result. like these example:

00007
00020
00033

so could you help me check where is the error?

Thanks!

Hi~ There are two possible reasons:

  1. we release the ply file which is used for the aerial images of the small city dataset. If you want to use the street images, I recommend fusing the RGBD images into a point cloud. You can use this script: https://github.com/city-super/MatrixCity/blob/main/scripts/rgbd2pc.py.
  2. because the scale of matrixicty is too small, a portion of the gaussian primitives will be cropped. So you have to update this code:
    if (p_view.z <= 0.2f)// || ((p_proj.x < -1.3 || p_proj.x > 1.3 || p_proj.y < -1.3 || p_proj.y > 1.3)))
    In the code, you need to modify the value of "p_view.z" from 0.2 to a much smaller number, such as 0.0001.

Thanks for your reply!
Follow your suggestions, i have use the street rgbd pointCloud.py and change the 'p_view.z', but the result still looks not enough good. During the trainning process, i set the base layer is '8' because of the memory limit, so i don't know this factor whether influence the result. and here , my trainning scene is the Block small of street scene in small city group.

The init_point_cloud result like this:
image

According to your suggestions, the rendering results like this:

00010
00006

It turns out that the places that are far away actually get better results, and the places that are near are mushy.

Could you give me the render opacity(just replace the color with torch.ones_like(xyz)), like ⬇️

density = torch.ones_like(xyz)

render_opacity, _ = rasterizer(
    means3D = xyz,
    means2D = screenspace_points,
    shs = None,
    colors_precomp = density,
    opacities = opacity,
    scales = scaling,
    rotations = rot,
    cov3D_precomp = None)

It is highly probable that this problem is still being caused by p_view.z, and you need to recompile the diff-gaussian-rasterization package.

If it goes well, the effect will look like this ⬇️

block_small.mp4

Thanks for your patient reply again!

Did you only adjust p_view.z to 0.0001? Are there any other adjustments?
and does your dataset also use only street_block_small (which just include vertical and horizon view) ?

I would appreciate it if you could share your init_point3d.py and args files. I want to check my Settings against each other.