Skip to content

Commit

Permalink
add config refactor example
Browse files Browse the repository at this point in the history
  • Loading branch information
David Josef Emmerichs authored and demmerichs committed Jul 31, 2023
1 parent 3080079 commit a0b943f
Show file tree
Hide file tree
Showing 7 changed files with 667 additions and 0 deletions.
64 changes: 64 additions & 0 deletions tools/cfgs/dataset_configs/modifiers/waymo/multiframe.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
SEQUENCE_CONFIG:
ENABLED: True
SAMPLE_OFFSET: [-3, 0]

TRAIN_WITH_SPEED: True


DATA_AUGMENTOR:
AUG_CONFIG_LIST:
- NAME: gt_sampling
USE_ROAD_PLANE: False
DB_INFO_PATH:
- waymo_processed_data_v0_5_0_waymo_dbinfos_train_sampled_1_multiframe_-4_to_0.pkl

USE_SHARED_MEMORY: False # set it to True to speed up (it costs about 50GB? shared memory)
DB_DATA_PATH:
- waymo_processed_data_v0_5_0_gt_database_train_sampled_1_multiframe_-4_to_0_global.npy

PREPARE: {
filter_by_min_points: ['Vehicle:5', 'Pedestrian:5', 'Cyclist:5'],
filter_by_difficulty: [-1],
}

SAMPLE_GROUPS: ['Vehicle:15', 'Pedestrian:10', 'Cyclist:10']
NUM_POINT_FEATURES: 6
REMOVE_EXTRA_WIDTH: [0.0, 0.0, 0.0]
LIMIT_WHOLE_SCENE: True

FILTER_OBJ_POINTS_BY_TIMESTAMP: True
TIME_RANGE: [0.3, 0.0] # 0.3s-0.0s indicates 4 frames

- NAME: random_world_flip
ALONG_AXIS_LIST: ['x', 'y']

- NAME: random_world_rotation
WORLD_ROT_ANGLE: [-0.78539816, 0.78539816]

- NAME: random_world_scaling
WORLD_SCALE_RANGE: [0.95, 1.05]


POINT_FEATURE_ENCODING:
used_feature_list: ['x', 'y', 'z', 'intensity', 'elongation', 'timestamp']
src_feature_list: ['x', 'y', 'z', 'intensity', 'elongation', 'timestamp']


DATA_PROCESSOR:
- NAME: mask_points_and_boxes_outside_range
REMOVE_OUTSIDE_BOXES: True
USE_CENTER_TO_FILTER: True

- NAME: shuffle_points
SHUFFLE_ENABLED: {
'train': True,
'test': True
}

- NAME: transform_points_to_voxels
VOXEL_SIZE: [0.1, 0.1, 0.15]
MAX_POINTS_PER_VOXEL: 5
MAX_NUMBER_OF_VOXELS: {
'train': 180000,
'test': 400000
}
16 changes: 16 additions & 0 deletions tools/cfgs/waymo_models/modifiers/mppnet/16frames.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
DATA_CONFIG:
SEQUENCE_CONFIG:
SAMPLE_OFFSET: [-15,0]

MODEL:
ROI_HEAD:
TRANS_INPUT: 64

ROI_GRID_POOL:
MLPS: [[64,64]]
POOL_RADIUS: [0.8]
NSAMPLE: [16]

Transformer:
num_frames: 16
sequence_stride: 4
15 changes: 15 additions & 0 deletions tools/cfgs/waymo_models/modifiers/mppnet/4frames.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
DATA_CONFIG:
SEQUENCE_CONFIG:
SAMPLE_OFFSET: [-3,0]

MODEL:
ROI_HEAD:
TRANS_INPUT: 256

ROI_GRID_POOL:
MLPS: [[128,128], [128,128]]
POOL_RADIUS: [0.8, 1.6]
NSAMPLE: [16, 16]

Transformer:
num_frames: 4
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
DATA_CONFIG:
_BASE_CONFIG_: cfgs/dataset_configs/modifiers/waymo/multiframe.yaml
_TRANSFORM:
- name: remove_element
target: ROI_BOXES_PATH
- name: remove_element
target: USE_PREDBOX

SAMPLED_INTERVAL: {
'train': 5,
'test': 1
}

POINT_FEATURE_ENCODING:
encoding_type: absolute_coordinates_encoding
used_feature_list: ['x', 'y', 'z', 'intensity', 'elongation', 'time']
src_feature_list: ['x', 'y', 'z', 'intensity', 'elongation', 'time']

MODEL:
NAME: MPPNetE2E

VFE:
NAME: DynMeanVFE

BACKBONE_3D:
NAME: VoxelResBackBone8x

MAP_TO_BEV:
NAME: HeightCompression
NUM_BEV_FEATURES: 256

BACKBONE_2D:
NAME: BaseBEVBackbone
NUM_FRAME: 2
LAYER_NUMS: [5, 5]
LAYER_STRIDES: [1, 2]
NUM_FILTERS: [128, 256]
UPSAMPLE_STRIDES: [1, 2]
NUM_UPSAMPLE_FILTERS: [256, 256]

DENSE_HEAD:
NAME: CenterHead
CLASS_AGNOSTIC: False

CLASS_NAMES_EACH_HEAD: [
['Vehicle', 'Pedestrian', 'Cyclist']
]

SHARED_CONV_CHANNEL: 64
USE_BIAS_BEFORE_NORM: True
NUM_HM_CONV: 2
SEPARATE_HEAD_CFG:
HEAD_ORDER: ['center', 'center_z', 'dim', 'rot','vel']
HEAD_DICT: {
'center': {'out_channels': 2, 'num_conv': 2},
'center_z': {'out_channels': 1, 'num_conv': 2},
'dim': {'out_channels': 3, 'num_conv': 2},
'rot': {'out_channels': 2, 'num_conv': 2},
'vel': {'out_channels': 2, 'num_conv': 2},

}

TARGET_ASSIGNER_CONFIG:
FEATURE_MAP_STRIDE: 8
NUM_MAX_OBJS: 500
GAUSSIAN_OVERLAP: 0.1
MIN_RADIUS: 2

LOSS_CONFIG:
LOSS_WEIGHTS: {
'cls_weight': 1.0,
'loc_weight': 2.0,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.2, 0.2]
}

POST_PROCESSING:
SCORE_THRESH: 0.1
POST_CENTER_LIMIT_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4]
MAX_OBJ_PER_SAMPLE: 500
NMS_CONFIG:
NMS_TYPE: nms_gpu
NMS_THRESH: 0.7
NMS_PRE_MAXSIZE: 4096
NMS_POST_MAXSIZE: 500

ROI_HEAD:
NAME: MPPNetHeadE2E
USE_BOX_ENCODING:
NORM_T0: True
ALL_YAW_T0: True

Transformer:
sequence_stride: 1 #16frame using 4
170 changes: 170 additions & 0 deletions tools/cfgs/waymo_models/mppnet.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
CLASS_NAMES: ['Vehicle', 'Pedestrian', 'Cyclist']

DATA_CONFIG:
_BASE_CONFIG_: cfgs/dataset_configs/waymo_dataset.yaml
PROCESSED_DATA_TAG: 'waymo_processed_data_v0_5_0'

SAMPLED_INTERVAL: {
'train': 1,
'test': 1
}
FILTER_EMPTY_BOXES_FOR_TRAIN: True
DISABLE_NLZ_FLAG_ON_POINTS: True

SEQUENCE_CONFIG:
ENABLED: True
SAMPLE_OFFSET: [-3,0]

USE_PREDBOX: True
ROI_BOXES_PATH: {
'train': '../output/xxxxx/train/result.pkl', # example: predicted boxes of RPN in training set
'test': '../output/xxxxx/val/result.pkl', # example: predicted boxes of RPN in evalulation set
}

DATA_AUGMENTOR:
DISABLE_AUG_LIST: [ 'placeholder' ]
AUG_CONFIG_LIST:

- NAME: random_world_flip
ALONG_AXIS_LIST: [ 'x', 'y' ]

- NAME: random_world_rotation
WORLD_ROT_ANGLE: [ -0.78539816, 0.78539816 ]

- NAME: random_world_scaling
WORLD_SCALE_RANGE: [ 0.95, 1.05 ]

DATA_PROCESSOR:
- NAME: mask_points_and_boxes_outside_range
REMOVE_OUTSIDE_BOXES: True

- NAME: shuffle_points
SHUFFLE_ENABLED: {
'train': True,
'test': True
}

POINT_FEATURE_ENCODING: {
encoding_type: absolute_coordinates_encoding,
used_feature_list: ['x', 'y', 'z', 'intensity', 'elongation', 'time'],
src_feature_list: ['x', 'y', 'z', 'intensity', 'elongation', 'time'],
}


MODEL:
NAME: MPPNet

ROI_HEAD:
NAME: MPPNetHead
TRANS_INPUT: 256
CLASS_AGNOSTIC: True
USE_BOX_ENCODING:
ENABLED: True
AVG_STAGE1_SCORE: True
USE_TRAJ_EMPTY_MASK: True
USE_AUX_LOSS: True
IOU_WEIGHT: [0.5,0.4]



ROI_GRID_POOL:
GRID_SIZE: 4
MLPS: [[128,128], [128,128]]
POOL_RADIUS: [0.8, 1.6]
NSAMPLE: [16, 16]
POOL_METHOD: max_pool


_TRANSFORM:
name: copy
src: TRANS_INPUT
dest: Transformer.hidden_dim
Transformer:
num_lidar_points: 128
num_proxy_points: 64 # GRID_SIZE*GRID_SIZE*GRID_SIZE
pos_hidden_dim: 64
enc_layers: 3
dim_feedforward: 512
dropout: 0.1
nheads: 4
pre_norm: False
num_frames: 4
num_groups: 4
use_grid_pos:
enabled: True
init_type: index

use_mlp_mixer:
enabled: True
hidden_dim: 16

TARGET_CONFIG:
BOX_CODER: ResidualCoder
ROI_PER_IMAGE: 96
FG_RATIO: 0.5
REG_AUG_METHOD: single
ROI_FG_AUG_TIMES: 10
RATIO: 0.2
USE_ROI_AUG: True
USE_TRAJ_AUG:
ENABLED: True
THRESHOD: 0.8
SAMPLE_ROI_BY_EACH_CLASS: True
CLS_SCORE_TYPE: roi_iou

CLS_FG_THRESH: 0.75
CLS_BG_THRESH: 0.25
CLS_BG_THRESH_LO: 0.1
HARD_BG_RATIO: 0.8

REG_FG_THRESH: 0.55

LOSS_CONFIG:
CLS_LOSS: BinaryCrossEntropy
REG_LOSS: smooth-l1
CORNER_LOSS_REGULARIZATION: True
LOSS_WEIGHTS: {
'rcnn_cls_weight': 1.0,
'rcnn_reg_weight': 1.0,
'rcnn_corner_weight': 2.0,
'traj_reg_weight': [2.0, 2.0, 2.0],
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}

POST_PROCESSING:
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
SCORE_THRESH: 0.1
OUTPUT_RAW_SCORE: False
SAVE_BBOX: False
EVAL_METRIC: waymo
NOT_APPLY_NMS_FOR_VEL: True

NMS_CONFIG:
MULTI_CLASSES_NMS: False
NMS_TYPE: nms_gpu
NMS_THRESH: 0.7
NMS_PRE_MAXSIZE: 4096
NMS_POST_MAXSIZE: 500


OPTIMIZATION:
BATCH_SIZE_PER_GPU: 2
NUM_EPOCHS: 6

OPTIMIZER: adam_onecycle
LR: 0.003
WEIGHT_DECAY: 0.01
MOMENTUM: 0.9

MOMS: [0.95, 0.85]
PCT_START: 0.4
DIV_FACTOR: 10
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001

LR_WARMUP: False
WARMUP_EPOCH: 1

GRAD_NORM_CLIP: 10

Loading

0 comments on commit a0b943f

Please sign in to comment.