Commit ccf028f7 authored by VVsssssk's avatar VVsssssk Committed by ChaimZhu
Browse files

[Refactor]Refactor pp cfg

parent 955b4419
...@@ -8,6 +8,7 @@ point_cloud_range = [0, -39.68, -3, 69.12, 39.68, 1] ...@@ -8,6 +8,7 @@ point_cloud_range = [0, -39.68, -3, 69.12, 39.68, 1]
# dataset settings # dataset settings
data_root = 'data/kitti/' data_root = 'data/kitti/'
class_names = ['Pedestrian', 'Cyclist', 'Car'] class_names = ['Pedestrian', 'Cyclist', 'Car']
metainfo = dict(CLASSES=class_names)
# PointPillars adopted a different sampling strategies among classes # PointPillars adopted a different sampling strategies among classes
db_sampler = dict( db_sampler = dict(
data_root=data_root, data_root=data_root,
...@@ -32,8 +33,9 @@ train_pipeline = [ ...@@ -32,8 +33,9 @@ train_pipeline = [
dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range), dict(type='PointsRangeFilter', point_cloud_range=point_cloud_range),
dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range), dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
dict(type='PointShuffle'), dict(type='PointShuffle'),
dict(type='DefaultFormatBundle3D', class_names=class_names), dict(
dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) type='Pack3DDetInputs',
keys=['points', 'gt_labels_3d', 'gt_bboxes_3d'])
] ]
test_pipeline = [ test_pipeline = [
dict(type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4), dict(type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4),
...@@ -51,31 +53,57 @@ test_pipeline = [ ...@@ -51,31 +53,57 @@ test_pipeline = [
dict(type='RandomFlip3D'), dict(type='RandomFlip3D'),
dict( dict(
type='PointsRangeFilter', point_cloud_range=point_cloud_range), type='PointsRangeFilter', point_cloud_range=point_cloud_range),
dict( dict(type='Pack3DDetInputs', keys=['points'])
type='DefaultFormatBundle3D',
class_names=class_names,
with_label=False),
dict(type='Collect3D', keys=['points'])
]) ])
] ]
data = dict( train_dataloader = dict(
train=dict(dataset=dict(pipeline=train_pipeline, classes=class_names)), dataset=dict(dataset=dict(pipeline=train_pipeline, metainfo=metainfo)))
val=dict(pipeline=test_pipeline, classes=class_names), test_dataloader = dict(dataset=dict(metainfo=metainfo))
test=dict(pipeline=test_pipeline, classes=class_names)) val_dataloader = dict(dataset=dict(metainfo=metainfo))
# In practice PointPillars also uses a different schedule # In practice PointPillars also uses a different schedule
# optimizer # optimizer
lr = 0.001 lr = 0.001
optimizer = dict(lr=lr) epoch_num = 80
iter_num_in_epoch = 3712
optim_wrapper = dict(
optimizer=dict(lr=lr), clip_grad=dict(max_norm=35, norm_type=2))
param_scheduler = [
dict(
type='CosineAnnealingLR',
T_max=epoch_num * 0.4 * iter_num_in_epoch,
eta_min=lr * 10,
by_epoch=False,
begin=0,
end=epoch_num * 0.4 * iter_num_in_epoch),
dict(
type='CosineAnnealingLR',
T_max=epoch_num * 0.6 * iter_num_in_epoch,
eta_min=lr * 1e-4,
by_epoch=False,
begin=epoch_num * 0.4 * iter_num_in_epoch,
end=epoch_num * 1 * iter_num_in_epoch),
dict(
type='CosineAnnealingBetas',
T_max=epoch_num * 0.4 * iter_num_in_epoch,
eta_min=0.85 / 0.95,
by_epoch=False,
begin=0,
end=epoch_num * 0.4 * iter_num_in_epoch),
dict(
type='CosineAnnealingBetas',
T_max=epoch_num * 0.6 * iter_num_in_epoch,
eta_min=1,
by_epoch=False,
begin=epoch_num * 0.4 * iter_num_in_epoch,
end=epoch_num * 1 * iter_num_in_epoch)
]
# max_norm=35 is slightly better than 10 for PointPillars in the earlier # max_norm=35 is slightly better than 10 for PointPillars in the earlier
# development of the codebase thus we keep the setting. But we does not # development of the codebase thus we keep the setting. But we does not
# specifically tune this parameter. # specifically tune this parameter.
optimizer_config = dict(grad_clip=dict(max_norm=35, norm_type=2))
# PointPillars usually need longer schedule than second, we simply double # PointPillars usually need longer schedule than second, we simply double
# the training schedule. Do remind that since we use RepeatDataset and # the training schedule. Do remind that since we use RepeatDataset and
# repeat factor is 2, so we actually train 160 epochs. # repeat factor is 2, so we actually train 160 epochs.
runner = dict(max_epochs=80) train_cfg = dict(by_epoch=True, max_epochs=epoch_num)
val_cfg = dict(interval=2)
# Use evaluation interval=2 reduce the number of evaluation timese test_cfg = dict()
evaluation = dict(interval=2)
...@@ -31,6 +31,7 @@ model = dict( ...@@ -31,6 +31,7 @@ model = dict(
dataset_type = 'KittiDataset' dataset_type = 'KittiDataset'
data_root = 'data/kitti/' data_root = 'data/kitti/'
class_names = ['Car'] class_names = ['Car']
metainfo = dict(CLASSES=class_names)
db_sampler = dict( db_sampler = dict(
data_root=data_root, data_root=data_root,
info_path=data_root + 'kitti_dbinfos_train.pkl', info_path=data_root + 'kitti_dbinfos_train.pkl',
...@@ -52,7 +53,9 @@ train_pipeline = [ ...@@ -52,7 +53,9 @@ train_pipeline = [
dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range), dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range),
dict(type='PointShuffle'), dict(type='PointShuffle'),
dict(type='DefaultFormatBundle3D', class_names=class_names), dict(type='DefaultFormatBundle3D', class_names=class_names),
dict(type='Collect3D', keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) dict(
type='Pack3DDetInputs',
keys=['points', 'gt_labels_3d', 'gt_bboxes_3d'])
] ]
test_pipeline = [ test_pipeline = [
dict(type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4), dict(type='LoadPointsFromFile', coord_type='LIDAR', load_dim=4, use_dim=4),
...@@ -70,18 +73,13 @@ test_pipeline = [ ...@@ -70,18 +73,13 @@ test_pipeline = [
dict(type='RandomFlip3D'), dict(type='RandomFlip3D'),
dict( dict(
type='PointsRangeFilter', point_cloud_range=point_cloud_range), type='PointsRangeFilter', point_cloud_range=point_cloud_range),
dict( dict(type='Pack3DDetInputs', keys=['points'])
type='DefaultFormatBundle3D',
class_names=class_names,
with_label=False),
dict(type='Collect3D', keys=['points'])
]) ])
] ]
data = dict( train_dataloader = dict(
train=dict( dataset=dict(
type='RepeatDataset', type='RepeatDataset',
times=2, times=2,
dataset=dict(pipeline=train_pipeline, classes=class_names)), dataset=dict(pipeline=train_pipeline, metainfo=metainfo)))
val=dict(pipeline=test_pipeline, classes=class_names), test_dataloader = dict(dataset=dict(pipeline=test_pipeline, metainfo=metainfo))
test=dict(pipeline=test_pipeline, classes=class_names))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment