Skip to content

Commit

Permalink
1. fix pp config: wrong ped/cyc anchor center
Browse files Browse the repository at this point in the history
2. add a fast-training nuscenes config
  • Loading branch information
traveller59 committed Apr 27, 2019
1 parent c2f9674 commit 4040cf7
Show file tree
Hide file tree
Showing 8 changed files with 357 additions and 12 deletions.
52 changes: 52 additions & 0 deletions NUSCENES-GUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,55 @@ Use ```set_train_step``` in utils.config_tool.train if you don't want to calcula

* use code such as code in script_server.py instead of use commands in terminal.


## Reference Performance

* all.pp.lowa.config: 30 epoch, 1/2 dataset, train speed: 12 sample/s

```
car Nusc dist [email protected], 1.0, 2.0, 4.0
58.85, 76.12, 80.65, 82.49
bicycle Nusc dist [email protected], 1.0, 2.0, 4.0
0.00, 0.00, 0.00, 0.00
bus Nusc dist [email protected], 1.0, 2.0, 4.0
2.55, 15.42, 27.19, 32.03
construction_vehicle Nusc dist [email protected], 1.0, 2.0, 4.0
0.00, 0.00, 0.02, 0.31
motorcycle Nusc dist [email protected], 1.0, 2.0, 4.0
8.61, 14.30, 15.00, 15.53
pedestrian Nusc dist [email protected], 1.0, 2.0, 4.0
39.14, 49.29, 53.50, 57.03
traffic_cone Nusc dist [email protected], 1.0, 2.0, 4.0
12.58, 18.92, 22.79, 27.99
trailer Nusc dist [email protected], 1.0, 2.0, 4.0
0.00, 1.10, 7.42, 20.91
truck Nusc dist [email protected], 1.0, 2.0, 4.0
5.44, 15.78, 22.77, 27.05
barrier Nusc dist [email protected], 1.0, 2.0, 4.0
7.54, 34.54, 44.52, 49.80
```

* all.pp.config: 50 epoch, 1/8 dataset, train speed: 4 sample/s

