dataset_type = 'KittiDataset' data_root = 'data/kitti/' class_names = ['Pedestrian', 'Cyclist', 'Car'] point_cloud_range = [0, -40, -3, 70.4, 40, 1] input_modality = dict(use_lidar=True, use_camera=False) db_sampler = dict( data_root='data/kitti/', info_path='data/kitti/kitti_dbinfos_train.pkl', rate=1.0, prepare=dict( filter_by_difficulty=[-1], filter_by_min_points=dict(Car=5, Pedestrian=10, Cyclist=10)), classes=['Pedestrian', 'Cyclist', 'Car'], sample_groups=dict(Car=12, Pedestrian=10, Cyclist=10)) file_client_args = dict(backend='disk') train_pipeline = [ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True, file_client_args=dict(backend='disk')), dict( type='ObjectSample', db_sampler=dict( data_root='data/kitti/', info_path='data/kitti/kitti_dbinfos_train.pkl', rate=1.0, prepare=dict( filter_by_difficulty=[-1], filter_by_min_points=dict(Car=5, Pedestrian=10, Cyclist=10)), classes=['Pedestrian', 'Cyclist', 'Car'], sample_groups=dict(Car=12, Pedestrian=10, Cyclist=10))), dict( type='ObjectNoise', num_try=100, translation_std=[1.0, 1.0, 0.5], global_rot_range=[0.0, 0.0], rot_range=[-0.78539816, 0.78539816]), dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5), dict( type='GlobalRotScaleTrans', rot_range=[-0.78539816, 0.78539816], scale_ratio_range=[0.95, 1.05]), dict( type='PointsRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict( type='ObjectRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict(type='PointShuffle'), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car']), dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) ] test_pipeline = [ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='MultiScaleFlipAug3D', img_scale=(1333, 800), pts_scale_ratio=1, flip=False, transforms=[ dict( type='GlobalRotScaleTrans', rot_range=[0, 0], scale_ratio_range=[1.0, 1.0], translation_std=[0, 0, 0]), dict(type='RandomFlip3D'), dict( type='PointsRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car'], with_label=False), dict(type='Collect3D', keys=['points']) ]) ] eval_pipeline = [ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car'], with_label=False), dict(type='Collect3D', keys=['points']) ] data = dict( samples_per_gpu=8, workers_per_gpu=8, train=dict( type='RepeatDataset', times=1, dataset=dict( type='KittiDataset', data_root='data/kitti/', ann_file='data/kitti/kitti_infos_train.pkl', split='training', pts_prefix='velodyne_reduced', pipeline=[ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True, file_client_args=dict(backend='disk')), dict( type='ObjectSample', db_sampler=dict( data_root='data/kitti/', info_path='data/kitti/kitti_dbinfos_train.pkl', rate=1.0, prepare=dict( filter_by_difficulty=[-1], filter_by_min_points=dict( Car=5, Pedestrian=10, Cyclist=10)), classes=['Pedestrian', 'Cyclist', 'Car'], sample_groups=dict(Car=12, Pedestrian=10, Cyclist=10))), dict( type='ObjectNoise', num_try=100, translation_std=[1.0, 1.0, 0.5], global_rot_range=[0.0, 0.0], rot_range=[-0.78539816, 0.78539816]), dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5), dict( type='GlobalRotScaleTrans', rot_range=[-0.78539816, 0.78539816], scale_ratio_range=[0.95, 1.05]), dict( type='PointsRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict( type='ObjectRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict(type='PointShuffle'), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car']), dict( type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) ], modality=dict(use_lidar=True, use_camera=False), classes=['Pedestrian', 'Cyclist', 'Car'], test_mode=False, box_type_3d='LiDAR')), val=dict( type='KittiDataset', data_root='data/kitti/', ann_file='data/kitti/kitti_infos_val.pkl', split='training', pts_prefix='velodyne_reduced', pipeline=[ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='MultiScaleFlipAug3D', img_scale=(1333, 800), pts_scale_ratio=1, flip=False, transforms=[ dict( type='GlobalRotScaleTrans', rot_range=[0, 0], scale_ratio_range=[1.0, 1.0], translation_std=[0, 0, 0]), dict(type='RandomFlip3D'), dict( type='PointsRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car'], with_label=False), dict(type='Collect3D', keys=['points']) ]) ], modality=dict(use_lidar=True, use_camera=False), classes=['Pedestrian', 'Cyclist', 'Car'], test_mode=True, box_type_3d='LiDAR'), test=dict( type='KittiDataset', data_root='data/kitti/', ann_file='data/kitti/kitti_infos_val.pkl', split='training', pts_prefix='velodyne_reduced', pipeline=[ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='MultiScaleFlipAug3D', img_scale=(1333, 800), pts_scale_ratio=1, flip=False, transforms=[ dict( type='GlobalRotScaleTrans', rot_range=[0, 0], scale_ratio_range=[1.0, 1.0], translation_std=[0, 0, 0]), dict(type='RandomFlip3D'), dict( type='PointsRangeFilter', point_cloud_range=[0, -40, -3, 70.4, 40, 1]), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car'], with_label=False), dict(type='Collect3D', keys=['points']) ]) ], modality=dict(use_lidar=True, use_camera=False), classes=['Pedestrian', 'Cyclist', 'Car'], test_mode=True, box_type_3d='LiDAR')) evaluation = dict( interval=1, pipeline=[ dict( type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4, file_client_args=dict(backend='disk')), dict( type='DefaultFormatBundle3D', class_names=['Pedestrian', 'Cyclist', 'Car'], with_label=False), dict(type='Collect3D', keys=['points']) ]) voxel_size = [0.05, 0.05, 0.1] model = dict( type='CenterPoint', pts_voxel_layer=dict( max_num_points=5, voxel_size=[0.05, 0.05, 0.1], max_voxels=(16000, 40000), point_cloud_range=[0, -40, -3, 70.4, 40, 1]), pts_voxel_encoder=dict(type='HardSimpleVFE', num_features=4), pts_middle_encoder=dict( type='SparseEncoder', in_channels=4, sparse_shape=[41, 1600, 1408], output_channels=128, order=('conv', 'norm', 'act'), encoder_channels=((16, 16, 32), (32, 32, 64), (64, 64, 128), (128, 128)), encoder_paddings=((0, 0, 1), (0, 0, 1), (0, 0, [0, 1, 1]), (0, 0)), block_type='basicblock'), pts_backbone=dict( type='SECOND', in_channels=256, out_channels=[128, 256], layer_nums=[5, 5], layer_strides=[1, 2], norm_cfg=dict(type='BN', eps=0.001, momentum=0.01), conv_cfg=dict(type='Conv2d', bias=False)), pts_neck=dict( type='SECONDFPN', in_channels=[128, 256], out_channels=[256, 256], upsample_strides=[1, 2], norm_cfg=dict(type='BN', eps=0.001, momentum=0.01), upsample_cfg=dict(type='deconv', bias=False), use_conv_for_no_stride=True), pts_bbox_head=dict( type='CenterHead', in_channels=512, tasks=[ dict(num_class=1, class_names=['Car']), dict(num_class=1, class_names=['Pedestrian']), dict(num_class=1, class_names=['Cyclist']) ], common_heads=dict(reg=(2, 2), height=(1, 2), dim=(3, 2), rot=(2, 2)), share_conv_channel=64, bbox_coder=dict( type='CenterPointBBoxCoder', post_center_range=[0, -40, -3, 70.4, 40, 1], max_num=100, score_threshold=0.1, out_size_factor=8, voxel_size=[0.05, 0.05], code_size=7, pc_range=[0, -40]), separate_head=dict( type='SeparateHead', init_bias=-2.19, final_kernel=3), loss_cls=dict(type='GaussianFocalLoss', reduction='mean'), loss_bbox=dict(type='L1Loss', reduction='mean', loss_weight=0.25), norm_bbox=True), train_cfg=dict( pts=dict( point_cloud_range=[0, -40, -3, 70.4, 40, 1], grid_size=[1408, 1600, 40], voxel_size=[0.05, 0.05, 0.1], out_size_factor=8, dense_reg=1, gaussian_overlap=0.1, max_objs=500, min_radius=2, code_weights=[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])), test_cfg=dict( pts=dict( point_cloud_range=[0, -40, -3, 70.4, 40, 1], post_center_limit_range=[0, -40, -3, 70.4, 40, 1], max_per_img=500, max_pool_nms=False, min_radius=[4, 12, 10, 1, 0.85, 0.175], score_threshold=0.1, out_size_factor=4, voxel_size=[0.05, 0.05], nms_type='rotate', pre_max_size=4096, post_max_size=512, nms_thr=0.2, pc_range=[0, -40]))) optimizer = dict(type='AdamW', lr=0.001, weight_decay=0.01, betas=(0.95, 0.99)) optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2)) lr_config = dict( policy='cyclic', target_ratio=(10, 0.0001), cyclic_times=1, step_ratio_up=0.4) momentum_config = dict( policy='cyclic', target_ratio=(0.8947368421052632, 1), cyclic_times=1, step_ratio_up=0.4) runner = dict(type='EpochBasedRunner', max_epochs=80) checkpoint_config = dict(interval=1) log_config = dict( interval=50, hooks=[dict(type='TextLoggerHook'), dict(type='TensorboardLoggerHook')]) dist_params = dict(backend='nccl') log_level = 'INFO' work_dir = 'exp_kitti_06' load_from = None resume_from = None workflow = [('train', 1)] gpu_ids = range(0, 1)