Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
raojy
mmdetection3d_rjy
Commits
7aa442d5
Commit
7aa442d5
authored
Apr 01, 2026
by
raojy
Browse files
raw_mmdetection
parent
9c03eaa8
Changes
465
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1100 additions
and
0 deletions
+1100
-0
mmdetection3d/configs/_base_/models/pointnet2_ssg.py
mmdetection3d/configs/_base_/models/pointnet2_ssg.py
+36
-0
mmdetection3d/configs/_base_/models/pointpillars_hv_fpn_lyft.py
...ction3d/configs/_base_/models/pointpillars_hv_fpn_lyft.py
+23
-0
mmdetection3d/configs/_base_/models/pointpillars_hv_fpn_nus.py
...ection3d/configs/_base_/models/pointpillars_hv_fpn_nus.py
+100
-0
mmdetection3d/configs/_base_/models/pointpillars_hv_fpn_range100_lyft.py
...onfigs/_base_/models/pointpillars_hv_fpn_range100_lyft.py
+23
-0
mmdetection3d/configs/_base_/models/pointpillars_hv_secfpn_kitti.py
...n3d/configs/_base_/models/pointpillars_hv_secfpn_kitti.py
+98
-0
mmdetection3d/configs/_base_/models/pointpillars_hv_secfpn_waymo.py
...n3d/configs/_base_/models/pointpillars_hv_secfpn_waymo.py
+112
-0
mmdetection3d/configs/_base_/models/second_hv_secfpn_kitti.py
...tection3d/configs/_base_/models/second_hv_secfpn_kitti.py
+94
-0
mmdetection3d/configs/_base_/models/second_hv_secfpn_waymo.py
...tection3d/configs/_base_/models/second_hv_secfpn_waymo.py
+108
-0
mmdetection3d/configs/_base_/models/smoke.py
mmdetection3d/configs/_base_/models/smoke.py
+61
-0
mmdetection3d/configs/_base_/models/spvcnn.py
mmdetection3d/configs/_base_/models/spvcnn.py
+34
-0
mmdetection3d/configs/_base_/models/votenet.py
mmdetection3d/configs/_base_/models/votenet.py
+73
-0
mmdetection3d/configs/_base_/schedules/cosine.py
mmdetection3d/configs/_base_/schedules/cosine.py
+30
-0
mmdetection3d/configs/_base_/schedules/cyclic-20e.py
mmdetection3d/configs/_base_/schedules/cyclic-20e.py
+65
-0
mmdetection3d/configs/_base_/schedules/cyclic-40e.py
mmdetection3d/configs/_base_/schedules/cyclic-40e.py
+67
-0
mmdetection3d/configs/_base_/schedules/mmdet-schedule-1x.py
mmdetection3d/configs/_base_/schedules/mmdet-schedule-1x.py
+28
-0
mmdetection3d/configs/_base_/schedules/schedule-2x.py
mmdetection3d/configs/_base_/schedules/schedule-2x.py
+36
-0
mmdetection3d/configs/_base_/schedules/schedule-3x.py
mmdetection3d/configs/_base_/schedules/schedule-3x.py
+31
-0
mmdetection3d/configs/_base_/schedules/seg-cosine-100e.py
mmdetection3d/configs/_base_/schedules/seg-cosine-100e.py
+27
-0
mmdetection3d/configs/_base_/schedules/seg-cosine-150e.py
mmdetection3d/configs/_base_/schedules/seg-cosine-150e.py
+27
-0
mmdetection3d/configs/_base_/schedules/seg-cosine-200e.py
mmdetection3d/configs/_base_/schedules/seg-cosine-200e.py
+27
-0
No files found.
Too many changes to show.
To preserve performance only
465 of 465+
files are displayed.
Plain diff
Email patch
mmdetection3d/configs/_base_/models/pointnet2_ssg.py
0 → 100644
View file @
7aa442d5
# model settings
model
=
dict
(
type
=
'EncoderDecoder3D'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
),
backbone
=
dict
(
type
=
'PointNet2SASSG'
,
in_channels
=
6
,
# [xyz, rgb], should be modified with dataset
num_points
=
(
1024
,
256
,
64
,
16
),
radius
=
(
0.1
,
0.2
,
0.4
,
0.8
),
num_samples
=
(
32
,
32
,
32
,
32
),
sa_channels
=
((
32
,
32
,
64
),
(
64
,
64
,
128
),
(
128
,
128
,
256
),
(
256
,
256
,
512
)),
fp_channels
=
(),
norm_cfg
=
dict
(
type
=
'BN2d'
),
sa_cfg
=
dict
(
type
=
'PointSAModule'
,
pool_mod
=
'max'
,
use_xyz
=
True
,
normalize_xyz
=
False
)),
decode_head
=
dict
(
type
=
'PointNet2Head'
,
fp_channels
=
((
768
,
256
,
256
),
(
384
,
256
,
256
),
(
320
,
256
,
128
),
(
128
,
128
,
128
,
128
)),
channels
=
128
,
dropout_ratio
=
0.5
,
conv_cfg
=
dict
(
type
=
'Conv1d'
),
norm_cfg
=
dict
(
type
=
'BN1d'
),
act_cfg
=
dict
(
type
=
'ReLU'
),
loss_decode
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
class_weight
=
None
,
# should be modified with dataset
loss_weight
=
1.0
)),
# model training and testing settings
train_cfg
=
dict
(),
test_cfg
=
dict
(
mode
=
'slide'
))
mmdetection3d/configs/_base_/models/pointpillars_hv_fpn_lyft.py
0 → 100644
View file @
7aa442d5
_base_
=
'./pointpillars_hv_fpn_nus.py'
# model settings (based on nuScenes model settings)
# Voxel size for voxel encoder
# Usually voxel size is changed consistently with the point cloud range
# If point cloud range is modified, do remember to change all related
# keys in the config.
model
=
dict
(
data_preprocessor
=
dict
(
voxel_layer
=
dict
(
max_num_points
=
20
,
point_cloud_range
=
[
-
80
,
-
80
,
-
5
,
80
,
80
,
3
],
max_voxels
=
(
60000
,
60000
))),
pts_voxel_encoder
=
dict
(
feat_channels
=
[
64
],
point_cloud_range
=
[
-
80
,
-
80
,
-
5
,
80
,
80
,
3
]),
pts_middle_encoder
=
dict
(
output_shape
=
[
640
,
640
]),
pts_bbox_head
=
dict
(
num_classes
=
9
,
anchor_generator
=
dict
(
ranges
=
[[
-
80
,
-
80
,
-
1.8
,
80
,
80
,
-
1.8
]],
custom_values
=
[]),
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
,
code_size
=
7
)),
# model training settings (based on nuScenes model settings)
train_cfg
=
dict
(
pts
=
dict
(
code_weight
=
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
])))
mmdetection3d/configs/_base_/models/pointpillars_hv_fpn_nus.py
0 → 100644
View file @
7aa442d5
# model settings
# Voxel size for voxel encoder
# Usually voxel size is changed consistently with the point cloud range
# If point cloud range is modified, do remember to change all related
# keys in the config.
voxel_size
=
[
0.25
,
0.25
,
8
]
model
=
dict
(
type
=
'MVXFasterRCNN'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
voxel
=
True
,
voxel_layer
=
dict
(
max_num_points
=
64
,
point_cloud_range
=
[
-
50
,
-
50
,
-
5
,
50
,
50
,
3
],
voxel_size
=
voxel_size
,
max_voxels
=
(
30000
,
40000
))),
pts_voxel_encoder
=
dict
(
type
=
'HardVFE'
,
in_channels
=
4
,
feat_channels
=
[
64
,
64
],
with_distance
=
False
,
voxel_size
=
voxel_size
,
with_cluster_center
=
True
,
with_voxel_center
=
True
,
point_cloud_range
=
[
-
50
,
-
50
,
-
5
,
50
,
50
,
3
],
norm_cfg
=
dict
(
type
=
'naiveSyncBN1d'
,
eps
=
1e-3
,
momentum
=
0.01
)),
pts_middle_encoder
=
dict
(
type
=
'PointPillarsScatter'
,
in_channels
=
64
,
output_shape
=
[
400
,
400
]),
pts_backbone
=
dict
(
type
=
'SECOND'
,
in_channels
=
64
,
norm_cfg
=
dict
(
type
=
'naiveSyncBN2d'
,
eps
=
1e-3
,
momentum
=
0.01
),
layer_nums
=
[
3
,
5
,
5
],
layer_strides
=
[
2
,
2
,
2
],
out_channels
=
[
64
,
128
,
256
]),
pts_neck
=
dict
(
type
=
'mmdet.FPN'
,
norm_cfg
=
dict
(
type
=
'naiveSyncBN2d'
,
eps
=
1e-3
,
momentum
=
0.01
),
act_cfg
=
dict
(
type
=
'ReLU'
),
in_channels
=
[
64
,
128
,
256
],
out_channels
=
256
,
start_level
=
0
,
num_outs
=
3
),
pts_bbox_head
=
dict
(
type
=
'Anchor3DHead'
,
num_classes
=
10
,
in_channels
=
256
,
feat_channels
=
256
,
use_direction_classifier
=
True
,
anchor_generator
=
dict
(
type
=
'AlignedAnchor3DRangeGenerator'
,
ranges
=
[[
-
50
,
-
50
,
-
1.8
,
50
,
50
,
-
1.8
]],
scales
=
[
1
,
2
,
4
],
sizes
=
[
[
2.5981
,
0.8660
,
1.
],
# 1.5 / sqrt(3)
[
1.7321
,
0.5774
,
1.
],
# 1 / sqrt(3)
[
1.
,
1.
,
1.
],
[
0.4
,
0.4
,
1
],
],
custom_values
=
[
0
,
0
],
rotations
=
[
0
,
1.57
],
reshape_out
=
True
),
assigner_per_size
=
False
,
diff_rad_by_sin
=
True
,
dir_offset
=-
0.7854
,
# -pi / 4
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
,
code_size
=
9
),
loss_cls
=
dict
(
type
=
'mmdet.FocalLoss'
,
use_sigmoid
=
True
,
gamma
=
2.0
,
alpha
=
0.25
,
loss_weight
=
1.0
),
loss_bbox
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
beta
=
1.0
/
9.0
,
loss_weight
=
1.0
),
loss_dir
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
loss_weight
=
0.2
)),
# model training and testing settings
train_cfg
=
dict
(
pts
=
dict
(
assigner
=
dict
(
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.6
,
neg_iou_thr
=
0.3
,
min_pos_iou
=
0.3
,
ignore_iof_thr
=-
1
),
allowed_border
=
0
,
code_weight
=
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
0.2
,
0.2
],
pos_weight
=-
1
,
debug
=
False
)),
test_cfg
=
dict
(
pts
=
dict
(
use_rotate_nms
=
True
,
nms_across_levels
=
False
,
nms_pre
=
1000
,
nms_thr
=
0.2
,
score_thr
=
0.05
,
min_bbox_size
=
0
,
max_num
=
500
)))
mmdetection3d/configs/_base_/models/pointpillars_hv_fpn_range100_lyft.py
0 → 100644
View file @
7aa442d5
_base_
=
'./pointpillars_hv_fpn_nus.py'
# model settings (based on nuScenes model settings)
# Voxel size for voxel encoder
# Usually voxel size is changed consistently with the point cloud range
# If point cloud range is modified, do remember to change all related
# keys in the config.
model
=
dict
(
data_preprocessor
=
dict
(
voxel_layer
=
dict
(
max_num_points
=
20
,
point_cloud_range
=
[
-
100
,
-
100
,
-
5
,
100
,
100
,
3
],
max_voxels
=
(
60000
,
60000
))),
pts_voxel_encoder
=
dict
(
feat_channels
=
[
64
],
point_cloud_range
=
[
-
100
,
-
100
,
-
5
,
100
,
100
,
3
]),
pts_middle_encoder
=
dict
(
output_shape
=
[
800
,
800
]),
pts_bbox_head
=
dict
(
num_classes
=
9
,
anchor_generator
=
dict
(
ranges
=
[[
-
100
,
-
100
,
-
1.8
,
100
,
100
,
-
1.8
]],
custom_values
=
[]),
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
,
code_size
=
7
)),
# model training settings (based on nuScenes model settings)
train_cfg
=
dict
(
pts
=
dict
(
code_weight
=
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
])))
mmdetection3d/configs/_base_/models/pointpillars_hv_secfpn_kitti.py
0 → 100644
View file @
7aa442d5
voxel_size
=
[
0.16
,
0.16
,
4
]
model
=
dict
(
type
=
'VoxelNet'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
voxel
=
True
,
voxel_layer
=
dict
(
max_num_points
=
32
,
# max_points_per_voxel
point_cloud_range
=
[
0
,
-
39.68
,
-
3
,
69.12
,
39.68
,
1
],
voxel_size
=
voxel_size
,
max_voxels
=
(
16000
,
40000
))),
voxel_encoder
=
dict
(
type
=
'PillarFeatureNet'
,
in_channels
=
4
,
feat_channels
=
[
64
],
with_distance
=
False
,
voxel_size
=
voxel_size
,
point_cloud_range
=
[
0
,
-
39.68
,
-
3
,
69.12
,
39.68
,
1
]),
middle_encoder
=
dict
(
type
=
'PointPillarsScatter'
,
in_channels
=
64
,
output_shape
=
[
496
,
432
]),
backbone
=
dict
(
type
=
'SECOND'
,
in_channels
=
64
,
layer_nums
=
[
3
,
5
,
5
],
layer_strides
=
[
2
,
2
,
2
],
out_channels
=
[
64
,
128
,
256
]),
neck
=
dict
(
type
=
'SECONDFPN'
,
in_channels
=
[
64
,
128
,
256
],
upsample_strides
=
[
1
,
2
,
4
],
out_channels
=
[
128
,
128
,
128
]),
bbox_head
=
dict
(
type
=
'Anchor3DHead'
,
num_classes
=
3
,
in_channels
=
384
,
feat_channels
=
384
,
use_direction_classifier
=
True
,
assign_per_class
=
True
,
anchor_generator
=
dict
(
type
=
'AlignedAnchor3DRangeGenerator'
,
ranges
=
[
[
0
,
-
39.68
,
-
0.6
,
69.12
,
39.68
,
-
0.6
],
[
0
,
-
39.68
,
-
0.6
,
69.12
,
39.68
,
-
0.6
],
[
0
,
-
39.68
,
-
1.78
,
69.12
,
39.68
,
-
1.78
],
],
sizes
=
[[
0.8
,
0.6
,
1.73
],
[
1.76
,
0.6
,
1.73
],
[
3.9
,
1.6
,
1.56
]],
rotations
=
[
0
,
1.57
],
reshape_out
=
False
),
diff_rad_by_sin
=
True
,
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
),
loss_cls
=
dict
(
type
=
'mmdet.FocalLoss'
,
use_sigmoid
=
True
,
gamma
=
2.0
,
alpha
=
0.25
,
loss_weight
=
1.0
),
loss_bbox
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
beta
=
1.0
/
9.0
,
loss_weight
=
2.0
),
loss_dir
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
loss_weight
=
0.2
)),
# model training and testing settings
train_cfg
=
dict
(
assigner
=
[
dict
(
# for Pedestrian
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'mmdet3d.BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.5
,
neg_iou_thr
=
0.35
,
min_pos_iou
=
0.35
,
ignore_iof_thr
=-
1
),
dict
(
# for Cyclist
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'mmdet3d.BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.5
,
neg_iou_thr
=
0.35
,
min_pos_iou
=
0.35
,
ignore_iof_thr
=-
1
),
dict
(
# for Car
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'mmdet3d.BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.6
,
neg_iou_thr
=
0.45
,
min_pos_iou
=
0.45
,
ignore_iof_thr
=-
1
),
],
allowed_border
=
0
,
pos_weight
=-
1
,
debug
=
False
),
test_cfg
=
dict
(
use_rotate_nms
=
True
,
nms_across_levels
=
False
,
nms_thr
=
0.01
,
score_thr
=
0.1
,
min_bbox_size
=
0
,
nms_pre
=
100
,
max_num
=
50
))
mmdetection3d/configs/_base_/models/pointpillars_hv_secfpn_waymo.py
0 → 100644
View file @
7aa442d5
# model settings
# Voxel size for voxel encoder
# Usually voxel size is changed consistently with the point cloud range
# If point cloud range is modified, do remember to change all related
# keys in the config.
voxel_size
=
[
0.32
,
0.32
,
6
]
model
=
dict
(
type
=
'MVXFasterRCNN'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
voxel
=
True
,
voxel_layer
=
dict
(
max_num_points
=
20
,
point_cloud_range
=
[
-
74.88
,
-
74.88
,
-
2
,
74.88
,
74.88
,
4
],
voxel_size
=
voxel_size
,
max_voxels
=
(
32000
,
32000
))),
pts_voxel_encoder
=
dict
(
type
=
'HardVFE'
,
in_channels
=
5
,
feat_channels
=
[
64
],
with_distance
=
False
,
voxel_size
=
voxel_size
,
with_cluster_center
=
True
,
with_voxel_center
=
True
,
point_cloud_range
=
[
-
74.88
,
-
74.88
,
-
2
,
74.88
,
74.88
,
4
],
norm_cfg
=
dict
(
type
=
'naiveSyncBN1d'
,
eps
=
1e-3
,
momentum
=
0.01
)),
pts_middle_encoder
=
dict
(
type
=
'PointPillarsScatter'
,
in_channels
=
64
,
output_shape
=
[
468
,
468
]),
pts_backbone
=
dict
(
type
=
'SECOND'
,
in_channels
=
64
,
norm_cfg
=
dict
(
type
=
'naiveSyncBN2d'
,
eps
=
1e-3
,
momentum
=
0.01
),
layer_nums
=
[
3
,
5
,
5
],
layer_strides
=
[
1
,
2
,
2
],
out_channels
=
[
64
,
128
,
256
]),
pts_neck
=
dict
(
type
=
'SECONDFPN'
,
norm_cfg
=
dict
(
type
=
'naiveSyncBN2d'
,
eps
=
1e-3
,
momentum
=
0.01
),
in_channels
=
[
64
,
128
,
256
],
upsample_strides
=
[
1
,
2
,
4
],
out_channels
=
[
128
,
128
,
128
]),
pts_bbox_head
=
dict
(
type
=
'Anchor3DHead'
,
num_classes
=
3
,
in_channels
=
384
,
feat_channels
=
384
,
use_direction_classifier
=
True
,
anchor_generator
=
dict
(
type
=
'AlignedAnchor3DRangeGenerator'
,
ranges
=
[[
-
74.88
,
-
74.88
,
-
0.0345
,
74.88
,
74.88
,
-
0.0345
],
[
-
74.88
,
-
74.88
,
0
,
74.88
,
74.88
,
0
],
[
-
74.88
,
-
74.88
,
-
0.1188
,
74.88
,
74.88
,
-
0.1188
]],
sizes
=
[
[
4.73
,
2.08
,
1.77
],
# car
[
0.91
,
0.84
,
1.74
],
# pedestrian
[
1.81
,
0.84
,
1.77
]
# cyclist
],
rotations
=
[
0
,
1.57
],
reshape_out
=
False
),
diff_rad_by_sin
=
True
,
dir_offset
=-
0.7854
,
# -pi / 4
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
,
code_size
=
7
),
loss_cls
=
dict
(
type
=
'mmdet.FocalLoss'
,
use_sigmoid
=
True
,
gamma
=
2.0
,
alpha
=
0.25
,
loss_weight
=
1.0
),
loss_bbox
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
beta
=
1.0
/
9.0
,
loss_weight
=
1.0
),
loss_dir
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
loss_weight
=
0.2
)),
# model training and testing settings
train_cfg
=
dict
(
pts
=
dict
(
assigner
=
[
dict
(
# car
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.55
,
neg_iou_thr
=
0.4
,
min_pos_iou
=
0.4
,
ignore_iof_thr
=-
1
),
dict
(
# pedestrian
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.5
,
neg_iou_thr
=
0.3
,
min_pos_iou
=
0.3
,
ignore_iof_thr
=-
1
),
dict
(
# cyclist
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.5
,
neg_iou_thr
=
0.3
,
min_pos_iou
=
0.3
,
ignore_iof_thr
=-
1
),
],
allowed_border
=
0
,
code_weight
=
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
],
pos_weight
=-
1
,
debug
=
False
)),
test_cfg
=
dict
(
pts
=
dict
(
use_rotate_nms
=
True
,
nms_across_levels
=
False
,
nms_pre
=
4096
,
nms_thr
=
0.25
,
score_thr
=
0.1
,
min_bbox_size
=
0
,
max_num
=
500
)))
mmdetection3d/configs/_base_/models/second_hv_secfpn_kitti.py
0 → 100644
View file @
7aa442d5
voxel_size
=
[
0.05
,
0.05
,
0.1
]
model
=
dict
(
type
=
'VoxelNet'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
voxel
=
True
,
voxel_layer
=
dict
(
max_num_points
=
5
,
point_cloud_range
=
[
0
,
-
40
,
-
3
,
70.4
,
40
,
1
],
voxel_size
=
voxel_size
,
max_voxels
=
(
16000
,
40000
))),
voxel_encoder
=
dict
(
type
=
'HardSimpleVFE'
),
middle_encoder
=
dict
(
type
=
'SparseEncoder'
,
in_channels
=
4
,
sparse_shape
=
[
41
,
1600
,
1408
],
order
=
(
'conv'
,
'norm'
,
'act'
)),
backbone
=
dict
(
type
=
'SECOND'
,
in_channels
=
256
,
layer_nums
=
[
5
,
5
],
layer_strides
=
[
1
,
2
],
out_channels
=
[
128
,
256
]),
neck
=
dict
(
type
=
'SECONDFPN'
,
in_channels
=
[
128
,
256
],
upsample_strides
=
[
1
,
2
],
out_channels
=
[
256
,
256
]),
bbox_head
=
dict
(
type
=
'Anchor3DHead'
,
num_classes
=
3
,
in_channels
=
512
,
feat_channels
=
512
,
use_direction_classifier
=
True
,
anchor_generator
=
dict
(
type
=
'Anchor3DRangeGenerator'
,
ranges
=
[
[
0
,
-
40.0
,
-
0.6
,
70.4
,
40.0
,
-
0.6
],
[
0
,
-
40.0
,
-
0.6
,
70.4
,
40.0
,
-
0.6
],
[
0
,
-
40.0
,
-
1.78
,
70.4
,
40.0
,
-
1.78
],
],
sizes
=
[[
0.8
,
0.6
,
1.73
],
[
1.76
,
0.6
,
1.73
],
[
3.9
,
1.6
,
1.56
]],
rotations
=
[
0
,
1.57
],
reshape_out
=
False
),
diff_rad_by_sin
=
True
,
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
),
loss_cls
=
dict
(
type
=
'mmdet.FocalLoss'
,
use_sigmoid
=
True
,
gamma
=
2.0
,
alpha
=
0.25
,
loss_weight
=
1.0
),
loss_bbox
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
beta
=
1.0
/
9.0
,
loss_weight
=
2.0
),
loss_dir
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
loss_weight
=
0.2
)),
# model training and testing settings
train_cfg
=
dict
(
assigner
=
[
dict
(
# for Pedestrian
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.35
,
neg_iou_thr
=
0.2
,
min_pos_iou
=
0.2
,
ignore_iof_thr
=-
1
),
dict
(
# for Cyclist
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.35
,
neg_iou_thr
=
0.2
,
min_pos_iou
=
0.2
,
ignore_iof_thr
=-
1
),
dict
(
# for Car
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.6
,
neg_iou_thr
=
0.45
,
min_pos_iou
=
0.45
,
ignore_iof_thr
=-
1
),
],
allowed_border
=
0
,
pos_weight
=-
1
,
debug
=
False
),
test_cfg
=
dict
(
use_rotate_nms
=
True
,
nms_across_levels
=
False
,
nms_thr
=
0.01
,
score_thr
=
0.1
,
min_bbox_size
=
0
,
nms_pre
=
100
,
max_num
=
50
))
mmdetection3d/configs/_base_/models/second_hv_secfpn_waymo.py
0 → 100644
View file @
7aa442d5
# model settings
# Voxel size for voxel encoder
# Usually voxel size is changed consistently with the point cloud range
# If point cloud range is modified, do remember to change all related
# keys in the config.
voxel_size
=
[
0.08
,
0.08
,
0.1
]
model
=
dict
(
type
=
'MVXFasterRCNN'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
voxel
=
True
,
voxel_layer
=
dict
(
max_num_points
=
20
,
point_cloud_range
=
[
-
76.8
,
-
51.2
,
-
2
,
76.8
,
51.2
,
4
],
voxel_size
=
voxel_size
,
max_voxels
=
(
80000
,
90000
))),
pts_voxel_encoder
=
dict
(
type
=
'HardSimpleVFE'
,
num_features
=
5
),
pts_middle_encoder
=
dict
(
type
=
'SparseEncoder'
,
in_channels
=
5
,
sparse_shape
=
[
61
,
1280
,
1920
],
order
=
(
'conv'
,
'norm'
,
'act'
)),
pts_backbone
=
dict
(
type
=
'SECOND'
,
in_channels
=
384
,
norm_cfg
=
dict
(
type
=
'naiveSyncBN2d'
,
eps
=
1e-3
,
momentum
=
0.01
),
layer_nums
=
[
5
,
5
],
layer_strides
=
[
1
,
2
],
out_channels
=
[
128
,
256
]),
pts_neck
=
dict
(
type
=
'SECONDFPN'
,
norm_cfg
=
dict
(
type
=
'naiveSyncBN2d'
,
eps
=
1e-3
,
momentum
=
0.01
),
in_channels
=
[
128
,
256
],
upsample_strides
=
[
1
,
2
],
out_channels
=
[
256
,
256
]),
pts_bbox_head
=
dict
(
type
=
'Anchor3DHead'
,
num_classes
=
3
,
in_channels
=
512
,
feat_channels
=
512
,
use_direction_classifier
=
True
,
anchor_generator
=
dict
(
type
=
'AlignedAnchor3DRangeGenerator'
,
ranges
=
[
[
-
76.8
,
-
51.2
,
-
0.0345
,
76.8
,
51.2
,
-
0.0345
],
[
-
76.8
,
-
51.2
,
-
0.1188
,
76.8
,
51.2
,
-
0.1188
],
[
-
76.8
,
-
51.2
,
0
,
76.8
,
51.2
,
0
],
],
sizes
=
[
[
4.73
,
2.08
,
1.77
],
# car
[
1.81
,
0.84
,
1.77
],
# pedestrian
[
0.91
,
0.84
,
1.74
],
# cyclist
],
rotations
=
[
0
,
1.57
],
reshape_out
=
False
),
diff_rad_by_sin
=
True
,
dir_offset
=-
0.7854
,
# -pi / 4
bbox_coder
=
dict
(
type
=
'DeltaXYZWLHRBBoxCoder'
,
code_size
=
7
),
loss_cls
=
dict
(
type
=
'mmdet.FocalLoss'
,
use_sigmoid
=
True
,
gamma
=
2.0
,
alpha
=
0.25
,
loss_weight
=
1.0
),
loss_bbox
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
beta
=
1.0
/
9.0
,
loss_weight
=
1.0
),
loss_dir
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
loss_weight
=
0.2
)),
# model training and testing settings
train_cfg
=
dict
(
pts
=
dict
(
assigner
=
[
dict
(
# car
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.55
,
neg_iou_thr
=
0.4
,
min_pos_iou
=
0.4
,
ignore_iof_thr
=-
1
),
dict
(
# pedestrian
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.5
,
neg_iou_thr
=
0.3
,
min_pos_iou
=
0.3
,
ignore_iof_thr
=-
1
),
dict
(
# cyclist
type
=
'Max3DIoUAssigner'
,
iou_calculator
=
dict
(
type
=
'BboxOverlapsNearest3D'
),
pos_iou_thr
=
0.5
,
neg_iou_thr
=
0.3
,
min_pos_iou
=
0.3
,
ignore_iof_thr
=-
1
),
],
allowed_border
=
0
,
code_weight
=
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
],
pos_weight
=-
1
,
debug
=
False
)),
test_cfg
=
dict
(
pts
=
dict
(
use_rotate_nms
=
True
,
nms_across_levels
=
False
,
nms_pre
=
4096
,
nms_thr
=
0.25
,
score_thr
=
0.1
,
min_bbox_size
=
0
,
max_num
=
500
)))
mmdetection3d/configs/_base_/models/smoke.py
0 → 100644
View file @
7aa442d5
# model settings
model
=
dict
(
type
=
'SMOKEMono3D'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
mean
=
[
123.675
,
116.28
,
103.53
],
std
=
[
58.395
,
57.12
,
57.375
],
bgr_to_rgb
=
True
,
pad_size_divisor
=
32
),
backbone
=
dict
(
type
=
'DLANet'
,
depth
=
34
,
in_channels
=
3
,
norm_cfg
=
dict
(
type
=
'GN'
,
num_groups
=
32
),
init_cfg
=
dict
(
type
=
'Pretrained'
,
checkpoint
=
'http://dl.yf.io/dla/models/imagenet/dla34-ba72cf86.pth'
)),
neck
=
dict
(
type
=
'DLANeck'
,
in_channels
=
[
16
,
32
,
64
,
128
,
256
,
512
],
start_level
=
2
,
end_level
=
5
,
norm_cfg
=
dict
(
type
=
'GN'
,
num_groups
=
32
)),
bbox_head
=
dict
(
type
=
'SMOKEMono3DHead'
,
num_classes
=
3
,
in_channels
=
64
,
dim_channel
=
[
3
,
4
,
5
],
ori_channel
=
[
6
,
7
],
stacked_convs
=
0
,
feat_channels
=
64
,
use_direction_classifier
=
False
,
diff_rad_by_sin
=
False
,
pred_attrs
=
False
,
pred_velo
=
False
,
dir_offset
=
0
,
strides
=
None
,
group_reg_dims
=
(
8
,
),
cls_branch
=
(
256
,
),
reg_branch
=
((
256
,
),
),
num_attrs
=
0
,
bbox_code_size
=
7
,
dir_branch
=
(),
attr_branch
=
(),
bbox_coder
=
dict
(
type
=
'SMOKECoder'
,
base_depth
=
(
28.01
,
16.32
),
base_dims
=
((
0.88
,
1.73
,
0.67
),
(
1.78
,
1.70
,
0.58
),
(
3.88
,
1.63
,
1.53
)),
code_size
=
7
),
loss_cls
=
dict
(
type
=
'mmdet.GaussianFocalLoss'
,
loss_weight
=
1.0
),
loss_bbox
=
dict
(
type
=
'mmdet.L1Loss'
,
reduction
=
'sum'
,
loss_weight
=
1
/
300
),
loss_dir
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
use_sigmoid
=
False
,
loss_weight
=
1.0
),
loss_attr
=
None
,
conv_bias
=
True
,
dcn_on_last_conv
=
False
),
train_cfg
=
None
,
test_cfg
=
dict
(
topK
=
100
,
local_maximum_kernel
=
3
,
max_per_img
=
100
))
mmdetection3d/configs/_base_/models/spvcnn.py
0 → 100644
View file @
7aa442d5
model
=
dict
(
type
=
'MinkUNet'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
,
voxel
=
True
,
voxel_type
=
'minkunet'
,
batch_first
=
False
,
max_voxels
=
80000
,
voxel_layer
=
dict
(
max_num_points
=-
1
,
point_cloud_range
=
[
-
100
,
-
100
,
-
20
,
100
,
100
,
20
],
voxel_size
=
[
0.05
,
0.05
,
0.05
],
max_voxels
=
(
-
1
,
-
1
))),
backbone
=
dict
(
type
=
'SPVCNNBackbone'
,
in_channels
=
4
,
num_stages
=
4
,
base_channels
=
32
,
encoder_channels
=
[
32
,
64
,
128
,
256
],
encoder_blocks
=
[
2
,
2
,
2
,
2
],
decoder_channels
=
[
256
,
128
,
96
,
96
],
decoder_blocks
=
[
2
,
2
,
2
,
2
],
block_type
=
'basic'
,
sparseconv_backend
=
'torchsparse'
,
drop_ratio
=
0.3
),
decode_head
=
dict
(
type
=
'MinkUNetHead'
,
channels
=
96
,
num_classes
=
19
,
dropout_ratio
=
0
,
loss_decode
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
avg_non_ignore
=
True
),
ignore_index
=
19
),
train_cfg
=
dict
(),
test_cfg
=
dict
())
mmdetection3d/configs/_base_/models/votenet.py
0 → 100644
View file @
7aa442d5
model
=
dict
(
type
=
'VoteNet'
,
data_preprocessor
=
dict
(
type
=
'Det3DDataPreprocessor'
),
backbone
=
dict
(
type
=
'PointNet2SASSG'
,
in_channels
=
4
,
num_points
=
(
2048
,
1024
,
512
,
256
),
radius
=
(
0.2
,
0.4
,
0.8
,
1.2
),
num_samples
=
(
64
,
32
,
16
,
16
),
sa_channels
=
((
64
,
64
,
128
),
(
128
,
128
,
256
),
(
128
,
128
,
256
),
(
128
,
128
,
256
)),
fp_channels
=
((
256
,
256
),
(
256
,
256
)),
norm_cfg
=
dict
(
type
=
'BN2d'
),
sa_cfg
=
dict
(
type
=
'PointSAModule'
,
pool_mod
=
'max'
,
use_xyz
=
True
,
normalize_xyz
=
True
)),
bbox_head
=
dict
(
type
=
'VoteHead'
,
vote_module_cfg
=
dict
(
in_channels
=
256
,
vote_per_seed
=
1
,
gt_per_seed
=
3
,
conv_channels
=
(
256
,
256
),
conv_cfg
=
dict
(
type
=
'Conv1d'
),
norm_cfg
=
dict
(
type
=
'BN1d'
),
norm_feats
=
True
,
vote_loss
=
dict
(
type
=
'ChamferDistance'
,
mode
=
'l1'
,
reduction
=
'none'
,
loss_dst_weight
=
10.0
)),
vote_aggregation_cfg
=
dict
(
type
=
'PointSAModule'
,
num_point
=
256
,
radius
=
0.3
,
num_sample
=
16
,
mlp_channels
=
[
256
,
128
,
128
,
128
],
use_xyz
=
True
,
normalize_xyz
=
True
),
pred_layer_cfg
=
dict
(
in_channels
=
128
,
shared_conv_channels
=
(
128
,
128
),
bias
=
True
),
objectness_loss
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
class_weight
=
[
0.2
,
0.8
],
reduction
=
'sum'
,
loss_weight
=
5.0
),
center_loss
=
dict
(
type
=
'ChamferDistance'
,
mode
=
'l2'
,
reduction
=
'sum'
,
loss_src_weight
=
10.0
,
loss_dst_weight
=
10.0
),
dir_class_loss
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
reduction
=
'sum'
,
loss_weight
=
1.0
),
dir_res_loss
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
reduction
=
'sum'
,
loss_weight
=
10.0
),
size_class_loss
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
reduction
=
'sum'
,
loss_weight
=
1.0
),
size_res_loss
=
dict
(
type
=
'mmdet.SmoothL1Loss'
,
reduction
=
'sum'
,
loss_weight
=
10.0
/
3.0
),
semantic_loss
=
dict
(
type
=
'mmdet.CrossEntropyLoss'
,
reduction
=
'sum'
,
loss_weight
=
1.0
)),
# model training and testing settings
train_cfg
=
dict
(
pos_distance_thr
=
0.3
,
neg_distance_thr
=
0.6
,
sample_mode
=
'vote'
),
test_cfg
=
dict
(
sample_mode
=
'seed'
,
nms_thr
=
0.25
,
score_thr
=
0.05
,
per_class_proposal
=
True
))
mmdetection3d/configs/_base_/schedules/cosine.py
0 → 100644
View file @
7aa442d5
# This schedule is mainly used by models with dynamic voxelization
# optimizer
lr
=
0.003
# max learning rate
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'AdamW'
,
lr
=
lr
,
weight_decay
=
0.001
,
betas
=
(
0.95
,
0.99
)),
clip_grad
=
dict
(
max_norm
=
10
,
norm_type
=
2
),
)
param_scheduler
=
[
dict
(
type
=
'LinearLR'
,
start_factor
=
0.1
,
by_epoch
=
False
,
begin
=
0
,
end
=
1000
),
dict
(
type
=
'CosineAnnealingLR'
,
begin
=
0
,
T_max
=
40
,
end
=
40
,
by_epoch
=
True
,
eta_min
=
1e-5
)
]
# training schedule for 1x
train_cfg
=
dict
(
type
=
'EpochBasedTrainLoop'
,
max_epochs
=
40
,
val_interval
=
1
)
val_cfg
=
dict
(
type
=
'ValLoop'
)
test_cfg
=
dict
(
type
=
'TestLoop'
)
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
16
)
mmdetection3d/configs/_base_/schedules/cyclic-20e.py
0 → 100644
View file @
7aa442d5
# For nuScenes dataset, we usually evaluate the model at the end of training.
# Since the models are trained by 24 epochs by default, we set evaluation
# interval to be 20. Please change the interval accordingly if you do not
# use a default schedule.
# optimizer
lr
=
1e-4
# This schedule is mainly used by models on nuScenes dataset
# max_norm=10 is better for SECOND
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'AdamW'
,
lr
=
lr
,
weight_decay
=
0.01
),
clip_grad
=
dict
(
max_norm
=
35
,
norm_type
=
2
))
# learning rate
param_scheduler
=
[
# learning rate scheduler
# During the first 8 epochs, learning rate increases from 0 to lr * 10
# during the next 12 epochs, learning rate decreases from lr * 10 to
# lr * 1e-4
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
8
,
eta_min
=
lr
*
10
,
begin
=
0
,
end
=
8
,
by_epoch
=
True
,
convert_to_iter_based
=
True
),
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
12
,
eta_min
=
lr
*
1e-4
,
begin
=
8
,
end
=
20
,
by_epoch
=
True
,
convert_to_iter_based
=
True
),
# momentum scheduler
# During the first 8 epochs, momentum increases from 0 to 0.85 / 0.95
# during the next 12 epochs, momentum increases from 0.85 / 0.95 to 1
dict
(
type
=
'CosineAnnealingMomentum'
,
T_max
=
8
,
eta_min
=
0.85
/
0.95
,
begin
=
0
,
end
=
8
,
by_epoch
=
True
,
convert_to_iter_based
=
True
),
dict
(
type
=
'CosineAnnealingMomentum'
,
T_max
=
12
,
eta_min
=
1
,
begin
=
8
,
end
=
20
,
by_epoch
=
True
,
convert_to_iter_based
=
True
)
]
# runtime settings
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
20
,
val_interval
=
20
)
val_cfg
=
dict
()
test_cfg
=
dict
()
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (8 GPUs) x (4 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
32
)
mmdetection3d/configs/_base_/schedules/cyclic-40e.py
0 → 100644
View file @
7aa442d5
# The schedule is usually used by models trained on KITTI dataset
# The learning rate set in the cyclic schedule is the initial learning rate
# rather than the max learning rate. Since the target_ratio is (10, 1e-4),
# the learning rate will change from 0.0018 to 0.018, than go to 0.0018*1e-4
lr
=
0.0018
# The optimizer follows the setting in SECOND.Pytorch, but here we use
# the official AdamW optimizer implemented by PyTorch.
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'AdamW'
,
lr
=
lr
,
betas
=
(
0.95
,
0.99
),
weight_decay
=
0.01
),
clip_grad
=
dict
(
max_norm
=
10
,
norm_type
=
2
))
# learning rate
param_scheduler
=
[
# learning rate scheduler
# During the first 16 epochs, learning rate increases from 0 to lr * 10
# during the next 24 epochs, learning rate decreases from lr * 10 to
# lr * 1e-4
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
16
,
eta_min
=
lr
*
10
,
begin
=
0
,
end
=
16
,
by_epoch
=
True
,
convert_to_iter_based
=
True
),
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
24
,
eta_min
=
lr
*
1e-4
,
begin
=
16
,
end
=
40
,
by_epoch
=
True
,
convert_to_iter_based
=
True
),
# momentum scheduler
# During the first 16 epochs, momentum increases from 0 to 0.85 / 0.95
# during the next 24 epochs, momentum increases from 0.85 / 0.95 to 1
dict
(
type
=
'CosineAnnealingMomentum'
,
T_max
=
16
,
eta_min
=
0.85
/
0.95
,
begin
=
0
,
end
=
16
,
by_epoch
=
True
,
convert_to_iter_based
=
True
),
dict
(
type
=
'CosineAnnealingMomentum'
,
T_max
=
24
,
eta_min
=
1
,
begin
=
16
,
end
=
40
,
by_epoch
=
True
,
convert_to_iter_based
=
True
)
]
# Runtime settings,training schedule for 40e
# Although the max_epochs is 40, this schedule is usually used we
# RepeatDataset with repeat ratio N, thus the actual max epoch
# number could be Nx40
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
40
,
val_interval
=
1
)
val_cfg
=
dict
()
test_cfg
=
dict
()
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (8 GPUs) x (6 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
48
)
mmdetection3d/configs/_base_/schedules/mmdet-schedule-1x.py
0 → 100644
View file @
7aa442d5
# training schedule for 1x
train_cfg
=
dict
(
type
=
'EpochBasedTrainLoop'
,
max_epochs
=
12
,
val_interval
=
1
)
val_cfg
=
dict
(
type
=
'ValLoop'
)
test_cfg
=
dict
(
type
=
'TestLoop'
)
# learning rate
param_scheduler
=
[
dict
(
type
=
'LinearLR'
,
start_factor
=
0.001
,
by_epoch
=
False
,
begin
=
0
,
end
=
500
),
dict
(
type
=
'MultiStepLR'
,
begin
=
0
,
end
=
12
,
by_epoch
=
True
,
milestones
=
[
8
,
11
],
gamma
=
0.1
)
]
# optimizer
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'SGD'
,
lr
=
0.02
,
momentum
=
0.9
,
weight_decay
=
0.0001
))
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
16
)
mmdetection3d/configs/_base_/schedules/schedule-2x.py
0 → 100644
View file @
7aa442d5
# optimizer
# This schedule is mainly used by models on nuScenes dataset
lr
=
0.001
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'AdamW'
,
lr
=
lr
,
weight_decay
=
0.01
),
# max_norm=10 is better for SECOND
clip_grad
=
dict
(
max_norm
=
35
,
norm_type
=
2
))
# training schedule for 2x
train_cfg
=
dict
(
type
=
'EpochBasedTrainLoop'
,
max_epochs
=
24
,
val_interval
=
24
)
val_cfg
=
dict
(
type
=
'ValLoop'
)
test_cfg
=
dict
(
type
=
'TestLoop'
)
# learning rate
param_scheduler
=
[
dict
(
type
=
'LinearLR'
,
start_factor
=
1.0
/
1000
,
by_epoch
=
False
,
begin
=
0
,
end
=
1000
),
dict
(
type
=
'MultiStepLR'
,
begin
=
0
,
end
=
24
,
by_epoch
=
True
,
milestones
=
[
20
,
23
],
gamma
=
0.1
)
]
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (8 GPUs) x (4 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
32
)
mmdetection3d/configs/_base_/schedules/schedule-3x.py
0 → 100644
View file @
7aa442d5
# optimizer
# This schedule is mainly used by models on indoor dataset,
# e.g., VoteNet on SUNRGBD and ScanNet
lr
=
0.008
# max learning rate
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'AdamW'
,
lr
=
lr
,
weight_decay
=
0.01
),
clip_grad
=
dict
(
max_norm
=
10
,
norm_type
=
2
),
)
# training schedule for 3x
train_cfg
=
dict
(
type
=
'EpochBasedTrainLoop'
,
max_epochs
=
36
,
val_interval
=
1
)
val_cfg
=
dict
(
type
=
'ValLoop'
)
test_cfg
=
dict
(
type
=
'TestLoop'
)
# learning rate
param_scheduler
=
[
dict
(
type
=
'MultiStepLR'
,
begin
=
0
,
end
=
36
,
by_epoch
=
True
,
milestones
=
[
24
,
32
],
gamma
=
0.1
)
]
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (4 GPUs) x (8 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
32
)
mmdetection3d/configs/_base_/schedules/seg-cosine-100e.py
0 → 100644
View file @
7aa442d5
# optimizer
# This schedule is mainly used on S3DIS dataset in segmentation task
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'SGD'
,
lr
=
0.1
,
momentum
=
0.9
,
weight_decay
=
0.001
),
clip_grad
=
None
)
param_scheduler
=
[
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
100
,
eta_min
=
1e-5
,
by_epoch
=
True
,
begin
=
0
,
end
=
100
)
]
# runtime settings
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
100
,
val_interval
=
1
)
val_cfg
=
dict
()
test_cfg
=
dict
()
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (4 GPUs) x (32 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
128
)
mmdetection3d/configs/_base_/schedules/seg-cosine-150e.py
0 → 100644
View file @
7aa442d5
# optimizer
# This schedule is mainly used on S3DIS dataset in segmentation task
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'SGD'
,
lr
=
0.2
,
momentum
=
0.9
,
weight_decay
=
0.0001
),
clip_grad
=
None
)
param_scheduler
=
[
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
150
,
eta_min
=
0.002
,
by_epoch
=
True
,
begin
=
0
,
end
=
150
)
]
# runtime settings
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
150
,
val_interval
=
1
)
val_cfg
=
dict
()
test_cfg
=
dict
()
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (8 GPUs) x (8 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
64
)
mmdetection3d/configs/_base_/schedules/seg-cosine-200e.py
0 → 100644
View file @
7aa442d5
# optimizer
# This schedule is mainly used on S3DIS dataset in segmentation task
optim_wrapper
=
dict
(
type
=
'OptimWrapper'
,
optimizer
=
dict
(
type
=
'Adam'
,
lr
=
0.001
,
weight_decay
=
0.01
),
clip_grad
=
None
)
param_scheduler
=
[
dict
(
type
=
'CosineAnnealingLR'
,
T_max
=
200
,
eta_min
=
1e-5
,
by_epoch
=
True
,
begin
=
0
,
end
=
200
)
]
# runtime settings
train_cfg
=
dict
(
by_epoch
=
True
,
max_epochs
=
200
,
val_interval
=
1
)
val_cfg
=
dict
()
test_cfg
=
dict
()
# Default setting for scaling LR automatically
# - `enable` means enable scaling LR automatically
# or not by default.
# - `base_batch_size` = (2 GPUs) x (16 samples per GPU).
auto_scale_lr
=
dict
(
enable
=
False
,
base_batch_size
=
32
)
Prev
1
2
3
4
5
6
7
8
9
…
24
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment