Skip to content

Reproducing results: MipNeRF360, DB, Tanks&Temples #83

Description

@nfyfamr

Kudos to the authors and their great work!

I ran this repository on my gpu (RTX 5000 Ada) and found result mismatches.
Could you please provide me some advice for this issue? @cskrren

I reproduced following result using the following commands, which are simply flattened script from train_mipnerf360, train_db, and train_tandt:

CUDA_VISIBLE_DEVICES=0 python train.py -s data/mipnerf360/bicycle -m output/Octree-GS/mipnerf360/bicycle --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=0 python train.py -s data/mipnerf360/flowers -m output/Octree-GS/mipnerf360/flowers --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=0 python train.py -s data/mipnerf360/garden -m output/Octree-GS/mipnerf360/garden --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=1 python train.py -s data/mipnerf360/stump -m output/Octree-GS/mipnerf360/stump --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=1 python train.py -s data/mipnerf360/treehill -m output/Octree-GS/mipnerf360/treehill --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=1 python train.py -s data/mipnerf360/room -m output/Octree-GS/mipnerf360/room --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/mipnerf360/counter -m output/Octree-GS/mipnerf360/counter --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/mipnerf360/kitchen -m output/Octree-GS/mipnerf360/kitchen --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/mipnerf360/bonsai -m output/Octree-GS/mipnerf360/bonsai --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold -1 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/tandt/truck -m output/Octree-GS/tandt/truck --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=3 python train.py -s data/tandt/train -m output/Octree-GS/tandt/train --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 10 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=3 python train.py -s data/db/drjohnson -m output/Octree-GS/db/drjohnson --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=3 python train.py -s data/db/playroom -m output/Octree-GS/db/playroom --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
Name anchors PSNR SSIM LPIPS
bicycle (-1/10) 726881 25.046 0.749 0.244
bicycle (readme) 701000 25.140 0.753 0.238
bicycle delta 25881 -0.094 -0.004 0.006
bonsai (-1/10) 174325 31.855 0.936 0.194
bonsai (readme) 474000 33.410 0.953 0.169
bonsai delta -299675 -1.555 -0.017 0.025
counter (-1/10) 207241 29.703 0.916 0.183
counter (readme) 457000 30.300 0.926 0.166
counter delta -249759 -0.597 -0.010 0.017
flowers (-1/10) 515652 21.272 0.585 0.358
flowers (readme) 726000 21.470 0.598 0.342
flowers delta -210348 -0.198 -0.013 0.016
garden (-1/10) 651150 27.473 0.856 0.123
garden (readme) 1344000 27.690 0.860 0.119
garden delta -692850 -0.217 -0.004 0.004
kitchen (-1/10) 174431 31.101 0.923 0.130
kitchen (readme) 793000 31.760 0.933 0.115
kitchen delta -618569 -0.659 -0.010 0.015
room (-1/10) 235299 32.299 0.933 0.179
room (readme) 377000 32.530 0.937 0.171
room delta -141701 -0.231 -0.004 0.008
stump (-1/10) 432509 26.492 0.763 0.256
stump (readme) 467000 26.610 0.763 0.265
stump delta -34491 -0.118 0.000 -0.009
treehill (-1/10) 493958 23.018 0.649 0.323
treehill (readme) 545000 23.190 0.645 0.347
treehill delta -51042 -0.172 0.004 -0.024
drjohnson (0.9/12) 206328 29.576 0.902 0.252
drjohnson (readme) 132000 29.890 0.911 0.234
drjohnson delta 74328 -0.314 -0.009 0.018
playroom (0.9/12) 150971 30.687 0.907 0.253
playroom (readme) 93000 31.080 0.914 0.246
playroom delta 57971 -0.393 -0.007 0.007
train (0.9/10) 279722 22.953 0.836 0.184
train (readme) 446000 23.040 0.837 0.184
train delta -166278 -0.087 -0.001 0.000
truck (0.9/10) 242863 26.088 0.887 0.129
truck (readme) 401000 26.170 0.892 0.127
truck delta -158137 -0.082 -0.005 0.002

(-1/10) means --visible_threshold -1 --base_layer 10, which is default values in train_mipnerf360.sh. When comparing the results with those reported in this repo's readme, most scenes fail to match the #Anchors/PSNR/SSIM/LPIS.

I also tried another hyperparameter setting, where visible_threshold=0.9 and base_layer=12. This brings better rendering quality but still have a gap compared to the reported in the paper.

