azhuantou / HSSDA

[CVPR 2023] Hierarchical Supervision and Shuffle Data Augmentation for 3D Semi-Supervised Object Detection
Apache License 2.0
63 stars 4 forks source link

I cannot reproduce the performance that you suggested #3

Closed IamJiyong closed 1 year ago

IamJiyong commented 1 year ago

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?

dof-pikes commented 1 year ago

加个QQ交流一下? 1206961978

IamJiyong commented 1 year ago

加个QQ交流一下? 1206961978

I'm sorry, but I don't speak chinese and I don't know what QQ is.

dof-pikes commented 1 year ago

How long does this experiment need to run for each epoch?

azhuantou commented 1 year ago

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

IamJiyong commented 1 year ago

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.

IamJiyong commented 1 year ago

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.

azhuantou commented 1 year ago

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.

IamJiyong commented 1 year ago

Okay, I'll try it. Thank you so much and I'll tell you when the result comes up.

IamJiyong commented 1 year ago

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)**

image

azhuantou commented 1 year ago

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

dof-pikes commented 1 year ago

I also met the same low Ped performance problem when I reproduce 2% and 20% setting experiments.

IamJiyong commented 1 year ago

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?

dof-pikes commented 1 year ago

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

azhuantou commented 1 year ago

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.

dof-pikes commented 1 year ago

Thanks for your work. Can you release the difference before and after the code update? @azhuantou

IamJiyong commented 1 year ago

I think the problem has solved! Thank you so much! @azhuantou

azhuantou commented 1 year ago

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.