Skip to content

Commit 0627984

Browse files
authored
Add support for CenterPoint on Nuscenes (#786)
* add cbgs_dyn_pp_centerpoint.yaml * add cbgs_voxel01_res3d_centerpoint.yaml * add support of centerpoint on Nuscenes in README
1 parent 7ce6a2b commit 0627984

File tree

3 files changed

+229
-5
lines changed

3 files changed

+229
-5
lines changed

README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ It is also the official code release of [`[PointRCNN]`](https://arxiv.org/abs/18
2121

2222

2323
## Changelog
24-
[2022-01-14] Added support for dynamic pillar voxelization, following the implementation proposed in `H^23D R-CNN` with unique operation and [`torch_scatter`](https://github.com/rusty1s/pytorch_scatter) package.
24+
[2022-02-07] Added support for centerpoint models on Nuscenes Dataset.
25+
26+
[2022-01-14] Added support for dynamic pillar voxelization, following the implementation proposed in [H^23D R-CNN](https://arxiv.org/abs/2107.14391) with unique operation and [`torch_scatter`](https://github.com/rusty1s/pytorch_scatter) package.
2527

2628
[2022-01-05] **NEW:** Update `OpenPCDet` to v0.5.2:
2729
* The code of [PV-RCNN++](https://arxiv.org/abs/2102.00463) has been released to this repo, with higher performance, faster training/inference speed and less memory consumption than PV-RCNN.
@@ -161,11 +163,11 @@ Here we also provide the performance of several models trained on the full train
161163

162164
| Performance@(train with 100\% Data) | Vec_L1 | Vec_L2 | Ped_L1 | Ped_L2 | Cyc_L1 | Cyc_L2 |
163165
|---------------------------------------------|----------:|:-------:|:-------:|:-------:|:-------:|:-------:|
164-
| [SECOND](tools/cfgs/waymo_models/second.yaml) | 72.27/71.69 | 63.85/63.33 | 68.70/58.18 | 60.72/51.31 | 60.62/59.28 | 58.34/57.05|
166+
| [SECOND](tools/cfgs/waymo_models/second.yaml) | 72.27/71.69 | 63.85/63.33 | 68.70/58.18 | 60.72/51.31 | 60.62/59.28 | 58.34/57.05 |
165167
| [Part-A2-Anchor](tools/cfgs/waymo_models/PartA2.yaml) | 77.05/76.51 | 68.47/67.97 | 75.24/66.87 | 66.18/58.62 | 68.60/67.36 | 66.13/64.93 |
166-
| [PV-RCNN (CenterHead)](tools/cfgs/waymo_models/pv_rcnn_with_centerhead_rpn.yaml) | 78.00/77.50 | 69.43/68.98 | 79.21/73.03 | 70.42/64.72 | 71.46/70.27 | 68.95/67.79|
168+
| [PV-RCNN (CenterHead)](tools/cfgs/waymo_models/pv_rcnn_with_centerhead_rpn.yaml) | 78.00/77.50 | 69.43/68.98 | 79.21/73.03 | 70.42/64.72 | 71.46/70.27 | 68.95/67.79 |
167169
| [PV-RCNN++](tools/cfgs/waymo_models/pv_rcnn_plusplus.yaml) | 79.10/78.63 | 70.34/69.91 | 80.62/74.62 | 71.86/66.30 | 73.49/72.38 | 70.70/69.62 |
168-
| [PV-RCNN++ (ResNet)](tools/cfgs/waymo_models/pv_rcnn_plusplus_resnet.yaml) |79.25/78.78 | 70.61/70.18 | 81.83/76.28 | 73.17/68.00 | 73.72/72.66 | 71.21/70.19|
170+
| [PV-RCNN++ (ResNet)](tools/cfgs/waymo_models/pv_rcnn_plusplus_resnet.yaml) | 79.25/78.78 | 70.61/70.18 | 81.83/76.28 | 73.17/68.00 | 73.72/72.66 | 71.21/70.19 |
169171

170172

171173

@@ -180,7 +182,8 @@ All models are trained with 8 GTX 1080Ti GPUs and are available for download.
180182
|---------------------------------------------|----------:|:-------:|:-------:|:-------:|:---------:|:-------:|:-------:|:---------:|
181183
| [PointPillar-MultiHead](tools/cfgs/nuscenes_models/cbgs_pp_multihead.yaml) | 33.87 | 26.00 | 32.07 | 28.74 | 20.15 | 44.63 | 58.23 | [model-23M](https://drive.google.com/file/d/1p-501mTWsq0G9RzroTWSXreIMyTUUpBM/view?usp=sharing) |
182184
| [SECOND-MultiHead (CBGS)](tools/cfgs/nuscenes_models/cbgs_second_multihead.yaml) | 31.15 | 25.51 | 26.64 | 26.26 | 20.46 | 50.59 | 62.29 | [model-35M](https://drive.google.com/file/d/1bNzcOnE3u9iooBFMk2xK7HqhdeQ_nwTq/view?usp=sharing) |
183-
185+
| [CenterPoint-PointPillar](tools/cfgs/nuscenes_models/cbgs_dyn_pp_centerpoint.yaml) | 31.13 | 26.04 | 42.92 | 23.90 | 19.14 | 50.03 | 60.70 | [model-23M](https://drive.google.com/file/d/1UvGm6mROMyJzeSRu7OD1leU_YWoAZG7v/view?usp=sharing) |
186+
| [CenterPoint (voxel_size=0.1)](tools/cfgs/nuscenes_models/cbgs_dyn_pp_centerpoint.yaml) | 30.11 | 25.55 | 38.28 | 21.94 | 18.87 | 56.03 | 64.54 | [model-34M](https://drive.google.com/file/d/1Cz-J1c3dw7JAWc25KRG1XQj8yCaOlexQ/view?usp=sharing) |
184187

185188

186189
### Other datasets
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
CLASS_NAMES: ['car','truck', 'construction_vehicle', 'bus', 'trailer',
2+
'barrier', 'motorcycle', 'bicycle', 'pedestrian', 'traffic_cone']
3+
4+
DATA_CONFIG:
5+
_BASE_CONFIG_: cfgs/dataset_configs/nuscenes_dataset.yaml
6+
7+
POINT_CLOUD_RANGE: [-51.2, -51.2, -5.0, 51.2, 51.2, 3.0]
8+
DATA_PROCESSOR:
9+
- NAME: mask_points_and_boxes_outside_range
10+
REMOVE_OUTSIDE_BOXES: True
11+
12+
- NAME: shuffle_points
13+
SHUFFLE_ENABLED: {
14+
'train': True,
15+
'test': True
16+
}
17+
18+
- NAME: transform_points_to_voxels_placeholder
19+
VOXEL_SIZE: [0.2, 0.2, 8.0]
20+
21+
MODEL:
22+
NAME: CenterPoint
23+
24+
VFE:
25+
NAME: DynPillarVFE
26+
WITH_DISTANCE: False
27+
USE_ABSLOTE_XYZ: True
28+
USE_NORM: True
29+
NUM_FILTERS: [ 64, 64 ]
30+
31+
MAP_TO_BEV:
32+
NAME: PointPillarScatter
33+
NUM_BEV_FEATURES: 64
34+
35+
BACKBONE_2D:
36+
NAME: BaseBEVBackbone
37+
LAYER_NUMS: [3, 5, 5]
38+
LAYER_STRIDES: [2, 2, 2]
39+
NUM_FILTERS: [64, 128, 256]
40+
UPSAMPLE_STRIDES: [0.5, 1, 2]
41+
NUM_UPSAMPLE_FILTERS: [128, 128, 128]
42+
43+
DENSE_HEAD:
44+
NAME: CenterHead
45+
CLASS_AGNOSTIC: False
46+
47+
CLASS_NAMES_EACH_HEAD: [
48+
['car'],
49+
['truck', 'construction_vehicle'],
50+
['bus', 'trailer'],
51+
['barrier'],
52+
['motorcycle', 'bicycle'],
53+
['pedestrian', 'traffic_cone'],
54+
]
55+
56+
SHARED_CONV_CHANNEL: 64
57+
USE_BIAS_BEFORE_NORM: True
58+
NUM_HM_CONV: 2
59+
SEPARATE_HEAD_CFG:
60+
HEAD_ORDER: ['center', 'center_z', 'dim', 'rot', 'vel']
61+
HEAD_DICT: {
62+
'center': {'out_channels': 2, 'num_conv': 2},
63+
'center_z': {'out_channels': 1, 'num_conv': 2},
64+
'dim': {'out_channels': 3, 'num_conv': 2},
65+
'rot': {'out_channels': 2, 'num_conv': 2},
66+
'vel': {'out_channels': 2, 'num_conv': 2},
67+
}
68+
69+
TARGET_ASSIGNER_CONFIG:
70+
FEATURE_MAP_STRIDE: 4
71+
NUM_MAX_OBJS: 500
72+
GAUSSIAN_OVERLAP: 0.1
73+
MIN_RADIUS: 2
74+
75+
LOSS_CONFIG:
76+
LOSS_WEIGHTS: {
77+
'cls_weight': 1.0,
78+
'loc_weight': 0.25,
79+
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.2, 0.2, 1.0, 1.0]
80+
}
81+
82+
POST_PROCESSING:
83+
SCORE_THRESH: 0.1
84+
POST_CENTER_LIMIT_RANGE: [-61.2, -61.2, -10.0, 61.2, 61.2, 10.0]
85+
MAX_OBJ_PER_SAMPLE: 500
86+
NMS_CONFIG:
87+
NMS_TYPE: nms_gpu
88+
NMS_THRESH: 0.2
89+
NMS_PRE_MAXSIZE: 1000
90+
NMS_POST_MAXSIZE: 83
91+
92+
POST_PROCESSING:
93+
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
94+
95+
EVAL_METRIC: kitti
96+
97+
98+
OPTIMIZATION:
99+
BATCH_SIZE_PER_GPU: 4
100+
NUM_EPOCHS: 20
101+
102+
OPTIMIZER: adam_onecycle
103+
LR: 0.001
104+
WEIGHT_DECAY: 0.01
105+
MOMENTUM: 0.9
106+
107+
MOMS: [0.95, 0.85]
108+
PCT_START: 0.4
109+
DIV_FACTOR: 10
110+
DECAY_STEP_LIST: [35, 45]
111+
LR_DECAY: 0.1
112+
LR_CLIP: 0.0000001
113+
114+
LR_WARMUP: False
115+
WARMUP_EPOCH: 1
116+
117+
GRAD_NORM_CLIP: 10
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
CLASS_NAMES: ['car','truck', 'construction_vehicle', 'bus', 'trailer',
2+
'barrier', 'motorcycle', 'bicycle', 'pedestrian', 'traffic_cone']
3+
4+
DATA_CONFIG:
5+
_BASE_CONFIG_: cfgs/dataset_configs/nuscenes_dataset.yaml
6+
7+
MODEL:
8+
NAME: CenterPoint
9+
10+
VFE:
11+
NAME: MeanVFE
12+
13+
BACKBONE_3D:
14+
NAME: VoxelResBackBone8x
15+
16+
MAP_TO_BEV:
17+
NAME: HeightCompression
18+
NUM_BEV_FEATURES: 256
19+
20+
BACKBONE_2D:
21+
NAME: BaseBEVBackbone
22+
23+
LAYER_NUMS: [5, 5]
24+
LAYER_STRIDES: [1, 2]
25+
NUM_FILTERS: [128, 256]
26+
UPSAMPLE_STRIDES: [1, 2]
27+
NUM_UPSAMPLE_FILTERS: [256, 256]
28+
29+
DENSE_HEAD:
30+
NAME: CenterHead
31+
CLASS_AGNOSTIC: False
32+
33+
CLASS_NAMES_EACH_HEAD: [
34+
['car'],
35+
['truck', 'construction_vehicle'],
36+
['bus', 'trailer'],
37+
['barrier'],
38+
['motorcycle', 'bicycle'],
39+
['pedestrian', 'traffic_cone'],
40+
]
41+
42+
SHARED_CONV_CHANNEL: 64
43+
USE_BIAS_BEFORE_NORM: True
44+
NUM_HM_CONV: 2
45+
SEPARATE_HEAD_CFG:
46+
HEAD_ORDER: ['center', 'center_z', 'dim', 'rot', 'vel']
47+
HEAD_DICT: {
48+
'center': {'out_channels': 2, 'num_conv': 2},
49+
'center_z': {'out_channels': 1, 'num_conv': 2},
50+
'dim': {'out_channels': 3, 'num_conv': 2},
51+
'rot': {'out_channels': 2, 'num_conv': 2},
52+
'vel': {'out_channels': 2, 'num_conv': 2},
53+
}
54+
55+
TARGET_ASSIGNER_CONFIG:
56+
FEATURE_MAP_STRIDE: 8
57+
NUM_MAX_OBJS: 500
58+
GAUSSIAN_OVERLAP: 0.1
59+
MIN_RADIUS: 2
60+
61+
LOSS_CONFIG:
62+
LOSS_WEIGHTS: {
63+
'cls_weight': 1.0,
64+
'loc_weight': 0.25,
65+
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.2, 0.2, 1.0, 1.0]
66+
}
67+
68+
POST_PROCESSING:
69+
SCORE_THRESH: 0.1
70+
POST_CENTER_LIMIT_RANGE: [-61.2, -61.2, -10.0, 61.2, 61.2, 10.0]
71+
MAX_OBJ_PER_SAMPLE: 500
72+
NMS_CONFIG:
73+
NMS_TYPE: nms_gpu
74+
NMS_THRESH: 0.2
75+
NMS_PRE_MAXSIZE: 1000
76+
NMS_POST_MAXSIZE: 83
77+
78+
POST_PROCESSING:
79+
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
80+
81+
EVAL_METRIC: kitti
82+
83+
84+
85+
OPTIMIZATION:
86+
BATCH_SIZE_PER_GPU: 4
87+
NUM_EPOCHS: 30
88+
89+
OPTIMIZER: adam_onecycle
90+
LR: 0.003
91+
WEIGHT_DECAY: 0.01
92+
MOMENTUM: 0.9
93+
94+
MOMS: [0.95, 0.85]
95+
PCT_START: 0.4
96+
DIV_FACTOR: 10
97+
DECAY_STEP_LIST: [35, 45]
98+
LR_DECAY: 0.1
99+
LR_CLIP: 0.0000001
100+
101+
LR_WARMUP: False
102+
WARMUP_EPOCH: 1
103+
104+
GRAD_NORM_CLIP: 10

0 commit comments

Comments
 (0)