|
21 | 21 | ) |
22 | 22 |
|
23 | 23 | from omegaconf import DictConfig, OmegaConf |
24 | | -import hydra, wandb, os |
| 24 | +import hydra, wandb, os, math |
25 | 25 | from hydra.core.hydra_config import HydraConfig |
26 | 26 | from pathlib import Path |
27 | 27 |
|
|
31 | 31 | def precheck_cfg_valid(cfg): |
32 | 32 | if cfg.loss_fn == 'seflowLoss' and cfg.add_seloss is None: |
33 | 33 | 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]}") |
39 | 53 | return cfg |
40 | 54 |
|
41 | 55 | @hydra.main(version_base=None, config_path="conf", config_name="config") |
|
0 commit comments