```
car Nusc dist [email protected], 1.0, 2.0, 4.0
58.85, 76.12, 80.65, 82.49
bicycle Nusc dist [email protected], 1.0, 2.0, 4.0
0.00, 0.00, 0.00, 0.00
bus Nusc dist [email protected], 1.0, 2.0, 4.0
2.55, 15.42, 27.19, 32.03
construction_vehicle Nusc dist [email protected], 1.0, 2.0, 4.0
0.00, 0.00, 0.02, 0.31
motorcycle Nusc dist [email protected], 1.0, 2.0, 4.0
8.61, 14.30, 15.00, 15.53
pedestrian Nusc dist [email protected], 1.0, 2.0, 4.0
39.14, 49.29, 53.50, 57.03
traffic_cone Nusc dist [email protected], 1.0, 2.0, 4.0
12.58, 18.92, 22.79, 27.99
trailer Nusc dist [email protected], 1.0, 2.0, 4.0
0.00, 1.10, 7.42, 20.91
truck Nusc dist [email protected], 1.0, 2.0, 4.0
5.44, 15.78, 22.77, 27.05
barrier Nusc dist [email protected], 1.0, 2.0, 4.0
7.54, 34.54, 44.52, 49.80
```
293 changes: 293 additions & 0 deletions second/configs/nuscenes/all.pp.lowa.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
model: {
second: {
voxel_generator {
point_cloud_range : [-50, -50, -5, 50, 50, 3]
voxel_size : [0.25, 0.25, 8]
max_number_of_points_per_voxel : 60
}
voxel_feature_extractor: {
module_class_name: "PillarFeatureNet"
num_filters: [64]
with_distance: false
num_input_features: 4
}
middle_feature_extractor: {
module_class_name: "PointPillarsScatter"
downsample_factor: 1
num_input_features: 64
}
rpn: {
module_class_name: "RPNV2"
layer_nums: [3, 5, 5]
layer_strides: [2, 2, 2]
num_filters: [64, 128, 256]
upsample_strides: [0.25, 0.5, 1]
num_upsample_filters: [128, 128, 128]
use_groupnorm: false
num_groups: 32
num_input_features: 64
}
loss: {
classification_loss: {
weighted_sigmoid_focal: {
alpha: 0.25
gamma: 2.0
anchorwise_output: true
}
}
localization_loss: {
weighted_smooth_l1: {
sigma: 3.0
code_weight: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
}
classification_weight: 1.0
localization_weight: 2.0
}
num_point_features: 4 # model's num point feature should be independent of dataset
# Outputs
use_sigmoid_score: true
encode_background_as_zeros: true
encode_rad_error_by_sin: true

use_direction_classifier: true
direction_loss_weight: 0.2

# Loss
pos_class_weight: 1.0
neg_class_weight: 1.0

loss_norm_type: NormByNumPositives
# Postprocess
post_center_limit_range: [-59.6, -59.6, -10, 59.6, 59.6, 10]
use_rotate_nms: false
use_multi_class_nms: false
nms_pre_max_size: 1000
nms_post_max_size: 300
nms_score_threshold: 0.05
nms_iou_threshold: 0.5

box_coder: {
ground_box3d_coder: {
linear_dim: false
encode_angle_vector: false
}
}
target_assigner: {
anchor_generators: {
anchor_generator_range: {
sizes: [1.95017717, 4.60718145, 1.72270761] # wlh
anchor_ranges: [-50, -50, -0.93897414, 50, 50, -0.93897414]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.25
unmatched_threshold : 0.2
class_name: "car"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [0.60058911, 1.68452161, 1.27192197] # wlh
anchor_ranges: [-50, -50, -1.03743013, 50, 50, -1.03743013]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.2
unmatched_threshold : 0.15
class_name: "bicycle"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [2.94046906, 11.1885991, 3.47030982] # wlh
anchor_ranges: [-50, -50, -0.0715754, 50, 50, -0.0715754]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.5
unmatched_threshold : 0.35
class_name: "bus"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [2.73050468, 6.38352896, 3.13312415] # wlh
anchor_ranges: [-50, -50, -0.08168083, 50, 50, -0.08168083]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.4
unmatched_threshold : 0.3
class_name: "construction_vehicle"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [0.76279481, 2.09973778, 1.44403034] # wlh
anchor_ranges: [-50, -50, -0.99194854, 50, 50, -0.99194854]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.2
unmatched_threshold : 0.15
class_name: "motorcycle"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [0.66344886, 0.7256437, 1.75748069] # wlh
anchor_ranges: [-50, -50, -0.73911038, 50, 50, -0.73911038]
rotations: [0] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.5
unmatched_threshold : 0.35
class_name: "pedestrian"
}
region_similarity_calculator: {
distance_similarity: {
distance_norm: 1.414 # match range
with_rotation: false
rotation_alpha: 0.0 # rot error contribution
}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [0.39694519, 0.40359262, 1.06232151] # wlh
anchor_ranges: [-50, -50, -1.27868911, 50, 50, -1.27868911]
rotations: [0] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.5
unmatched_threshold : 0.35
class_name: "traffic_cone"
}
region_similarity_calculator: {
distance_similarity: {
distance_norm: 1.414 # match range
with_rotation: false
rotation_alpha: 0.0 # rot error contribution
}
}
}
anchor_generators: {
anchor_generator_range: {
# sizes: [2.87427237, 12.01320693, 3.81509561] # wlh
sizes: [3, 15, 3.8, 2, 3, 3.8]
anchor_ranges: [-50, -50, 0.22228277, 50, 50, 0.22228277]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.5
unmatched_threshold : 0.35
class_name: "trailer"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [2.4560939, 6.73778078, 2.73004906] # wlh
anchor_ranges: [-50, -50, -0.37937912, 50, 50, -0.37937912]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.5
unmatched_threshold : 0.35
class_name: "truck"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
anchor_generators: {
anchor_generator_range: {
sizes: [2.49008838, 0.48578221, 0.98297065] # wlh
anchor_ranges: [-50, -50, -1.27247968, 50, 50, -1.27247968]
rotations: [0, 1.57] # DON'T modify this unless you are very familiar with my code.
matched_threshold : 0.3
unmatched_threshold : 0.2
class_name: "barrier"
}
region_similarity_calculator: {
nearest_iou_similarity: {}
}
}
sample_positive_fraction : -1
sample_size : 512
}
}
}

train_input_reader: {
dataset: {
dataset_class_name: "NuScenesDatasetD2"
kitti_info_path: "/media/yy/960evo/datasets/nuscene/v1.0-trainval/infos_train.pkl"
kitti_root_path: "/media/yy/960evo/datasets/nuscene/v1.0-trainval"
}

batch_size: 3
preprocess: {
max_number_of_voxels: 25000
shuffle_points: false
num_workers: 3
groundtruth_localization_noise_std: [0, 0, 0]
groundtruth_rotation_uniform_noise: [0, 0]
# groundtruth_localization_noise_std: [0.25, 0.25, 0.25]
# groundtruth_rotation_uniform_noise: [-0.15707963267, 0.15707963267]
global_rotation_uniform_noise: [0, 0]
global_scaling_uniform_noise: [0.95, 1.05]
global_random_rotation_range_per_object: [0, 0]
global_translate_noise_std: [0.2, 0.2, 0.2]
anchor_area_threshold: -1
remove_points_after_sample: true
groundtruth_points_drop_percentage: 0.0
groundtruth_drop_max_keep_points: 15
remove_unknown_examples: false
remove_environment: false
database_sampler {
}
}
}

train_config: {
optimizer: {
adam_optimizer: {
learning_rate: {
one_cycle: {
lr_max: 3e-3
moms: [0.95, 0.85]
div_factor: 10.0
pct_start: 0.4
}
}
weight_decay: 0.01
}
fixed_weight_decay: true
use_moving_average: false
}
steps: 58650 # 14065 * 20 (28130 // 2 )
steps_per_eval: 5865 # 14065 * 2
save_checkpoints_secs : 1800 # half hour
save_summary_steps : 10
enable_mixed_precision: false
loss_scale_factor: -1
clear_metrics_every_epoch: true
}

eval_input_reader: {
dataset: {
dataset_class_name: "NuScenesDataset"
kitti_info_path: "/media/yy/960evo/datasets/nuscene/v1.0-trainval/infos_val.pkl"
kitti_root_path: "/media/yy/960evo/datasets/nuscene/v1.0-trainval"
}
batch_size: 1

preprocess: {
max_number_of_voxels: 30000
shuffle_points: false
num_workers: 2
anchor_area_threshold: -1
remove_environment: false
}
}
4 changes: 2 additions & 2 deletions second/configs/pointpillars/ped_cycle/xyres_16.config
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ model: {
anchor_generator_stride: {
sizes: [0.6, 1.76, 1.73] # wlh
strides: [0.16, 0.16, 0.0] # if generate only 1 z_center, z_stride will be ignored
offsets: [0.08, -19.76, -1.465] # origin_offset + strides / 2
offsets: [0.08, -19.76, -0.6] # origin_offset + strides / 2
rotations: [0, 1.57] # 0, pi/2
matched_threshold : 0.5
unmatched_threshold : 0.35
Expand All @@ -93,7 +93,7 @@ model: {
anchor_generator_stride: {
sizes: [0.6, 0.8, 1.73] # wlh
strides: [0.16, 0.16, 0.0] # if generate only 1 z_center, z_stride will be ignored
offsets: [0.08, -19.76, -1.465] # origin_offset + strides / 2
offsets: [0.08, -19.76, -0.6] # origin_offset + strides / 2
rotations: [0, 1.57] # 0, pi/2
matched_threshold : 0.5
unmatched_threshold : 0.35
Expand Down
4 changes: 2 additions & 2 deletions second/configs/pointpillars/ped_cycle/xyres_20.config
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ model: {
anchor_generator_stride: {
sizes: [0.6, 1.76, 1.73] # wlh
strides: [0.2, 0.2, 0.0] # if generate only 1 z_center, z_stride will be ignored
offsets: [0.1, -19.9, -1.465] # origin_offset + strides / 2
offsets: [0.1, -19.9, -0.6] # origin_offset + strides / 2
rotations: [0, 1.57] # 0, pi/2
matched_threshold : 0.5
unmatched_threshold : 0.35
Expand All @@ -94,7 +94,7 @@ model: {
anchor_generator_stride: {
sizes: [0.6, 0.8, 1.73] # wlh
strides: [0.2, 0.2, 0.0] # if generate only 1 z_center, z_stride will be ignored
offsets: [0.1, -19.9, -1.465] # origin_offset + strides / 2
offsets: [0.1, -19.9, -0.6] # origin_offset + strides / 2
rotations: [0, 1.57] # 0, pi/2
matched_threshold : 0.5
unmatched_threshold : 0.35
Expand Down
Loading

0 comments on commit 4040cf7

Please sign in to comment.