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
OpenDAS
OpenPCDet
Commits
19a75f1c
Commit
19a75f1c
authored
Jun 23, 2020
by
Shaoshuai Shi
Browse files
add configs for PartA2 and PV-RCNN, and add setup.py for compiling
parent
4399b6e7
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
633 additions
and
0 deletions
+633
-0
pcdet/config.py
pcdet/config.py
+84
-0
setup.py
setup.py
+85
-0
tools/cfgs/dataset_configs/kitti_dataset.yaml
tools/cfgs/dataset_configs/kitti_dataset.yaml
+68
-0
tools/cfgs/kitti_models/PartA2.yaml
tools/cfgs/kitti_models/PartA2.yaml
+181
-0
tools/cfgs/kitti_models/pv_rcnn.yaml
tools/cfgs/kitti_models/pv_rcnn.yaml
+214
-0
tools/train.py
tools/train.py
+1
-0
No files found.
pcdet/config.py
0 → 100644
View file @
19a75f1c
from
easydict
import
EasyDict
from
pathlib
import
Path
import
yaml
def
log_config_to_file
(
cfg
,
pre
=
'cfg'
,
logger
=
None
):
for
key
,
val
in
cfg
.
items
():
if
isinstance
(
cfg
[
key
],
EasyDict
):
logger
.
info
(
'
\n
%s.%s = edict()'
%
(
pre
,
key
))
log_config_to_file
(
cfg
[
key
],
pre
=
pre
+
'.'
+
key
,
logger
=
logger
)
continue
logger
.
info
(
'%s.%s: %s'
%
(
pre
,
key
,
val
))
def
cfg_from_list
(
cfg_list
,
config
):
"""Set config keys via list (e.g., from command line)."""
from
ast
import
literal_eval
assert
len
(
cfg_list
)
%
2
==
0
for
k
,
v
in
zip
(
cfg_list
[
0
::
2
],
cfg_list
[
1
::
2
]):
key_list
=
k
.
split
(
'.'
)
d
=
config
for
subkey
in
key_list
[:
-
1
]:
assert
subkey
in
d
,
'NotFoundKey: %s'
%
subkey
d
=
d
[
subkey
]
subkey
=
key_list
[
-
1
]
assert
subkey
in
d
,
'NotFoundKey: %s'
%
subkey
try
:
value
=
literal_eval
(
v
)
except
:
value
=
v
if
type
(
value
)
!=
type
(
d
[
subkey
])
and
isinstance
(
d
[
subkey
],
EasyDict
):
key_val_list
=
value
.
split
(
','
)
for
src
in
key_val_list
:
cur_key
,
cur_val
=
src
.
split
(
':'
)
val_type
=
type
(
d
[
subkey
][
cur_key
])
cur_val
=
val_type
(
cur_val
)
d
[
subkey
][
cur_key
]
=
cur_val
elif
type
(
value
)
!=
type
(
d
[
subkey
])
and
isinstance
(
d
[
subkey
],
list
):
val_list
=
value
.
split
(
','
)
for
k
,
x
in
enumerate
(
val_list
):
val_list
[
k
]
=
type
(
d
[
subkey
][
0
])(
x
)
d
[
subkey
]
=
val_list
else
:
assert
type
(
value
)
==
type
(
d
[
subkey
]),
\
'type {} does not match original type {}'
.
format
(
type
(
value
),
type
(
d
[
subkey
]))
d
[
subkey
]
=
value
def
merge_new_config
(
config
,
new_config
):
if
'_BASE_CONFIG_'
in
new_config
:
with
open
(
new_config
[
'_BASE_CONFIG_'
],
'r'
)
as
f
:
try
:
yaml_config
=
yaml
.
load
(
f
)
except
:
yaml_config
=
yaml
.
load
(
f
,
Loader
=
yaml
.
FullLoader
)
config
.
update
(
EasyDict
(
yaml_config
))
for
key
,
val
in
new_config
.
items
():
if
not
isinstance
(
val
,
dict
):
config
[
key
]
=
val
continue
if
key
not
in
config
:
config
[
key
]
=
EasyDict
()
merge_new_config
(
config
[
key
],
val
)
return
config
def
cfg_from_yaml_file
(
cfg_file
,
config
):
with
open
(
cfg_file
,
'r'
)
as
f
:
try
:
new_config
=
yaml
.
load
(
f
)
except
:
new_config
=
yaml
.
load
(
f
,
Loader
=
yaml
.
FullLoader
)
merge_new_config
(
config
=
config
,
new_config
=
new_config
)
return
config
cfg
=
EasyDict
()
cfg
.
ROOT_DIR
=
(
Path
(
__file__
).
resolve
().
parent
/
'../'
).
resolve
()
cfg
.
LOCAL_RANK
=
0
setup.py
0 → 100644
View file @
19a75f1c
import
os
from
setuptools
import
setup
,
find_packages
import
subprocess
from
torch.utils.cpp_extension
import
BuildExtension
,
CUDAExtension
def
get_git_commit_number
():
if
not
os
.
path
.
exists
(
'.git'
):
return
'0000000'
cmd_out
=
subprocess
.
run
([
'git'
,
'rev-parse'
,
'HEAD'
],
stdout
=
subprocess
.
PIPE
)
git_commit_number
=
cmd_out
.
stdout
.
decode
(
'utf-8'
)[:
7
]
return
git_commit_number
def
make_cuda_ext
(
name
,
module
,
sources
):
cuda_ext
=
CUDAExtension
(
name
=
'%s.%s'
%
(
module
,
name
),
sources
=
[
os
.
path
.
join
(
*
module
.
split
(
'.'
),
src
)
for
src
in
sources
]
)
return
cuda_ext
def
write_version_to_file
(
version
,
target_file
):
with
open
(
target_file
,
'w'
)
as
f
:
print
(
'__version__ = "%s"'
%
version
,
file
=
f
)
if
__name__
==
'__main__'
:
version
=
'0.2.0+%s'
%
get_git_commit_number
()
write_version_to_file
(
version
,
'pcdet/version.py'
)
setup
(
name
=
'pcdet'
,
version
=
version
,
description
=
'PCDet is a general codebase for 3D object detection from point cloud'
,
install_requires
=
[
'numpy'
,
'torch>=1.1'
,
'spconv==1.0'
,
'numba'
,
'tensorboardX'
,
'easydict'
,
'pyyaml'
],
author
=
'Shaoshuai Shi'
,
author_email
=
'shaoshuaics@gmail.com'
,
license
=
'Apache License 2.0'
,
packages
=
find_packages
(
exclude
=
[
'tools'
,
'data'
,
'output'
]),
cmdclass
=
{
'build_ext'
:
BuildExtension
},
ext_modules
=
[
make_cuda_ext
(
name
=
'iou3d_nms_cuda'
,
module
=
'pcdet.ops.iou3d_nms'
,
sources
=
[
'src/iou3d_cpu.cpp'
,
'src/iou3d_nms_api.cpp'
,
'src/iou3d_nms.cpp'
,
'src/iou3d_nms_kernel.cu'
,
]
),
make_cuda_ext
(
name
=
'roiaware_pool3d_cuda'
,
module
=
'pcdet.ops.roiaware_pool3d'
,
sources
=
[
'src/roiaware_pool3d.cpp'
,
'src/roiaware_pool3d_kernel.cu'
,
]
),
make_cuda_ext
(
name
=
'pointnet2_stack_cuda'
,
module
=
'pcdet.ops.pointnet2.pointnet2_stack'
,
sources
=
[
'src/pointnet2_api.cpp'
,
'src/ball_query.cpp'
,
'src/ball_query_gpu.cu'
,
'src/group_points.cpp'
,
'src/group_points_gpu.cu'
,
'src/sampling.cpp'
,
'src/sampling_gpu.cu'
,
],
),
],
)
tools/cfgs/dataset_configs/kitti_dataset.yaml
0 → 100644
View file @
19a75f1c
DATASET
:
'
KittiDataset'
DATA_PATH
:
'
../data/kitti'
POINT_CLOUD_RANGE
:
[
0
,
-40
,
-3
,
70.4
,
40
,
1
]
DATA_SPLIT
:
{
'
train'
:
train
,
'
test'
:
val
}
INFO_PATH
:
{
'
train'
:
[
kitti_infos_train.pkl
],
'
test'
:
[
kitti_infos_val.pkl
],
}
FOV_POINTS_ONLY
:
True
DATA_AUGMENTOR
:
-
NAME
:
gt_sampling
USE_ROAD_PLANE
:
True
DB_INFO_PATH
:
-
kitti_dbinfos_train.pkl
PREPARE
:
{
filter_by_min_points
:
[
'
Car:5'
,
'
Pedestrian:5'
,
'
Cyclist:5'
],
filter_by_difficulty
:
[
-1
],
}
SAMPLE_GROUPS
:
[
'
Car:20'
,
'
Pedestrian:15'
,
'
Cyclist:15'
]
NUM_POINT_FEATURES
:
4
DATABASE_WITH_FAKELIDAR
:
True
REMOVE_EXTRA_WIDTH
:
[
0.0
,
0.0
,
0.0
]
LIMIT_WHOLE_SCENE
:
True
-
NAME
:
random_world_flip
ALONG_AXIS_LIST
:
[
'
x'
]
-
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
:
{
encoding_type
:
absolute_coordinates_encoding
,
used_feature_list
:
[
'
x'
,
'
y'
,
'
z'
,
'
intensity'
],
src_feature_list
:
[
'
x'
,
'
y'
,
'
z'
,
'
intensity'
],
}
DATA_PROCESSOR
:
-
NAME
:
mask_points_and_boxes_outside_range
REMOVE_OUTSIDE_BOXES
:
True
-
NAME
:
shuffle_points
SHUFFLE_ENABLED
:
{
'
train'
:
True
,
'
test'
:
False
}
-
NAME
:
transform_points_to_voxels
VOXEL_SIZE
:
[
0.05
,
0.05
,
0.1
]
MAX_POINTS_PER_VOXEL
:
5
MAX_NUMBER_OF_VOXELS
:
{
'
train'
:
16000
,
'
test'
:
40000
}
tools/cfgs/kitti_models/PartA2.yaml
0 → 100644
View file @
19a75f1c
CLASS_NAMES
:
[
'
Car'
,
'
Pedestrian'
,
'
Cyclist'
]
DATA_CONFIG
:
_BASE_CONFIG_
:
cfgs/dataset_configs/kitti_dataset.yaml
MODEL
:
NAME
:
PartA2Net
VFE
:
NAME
:
MeanVFE
BACKBONE_3D
:
NAME
:
UNetV2
MAP_TO_BEV
:
NAME
:
HeightCompression
NUM_BEV_FEATURES
:
256
BACKBONE_2D
:
NAME
:
BaseBEVBackbone
LAYER_NUMS
:
[
5
,
5
]
LAYER_STRIDES
:
[
1
,
2
]
NUM_FILTERS
:
[
128
,
256
]
UPSAMPLE_STRIDES
:
[
1
,
2
]
NUM_UPSAMPLE_FILTERS
:
[
256
,
256
]
DENSE_HEAD
:
NAME
:
AnchorHeadSingle
CLASS_AGNOSTIC
:
False
USE_DIRECTION_CLASSIFIER
:
True
DIR_OFFSET
:
0.78539
DIR_LIMIT_OFFSET
:
0.0
NUM_DIR_BINS
:
2
ANCHOR_GENERATOR_CONFIG
:
[
{
'
anchor_sizes'
:
[[
3.9
,
1.6
,
1.56
]],
'
anchor_rotations'
:
[
0
,
1.57
],
'
anchor_bottom_heights'
:
[
-1.78
],
'
align_center'
:
False
,
'
feature_map_stride'
:
8
},
{
'
anchor_sizes'
:
[[
0.8
,
0.6
,
1.73
]],
'
anchor_rotations'
:
[
0
,
1.57
],
'
anchor_bottom_heights'
:
[
-1.78
],
'
align_center'
:
False
,
'
feature_map_stride'
:
8
},
{
'
anchor_sizes'
:
[[
1.76
,
0.6
,
1.73
]],
'
anchor_rotations'
:
[
0
,
1.57
],
'
anchor_bottom_heights'
:
[
-1.78
],
'
align_center'
:
False
,
'
feature_map_stride'
:
8
}
]
TARGET_ASSIGNER_CONFIG
:
NAME
:
AxisAlignedTargetAssigner
POS_FRACTION
:
-1.0
SAMPLE_SIZE
:
512
MATCHED_THRESHOLDS
:
[
0.6
,
0.5
,
0.5
]
UNMATCHED_THRESHOLDS
:
[
0.45
,
0.35
,
0.35
]
NORM_BY_NUM_EXAMPLES
:
False
MATCH_HEIGHT
:
False
BOX_CODER
:
ResidualCoder
LOSS_CONFIG
:
LOSS_WEIGHTS
:
{
'
cls_weight'
:
1.0
,
'
loc_weight'
:
2.0
,
'
dir_weight'
:
0.2
,
'
code_weights'
:
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
]
}
POINT_HEAD
:
NAME
:
PointIntraPartOffsetHead
CLS_FC
:
[]
PART_FC
:
[]
CLASS_AGNOSTIC
:
True
TARGET_CONFIG
:
GT_EXTRA_WIDTH
:
[
0.2
,
0.2
,
0.2
]
LOSS_CONFIG
:
LOSS_REG
:
smooth-l1
LOSS_WEIGHTS
:
{
'
point_cls_weight'
:
1.0
,
'
point_part_weight'
:
1.0
}
ROI_HEAD
:
NAME
:
PartA2FCHead
CLASS_AGNOSTIC
:
True
SHARED_FC
:
[
256
,
256
,
256
]
CLS_FC
:
[
256
,
256
]
REG_FC
:
[
256
,
256
]
DP_RATIO
:
0.3
SEG_MASK_SCORE_THRESH
:
0.3
NMS_CONFIG
:
TRAIN
:
NMS_TYPE
:
nms_gpu
MULTI_CLASSES_NMS
:
False
NMS_PRE_MAXSIZE
:
9000
NMS_POST_MAXSIZE
:
512
NMS_THRESH
:
0.8
TEST
:
NMS_TYPE
:
nms_gpu
MULTI_CLASSES_NMS
:
False
NMS_PRE_MAXSIZE
:
1024
NMS_POST_MAXSIZE
:
100
NMS_THRESH
:
0.7
ROI_AWARE_POOL
:
POOL_SIZE
:
12
NUM_FEATURES
:
128
MAX_POINTS_PER_VOXEL
:
128
TARGET_CONFIG
:
BOX_CODER
:
ResidualCoder
ROI_PER_IMAGE
:
128
FG_RATIO
:
0.5
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.65
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'
:
1.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
EVAL_METRIC
:
kitti
NMS_CONFIG
:
MULTI_CLASSES_NMS
:
False
NMS_TYPE
:
nms_gpu
NMS_THRESH
:
0.1
NMS_PRE_MAXSIZE
:
4096
NMS_POST_MAXSIZE
:
500
OPTIMIZATION
:
OPTIMIZER
:
adam_onecycle
LR
:
0.01
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
tools/cfgs/kitti_models/pv_rcnn.yaml
0 → 100644
View file @
19a75f1c
CLASS_NAMES
:
[
'
Car'
,
'
Pedestrian'
,
'
Cyclist'
]
DATA_CONFIG
:
_BASE_CONFIG_
:
cfgs/dataset_configs/kitti_dataset.yaml
MODEL
:
NAME
:
PVRCNN
VFE
:
NAME
:
MeanVFE
BACKBONE_3D
:
NAME
:
VoxelBackBone8x
MAP_TO_BEV
:
NAME
:
HeightCompression
NUM_BEV_FEATURES
:
256
BACKBONE_2D
:
NAME
:
BaseBEVBackbone
LAYER_NUMS
:
[
5
,
5
]
LAYER_STRIDES
:
[
1
,
2
]
NUM_FILTERS
:
[
128
,
256
]
UPSAMPLE_STRIDES
:
[
1
,
2
]
NUM_UPSAMPLE_FILTERS
:
[
256
,
256
]
DENSE_HEAD
:
NAME
:
AnchorHeadSingle
CLASS_AGNOSTIC
:
False
USE_DIRECTION_CLASSIFIER
:
True
DIR_OFFSET
:
0.78539
DIR_LIMIT_OFFSET
:
0.0
NUM_DIR_BINS
:
2
ANCHOR_GENERATOR_CONFIG
:
[
{
'
anchor_sizes'
:
[[
3.9
,
1.6
,
1.56
]],
'
anchor_rotations'
:
[
0
,
1.57
],
'
anchor_bottom_heights'
:
[
-1.78
],
'
align_center'
:
False
,
'
feature_map_stride'
:
8
},
{
'
anchor_sizes'
:
[[
0.8
,
0.6
,
1.73
]],
'
anchor_rotations'
:
[
0
,
1.57
],
'
anchor_bottom_heights'
:
[
-0.6
],
'
align_center'
:
False
,
'
feature_map_stride'
:
8
},
{
'
anchor_sizes'
:
[[
1.76
,
0.6
,
1.73
]],
'
anchor_rotations'
:
[
0
,
1.57
],
'
anchor_bottom_heights'
:
[
-0.6
],
'
align_center'
:
False
,
'
feature_map_stride'
:
8
}
]
TARGET_ASSIGNER_CONFIG
:
NAME
:
AxisAlignedTargetAssigner
POS_FRACTION
:
-1.0
SAMPLE_SIZE
:
512
MATCHED_THRESHOLDS
:
[
0.6
,
0.5
,
0.5
]
UNMATCHED_THRESHOLDS
:
[
0.45
,
0.35
,
0.35
]
NORM_BY_NUM_EXAMPLES
:
False
MATCH_HEIGHT
:
False
BOX_CODER
:
ResidualCoder
LOSS_CONFIG
:
LOSS_WEIGHTS
:
{
'
cls_weight'
:
1.0
,
'
loc_weight'
:
2.0
,
'
dir_weight'
:
0.2
,
'
code_weights'
:
[
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
,
1.0
]
}
PFE
:
NAME
:
VoxelSetAbstraction
POINT_SOURCE
:
voxel_centers
NUM_KEYPOINTS
:
2048
NUM_OUTPUT_FEATURES
:
128
SAMPLE_METHOD
:
FPS
FEATURES_SOURCE
:
[
'
bev'
,
'
x_conv1'
,
'
x_conv2'
,
'
x_conv3'
,
'
x_conv4'
,
'
raw_points'
]
SA_LAYER
:
raw_points
:
MLPS
:
[[
16
,
16
],
[
16
,
16
]]
POOL_RADIUS
:
[
0.4
,
0.8
]
NSAMPLE
:
[
16
,
16
]
x_conv1
:
DOWNSAMPLE_FACTOR
:
1
MLPS
:
[[
16
,
16
],
[
16
,
16
]]
POOL_RADIUS
:
[
0.4
,
0.8
]
NSAMPLE
:
[
16
,
16
]
x_conv2
:
DOWNSAMPLE_FACTOR
:
2
MLPS
:
[[
32
,
32
],
[
32
,
32
]]
POOL_RADIUS
:
[
0.8
,
1.2
]
NSAMPLE
:
[
16
,
32
]
x_conv3
:
DOWNSAMPLE_FACTOR
:
4
MLPS
:
[[
64
,
64
],
[
64
,
64
]]
POOL_RADIUS
:
[
1.2
,
2.4
]
NSAMPLE
:
[
16
,
32
]
x_conv4
:
DOWNSAMPLE_FACTOR
:
8
MLPS
:
[[
64
,
64
],
[
64
,
64
]]
POOL_RADIUS
:
[
2.4
,
4.8
]
NSAMPLE
:
[
16
,
32
]
POINT_HEAD
:
NAME
:
PointHeadSimple
CLS_FC
:
[
256
,
256
]
CLASS_AGNOSTIC
:
True
USE_POINT_FEATURES_BEFORE_FUSION
:
True
TARGET_CONFIG
:
GT_EXTRA_WIDTH
:
[
0.2
,
0.2
,
0.2
]
LOSS_CONFIG
:
LOSS_REG
:
smooth-l1
LOSS_WEIGHTS
:
{
'
point_cls_weight'
:
1.0
,
}
ROI_HEAD
:
NAME
:
PVRCNNHead
CLASS_AGNOSTIC
:
True
SHARED_FC
:
[
256
,
256
]
CLS_FC
:
[
256
,
256
]
REG_FC
:
[
256
,
256
]
DP_RATIO
:
0.2
NMS_CONFIG
:
TRAIN
:
NMS_TYPE
:
nms_gpu
MULTI_CLASSES_NMS
:
False
NMS_PRE_MAXSIZE
:
9000
NMS_POST_MAXSIZE
:
512
NMS_THRESH
:
0.8
TEST
:
NMS_TYPE
:
nms_gpu
MULTI_CLASSES_NMS
:
False
NMS_PRE_MAXSIZE
:
1024
NMS_POST_MAXSIZE
:
100
NMS_THRESH
:
0.7
ROI_GRID_POOL
:
GRID_SIZE
:
6
MLPS
:
[[
64
,
64
],
[
64
,
64
]]
POOL_RADIUS
:
[
0.8
,
1.6
]
NSAMPLE
:
[
16
,
16
]
POOL_METHOD
:
max_pool
TARGET_CONFIG
:
BOX_CODER
:
ResidualCoder
ROI_PER_IMAGE
:
128
FG_RATIO
:
0.5
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'
:
1.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
EVAL_METRIC
:
kitti
NMS_CONFIG
:
MULTI_CLASSES_NMS
:
False
NMS_TYPE
:
nms_gpu
NMS_THRESH
:
0.1
NMS_PRE_MAXSIZE
:
4096
NMS_POST_MAXSIZE
:
500
OPTIMIZATION
:
OPTIMIZER
:
adam_onecycle
LR
:
0.01
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
tools/train.py
View file @
19a75f1c
...
...
@@ -33,6 +33,7 @@ def parge_config():
parser
.
add_argument
(
'--ckpt_save_interval'
,
type
=
int
,
default
=
1
,
help
=
'number of training epochs'
)
parser
.
add_argument
(
'--local_rank'
,
type
=
int
,
default
=
0
,
help
=
'local rank for distributed training'
)
parser
.
add_argument
(
'--max_ckpt_save_num'
,
type
=
int
,
default
=
30
,
help
=
'max number of saved checkpoint'
)
parser
.
add_argument
(
'--merge_all_iters_to_one_epoch'
,
action
=
'store_true'
,
default
=
False
,
help
=
''
)
parser
.
add_argument
(
'--set'
,
dest
=
'set_cfgs'
,
default
=
None
,
nargs
=
argparse
.
REMAINDER
,
help
=
'set extra config keys if needed'
)
...
...
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