CUDA_VISIBLE_DEVICES=0 python train.py -s data/mipnerf360/bicycle -m output/Octree-GS/mipnerf360/bicycle --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=0 python train.py -s data/mipnerf360/flowers -m output/Octree-GS/mipnerf360/flowers --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=0 python train.py -s data/mipnerf360/garden -m output/Octree-GS/mipnerf360/garden --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=1 python train.py -s data/mipnerf360/stump -m output/Octree-GS/mipnerf360/stump --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=1 python train.py -s data/mipnerf360/treehill -m output/Octree-GS/mipnerf360/treehill --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=1 python train.py -s data/mipnerf360/room -m output/Octree-GS/mipnerf360/room --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/mipnerf360/counter -m output/Octree-GS/mipnerf360/counter --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/mipnerf360/kitchen -m output/Octree-GS/mipnerf360/kitchen --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/mipnerf360/bonsai -m output/Octree-GS/mipnerf360/bonsai --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=2 python train.py -s data/tandt/truck -m output/Octree-GS/tandt/truck --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=3 python train.py -s data/tandt/train -m output/Octree-GS/tandt/train --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=3 python train.py -s data/db/drjohnson -m output/Octree-GS/db/drjohnson --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
CUDA_VISIBLE_DEVICES=3 python train.py -s data/db/playroom -m output/Octree-GS/db/playroom --eval -r -1 --fork 2 --ratio 1 --iterations 40_000 --appearance_dim 0 --visible_threshold 0.9 --base_layer 12 --dist2level round --update_ratio 0.2 --progressive --levels -1 --init_level -1 --dist_ratio 0.999 --extra_ratio 0.25 --extra_up 0.01
Name anchors PSNR SSIM LPIPS
bicycle (0.9/12) 940442 25.069 0.753 0.232
bicycle (readme) 701000 25.140 0.753 0.238
bicycle delta 239442 -0.071 0.000 -0.006
bonsai (0.9/12) 298633 33.302 0.951 0.172
bonsai (readme) 474000 33.410 0.953 0.169
bonsai delta -175367 -0.108 -0.002 0.003
counter (0.9/12) 384784 30.266 0.925 0.165
counter (readme) 457000 30.300 0.926 0.166
counter delta -72216 -0.034 -0.001 -0.001
flowers (0.9/12) 701459 21.423 0.596 0.347
flowers (readme) 726000 21.470 0.598 0.342
flowers delta -24541 -0.047 -0.002 0.005
garden (0.9/12) 849367 27.637 0.860 0.116
garden (readme) 1344000 27.690 0.860 0.119
garden delta -494633 -0.053 0.000 -0.003
kitchen (0.9/12) 416990 31.823 0.933 0.115
kitchen (readme) 793000 31.760 0.933 0.115
kitchen delta -376010 0.063 0.000 0.000
room (0.9/12) 361641 32.555 0.937 0.171
room (readme) 377000 32.530 0.937 0.171
room delta -15359 0.025 0.000 0.000
stump (0.9/12) 583172 26.592 0.766 0.248
stump (readme) 467000 26.610 0.763 0.265
stump delta 116172 -0.018 0.003 -0.017
treehill (0.9/12) 721607 22.862 0.649 0.314
treehill (readme) 545000 23.190 0.645 0.347
treehill delta 176607 -0.328 0.004 -0.033
drjohnson (0.9/12) 213596 29.590 0.902 0.250
drjohnson (readme) 132000 29.890 0.911 0.234
drjohnson delta 81596 -0.300 -0.009 0.016
playroom (0.9/12) 151638 30.740 0.907 0.253
playroom (readme) 93000 31.080 0.914 0.246
playroom delta 58638 -0.340 -0.007 0.007
train (0.9/12) 618073 23.087 0.851 0.154
train (readme) 446000 23.040 0.837 0.184
train delta 172073 0.047 0.014 -0.030
truck (0.9/12) 507930 26.196 0.894 0.110
truck (readme) 401000 26.170 0.892 0.127
trcuk delta 106930 0.026 0.002 -0.017

In this case, the result values are quite close to the values in readme, but still some scenes have big gap, such as treehill, drjohnson, and playroom. Moreover, some scenes (bicycle, stump, treehill, drjohnson, playroom, train, truck) produce more anchors.

Could you please let me know exact hyperparameter sets for reproducing the result reported in the readme?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions