|
- _base_ = [
- '../_base_/models/3dssd.py', '../_base_/datasets/kitti-3d-car.py',
- '../_base_/default_runtime.py'
- ]
-
- # dataset settings
- dataset_type = 'KittiDataset'
- data_root = 'data/kitti/'
- class_names = ['Car']
- point_cloud_range = [0, -40, -5, 70, 40, 3]
- input_modality = dict(use_lidar=True, use_camera=False)
- db_sampler = dict(
- data_root=data_root,
- info_path=data_root + 'kitti_dbinfos_train.pkl',
- rate=1.0,
- prepare=dict(filter_by_difficulty=[-1], filter_by_min_points=dict(Car=5)),
- classes=class_names,
- sample_groups=dict(Car=15))
-
- file_client_args = dict(backend='disk')
- # Uncomment the following if use ceph or other file clients.
- # See https://mmcv.readthedocs.io/en/latest/api.html#mmcv.fileio.FileClient
- # for more details.
- # file_client_args = dict(
- # backend='petrel', path_mapping=dict(data='s3://kitti_data/'))
-
- train_pipeline = [
- dict(
- type='LoadPointsFromFile',
- coord_type='LIDAR',
- load_dim=4,
- use_dim=4,
- file_client_args=file_client_args),
- dict(
- type='LoadAnnotations3D',
- with_bbox_3d=True,
- with_label_3d=True,
- file_client_args=file_client_args),
- dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range),
- dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
- dict(type='ObjectSample', db_sampler=db_sampler),
- dict(type='RandomFlip3D', flip_ratio_bev_horizontal=0.5),
- dict(
- type='ObjectNoise',
- num_try=100,
- translation_std=[1.0, 1.0, 0],
- global_rot_range=[0.0, 0.0],
- rot_range=[-1.0471975511965976, 1.0471975511965976]),
- dict(
- type='GlobalRotScaleTrans',
- rot_range=[-0.78539816, 0.78539816],
- scale_ratio_range=[0.9, 1.1]),
- # 3DSSD can get a higher performance without this transform
- # dict(type='BackgroundPointsFilter', bbox_enlarge_range=(0.5, 2.0, 0.5)),
- dict(type='PointSample', num_points=16384),
- dict(type='DefaultFormatBundle3D', class_names=class_names),
- 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=file_client_args),
- 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., 1.],
- translation_std=[0, 0, 0]),
- dict(type='RandomFlip3D'),
- dict(
- type='PointsRangeFilter', point_cloud_range=point_cloud_range),
- dict(type='PointSample', num_points=16384),
- dict(
- type='DefaultFormatBundle3D',
- class_names=class_names,
- with_label=False),
- dict(type='Collect3D', keys=['points'])
- ])
- ]
-
- data = dict(
- samples_per_gpu=4,
- workers_per_gpu=4,
- train=dict(dataset=dict(pipeline=train_pipeline)),
- val=dict(pipeline=test_pipeline),
- test=dict(pipeline=test_pipeline))
-
- evaluation = dict(interval=2)
-
- # model settings
- model = dict(
- bbox_head=dict(
- num_classes=1,
- bbox_coder=dict(
- type='AnchorFreeBBoxCoder', num_dir_bins=12, with_rot=True)))
-
- # optimizer
- lr = 0.002 # max learning rate
- optimizer = dict(type='AdamW', lr=lr, weight_decay=0)
- optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
- lr_config = dict(policy='step', warmup=None, step=[45, 60])
- # runtime settings
- runner = dict(type='EpochBasedRunner', max_epochs=80)
-
- # yapf:disable
- log_config = dict(
- interval=30,
- hooks=[
- dict(type='TextLoggerHook'),
- dict(type='TensorboardLoggerHook')
- ])
- # yapf:enable
|