-
Nuscenes dataset evaluation contains many hard examples, you need to modify nms parameters (decrease score threshold, increase max size). You can use
v1.0-mini
to tune them. -
Nuscenes dataset contain sweeps. You need to use 10 sweeps if you want to get good detection scores. Key-frame only can't get good result, so I drop support for that.
-
Nuscenes dataset contains 28130 train samples and 6019 validation samples. Use Nuscenes mini train set (my custom split, ~3500 samples) when develop if you don't have 4+ GPUs. See
NuscenesDatasetD8
for more details. -
Some data augmentation will harm detection performance such as global rotation if their value is too large.
-
Use KITTI pretrain model if possible. You can use a pointpillars xyres_16 car model in google drive as pretrained model.
-
Multi-class NMS can increase performance of large objects. The parameters of mcnms should be grid-searched, don't enable mcmns during develop.
-
Database sample can greatly increase performance of bus. Currently no effect on other class.
-
use
get_all_box_mean
in nuscenes_dataset.py to get mean values of all boxes for each class. -
change
size
and z-center inanchor_ranges
inanchor_generator_range
. -
choose thresholds: use
helper_tune_target_assigner
to get instance count and assigned anchors count. Then tune them. -
add
region_similarity_calculator
. If your anchors are too sparse, you need to usedistance_similarity
instead ofnearest_iou_similarity
for small classes such as pedestrian. -
If you want to train with velocity, add
custom_values
to anchor generator. you can add two zeros. After that, anchors' shape will become[N, 9]
.
-
disable all ground-truth noise.
-
global_rotation_uniform_noise
may decrease performance. -
disable
database_sampler
by delete all content indatabase_sampler
.
Use set_train_step
in utils.config_tool.train if you don't want to calculate them manually.
-
uncomment vis functions in prep_pointcloud to see assigned anchors and point cloud after data augmentation to ensure no bug in preprocess.
-
use code such as code in script_server.py instead of use commands in terminal.
- all.fhd.config
-
Block filtering is enabled by default to decrease number of voxels.
-
Use
upsample_strides: [0.5]
to decrease number of anchors and increase training speed.
- all.pp.mhead.config
This config use custom VoxelNet
class.
-
Use
VoxelNetNuscenesMultiHead
and write a multi-head network to handle small objects. -
Output of multi head network MUST match order of class settings in config file.
-
If you use custom VoxelNet class, you MUST set feature_map_size for every class in class settings.
- all.pp.largea.config
This config use only large anchors.
-
you can use
no_anchor
to disable anchor generation of a class. -
you must set
assign_per_class
to false when useno_anchor
.
- all.pp.lowa.config: 30 epoch, 1/2 dataset (NuscenesDatasetD2), train speed: 12 sample/s, ~50000 anchors
car Nusc dist AP@0.5, 1.0, 2.0, 4.0
58.85, 76.12, 80.65, 82.49
bicycle Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 0.00, 0.00, 0.00
bus Nusc dist AP@0.5, 1.0, 2.0, 4.0
2.55, 15.42, 27.19, 32.03
construction_vehicle Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 0.00, 0.02, 0.31
motorcycle Nusc dist AP@0.5, 1.0, 2.0, 4.0
8.61, 14.30, 15.00, 15.53
pedestrian Nusc dist AP@0.5, 1.0, 2.0, 4.0
39.14, 49.29, 53.50, 57.03
traffic_cone Nusc dist AP@0.5, 1.0, 2.0, 4.0
12.58, 18.92, 22.79, 27.99
trailer Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 1.10, 7.42, 20.91
truck Nusc dist AP@0.5, 1.0, 2.0, 4.0
5.44, 15.78, 22.77, 27.05
barrier Nusc dist AP@0.5, 1.0, 2.0, 4.0
7.54, 34.54, 44.52, 49.80
- all.pp.mida.config: 30 epoch, 1/2 dataset (NuscenesDatasetD2), train speed: 10 sample/s, ~200000 anchors
car Nusc dist AP@0.5, 1.0, 2.0, 4.0 61.91, 76.75, 80.94, 82.53 bicycle Nusc dist AP@0.5, 1.0, 2.0, 4.0 0.00, 0.00, 0.00, 0.00 bus Nusc dist AP@0.5, 1.0, 2.0, 4.0 8.72, 25.76, 39.13, 42.55 construction_vehicle Nusc dist AP@0.5, 1.0, 2.0, 4.0 0.00, 0.00, 0.27, 1.18 motorcycle Nusc dist AP@0.5, 1.0, 2.0, 4.0 12.62, 17.82, 18.31, 18.82 pedestrian Nusc dist AP@0.5, 1.0, 2.0, 4.0 55.50, 58.74, 61.27, 63.93 traffic_cone Nusc dist AP@0.5, 1.0, 2.0, 4.0 17.47, 20.30, 23.56, 28.63 trailer Nusc dist AP@0.5, 1.0, 2.0, 4.0 0.00, 4.76, 18.82, 28.26 truck Nusc dist AP@0.5, 1.0, 2.0, 4.0 8.39, 20.62, 27.37, 31.12 barrier Nusc dist AP@0.5, 1.0, 2.0, 4.0 10.61, 31.31, 40.60, 46.33
- all.pp.config: 50 epoch, 1/8 dataset (NuscenesDatasetD8), train speed: 4 sample/s, ~1200000 anchors
car Nusc dist AP@0.5, 1.0, 2.0, 4.0
62.90, 73.07, 76.77, 78.79
bicycle Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 0.00, 0.00, 0.00
bus Nusc dist AP@0.5, 1.0, 2.0, 4.0
9.53, 26.17, 38.01, 40.60
construction_vehicle Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.00, 0.00, 0.44, 1.43
motorcycle Nusc dist AP@0.5, 1.0, 2.0, 4.0
9.25, 12.90, 13.69, 14.11
pedestrian Nusc dist AP@0.5, 1.0, 2.0, 4.0
61.44, 62.61, 64.09, 66.35
traffic_cone Nusc dist AP@0.5, 1.0, 2.0, 4.0
11.63, 13.14, 15.81, 21.22
trailer Nusc dist AP@0.5, 1.0, 2.0, 4.0
0.80, 9.90, 17.61, 23.26
truck Nusc dist AP@0.5, 1.0, 2.0, 4.0
9.81, 21.40, 27.55, 30.34
- all.fhd.config: train speed: 5.5 sample/s. comming soon