Skip to content

Commit 37f44a1

Browse files
committed
hotfix: the relationship between range and voxel size.
Need consider: * float precision * pow 3 the layer number * z range also.
1 parent 4d94bd0 commit 37f44a1

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

1_train.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
)
2222

2323
from omegaconf import DictConfig, OmegaConf
24-
import hydra, wandb, os
24+
import hydra, wandb, os, math
2525
from hydra.core.hydra_config import HydraConfig
2626
from pathlib import Path
2727

@@ -31,11 +31,25 @@
3131
def precheck_cfg_valid(cfg):
3232
if cfg.loss_fn == 'seflowLoss' and cfg.add_seloss is None:
3333
raise ValueError("Please specify the self-supervised loss items for seflowLoss.")
34-
if (cfg.point_cloud_range[3] - cfg.point_cloud_range[0]) % cfg.voxel_size[0] != 0 or \
35-
(cfg.point_cloud_range[4] - cfg.point_cloud_range[1]) % cfg.voxel_size[1] != 0 or \
36-
(cfg.point_cloud_range[5] - cfg.point_cloud_range[2]) % cfg.voxel_size[2] != 0:
37-
# For example: 51.2/0.2=256 good, 51.2/0.3=170.67 wrong.
38-
raise ValueError("The voxel size should be able to divide the point cloud range to a INT.")
34+
35+
grid_size = [(cfg.point_cloud_range[3] - cfg.point_cloud_range[0]) * (1/cfg.voxel_size[0]),
36+
(cfg.point_cloud_range[4] - cfg.point_cloud_range[1]) * (1/cfg.voxel_size[1]),
37+
(cfg.point_cloud_range[5] - cfg.point_cloud_range[2]) * (1/cfg.voxel_size[2])]
38+
39+
for i, dim_size in enumerate(grid_size):
40+
# NOTE(Qingwen):
41+
# * the range is divisible to voxel, e.g. 51.2/0.2=256 good, 51.2/0.3=170.67 wrong.
42+
# * the grid size to be divisible by 8 (2^3) for three bisections for the UNet.
43+
target_divisor = 8
44+
if i <= 1: # Only check x and y dimensions
45+
if dim_size % target_divisor != 0:
46+
adjusted_dim_size = math.ceil(dim_size / target_divisor) * target_divisor
47+
suggest_range_setting = (adjusted_dim_size * cfg.voxel_size[i]) / 2
48+
raise ValueError(f"Suggest x/y range setting: {suggest_range_setting:.2f} based on {cfg.voxel_size[i]}")
49+
else:
50+
if dim_size.is_integer() is False:
51+
suggest_range_setting = (math.ceil(dim_size) * cfg.voxel_size[i]) / 2
52+
raise ValueError(f"Suggest z range setting: {suggest_range_setting:.2f} or {suggest_range_setting/2:.2f} based on {cfg.voxel_size[i]}")
3953
return cfg
4054

4155
@hydra.main(version_base=None, config_path="conf", config_name="config")

0 commit comments

Comments
 (0)