Unverified Commit ef7da7dd authored by Cedarch's avatar Cedarch Committed by GitHub
Browse files

Code release of MPPNet for multi-frame 3D object detection (#1089)



* add mppnet in openpcdet

* add mppnet yamls

* add IOU_WEIGHT Flag

* add IOU_WEIGHT Flag

* add IOU_WEIGHT Flag

* add 16 frame effi_test

* add ctrans

* use effi crop

* update mppnet_head.py

* update mppnet_16frame.yaml

* update test.py

* add mppnet_4frame.yaml

* update mppnet_4frame.yaml

* update deted_template

* update det3d_template

* update yaml and clean mppnet head

* rm unused py and yaml

* update yamls

* fixbug of bs 2 eval

* fixbug of bs>1 eval

* update mppnet training code

* update training code

* rm unused file

* rm unused file

* reorganzie code

* reorginaze code

* add transformer.py with paper name

* add transformer.py with paper name

* add transformer.py with paper name

* reorganize code

* reorganize code

* reorganize code

* reorganize code

* reorganize code

* reorganize code

* reorganize code

* reorganize code

* rm unused code

* rm unused code

* format codes

* support save_to_file for WOD to save model predicted results

* fix small bug in generate_single_sample_dict

* support to load pred_boxes from result.pkl to avoid massive small object loading

* bugfixed: train with MPPNet

* bugfixed: remove num_frames in transformer.forward()

* bugfixed: remove num_frames in transformer.forward(), continue

* support to configure train/val result.pkl for ROI_BOXES_PATH for MPPNet

* update MPPNet codes

* bugfixed to support float32/float64 GT database

* update document
Co-authored-by: default avatarShaoshuai Shi <shaoshuaics@gmail.com>
parent aa753ec0
...@@ -124,7 +124,7 @@ MODEL: ...@@ -124,7 +124,7 @@ MODEL:
NAME: VectorPoolAggregationModuleMSG NAME: VectorPoolAggregationModuleMSG
NUM_GROUPS: 2 NUM_GROUPS: 2
LOCAL_AGGREGATION_TYPE: local_interpolation LOCAL_AGGREGATION_TYPE: local_interpolation
NUM_REDUCED_CHANNELS: 2 NUM_REDUCED_CHANNELS: 3
NUM_CHANNELS_OF_LOCAL_AGGREGATION: 32 NUM_CHANNELS_OF_LOCAL_AGGREGATION: 32
MSG_POST_MLPS: [ 32 ] MSG_POST_MLPS: [ 32 ]
FILTER_NEIGHBOR_WITH_ROI: True FILTER_NEIGHBOR_WITH_ROI: True
...@@ -296,7 +296,7 @@ MODEL: ...@@ -296,7 +296,7 @@ MODEL:
OPTIMIZATION: OPTIMIZATION:
BATCH_SIZE_PER_GPU: 2 BATCH_SIZE_PER_GPU: 2
NUM_EPOCHS: 30 NUM_EPOCHS: 36
OPTIMIZER: adam_onecycle OPTIMIZER: adam_onecycle
LR: 0.01 LR: 0.01
......
...@@ -63,6 +63,7 @@ def eval_one_epoch(cfg, args, model, dataloader, epoch_id, logger, dist_test=Fal ...@@ -63,6 +63,7 @@ def eval_one_epoch(cfg, args, model, dataloader, epoch_id, logger, dist_test=Fal
with torch.no_grad(): with torch.no_grad():
pred_dicts, ret_dict = model(batch_dict) pred_dicts, ret_dict = model(batch_dict)
disp_dict = {} disp_dict = {}
if getattr(args, 'infer_time', False): if getattr(args, 'infer_time', False):
......
...@@ -26,6 +26,7 @@ def parse_config(): ...@@ -26,6 +26,7 @@ def parse_config():
parser.add_argument('--workers', type=int, default=4, help='number of workers for dataloader') parser.add_argument('--workers', type=int, default=4, help='number of workers for dataloader')
parser.add_argument('--extra_tag', type=str, default='default', help='extra tag for this experiment') parser.add_argument('--extra_tag', type=str, default='default', help='extra tag for this experiment')
parser.add_argument('--ckpt', type=str, default=None, help='checkpoint to start from') parser.add_argument('--ckpt', type=str, default=None, help='checkpoint to start from')
parser.add_argument('--pretrained_model', type=str, default=None, help='pretrained_model')
parser.add_argument('--launcher', choices=['none', 'pytorch', 'slurm'], default='none') parser.add_argument('--launcher', choices=['none', 'pytorch', 'slurm'], default='none')
parser.add_argument('--tcp_port', type=int, default=18888, help='tcp port for distrbuted training') parser.add_argument('--tcp_port', type=int, default=18888, help='tcp port for distrbuted training')
parser.add_argument('--local_rank', type=int, default=0, help='local rank for distributed training') parser.add_argument('--local_rank', type=int, default=0, help='local rank for distributed training')
...@@ -56,7 +57,8 @@ def parse_config(): ...@@ -56,7 +57,8 @@ def parse_config():
def eval_single_ckpt(model, test_loader, args, eval_output_dir, logger, epoch_id, dist_test=False): def eval_single_ckpt(model, test_loader, args, eval_output_dir, logger, epoch_id, dist_test=False):
# load checkpoint # load checkpoint
model.load_params_from_file(filename=args.ckpt, logger=logger, to_cpu=dist_test) model.load_params_from_file(filename=args.ckpt, logger=logger, to_cpu=dist_test,
pre_trained_path=args.pretrained_model)
model.cuda() model.cuda()
# start evaluation # start evaluation
......
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