--- license: other tags: - sdtagnet - nuscenes - hd-map - online-mapping - autonomous-driving - new-split - long-range library_name: mmdetection3d --- # SDTagNet - nuScenes (new split, long range), ResNet-50, 30ep schedule Best checkpoints from an SDTagNet training run on nuScenes with the **new split** and the **100 x 50 m long-range setting** (`pc_range = [-25, -50, -10, 25, 50, 10]`, BEV `(200, 100)`). ResNet-50 image backbone, camera-only SDTagNet, 30-epoch schedule. This repository replaces the earlier upload under the same repo name with the later `sdtagnet_nusc_r50_30ep_100_50_range_mapping_last` run. ## Evaluation on long-range new-split val | Checkpoint | Save time (UTC) | NuscMap_chamfer/mAP | divider_AP | boundary_AP | ped_crossing_AP | | --- | --- | --- | --- | --- | --- | | `mAP_epoch_8.pth` | 2026-04-29 22:15 | 0.2070 | 0.2399 | 0.2700 | 0.1112 | | `mAP_epoch_20.pth` | 2026-04-30 19:49 | **0.2251** | 0.2490 | 0.3077 | 0.1188 | AP by chamfer threshold (`@1.0 / @1.5 / @2.0 m`): ### `mAP_epoch_8.pth` | Class | @1.0 | @1.5 | @2.0 | | --- | --- | --- | --- | | divider | 0.1364 | 0.2490 | 0.3343 | | boundary | 0.1064 | 0.2837 | 0.4197 | | ped_crossing | 0.0349 | 0.1112 | 0.1876 | ### `mAP_epoch_20.pth` | Class | @1.0 | @1.5 | @2.0 | | --- | --- | --- | --- | | divider | 0.1534 | 0.2587 | 0.3348 | | boundary | 0.1293 | 0.3199 | 0.4737 | | ped_crossing | 0.0368 | 0.1187 | 0.2009 | Recorded mAP progression: | Epoch | mAP | | --- | --- | | 2 | 0.1345 | | 4 | 0.1855 | | 6 | 0.1965 | | 8 | 0.2070 | | 10 | 0.2157 | | 12 | 0.2180 | | 14 | 0.2240 | | 16 | 0.2200 | | 18 | 0.2238 | | **20** | **0.2251** | | 22 | 0.2210 | ## Range / BEV / modality - `pc_range = [-25.0, -50.0, -10.0, 25.0, 50.0, 10.0]` - `bev_size = (200, 100)` - `use_lidar = False` (camera-only SDTagNet) - Image backbone: ResNet-50 - Training schedule in the saved config: 30 epochs ## Files | Path | Description | | --- | --- | | `mAP_epoch_8.pth` | Best checkpoint at epoch 8 (~579 MB) | | `mAP_epoch_20.pth` | Best checkpoint at epoch 20, highest recorded mAP in this run (~579 MB) | | `sdtagnet_nusc_r50_30ep_100_50_range_mapping_last.py` | Exact config snapshot saved in the work_dir | | `logs/20260429_103003.log` / `.log.json` | Training/eval log covering epochs 2-8 | | `logs/20260430_021112.log` / `.log.json` | Continuation log covering epochs 10-22 | ## Config notes The config expects: - `data_root = '/datasets/public/nuscenes/'` - train/val pkl: `nuscenes_map_infos_temporal_newsplit_100x50_{train,val}.pkl` - eval json: `nuscenes_map_anns_val_sdtagnet_100x50.json` - `work_dir = './work_dirs/sdtagnet_nusc_r50_30ep_100_50_range_mapping_last'` Override paths for your own environment. ## Related checkpoints - `sung98/sdtagnet-nusc-r50-110ep-newsplit` - SDTagNet, standard range, new split - `sung98/sdtagnet-nusc-r50-30ep-oldsplit` - SDTagNet, old split, standard range - `sung98/maptrv2-nusc-r50-110ep-lidar-newsplit` - MapTRv2 LiDAR, new split - `sung98/maptrv2-nusc-r50-24ep-lidar-oldsplit` - MapTRv2 LiDAR, old split - `sung98/maptrv2-nusc-r50-24ep-lidar-newsplit-longrange` - MapTRv2 LiDAR, long range, new split Numbers across runs are not directly comparable (different range / split / eval thresholds / model). ## Loading ```python from mmcv import Config from mmdet3d.models import build_model from mmcv.runner import load_checkpoint cfg = Config.fromfile('sdtagnet_nusc_r50_30ep_100_50_range_mapping_last.py') cfg.model.train_cfg = None model = build_model(cfg.model, test_cfg=cfg.get('test_cfg')) load_checkpoint(model, 'mAP_epoch_20.pth', map_location='cpu') model.eval() ```