|
_base_ = './parta2_hv_secfpn_8xb2-cyclic-80e_kitti-3d-3class.py' |
|
|
|
point_cloud_range = [0, -40, -3, 70.4, 40, 1] |
|
|
|
model = dict( |
|
rpn_head=dict( |
|
type='PartA2RPNHead', |
|
num_classes=1, |
|
anchor_generator=dict( |
|
_delete_=True, |
|
type='Anchor3DRangeGenerator', |
|
ranges=[[0, -40.0, -1.78, 70.4, 40.0, -1.78]], |
|
sizes=[[3.9, 1.6, 1.56]], |
|
rotations=[0, 1.57], |
|
reshape_out=False)), |
|
roi_head=dict( |
|
num_classes=1, |
|
semantic_head=dict(num_classes=1), |
|
bbox_head=dict(num_classes=1)), |
|
|
|
train_cfg=dict( |
|
_delete_=True, |
|
rpn=dict( |
|
assigner=dict( |
|
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), |
|
rpn_proposal=dict( |
|
nms_pre=9000, |
|
nms_post=512, |
|
max_num=512, |
|
nms_thr=0.8, |
|
score_thr=0, |
|
use_rotate_nms=False), |
|
rcnn=dict( |
|
assigner=dict( |
|
type='Max3DIoUAssigner', |
|
iou_calculator=dict(type='BboxOverlaps3D', coordinate='lidar'), |
|
pos_iou_thr=0.55, |
|
neg_iou_thr=0.55, |
|
min_pos_iou=0.55, |
|
ignore_iof_thr=-1), |
|
sampler=dict( |
|
type='IoUNegPiecewiseSampler', |
|
num=128, |
|
pos_fraction=0.55, |
|
neg_piece_fractions=[0.8, 0.2], |
|
neg_iou_piece_thrs=[0.55, 0.1], |
|
neg_pos_ub=-1, |
|
add_gt_as_proposals=False, |
|
return_iou=True), |
|
cls_pos_thr=0.75, |
|
cls_neg_thr=0.25)), |
|
test_cfg=dict( |
|
rpn=dict( |
|
nms_pre=1024, |
|
nms_post=100, |
|
max_num=100, |
|
nms_thr=0.7, |
|
score_thr=0, |
|
use_rotate_nms=True), |
|
rcnn=dict( |
|
use_rotate_nms=True, |
|
use_raw_score=True, |
|
nms_thr=0.01, |
|
score_thr=0.1))) |
|
|
|
|
|
dataset_type = 'KittiDataset' |
|
data_root = 'data/kitti/' |
|
class_names = ['Car'] |
|
input_modality = dict(use_lidar=True, use_camera=False) |
|
backend_args = None |
|
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), |
|
points_loader=dict( |
|
type='LoadPointsFromFile', |
|
coord_type='LIDAR', |
|
load_dim=4, |
|
use_dim=4, |
|
backend_args=backend_args), |
|
backend_args=backend_args) |
|
train_pipeline = [ |
|
dict( |
|
type='LoadPointsFromFile', |
|
coord_type='LIDAR', |
|
load_dim=4, |
|
use_dim=4, |
|
backend_args=backend_args), |
|
dict(type='LoadAnnotations3D', with_bbox_3d=True, with_label_3d=True), |
|
dict(type='ObjectSample', db_sampler=db_sampler), |
|
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=point_cloud_range), |
|
dict(type='ObjectRangeFilter', point_cloud_range=point_cloud_range), |
|
dict(type='ObjectNameFilter', classes=class_names), |
|
dict(type='PointShuffle'), |
|
dict( |
|
type='Pack3DDetInputs', |
|
keys=['points', 'gt_bboxes_3d', 'gt_labels_3d']) |
|
] |
|
test_pipeline = [ |
|
dict( |
|
type='LoadPointsFromFile', |
|
coord_type='LIDAR', |
|
load_dim=4, |
|
use_dim=4, |
|
backend_args=backend_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='Pack3DDetInputs', keys=['points']) |
|
] |
|
|
|
train_dataloader = dict( |
|
dataset=dict( |
|
dataset=dict( |
|
pipeline=train_pipeline, metainfo=dict(classes=class_names)))) |
|
test_dataloader = dict( |
|
dataset=dict(pipeline=test_pipeline, metainfo=dict(classes=class_names))) |
|
val_dataloader = dict(dataset=dict(metainfo=dict(classes=class_names))) |
|
find_unused_parameters = True |
|
|