Closed IamJiyong closed 1 year ago
加个QQ交流一下? 1206961978
加个QQ交流一下? 1206961978
I'm sorry, but I don't speak chinese and I don't know what QQ is.
How long does this experiment need to run for each epoch?
Thanks for your interest. Based on the information currently given, I have no idead does this experimental data appear. Could you provide the training log file? @IamJiyong
As for the experiment time, the whole training process (80 epoches) of PV-RCNN need about 4 hours with 6xA100 GPUs (batchsize 60). @dof-pikes
I think I ran the codes in a wrong way. The total training time was about 2 hours, but it costs 23 hours after I reconstructed the environments and ran it again. I'll let you know if the results are still abnormal after this training.
I got pretty weird results.
Training log is as follows:
2023-05-01 03:59:32,623 INFO **Start logging**
2023-05-01 03:59:32,623 INFO CUDA_VISIBLE_DEVICES=ALL
2023-05-01 03:59:32,623 INFO cfg_file cfgs/kitti_models/pv_rcnn_ssl.yaml
2023-05-01 03:59:32,623 INFO batch_size 4
2023-05-01 03:59:32,623 INFO epochs 80
2023-05-01 03:59:32,623 INFO workers 4
2023-05-01 03:59:32,623 INFO extra_tag pv_rcnn_002_1
2023-05-01 03:59:32,623 INFO ckpt None
2023-05-01 03:59:32,623 INFO pretrained_model pretrained_weights/pretrained_pv_rcnn_002_1.pth
2023-05-01 03:59:32,623 INFO labeled_frame_idx ../data/kitti/semi_supervised_data_3dioumatch/scene_0.02/1/label_idx.txt
2023-05-01 03:59:32,623 INFO launcher none
2023-05-01 03:59:32,623 INFO tcp_port 18888
2023-05-01 03:59:32,623 INFO sync_bn False
2023-05-01 03:59:32,623 INFO fix_random_seed False
2023-05-01 03:59:32,623 INFO ckpt_save_interval 1
2023-05-01 03:59:32,624 INFO local_rank 0
2023-05-01 03:59:32,624 INFO max_ckpt_save_num 100
2023-05-01 03:59:32,624 INFO merge_all_iters_to_one_epoch False
2023-05-01 03:59:32,624 INFO set_cfgs None
2023-05-01 03:59:32,624 INFO max_waiting_mins 0
2023-05-01 03:59:32,624 INFO start_epoch 0
2023-05-01 03:59:32,624 INFO num_epochs_to_eval 10
2023-05-01 03:59:32,624 INFO save_to_file False
2023-05-01 03:59:32,624 INFO cfg.ROOT_DIR: /workspace/HSSDA
2023-05-01 03:59:32,624 INFO cfg.LOCAL_RANK: 0
2023-05-01 03:59:32,624 INFO cfg.CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
2023-05-01 03:59:32,624 INFO
cfg.DATA_CONFIG = edict()
2023-05-01 03:59:32,624 INFO cfg.DATA_CONFIG.DATASET: KittiDataset
2023-05-01 03:59:32,624 INFO cfg.DATA_CONFIG.DATA_PATH: ../data/kitti
2023-05-01 03:59:32,624 INFO cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1]
2023-05-01 03:59:32,624 INFO
cfg.DATA_CONFIG.DATA_SPLIT = edict()
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.DATA_SPLIT.train: train
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.DATA_SPLIT.test: val
2023-05-01 03:59:32,625 INFO
cfg.DATA_CONFIG.INFO_PATH = edict()
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.INFO_PATH.train: ['kitti_infos_train.pkl']
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.INFO_PATH.test: ['kitti_infos_val.pkl']
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.GET_ITEM_LIST: ['points']
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.FOV_POINTS_ONLY: True
2023-05-01 03:59:32,625 INFO
cfg.DATA_CONFIG.DATA_AUGMENTOR = edict()
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['placeholder']
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'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:15', 'Pedestrian:10', 'Cyclist:10'], 'NUM_POINT_FEATURES': 4, 'DATABASE_WITH_FAKELIDAR': False, 'REMOVE_EXTRA_WIDTH': [0.0, 0.0, 0.0], 'LIMIT_WHOLE_SCENE': False}, {'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]}]
2023-05-01 03:59:32,625 INFO
cfg.DATA_CONFIG.POINT_FEATURE_ENCODING = edict()
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z', 'intensity']
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity']
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG.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}}]
2023-05-01 03:59:32,625 INFO cfg.DATA_CONFIG._BASECONFIG: cfgs/dataset_configs/kitti_dataset.yaml
2023-05-01 03:59:32,625 INFO
cfg.MODEL = edict()
2023-05-01 03:59:32,625 INFO cfg.MODEL.NAME: PVRCNNSSL
2023-05-01 03:59:32,625 INFO
cfg.MODEL.VFE = edict()
2023-05-01 03:59:32,625 INFO cfg.MODEL.VFE.NAME: MeanVFE
2023-05-01 03:59:32,625 INFO
cfg.MODEL.BACKBONE_3D = edict()
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_3D.NAME: VoxelBackBone8x
2023-05-01 03:59:32,626 INFO
cfg.MODEL.MAP_TO_BEV = edict()
2023-05-01 03:59:32,626 INFO cfg.MODEL.MAP_TO_BEV.NAME: HeightCompression
2023-05-01 03:59:32,626 INFO cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 256
2023-05-01 03:59:32,626 INFO
cfg.MODEL.BACKBONE_2D = edict()
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_2D.NAME: BaseBEVBackbone
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [5, 5]
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [1, 2]
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [128, 256]
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2]
2023-05-01 03:59:32,626 INFO cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [256, 256]
2023-05-01 03:59:32,626 INFO
cfg.MODEL.DENSE_HEAD = edict()
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.ANCHOR_GENERATOR_CONFIG: [{'class_name': 'Car', '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, 'matched_threshold': 0.6, 'unmatched_threshold': 0.45}, {'class_name': 'Pedestrian', '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, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}, {'class_name': 'Cyclist', '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, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}]
2023-05-01 03:59:32,626 INFO
cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG = edict()
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner
2023-05-01 03:59:32,626 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder
2023-05-01 03:59:32,627 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG = edict()
2023-05-01 03:59:32,627 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2
2023-05-01 03:59:32,627 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2023-05-01 03:59:32,627 INFO
cfg.MODEL.PFE = edict()
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.NAME: VoxelSetAbstraction
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.POINT_SOURCE: raw_points
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.NUM_KEYPOINTS: 2048
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.NUM_OUTPUT_FEATURES: 128
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.SAMPLE_METHOD: FPS
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.FEATURES_SOURCE: ['bev', 'x_conv1', 'x_conv2', 'x_conv3', 'x_conv4', 'raw_points']
2023-05-01 03:59:32,627 INFO
cfg.MODEL.PFE.SA_LAYER = edict()
2023-05-01 03:59:32,627 INFO
cfg.MODEL.PFE.SA_LAYER.raw_points = edict()
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.MLPS: [[16, 16], [16, 16]]
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.POOL_RADIUS: [0.4, 0.8]
2023-05-01 03:59:32,627 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.NSAMPLE: [16, 16]
2023-05-01 03:59:32,627 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv1 = edict()
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.DOWNSAMPLE_FACTOR: 1
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.MLPS: [[16, 16], [16, 16]]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.POOL_RADIUS: [0.4, 0.8]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.NSAMPLE: [16, 16]
2023-05-01 03:59:32,628 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv2 = edict()
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.DOWNSAMPLE_FACTOR: 2
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.MLPS: [[32, 32], [32, 32]]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.POOL_RADIUS: [0.8, 1.2]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.NSAMPLE: [16, 32]
2023-05-01 03:59:32,628 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv3 = edict()
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.DOWNSAMPLE_FACTOR: 4
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.MLPS: [[64, 64], [64, 64]]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.POOL_RADIUS: [1.2, 2.4]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.NSAMPLE: [16, 32]
2023-05-01 03:59:32,628 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv4 = edict()
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.DOWNSAMPLE_FACTOR: 8
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.MLPS: [[64, 64], [64, 64]]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.POOL_RADIUS: [2.4, 4.8]
2023-05-01 03:59:32,628 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.NSAMPLE: [16, 32]
2023-05-01 03:59:32,628 INFO
cfg.MODEL.POINT_HEAD = edict()
2023-05-01 03:59:32,628 INFO cfg.MODEL.POINT_HEAD.NAME: PointHeadSimple
2023-05-01 03:59:32,628 INFO cfg.MODEL.POINT_HEAD.CLS_FC: [256, 256]
2023-05-01 03:59:32,629 INFO cfg.MODEL.POINT_HEAD.CLASS_AGNOSTIC: True
2023-05-01 03:59:32,629 INFO cfg.MODEL.POINT_HEAD.USE_POINT_FEATURES_BEFORE_FUSION: True
2023-05-01 03:59:32,629 INFO
cfg.MODEL.POINT_HEAD.TARGET_CONFIG = edict()
2023-05-01 03:59:32,629 INFO cfg.MODEL.POINT_HEAD.TARGET_CONFIG.GT_EXTRA_WIDTH: [0.2, 0.2, 0.2]
2023-05-01 03:59:32,629 INFO
cfg.MODEL.POINT_HEAD.LOSS_CONFIG = edict()
2023-05-01 03:59:32,629 INFO cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_REG: smooth-l1
2023-05-01 03:59:32,629 INFO
cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-05-01 03:59:32,629 INFO cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.point_cls_weight: 1.0
2023-05-01 03:59:32,629 INFO
cfg.MODEL.ROI_HEAD = edict()
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.NAME: PVRCNNHead
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.CLASS_AGNOSTIC: True
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.SHARED_FC: [256, 256]
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.CLS_FC: [256, 256]
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.REG_FC: [256, 256]
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.DP_RATIO: 0.3
2023-05-01 03:59:32,629 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG = edict()
2023-05-01 03:59:32,629 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN = edict()
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_TYPE: nms_gpu
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.MULTI_CLASSES_NMS: False
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_PRE_MAXSIZE: 9000
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_POST_MAXSIZE: 512
2023-05-01 03:59:32,629 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_THRESH: 0.8
2023-05-01 03:59:32,629 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST = edict()
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_TYPE: nms_gpu
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.MULTI_CLASSES_NMS: False
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_PRE_MAXSIZE: 1024
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_POST_MAXSIZE: 100
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_THRESH: 0.7
2023-05-01 03:59:32,630 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL = edict()
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.GRID_SIZE: 6
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.MLPS: [[64, 64], [64, 64]]
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_RADIUS: [0.8, 1.6]
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.NSAMPLE: [16, 16]
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_METHOD: max_pool
2023-05-01 03:59:32,630 INFO
cfg.MODEL.ROI_HEAD.TARGET_CONFIG = edict()
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.BOX_CODER: ResidualCoder
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.ROI_PER_IMAGE: 128
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.FG_RATIO: 0.5
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.SAMPLE_ROI_BY_EACH_CLASS: True
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_SCORE_TYPE: roi_iou
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_FG_THRESH: 0.75
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH: 0.25
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH_LO: 0.1
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.HARD_BG_RATIO: 0.8
2023-05-01 03:59:32,630 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.REG_FG_THRESH: 0.55
2023-05-01 03:59:32,631 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG = edict()
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CLS_LOSS: BinaryCrossEntropy
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.REG_LOSS: smooth-l1
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CORNER_LOSS_REGULARIZATION: True
2023-05-01 03:59:32,631 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_cls_weight: 1.0
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_reg_weight: 1.0
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_corner_weight: 1.0
2023-05-01 03:59:32,631 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2023-05-01 03:59:32,631 INFO
cfg.MODEL.POST_PROCESSING = edict()
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.1
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti
2023-05-01 03:59:32,631 INFO
cfg.MODEL.POST_PROCESSING.NMS_CONFIG = edict()
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.1
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096
2023-05-01 03:59:32,631 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500
2023-05-01 03:59:32,631 INFO
cfg.OPTIMIZATION = edict()
2023-05-01 03:59:32,631 INFO cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 2
2023-05-01 03:59:32,631 INFO cfg.OPTIMIZATION.NUM_EPOCHS: 80
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.LR: 0.01
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.MOMENTUM: 0.9
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.MOMS: [0.95, 0.85]
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.PCT_START: 0.4
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.DIV_FACTOR: 10
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45]
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.LR_DECAY: 0.1
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.LR_CLIP: 1e-07
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.LR_WARMUP: False
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.WARMUP_EPOCH: 1
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10
2023-05-01 03:59:32,632 INFO cfg.OPTIMIZATION.INTERVAL: 5
2023-05-01 03:59:32,632 INFO cfg.TAG: pv_rcnn_ssl
2023-05-01 03:59:32,632 INFO cfg.EXP_GROUP_PATH: kitti_models
2023-05-01 03:59:32,645 INFO Database filter by min points Car: 311 => 292
2023-05-01 03:59:32,645 INFO Database filter by min points Pedestrian: 55 => 55
2023-05-01 03:59:32,645 INFO Database filter by min points Cyclist: 14 => 14
2023-05-01 03:59:32,646 INFO Database filter by difficulty Car: 292 => 243
2023-05-01 03:59:32,646 INFO Database filter by difficulty Pedestrian: 55 => 51
2023-05-01 03:59:32,646 INFO Database filter by difficulty Cyclist: 14 => 13
2023-05-01 03:59:32,648 INFO Loading KITTI dataset
2023-05-01 03:59:32,792 INFO Total samples for KITTI dataset: 3712
2023-05-01 03:59:33,867 INFO ==> Loading parameters from checkpoint pretrained_weights/pretrained_pv_rcnn_002_1.pth to GPU
2023-05-01 03:59:34,392 INFO ==> Checkpoint trained from version: pcdet+0.5.2+30822d0
2023-05-01 03:59:41,694 INFO ==> Done (loaded 735/735)
2023-05-01 03:59:41,699 INFO PVRCNNSSL(
(pv_rcnn): PVRCNN(
(vfe): MeanVFE()
(backbone_3d): VoxelBackBone8x(
(conv_input): SparseSequential(
(0): SubMConv3d(4, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(conv1): SparseSequential(
(0): SparseSequential(
(0): SubMConv3d(16, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv2): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(16, 32, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv3): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(32, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv4): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(64, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[0, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv_out): SparseSequential(
(0): SparseConv3d(64, 128, kernel_size=[3, 1, 1], stride=[2, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(map_to_bev_module): HeightCompression()
(pfe): VoxelSetAbstraction(
(SA_layers): ModuleList(
(0): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(1): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(2): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(3): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
)
(SA_rawpoints): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(vsa_point_feature_fusion): Sequential(
(0): Linear(in_features=640, out_features=128, bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(backbone_2d): BaseBEVBackbone(
(blocks): ModuleList(
(0): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), bias=False)
(2): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
(1): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)
(2): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
)
(deblocks): ModuleList(
(0): Sequential(
(0): ConvTranspose2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): Sequential(
(0): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
)
(dense_head): AnchorHeadSingle(
(cls_loss_func): SigmoidFocalClassificationLoss()
(reg_loss_func): WeightedSmoothL1Loss()
(dir_loss_func): WeightedCrossEntropyLoss()
(conv_cls): Conv2d(512, 18, kernel_size=(1, 1), stride=(1, 1))
(conv_box): Conv2d(512, 42, kernel_size=(1, 1), stride=(1, 1))
(conv_dir_cls): Conv2d(512, 12, kernel_size=(1, 1), stride=(1, 1))
)
(point_head): PointHeadSimple(
(cls_loss_func): SigmoidFocalClassificationLoss()
(cls_layers): Sequential(
(0): Linear(in_features=640, out_features=256, bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Linear(in_features=256, out_features=256, bias=False)
(4): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
(6): Linear(in_features=256, out_features=1, bias=True)
)
)
(roi_head): PVRCNNHead(
(proposal_target_layer): ProposalTargetLayer()
(reg_loss_func): WeightedSmoothL1Loss()
(roi_grid_pool_layer): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(shared_fc_layer): Sequential(
(0): Conv1d(27648, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
)
(cls_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 1, kernel_size=(1,), stride=(1,))
)
(reg_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 7, kernel_size=(1,), stride=(1,))
)
)
)
(pv_rcnn_ema): PVRCNN(
(vfe): MeanVFE()
(backbone_3d): VoxelBackBone8x(
(conv_input): SparseSequential(
(0): SubMConv3d(4, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(conv1): SparseSequential(
(0): SparseSequential(
(0): SubMConv3d(16, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv2): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(16, 32, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv3): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(32, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv4): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(64, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[0, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv_out): SparseSequential(
(0): SparseConv3d(64, 128, kernel_size=[3, 1, 1], stride=[2, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(map_to_bev_module): HeightCompression()
(pfe): VoxelSetAbstraction(
(SA_layers): ModuleList(
(0): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(1): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(2): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(3): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
)
(SA_rawpoints): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(vsa_point_feature_fusion): Sequential(
(0): Linear(in_features=640, out_features=128, bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(backbone_2d): BaseBEVBackbone(
(blocks): ModuleList(
(0): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), bias=False)
(2): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
(1): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)
(2): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
)
(deblocks): ModuleList(
(0): Sequential(
(0): ConvTranspose2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): Sequential(
(0): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
)
(dense_head): AnchorHeadSingle(
(cls_loss_func): SigmoidFocalClassificationLoss()
(reg_loss_func): WeightedSmoothL1Loss()
(dir_loss_func): WeightedCrossEntropyLoss()
(conv_cls): Conv2d(512, 18, kernel_size=(1, 1), stride=(1, 1))
(conv_box): Conv2d(512, 42, kernel_size=(1, 1), stride=(1, 1))
(conv_dir_cls): Conv2d(512, 12, kernel_size=(1, 1), stride=(1, 1))
)
(point_head): PointHeadSimple(
(cls_loss_func): SigmoidFocalClassificationLoss()
(cls_layers): Sequential(
(0): Linear(in_features=640, out_features=256, bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Linear(in_features=256, out_features=256, bias=False)
(4): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
(6): Linear(in_features=256, out_features=1, bias=True)
)
)
(roi_head): PVRCNNHead(
(proposal_target_layer): ProposalTargetLayer()
(reg_loss_func): WeightedSmoothL1Loss()
(roi_grid_pool_layer): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(shared_fc_layer): Sequential(
(0): Conv1d(27648, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
)
(cls_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 1, kernel_size=(1,), stride=(1,))
)
(reg_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 7, kernel_size=(1,), stride=(1,))
)
)
)
)
2023-05-01 03:59:41,708 INFO **Start training kitti_models/pv_rcnn_ssl(pv_rcnn_002_1)**
2023-05-01 04:07:35,823 INFO Database filter by min points Car: 3197 => 3178
2023-05-01 04:07:35,824 INFO Database filter by min points Pedestrian: 260 => 260
2023-05-01 04:07:35,824 INFO Database filter by min points Cyclist: 46 => 46
2023-05-01 04:07:35,826 INFO Database filter by difficulty Car: 3178 => 3129
2023-05-01 04:07:35,826 INFO Database filter by difficulty Pedestrian: 260 => 256
2023-05-01 04:07:35,826 INFO Database filter by difficulty Cyclist: 46 => 45
2023-05-01 04:07:35,828 INFO Loading KITTI dataset
2023-05-01 04:07:35,966 INFO Total samples for KITTI dataset: 3712
2023-05-01 05:37:23,277 INFO Database filter by min points Car: 3848 => 3829
2023-05-01 05:37:23,278 INFO Database filter by min points Pedestrian: 445 => 445
2023-05-01 05:37:23,278 INFO Database filter by min points Cyclist: 60 => 60
2023-05-01 05:37:23,280 INFO Database filter by difficulty Car: 3829 => 3780
2023-05-01 05:37:23,281 INFO Database filter by difficulty Pedestrian: 445 => 441
2023-05-01 05:37:23,281 INFO Database filter by difficulty Cyclist: 60 => 59
2023-05-01 05:37:23,282 INFO Loading KITTI dataset
2023-05-01 05:37:23,425 INFO Total samples for KITTI dataset: 3712
2023-05-01 07:03:54,179 INFO Database filter by min points Car: 4063 => 4044
2023-05-01 07:03:54,180 INFO Database filter by min points Pedestrian: 522 => 522
2023-05-01 07:03:54,180 INFO Database filter by min points Cyclist: 77 => 77
2023-05-01 07:03:54,183 INFO Database filter by difficulty Car: 4044 => 3995
2023-05-01 07:03:54,184 INFO Database filter by difficulty Pedestrian: 522 => 518
2023-05-01 07:03:54,184 INFO Database filter by difficulty Cyclist: 77 => 76
2023-05-01 07:03:54,186 INFO Loading KITTI dataset
2023-05-01 07:03:54,332 INFO Total samples for KITTI dataset: 3712
2023-05-01 08:31:41,213 INFO Database filter by min points Car: 4236 => 4217
2023-05-01 08:31:41,213 INFO Database filter by min points Pedestrian: 734 => 734
2023-05-01 08:31:41,213 INFO Database filter by min points Cyclist: 98 => 98
2023-05-01 08:31:41,216 INFO Database filter by difficulty Car: 4217 => 4168
2023-05-01 08:31:41,216 INFO Database filter by difficulty Pedestrian: 734 => 730
2023-05-01 08:31:41,217 INFO Database filter by difficulty Cyclist: 98 => 97
2023-05-01 08:31:41,218 INFO Loading KITTI dataset
2023-05-01 08:31:41,363 INFO Total samples for KITTI dataset: 3712
2023-05-01 10:00:13,479 INFO Database filter by min points Car: 4399 => 4380
2023-05-01 10:00:13,479 INFO Database filter by min points Pedestrian: 1037 => 1037
2023-05-01 10:00:13,480 INFO Database filter by min points Cyclist: 122 => 122
2023-05-01 10:00:13,482 INFO Database filter by difficulty Car: 4380 => 4331
2023-05-01 10:00:13,483 INFO Database filter by difficulty Pedestrian: 1037 => 1033
2023-05-01 10:00:13,483 INFO Database filter by difficulty Cyclist: 122 => 121
2023-05-01 10:00:13,484 INFO Loading KITTI dataset
2023-05-01 10:00:13,627 INFO Total samples for KITTI dataset: 3712
2023-05-01 11:26:27,273 INFO Database filter by min points Car: 4570 => 4551
2023-05-01 11:26:27,274 INFO Database filter by min points Pedestrian: 1938 => 1938
2023-05-01 11:26:27,274 INFO Database filter by min points Cyclist: 136 => 136
2023-05-01 11:26:27,277 INFO Database filter by difficulty Car: 4551 => 4502
2023-05-01 11:26:27,278 INFO Database filter by difficulty Pedestrian: 1938 => 1934
2023-05-01 11:26:27,278 INFO Database filter by difficulty Cyclist: 136 => 135
2023-05-01 11:26:27,279 INFO Loading KITTI dataset
2023-05-01 11:26:27,423 INFO Total samples for KITTI dataset: 3712
2023-05-01 12:53:40,555 INFO Database filter by min points Car: 4773 => 4754
2023-05-01 12:53:40,556 INFO Database filter by min points Pedestrian: 2472 => 2472
2023-05-01 12:53:40,556 INFO Database filter by min points Cyclist: 141 => 141
2023-05-01 12:53:40,559 INFO Database filter by difficulty Car: 4754 => 4705
2023-05-01 12:53:40,560 INFO Database filter by difficulty Pedestrian: 2472 => 2468
2023-05-01 12:53:40,560 INFO Database filter by difficulty Cyclist: 141 => 140
2023-05-01 12:53:40,562 INFO Loading KITTI dataset
2023-05-01 12:53:40,708 INFO Total samples for KITTI dataset: 3712
2023-05-01 14:19:30,693 INFO Database filter by min points Car: 4967 => 4948
2023-05-01 14:19:30,694 INFO Database filter by min points Pedestrian: 2856 => 2856
2023-05-01 14:19:30,695 INFO Database filter by min points Cyclist: 146 => 146
2023-05-01 14:19:30,698 INFO Database filter by difficulty Car: 4948 => 4899
2023-05-01 14:19:30,700 INFO Database filter by difficulty Pedestrian: 2856 => 2852
2023-05-01 14:19:30,700 INFO Database filter by difficulty Cyclist: 146 => 145
2023-05-01 14:19:30,701 INFO Loading KITTI dataset
2023-05-01 14:19:30,940 INFO Total samples for KITTI dataset: 3712
2023-05-01 15:44:53,697 INFO Database filter by min points Car: 5091 => 5072
2023-05-01 15:44:53,698 INFO Database filter by min points Pedestrian: 3015 => 3015
2023-05-01 15:44:53,698 INFO Database filter by min points Cyclist: 190 => 190
2023-05-01 15:44:53,702 INFO Database filter by difficulty Car: 5072 => 5023
2023-05-01 15:44:53,703 INFO Database filter by difficulty Pedestrian: 3015 => 3011
2023-05-01 15:44:53,704 INFO Database filter by difficulty Cyclist: 190 => 189
2023-05-01 15:44:53,705 INFO Loading KITTI dataset
2023-05-01 15:44:53,854 INFO Total samples for KITTI dataset: 3712
2023-05-01 17:10:42,467 INFO Database filter by min points Car: 5178 => 5159
2023-05-01 17:10:42,468 INFO Database filter by min points Pedestrian: 3214 => 3214
2023-05-01 17:10:42,468 INFO Database filter by min points Cyclist: 201 => 201
2023-05-01 17:10:42,471 INFO Database filter by difficulty Car: 5159 => 5110
2023-05-01 17:10:42,473 INFO Database filter by difficulty Pedestrian: 3214 => 3210
2023-05-01 17:10:42,473 INFO Database filter by difficulty Cyclist: 201 => 200
2023-05-01 17:10:42,475 INFO Loading KITTI dataset
2023-05-01 17:10:42,622 INFO Total samples for KITTI dataset: 3712
2023-05-01 18:36:50,997 INFO Database filter by min points Car: 5234 => 5215
2023-05-01 18:36:50,998 INFO Database filter by min points Pedestrian: 3403 => 3403
2023-05-01 18:36:50,999 INFO Database filter by min points Cyclist: 210 => 210
2023-05-01 18:36:51,002 INFO Database filter by difficulty Car: 5215 => 5166
2023-05-01 18:36:51,004 INFO Database filter by difficulty Pedestrian: 3403 => 3399
2023-05-01 18:36:51,004 INFO Database filter by difficulty Cyclist: 210 => 209
2023-05-01 18:36:51,006 INFO Loading KITTI dataset
2023-05-01 18:36:51,155 INFO Total samples for KITTI dataset: 3712
2023-05-01 20:02:52,044 INFO Database filter by min points Car: 5308 => 5289
2023-05-01 20:02:52,045 INFO Database filter by min points Pedestrian: 3474 => 3474
2023-05-01 20:02:52,045 INFO Database filter by min points Cyclist: 214 => 214
2023-05-01 20:02:52,049 INFO Database filter by difficulty Car: 5289 => 5240
2023-05-01 20:02:52,052 INFO Database filter by difficulty Pedestrian: 3474 => 3470
2023-05-01 20:02:52,052 INFO Database filter by difficulty Cyclist: 214 => 213
2023-05-01 20:02:52,054 INFO Loading KITTI dataset
2023-05-01 20:02:52,292 INFO Total samples for KITTI dataset: 3712
2023-05-01 21:29:33,744 INFO Database filter by min points Car: 5353 => 5334
2023-05-01 21:29:33,745 INFO Database filter by min points Pedestrian: 3524 => 3524
2023-05-01 21:29:33,745 INFO Database filter by min points Cyclist: 217 => 217
2023-05-01 21:29:33,749 INFO Database filter by difficulty Car: 5334 => 5285
2023-05-01 21:29:33,751 INFO Database filter by difficulty Pedestrian: 3524 => 3520
2023-05-01 21:29:33,751 INFO Database filter by difficulty Cyclist: 217 => 216
2023-05-01 21:29:33,753 INFO Loading KITTI dataset
2023-05-01 21:29:33,901 INFO Total samples for KITTI dataset: 3712
2023-05-01 22:55:45,990 INFO Database filter by min points Car: 5379 => 5360
2023-05-01 22:55:45,991 INFO Database filter by min points Pedestrian: 3561 => 3561
2023-05-01 22:55:45,992 INFO Database filter by min points Cyclist: 225 => 225
2023-05-01 22:55:45,995 INFO Database filter by difficulty Car: 5360 => 5311
2023-05-01 22:55:45,998 INFO Database filter by difficulty Pedestrian: 3561 => 3557
2023-05-01 22:55:45,998 INFO Database filter by difficulty Cyclist: 225 => 224
2023-05-01 22:55:46,000 INFO Loading KITTI dataset
2023-05-01 22:55:46,246 INFO Total samples for KITTI dataset: 3712
2023-05-02 00:21:57,756 INFO Database filter by min points Car: 5472 => 5453
2023-05-02 00:21:57,757 INFO Database filter by min points Pedestrian: 3594 => 3594
2023-05-02 00:21:57,758 INFO Database filter by min points Cyclist: 228 => 228
2023-05-02 00:21:57,762 INFO Database filter by difficulty Car: 5453 => 5404
2023-05-02 00:21:57,764 INFO Database filter by difficulty Pedestrian: 3594 => 3590
2023-05-02 00:21:57,764 INFO Database filter by difficulty Cyclist: 228 => 227
2023-05-02 00:21:57,766 INFO Loading KITTI dataset
2023-05-02 00:21:57,915 INFO Total samples for KITTI dataset: 3712
2023-05-02 01:49:00,634 INFO Database filter by min points Car: 5526 => 5507
2023-05-02 01:49:00,636 INFO Database filter by min points Pedestrian: 3662 => 3662
2023-05-02 01:49:00,636 INFO Database filter by min points Cyclist: 230 => 230
2023-05-02 01:49:00,639 INFO Database filter by difficulty Car: 5507 => 5458
2023-05-02 01:49:00,641 INFO Database filter by difficulty Pedestrian: 3662 => 3658
2023-05-02 01:49:00,642 INFO Database filter by difficulty Cyclist: 230 => 229
2023-05-02 01:49:00,643 INFO Loading KITTI dataset
2023-05-02 01:49:00,792 INFO Total samples for KITTI dataset: 3712
2023-05-02 03:09:48,116 INFO **End training kitti_models/pv_rcnn_ssl(pv_rcnn_002_1)**
2023-05-02 03:09:48,117 INFO **Start evaluation kitti_models/pv_rcnn_ssl(pv_rcnn_002_1)** 2023-05-02 03:52:21,275 INFO * EPOCH 80 EVALUATION *** 2023-05-02 03:55:50,002 INFO * Performance of EPOCH 80 *** 2023-05-02 03:55:50,003 INFO Generate label finished(sec_per_example: 0.0554 second). 2023-05-02 03:55:50,003 INFO recall_roi_0.3: 0.936189 2023-05-02 03:55:50,003 INFO recall_rcnn_0.3: 0.935096 2023-05-02 03:55:50,003 INFO recall_roi_0.5: 0.888112 2023-05-02 03:55:50,003 INFO recall_rcnn_0.5: 0.890734 2023-05-02 03:55:50,003 INFO recall_roi_0.7: 0.638330 2023-05-02 03:55:50,003 INFO recall_rcnn_0.7: 0.678103 2023-05-02 03:55:50,005 INFO Average predicted number of objects(3769 samples): 25.002 2023-05-02 03:56:24,082 INFO Car AP@0.70, 0.70, 0.70: bbox AP:90.6938, 89.1181, 88.3390 bev AP:90.1095, 87.2880, 85.4988 3d AP:89.0338, 78.4787, 77.1978 aos AP:90.53, 88.74, 87.83 Car AP_R40@0.70, 0.70, 0.70: bbox AP:96.6066, 92.1031, 91.3177 bev AP:93.6315, 88.5259, 87.6684 3d AP:92.2000, 81.6350, 77.4183 aos AP:96.40, 91.67, 90.74 Car AP@0.70, 0.50, 0.50: bbox AP:90.6938, 89.1181, 88.3390 bev AP:90.6515, 89.2227, 88.7395 3d AP:90.6515, 89.1848, 88.6581 aos AP:90.53, 88.74, 87.83 Car AP_R40@0.70, 0.50, 0.50: bbox AP:96.6066, 92.1031, 91.3177 bev AP:96.6066, 94.2003, 93.7352 3d AP:96.5737, 94.0834, 91.8478 aos AP:96.40, 91.67, 90.74 Pedestrian AP@0.50, 0.50, 0.50: bbox AP:1.9447, 2.0404, 2.0384 bev AP:1.9528, 1.7286, 1.6709 3d AP:1.7251, 1.6078, 1.5052 aos AP:1.24, 1.23, 1.21 Pedestrian AP_R40@0.50, 0.50, 0.50: bbox AP:1.9414, 1.9780, 2.0570 bev AP:1.8528, 1.7226, 1.6942 3d AP:1.6922, 1.5224, 1.3815 aos AP:1.18, 1.16, 1.17 Pedestrian AP@0.50, 0.25, 0.25: bbox AP:1.9447, 2.0404, 2.0384 bev AP:2.3440, 2.4634, 2.5129 3d AP:2.3357, 2.4485, 2.4824 aos AP:1.24, 1.23, 1.21 Pedestrian AP_R40@0.50, 0.25, 0.25: bbox AP:1.9414, 1.9780, 2.0570 bev AP:2.2819, 2.4292, 2.5618 3d AP:2.2741, 2.4111, 2.5277 aos AP:1.18, 1.16, 1.17 Cyclist AP@0.50, 0.50, 0.50: bbox AP:87.3605, 67.0018, 65.3337 bev AP:83.9256, 62.7011, 56.2899 3d AP:82.8759, 61.4383, 55.8087 aos AP:62.79, 50.93, 50.06 Cyclist AP_R40@0.50, 0.50, 0.50: bbox AP:88.6444, 66.3021, 63.8253 bev AP:85.1200, 61.9127, 57.7433 3d AP:82.7524, 59.5972, 55.5042 aos AP:60.75, 47.69, 46.40 Cyclist AP@0.50, 0.25, 0.25: bbox AP:87.3605, 67.0018, 65.3337 bev AP:86.1182, 64.5536, 62.4281 3d AP:86.1182, 64.5536, 62.4281 aos AP:62.79, 50.93, 50.06 Cyclist AP_R40@0.50, 0.25, 0.25: bbox AP:88.6444, 66.3021, 63.8253 bev AP:89.1390, 65.1725, 60.9480 3d AP:89.1390, 65.1725, 60.9480 aos AP:60.75, 47.69, 46.40
2023-05-02 03:56:24,086 INFO Result is save to /workspace/HSSDA/output/kitti_models/pv_rcnn_ssl/pv_rcnn_002_1/eval/eval_with_train/epoch_80/val 2023-05-02 03:56:24,086 INFO ****Evaluation done.***** 2023-05-02 03:56:24,118 INFO Epoch 80 has been evaluated 2023-05-02 03:56:54,152 INFO **End evaluation kitti_models/pv_rcnn_ssl(pv_rcnn_002_1)**
mAP of pedestrian is strangely too low. I can't figure out why.
Sorry for the late reply. It seems that the performance of car and cyclists is normal, but the low performance for pedestrians should be due to a high number of incorrect pseudo-labels. I'm not sure why this is happening, but it could be due to the batch size. You can try increasing the INTERVAL setting in cfgs/kitti_models/pv_rcnn_ssl.yaml to a larger value, such as 10 or 20, and see how the experiment results turn out.
Okay, I'll try it. Thank you so much and I'll tell you when the result comes up.
I set the interval to 10 as you suggested and then turned the training around, but it didn't work. I visualized it and found that there were too many false positives for pedestrian. I think I'm having a problem with Pseudo label mining, and I'm thinking of excluding pedestrian in gt sampling to see if this is correct. What do you think about it? And here are my train log and the visualized scene.
2023-05-06 03:47:51,330 INFO **Start logging**
2023-05-06 03:47:51,331 INFO CUDA_VISIBLE_DEVICES=ALL
2023-05-06 03:47:51,331 INFO cfg_file cfgs/kitti_models/pv_rcnn_ssl.yaml
2023-05-06 03:47:51,331 INFO batch_size 6
2023-05-06 03:47:51,331 INFO epochs 80
2023-05-06 03:47:51,331 INFO workers 4
2023-05-06 03:47:51,331 INFO extra_tag pv_rcnn_002_1_v4
2023-05-06 03:47:51,331 INFO ckpt None
2023-05-06 03:47:51,331 INFO pretrained_model pretrained_weights/pretrained_pv_rcnn_002_1.pth
2023-05-06 03:47:51,331 INFO labeled_frame_idx ../data/kitti/semi_supervised_data_3dioumatch/scene_0.02/1/label_idx.txt
2023-05-06 03:47:51,331 INFO launcher none
2023-05-06 03:47:51,331 INFO tcp_port 18888
2023-05-06 03:47:51,331 INFO sync_bn False
2023-05-06 03:47:51,331 INFO fix_random_seed False
2023-05-06 03:47:51,331 INFO ckpt_save_interval 1
2023-05-06 03:47:51,331 INFO local_rank 0
2023-05-06 03:47:51,331 INFO max_ckpt_save_num 100
2023-05-06 03:47:51,331 INFO merge_all_iters_to_one_epoch False
2023-05-06 03:47:51,332 INFO set_cfgs None
2023-05-06 03:47:51,332 INFO max_waiting_mins 0
2023-05-06 03:47:51,332 INFO start_epoch 0
2023-05-06 03:47:51,332 INFO num_epochs_to_eval 10
2023-05-06 03:47:51,332 INFO save_to_file False
2023-05-06 03:47:51,332 INFO cfg.ROOT_DIR: /workspace/HSSDA
2023-05-06 03:47:51,332 INFO cfg.LOCAL_RANK: 0
2023-05-06 03:47:51,332 INFO cfg.CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
2023-05-06 03:47:51,332 INFO
cfg.DATA_CONFIG = edict()
2023-05-06 03:47:51,332 INFO cfg.DATA_CONFIG.DATASET: KittiDataset
2023-05-06 03:47:51,332 INFO cfg.DATA_CONFIG.DATA_PATH: ../data/kitti
2023-05-06 03:47:51,332 INFO cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1]
2023-05-06 03:47:51,332 INFO
cfg.DATA_CONFIG.DATA_SPLIT = edict()
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.DATA_SPLIT.train: train
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.DATA_SPLIT.test: val
2023-05-06 03:47:51,333 INFO
cfg.DATA_CONFIG.INFO_PATH = edict()
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.INFO_PATH.train: ['kitti_infos_train.pkl']
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.INFO_PATH.test: ['kitti_infos_val.pkl']
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.GET_ITEM_LIST: ['points']
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.FOV_POINTS_ONLY: True
2023-05-06 03:47:51,333 INFO
cfg.DATA_CONFIG.DATA_AUGMENTOR = edict()
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['placeholder']
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'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:15', 'Pedestrian:10', 'Cyclist:10'], 'NUM_POINT_FEATURES': 4, 'DATABASE_WITH_FAKELIDAR': False, 'REMOVE_EXTRA_WIDTH': [0.0, 0.0, 0.0], 'LIMIT_WHOLE_SCENE': False}, {'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]}]
2023-05-06 03:47:51,333 INFO
cfg.DATA_CONFIG.POINT_FEATURE_ENCODING = edict()
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z', 'intensity']
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity']
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG.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}}]
2023-05-06 03:47:51,333 INFO cfg.DATA_CONFIG._BASECONFIG: cfgs/dataset_configs/kitti_dataset.yaml
2023-05-06 03:47:51,333 INFO
cfg.MODEL = edict()
2023-05-06 03:47:51,334 INFO cfg.MODEL.NAME: PVRCNNSSL
2023-05-06 03:47:51,334 INFO
cfg.MODEL.VFE = edict()
2023-05-06 03:47:51,334 INFO cfg.MODEL.VFE.NAME: MeanVFE
2023-05-06 03:47:51,334 INFO
cfg.MODEL.BACKBONE_3D = edict()
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_3D.NAME: VoxelBackBone8x
2023-05-06 03:47:51,334 INFO
cfg.MODEL.MAP_TO_BEV = edict()
2023-05-06 03:47:51,334 INFO cfg.MODEL.MAP_TO_BEV.NAME: HeightCompression
2023-05-06 03:47:51,334 INFO cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 256
2023-05-06 03:47:51,334 INFO
cfg.MODEL.BACKBONE_2D = edict()
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_2D.NAME: BaseBEVBackbone
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [5, 5]
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [1, 2]
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [128, 256]
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2]
2023-05-06 03:47:51,334 INFO cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [256, 256]
2023-05-06 03:47:51,334 INFO
cfg.MODEL.DENSE_HEAD = edict()
2023-05-06 03:47:51,334 INFO cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle
2023-05-06 03:47:51,334 INFO cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False
2023-05-06 03:47:51,334 INFO cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True
2023-05-06 03:47:51,334 INFO cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.ANCHOR_GENERATOR_CONFIG: [{'class_name': 'Car', '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, 'matched_threshold': 0.6, 'unmatched_threshold': 0.45}, {'class_name': 'Pedestrian', '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, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}, {'class_name': 'Cyclist', '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, 'matched_threshold': 0.5, 'unmatched_threshold': 0.35}]
2023-05-06 03:47:51,335 INFO
cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG = edict()
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder
2023-05-06 03:47:51,335 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG = edict()
2023-05-06 03:47:51,335 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2
2023-05-06 03:47:51,335 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2023-05-06 03:47:51,335 INFO
cfg.MODEL.PFE = edict()
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.NAME: VoxelSetAbstraction
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.POINT_SOURCE: raw_points
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.NUM_KEYPOINTS: 2048
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.NUM_OUTPUT_FEATURES: 128
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SAMPLE_METHOD: FPS
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.FEATURES_SOURCE: ['bev', 'x_conv1', 'x_conv2', 'x_conv3', 'x_conv4', 'raw_points']
2023-05-06 03:47:51,336 INFO
cfg.MODEL.PFE.SA_LAYER = edict()
2023-05-06 03:47:51,336 INFO
cfg.MODEL.PFE.SA_LAYER.raw_points = edict()
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.MLPS: [[16, 16], [16, 16]]
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.POOL_RADIUS: [0.4, 0.8]
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.NSAMPLE: [16, 16]
2023-05-06 03:47:51,336 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv1 = edict()
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.DOWNSAMPLE_FACTOR: 1
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.MLPS: [[16, 16], [16, 16]]
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.POOL_RADIUS: [0.4, 0.8]
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.NSAMPLE: [16, 16]
2023-05-06 03:47:51,336 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv2 = edict()
2023-05-06 03:47:51,336 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.DOWNSAMPLE_FACTOR: 2
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.MLPS: [[32, 32], [32, 32]]
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.POOL_RADIUS: [0.8, 1.2]
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.NSAMPLE: [16, 32]
2023-05-06 03:47:51,337 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv3 = edict()
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.DOWNSAMPLE_FACTOR: 4
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.MLPS: [[64, 64], [64, 64]]
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.POOL_RADIUS: [1.2, 2.4]
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.NSAMPLE: [16, 32]
2023-05-06 03:47:51,337 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv4 = edict()
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.DOWNSAMPLE_FACTOR: 8
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.MLPS: [[64, 64], [64, 64]]
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.POOL_RADIUS: [2.4, 4.8]
2023-05-06 03:47:51,337 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.NSAMPLE: [16, 32]
2023-05-06 03:47:51,337 INFO
cfg.MODEL.POINT_HEAD = edict()
2023-05-06 03:47:51,337 INFO cfg.MODEL.POINT_HEAD.NAME: PointHeadSimple
2023-05-06 03:47:51,337 INFO cfg.MODEL.POINT_HEAD.CLS_FC: [256, 256]
2023-05-06 03:47:51,337 INFO cfg.MODEL.POINT_HEAD.CLASS_AGNOSTIC: True
2023-05-06 03:47:51,337 INFO cfg.MODEL.POINT_HEAD.USE_POINT_FEATURES_BEFORE_FUSION: True
2023-05-06 03:47:51,338 INFO
cfg.MODEL.POINT_HEAD.TARGET_CONFIG = edict()
2023-05-06 03:47:51,338 INFO cfg.MODEL.POINT_HEAD.TARGET_CONFIG.GT_EXTRA_WIDTH: [0.2, 0.2, 0.2]
2023-05-06 03:47:51,338 INFO
cfg.MODEL.POINT_HEAD.LOSS_CONFIG = edict()
2023-05-06 03:47:51,338 INFO cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_REG: smooth-l1
2023-05-06 03:47:51,338 INFO
cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-05-06 03:47:51,338 INFO cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.point_cls_weight: 1.0
2023-05-06 03:47:51,338 INFO
cfg.MODEL.ROI_HEAD = edict()
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.NAME: PVRCNNHead
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.CLASS_AGNOSTIC: True
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.SHARED_FC: [256, 256]
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.CLS_FC: [256, 256]
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.REG_FC: [256, 256]
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.DP_RATIO: 0.3
2023-05-06 03:47:51,338 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG = edict()
2023-05-06 03:47:51,338 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN = edict()
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_TYPE: nms_gpu
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.MULTI_CLASSES_NMS: False
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_PRE_MAXSIZE: 9000
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_POST_MAXSIZE: 512
2023-05-06 03:47:51,338 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_THRESH: 0.8
2023-05-06 03:47:51,339 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST = edict()
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_TYPE: nms_gpu
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.MULTI_CLASSES_NMS: False
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_PRE_MAXSIZE: 1024
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_POST_MAXSIZE: 100
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_THRESH: 0.7
2023-05-06 03:47:51,339 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL = edict()
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.GRID_SIZE: 6
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.MLPS: [[64, 64], [64, 64]]
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_RADIUS: [0.8, 1.6]
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.NSAMPLE: [16, 16]
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_METHOD: max_pool
2023-05-06 03:47:51,339 INFO
cfg.MODEL.ROI_HEAD.TARGET_CONFIG = edict()
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.BOX_CODER: ResidualCoder
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.ROI_PER_IMAGE: 128
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.FG_RATIO: 0.5
2023-05-06 03:47:51,339 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.SAMPLE_ROI_BY_EACH_CLASS: True
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_SCORE_TYPE: roi_iou
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_FG_THRESH: 0.75
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH: 0.25
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH_LO: 0.1
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.HARD_BG_RATIO: 0.8
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.REG_FG_THRESH: 0.55
2023-05-06 03:47:51,340 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG = edict()
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CLS_LOSS: BinaryCrossEntropy
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.REG_LOSS: smooth-l1
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CORNER_LOSS_REGULARIZATION: True
2023-05-06 03:47:51,340 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_cls_weight: 1.0
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_reg_weight: 1.0
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_corner_weight: 1.0
2023-05-06 03:47:51,340 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.code_weights: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
2023-05-06 03:47:51,340 INFO
cfg.MODEL.POST_PROCESSING = edict()
2023-05-06 03:47:51,340 INFO cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
2023-05-06 03:47:51,340 INFO cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.1
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti
2023-05-06 03:47:51,341 INFO
cfg.MODEL.POST_PROCESSING.NMS_CONFIG = edict()
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.1
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096
2023-05-06 03:47:51,341 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500
2023-05-06 03:47:51,341 INFO
cfg.OPTIMIZATION = edict()
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 2
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.NUM_EPOCHS: 80
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.LR: 0.01
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.MOMENTUM: 0.9
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.MOMS: [0.95, 0.85]
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.PCT_START: 0.4
2023-05-06 03:47:51,341 INFO cfg.OPTIMIZATION.DIV_FACTOR: 10
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45]
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.LR_DECAY: 0.1
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.LR_CLIP: 1e-07
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.LR_WARMUP: False
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.WARMUP_EPOCH: 1
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10
2023-05-06 03:47:51,342 INFO cfg.OPTIMIZATION.INTERVAL: 10
2023-05-06 03:47:51,342 INFO cfg.TAG: pv_rcnn_ssl
2023-05-06 03:47:51,342 INFO cfg.EXP_GROUP_PATH: kitti_models
2023-05-06 03:47:51,354 INFO Database filter by min points Car: 311 => 292
2023-05-06 03:47:51,355 INFO Database filter by min points Pedestrian: 55 => 55
2023-05-06 03:47:51,355 INFO Database filter by min points Cyclist: 14 => 14
2023-05-06 03:47:51,355 INFO Database filter by difficulty Car: 292 => 243
2023-05-06 03:47:51,356 INFO Database filter by difficulty Pedestrian: 55 => 51
2023-05-06 03:47:51,356 INFO Database filter by difficulty Cyclist: 14 => 13
2023-05-06 03:47:51,357 INFO Loading KITTI dataset
2023-05-06 03:47:51,502 INFO Total samples for KITTI dataset: 3712
2023-05-06 03:47:52,662 INFO ==> Loading parameters from checkpoint pretrained_weights/pretrained_pv_rcnn_002_1.pth to GPU
2023-05-06 03:47:52,842 INFO ==> Checkpoint trained from version: pcdet+0.5.2+30822d0
2023-05-06 03:47:59,984 INFO ==> Done (loaded 735/735)
2023-05-06 03:47:59,989 INFO PVRCNNSSL(
(pv_rcnn): PVRCNN(
(vfe): MeanVFE()
(backbone_3d): VoxelBackBone8x(
(conv_input): SparseSequential(
(0): SubMConv3d(4, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(conv1): SparseSequential(
(0): SparseSequential(
(0): SubMConv3d(16, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv2): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(16, 32, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv3): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(32, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv4): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(64, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[0, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv_out): SparseSequential(
(0): SparseConv3d(64, 128, kernel_size=[3, 1, 1], stride=[2, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(map_to_bev_module): HeightCompression()
(pfe): VoxelSetAbstraction(
(SA_layers): ModuleList(
(0): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(1): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(2): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(3): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
)
(SA_rawpoints): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(vsa_point_feature_fusion): Sequential(
(0): Linear(in_features=640, out_features=128, bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(backbone_2d): BaseBEVBackbone(
(blocks): ModuleList(
(0): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), bias=False)
(2): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
(1): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)
(2): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
)
(deblocks): ModuleList(
(0): Sequential(
(0): ConvTranspose2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): Sequential(
(0): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
)
(dense_head): AnchorHeadSingle(
(cls_loss_func): SigmoidFocalClassificationLoss()
(reg_loss_func): WeightedSmoothL1Loss()
(dir_loss_func): WeightedCrossEntropyLoss()
(conv_cls): Conv2d(512, 18, kernel_size=(1, 1), stride=(1, 1))
(conv_box): Conv2d(512, 42, kernel_size=(1, 1), stride=(1, 1))
(conv_dir_cls): Conv2d(512, 12, kernel_size=(1, 1), stride=(1, 1))
)
(point_head): PointHeadSimple(
(cls_loss_func): SigmoidFocalClassificationLoss()
(cls_layers): Sequential(
(0): Linear(in_features=640, out_features=256, bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Linear(in_features=256, out_features=256, bias=False)
(4): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
(6): Linear(in_features=256, out_features=1, bias=True)
)
)
(roi_head): PVRCNNHead(
(proposal_target_layer): ProposalTargetLayer()
(reg_loss_func): WeightedSmoothL1Loss()
(roi_grid_pool_layer): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(shared_fc_layer): Sequential(
(0): Conv1d(27648, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
)
(cls_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 1, kernel_size=(1,), stride=(1,))
)
(reg_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 7, kernel_size=(1,), stride=(1,))
)
)
)
(pv_rcnn_ema): PVRCNN(
(vfe): MeanVFE()
(backbone_3d): VoxelBackBone8x(
(conv_input): SparseSequential(
(0): SubMConv3d(4, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(conv1): SparseSequential(
(0): SparseSequential(
(0): SubMConv3d(16, 16, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(16, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv2): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(16, 32, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(32, 32, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(32, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv3): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(32, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[1, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv4): SparseSequential(
(0): SparseSequential(
(0): SparseConv3d(64, 64, kernel_size=[3, 3, 3], stride=[2, 2, 2], padding=[0, 1, 1], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(2): SparseSequential(
(0): SubMConv3d(64, 64, kernel_size=[3, 3, 3], stride=[1, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(64, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(conv_out): SparseSequential(
(0): SparseConv3d(64, 128, kernel_size=[3, 1, 1], stride=[2, 1, 1], padding=[0, 0, 0], dilation=[1, 1, 1], output_padding=[0, 0, 0], bias=False, algo=ConvAlgo.MaskImplicitGemm)
(1): BatchNorm1d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(map_to_bev_module): HeightCompression()
(pfe): VoxelSetAbstraction(
(SA_layers): ModuleList(
(0): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(19, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(1): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(35, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(32, 32, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(2): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(3): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(67, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
)
(SA_rawpoints): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(4, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(16, 16, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(16, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(vsa_point_feature_fusion): Sequential(
(0): Linear(in_features=640, out_features=128, bias=False)
(1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
)
)
(backbone_2d): BaseBEVBackbone(
(blocks): ModuleList(
(0): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(256, 128, kernel_size=(3, 3), stride=(1, 1), bias=False)
(2): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(128, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
(1): Sequential(
(0): ZeroPad2d((1, 1, 1, 1))
(1): Conv2d(128, 256, kernel_size=(3, 3), stride=(2, 2), bias=False)
(2): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(3): ReLU()
(4): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(5): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(8): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(9): ReLU()
(10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(11): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(12): ReLU()
(13): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(14): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(15): ReLU()
(16): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)
(17): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(18): ReLU()
)
)
(deblocks): ModuleList(
(0): Sequential(
(0): ConvTranspose2d(128, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
(1): Sequential(
(0): ConvTranspose2d(256, 256, kernel_size=(2, 2), stride=(2, 2), bias=False)
(1): BatchNorm2d(256, eps=0.001, momentum=0.01, affine=True, track_running_stats=True)
(2): ReLU()
)
)
)
(dense_head): AnchorHeadSingle(
(cls_loss_func): SigmoidFocalClassificationLoss()
(reg_loss_func): WeightedSmoothL1Loss()
(dir_loss_func): WeightedCrossEntropyLoss()
(conv_cls): Conv2d(512, 18, kernel_size=(1, 1), stride=(1, 1))
(conv_box): Conv2d(512, 42, kernel_size=(1, 1), stride=(1, 1))
(conv_dir_cls): Conv2d(512, 12, kernel_size=(1, 1), stride=(1, 1))
)
(point_head): PointHeadSimple(
(cls_loss_func): SigmoidFocalClassificationLoss()
(cls_layers): Sequential(
(0): Linear(in_features=640, out_features=256, bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Linear(in_features=256, out_features=256, bias=False)
(4): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
(6): Linear(in_features=256, out_features=1, bias=True)
)
)
(roi_head): PVRCNNHead(
(proposal_target_layer): ProposalTargetLayer()
(reg_loss_func): WeightedSmoothL1Loss()
(roi_grid_pool_layer): StackSAModuleMSG(
(groupers): ModuleList(
(0): QueryAndGroup()
(1): QueryAndGroup()
)
(mlps): ModuleList(
(0): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
(1): Sequential(
(0): Conv2d(131, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)
(4): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(5): ReLU()
)
)
)
(shared_fc_layer): Sequential(
(0): Conv1d(27648, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
)
(cls_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 1, kernel_size=(1,), stride=(1,))
)
(reg_layers): Sequential(
(0): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(1): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(2): ReLU()
(3): Dropout(p=0.3, inplace=False)
(4): Conv1d(256, 256, kernel_size=(1,), stride=(1,), bias=False)
(5): BatchNorm1d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)
(6): ReLU()
(7): Conv1d(256, 7, kernel_size=(1,), stride=(1,))
)
)
)
)
2023-05-06 03:47:59,998 INFO **Start training kitti_models/pv_rcnn_ssl(pv_rcnn_002_1_v4)**
2023-05-06 03:55:42,224 INFO Database filter by min points Car: 3846 => 3827
2023-05-06 03:55:42,224 INFO Database filter by min points Pedestrian: 254 => 254
2023-05-06 03:55:42,224 INFO Database filter by min points Cyclist: 37 => 37
2023-05-06 03:55:42,226 INFO Database filter by difficulty Car: 3827 => 3778
2023-05-06 03:55:42,227 INFO Database filter by difficulty Pedestrian: 254 => 250
2023-05-06 03:55:42,227 INFO Database filter by difficulty Cyclist: 37 => 36
2023-05-06 03:55:42,228 INFO Loading KITTI dataset
2023-05-06 03:55:42,366 INFO Total samples for KITTI dataset: 3712
2023-05-06 06:29:20,507 INFO Database filter by min points Car: 4257 => 4238
2023-05-06 06:29:20,508 INFO Database filter by min points Pedestrian: 351 => 351
2023-05-06 06:29:20,508 INFO Database filter by min points Cyclist: 76 => 76
2023-05-06 06:29:20,510 INFO Database filter by difficulty Car: 4238 => 4189
2023-05-06 06:29:20,511 INFO Database filter by difficulty Pedestrian: 351 => 347
2023-05-06 06:29:20,511 INFO Database filter by difficulty Cyclist: 76 => 75
2023-05-06 06:29:20,512 INFO Loading KITTI dataset
2023-05-06 06:29:20,651 INFO Total samples for KITTI dataset: 3712
2023-05-06 09:00:31,603 INFO Database filter by min points Car: 4544 => 4525
2023-05-06 09:00:31,603 INFO Database filter by min points Pedestrian: 441 => 441
2023-05-06 09:00:31,604 INFO Database filter by min points Cyclist: 98 => 98
2023-05-06 09:00:31,607 INFO Database filter by difficulty Car: 4525 => 4476
2023-05-06 09:00:31,607 INFO Database filter by difficulty Pedestrian: 441 => 437
2023-05-06 09:00:31,607 INFO Database filter by difficulty Cyclist: 98 => 97
2023-05-06 09:00:31,609 INFO Loading KITTI dataset
2023-05-06 09:00:31,753 INFO Total samples for KITTI dataset: 3712
2023-05-06 11:31:06,119 INFO Database filter by min points Car: 4682 => 4663
2023-05-06 11:31:06,120 INFO Database filter by min points Pedestrian: 490 => 490
2023-05-06 11:31:06,120 INFO Database filter by min points Cyclist: 120 => 120
2023-05-06 11:31:06,123 INFO Database filter by difficulty Car: 4663 => 4614
2023-05-06 11:31:06,123 INFO Database filter by difficulty Pedestrian: 490 => 486
2023-05-06 11:31:06,123 INFO Database filter by difficulty Cyclist: 120 => 119
2023-05-06 11:31:06,125 INFO Loading KITTI dataset
2023-05-06 11:31:06,270 INFO Total samples for KITTI dataset: 3712
2023-05-06 14:01:47,877 INFO Database filter by min points Car: 4932 => 4913
2023-05-06 14:01:47,878 INFO Database filter by min points Pedestrian: 535 => 535
2023-05-06 14:01:47,878 INFO Database filter by min points Cyclist: 141 => 141
2023-05-06 14:01:47,881 INFO Database filter by difficulty Car: 4913 => 4864
2023-05-06 14:01:47,881 INFO Database filter by difficulty Pedestrian: 535 => 531
2023-05-06 14:01:47,882 INFO Database filter by difficulty Cyclist: 141 => 140
2023-05-06 14:01:47,883 INFO Loading KITTI dataset
2023-05-06 14:01:48,027 INFO Total samples for KITTI dataset: 3712
2023-05-06 16:33:13,582 INFO Database filter by min points Car: 5077 => 5058
2023-05-06 16:33:13,583 INFO Database filter by min points Pedestrian: 570 => 570
2023-05-06 16:33:13,583 INFO Database filter by min points Cyclist: 151 => 151
2023-05-06 16:33:13,587 INFO Database filter by difficulty Car: 5058 => 5009
2023-05-06 16:33:13,587 INFO Database filter by difficulty Pedestrian: 570 => 566
2023-05-06 16:33:13,587 INFO Database filter by difficulty Cyclist: 151 => 150
2023-05-06 16:33:13,589 INFO Loading KITTI dataset
2023-05-06 16:33:13,738 INFO Total samples for KITTI dataset: 3712
2023-05-06 19:02:58,833 INFO Database filter by min points Car: 5168 => 5149
2023-05-06 19:02:58,833 INFO Database filter by min points Pedestrian: 602 => 602
2023-05-06 19:02:58,834 INFO Database filter by min points Cyclist: 171 => 171
2023-05-06 19:02:58,837 INFO Database filter by difficulty Car: 5149 => 5100
2023-05-06 19:02:58,837 INFO Database filter by difficulty Pedestrian: 602 => 598
2023-05-06 19:02:58,838 INFO Database filter by difficulty Cyclist: 171 => 170
2023-05-06 19:02:58,839 INFO Loading KITTI dataset
2023-05-06 19:02:58,984 INFO Total samples for KITTI dataset: 3712
2023-05-06 21:34:54,402 INFO Database filter by min points Car: 5231 => 5212
2023-05-06 21:34:54,402 INFO Database filter by min points Pedestrian: 635 => 635
2023-05-06 21:34:54,402 INFO Database filter by min points Cyclist: 185 => 185
2023-05-06 21:34:54,405 INFO Database filter by difficulty Car: 5212 => 5163
2023-05-06 21:34:54,406 INFO Database filter by difficulty Pedestrian: 635 => 631
2023-05-06 21:34:54,406 INFO Database filter by difficulty Cyclist: 185 => 184
2023-05-06 21:34:54,408 INFO Loading KITTI dataset
2023-05-06 21:34:54,555 INFO Total samples for KITTI dataset: 3712
2023-05-07 00:02:11,134 INFO **End training kitti_models/pv_rcnn_ssl(pv_rcnn_002_1_v4)**
2023-05-07 00:02:11,134 INFO **Start evaluation kitti_models/pv_rcnn_ssl(pv_rcnn_002_1_v4)** 2023-05-07 00:02:11,138 INFO Loading KITTI dataset 2023-05-07 00:02:11,283 INFO Total samples for KITTI dataset: 3769 2023-05-07 00:42:34,089 INFO ==> Loading parameters from checkpoint /workspace/HSSDA/output/kitti_models/pv_rcnn_ssl/pv_rcnn_002_1_v4/ckpt/checkpoint_epoch_80.pth to GPU 2023-05-07 00:42:34,317 INFO ==> Checkpoint trained from version: pcdet+0.5.2+30822d0 2023-05-07 00:42:46,274 INFO ==> Done (loaded 735/735) 2023-05-07 00:42:46,286 INFO * EPOCH 80 EVALUATION *** 2023-05-07 00:46:02,836 INFO * Performance of EPOCH 80 *** 2023-05-07 00:46:02,836 INFO Generate label finished(sec_per_example: 0.0521 second). 2023-05-07 00:46:02,836 INFO recall_roi_0.3: 0.934391 2023-05-07 00:46:02,836 INFO recall_rcnn_0.3: 0.934030 2023-05-07 00:46:02,836 INFO recall_roi_0.5: 0.890050 2023-05-07 00:46:02,836 INFO recall_rcnn_0.5: 0.893655 2023-05-07 00:46:02,836 INFO recall_roi_0.7: 0.647441 2023-05-07 00:46:02,836 INFO recall_rcnn_0.7: 0.685652 2023-05-07 00:46:02,838 INFO Average predicted number of objects(3769 samples): 23.771 2023-05-07 00:46:35,403 INFO Car AP@0.70, 0.70, 0.70: bbox AP:90.6737, 89.2257, 88.5346 bev AP:90.1903, 87.4166, 86.0930 3d AP:89.0955, 78.5786, 77.2564 aos AP:90.58, 88.86, 88.00 Car AP_R40@0.70, 0.70, 0.70: bbox AP:96.6955, 92.2634, 91.6387 bev AP:95.7996, 88.7051, 87.9711 3d AP:92.2759, 81.6268, 77.5517 aos AP:96.57, 91.85, 91.04 Car AP@0.70, 0.50, 0.50: bbox AP:90.6737, 89.2257, 88.5346 bev AP:90.6562, 89.3285, 88.8928 3d AP:90.6562, 89.2946, 88.8196 aos AP:90.58, 88.86, 88.00 Car AP_R40@0.70, 0.50, 0.50: bbox AP:96.6955, 92.2634, 91.6387 bev AP:96.7381, 94.4374, 94.0602 3d AP:96.7128, 94.3348, 92.0447 aos AP:96.57, 91.85, 91.04 Pedestrian AP@0.50, 0.50, 0.50: bbox AP:13.7083, 11.9690, 11.5980 bev AP:14.4148, 12.3542, 11.7175 3d AP:14.3175, 12.1915, 11.3892 aos AP:12.15, 10.79, 10.49 Pedestrian AP_R40@0.50, 0.50, 0.50: bbox AP:6.6930, 4.7721, 4.2956 bev AP:7.3562, 5.3358, 4.5503 3d AP:7.2059, 5.1170, 4.2822 aos AP:5.10, 3.52, 3.07 Pedestrian AP@0.50, 0.25, 0.25: bbox AP:13.7083, 11.9690, 11.5980 bev AP:15.1658, 13.3535, 12.4932 3d AP:15.1578, 13.3076, 12.4469 aos AP:12.15, 10.79, 10.49 Pedestrian AP_R40@0.50, 0.25, 0.25: bbox AP:6.6930, 4.7721, 4.2956 bev AP:8.2055, 6.2812, 5.5518 3d AP:8.1966, 6.1792, 5.4179 aos AP:5.10, 3.52, 3.07 Cyclist AP@0.50, 0.50, 0.50: bbox AP:88.0522, 72.8587, 66.6439 bev AP:86.5022, 68.6666, 63.0746 3d AP:84.1040, 62.8968, 60.8126 aos AP:87.82, 72.17, 66.05 Cyclist AP_R40@0.50, 0.50, 0.50: bbox AP:92.8674, 73.2060, 68.8738 bev AP:90.8429, 68.9452, 64.5776 3d AP:86.3638, 64.1391, 59.9905 aos AP:92.60, 72.52, 68.17 Cyclist AP@0.50, 0.25, 0.25: bbox AP:88.0522, 72.8587, 66.6439 bev AP:87.1152, 70.1769, 64.1648 3d AP:87.1152, 70.1769, 64.1648 aos AP:87.82, 72.17, 66.05 Cyclist AP_R40@0.50, 0.25, 0.25: bbox AP:92.8674, 73.2060, 68.8738 bev AP:91.7517, 70.2113, 65.9200 3d AP:91.7517, 70.2113, 65.9200 aos AP:92.60, 72.52, 68.17
2023-05-07 00:46:35,406 INFO Result is save to /workspace/HSSDA/output/kitti_models/pv_rcnn_ssl/pv_rcnn_002_1_v4/eval/eval_with_train/epoch_80/val 2023-05-07 00:46:35,406 INFO ****Evaluation done.***** 2023-05-07 00:46:35,431 INFO Epoch 80 has been evaluated 2023-05-07 00:47:05,463 INFO **End evaluation kitti_models/pv_rcnn_ssl(pv_rcnn_002_1_v4)**
Sorry for the late reply. I find some people also have the problem of low pedestrian performance. I will recheck the released code when I'm free. This is my training log, I hope it can help you. log_train_20230327-202350.txt
I also met the same low Ped performance problem when I reproduce 2% and 20% setting experiments.
I also met the same low Ped performance problem when I reproduce 2% and 20% setting experiments.
What is the batch size you set to?
I also met the same low Ped performance problem when I reproduce 2% and 20% setting experiments.
What is the batch size you set to?
I also met the same low Ped performance problem when I reproduce 2% and 20% setting experiments.
What is the batch size you set to?
batch size == 10
Sorry for the late reply. @dof-pikes @IamJiyong I have fixed some bugs and also validated the performance on pedestrians with low batch size. You can update the code and give it another try.
Thanks for your work. Can you release the difference before and after the code update? @azhuantou
I think the problem has solved! Thank you so much! @azhuantou
I would recommend you use some folder comparison tool such as Meld to compare the difference. @dof-pikes I will closed the issue. Feel free to reopen it if you have any question.
Thank you for your great work!
I just ran your implementation, but I couldn't reproduce the performance of the model that you suggested on your paper.
My environment is as follows :
GPU : RTX 4090 CUDA : 11.8 Pytorch : 1.13.0 (I'm using NVIDIA container toolkit)
I followed the commands you wrote on README.md, but I set batch_size as 4 due to the graphic card memory.
The performance I got is as follows :
(IoU 0.7, 0.5, 0.5 / recall 40 / hard, moderate, easy)
Pretrained PV-RCNN Car : 87.9537, 76.3818, 71.5516 Ped. : 41.6893, 38.2420, 34.3539 Cyc. : 65.4243, 43.2410, 40.8903 HSSDA (epoch.80) Car : 87.4405, 75.7870, 71.0323 Ped. : 45.2401, 41.0364, 36.4965 Cyc. : 67.2083, 44.5285, 40.9167
I've got similar issue when I attempt to run 3DIoUMatch.
So I'm assuming that my environment is the cause.
But nothing matters when I train the model with fully supervised method. (without any semi-supervised pipeline)
Can you help me with this?