CVMI-Lab / ST3D

(CVPR 2021 & T-PAMI 2022) ST3D: Self-training for Unsupervised Domain Adaptation on 3D Object Detection & ST3D++: Denoised Self-training for Unsupervised Domain Adaptation on 3D Object Detection
Apache License 2.0
297 stars 47 forks source link

Hope for Update to Latest OpenPCDet version #45

Closed SikaStar closed 2 years ago

SikaStar commented 2 years ago

Hi, do you plan to update this project to the latest OpenPCDet version (e.g., OpenPCDet-0.5+)?

jihanyang commented 2 years ago

Hello, I do have plan to update it to latest OpenPCDet version, since it can already support different GPU and CUDA version after I update it to openpcdet v0.3. However, we appreciate any contribution for this objective.

SikaStar commented 2 years ago

Hello, I do have plan to update it to latest OpenPCDet version, since it can already support different GPU and CUDA version after I update it to openpcdet v0.3. However, we appreciate any contribution for this objective.

Hi, thanks for your reply! I have tried to use spconv-2.x instead of spconv-1.x, but the performance is lower than your reprted. For example, on nuscens->kitti (SECOND-IoU, with ROS), Car@R11=25.2, Car@R40=21.5 (with spconv-2.x) vs Car@R11=28.3, Car@40=25.4 (with spconv-1.x as you use). I don't know whether the lower performance comes form the higher spconv version?

jihanyang commented 2 years ago

Hello, could you present the evaluation log? and have you change the code to suit spconv2.x?

SikaStar commented 2 years ago

Hello, could you present the evaluation log? and have you change the code to suit spconv2.x?

Hi, the following is the evaluation log. I have changed the code to suit spconv2.x, which follows the implementation in OpenPCDet-0.5.2. Thanks for your help!

[2022-06-10 10:20:37,960 test.py 175 INFO] **Start logging** [2022-06-10 10:20:37,960 test.py 177 INFO] CUDA_VISIBLE_DEVICES=ALL [2022-06-10 10:20:37,961 test.py 182 INFO] cfg_file ./cfgs/da-nuscenes-kitti_models/secondiou/secondiou_old_anchor_ros.yaml [2022-06-10 10:20:37,961 test.py 182 INFO] batch_size 16 [2022-06-10 10:20:37,961 test.py 182 INFO] epochs 80 [2022-06-10 10:20:37,961 test.py 182 INFO] workers 4 [2022-06-10 10:20:37,961 test.py 182 INFO] extra_tag default [2022-06-10 10:20:37,961 test.py 182 INFO] ckpt ../outputs/da-nuscenes-kitti_models/secondiou/secondiou_old_anchor_ros/default/ckpt/checkpoint_epoch_50.pth [2022-06-10 10:20:37,961 test.py 182 INFO] launcher none [2022-06-10 10:20:37,961 test.py 182 INFO] tcp_port 18888 [2022-06-10 10:20:37,961 test.py 182 INFO] local_rank 0 [2022-06-10 10:20:37,961 test.py 182 INFO] set_cfgs ['DATA_CONFIG_TAR.FOV_POINTS_ONLY', 'True'] [2022-06-10 10:20:37,961 test.py 182 INFO] max_waiting_mins 30 [2022-06-10 10:20:37,961 test.py 182 INFO] start_epoch 0 [2022-06-10 10:20:37,961 test.py 182 INFO] eval_tag default [2022-06-10 10:20:37,961 test.py 182 INFO] eval_all False [2022-06-10 10:20:37,961 test.py 182 INFO] ckpt_dir None [2022-06-10 10:20:37,961 test.py 182 INFO] save_to_file False [2022-06-10 10:20:37,961 config.py 13 INFO] cfg.ROOT_DIR: /ssd2/daiyongxing/3D-Detection/ST3D-st3d_v0.3 [2022-06-10 10:20:37,961 config.py 13 INFO] cfg.LOCAL_RANK: 0 [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.CLASS_NAMES: ['car'] [2022-06-10 10:20:37,962 config.py 10 INFO]
cfg.DATA_CONFIG = edict() [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.DATASET: NuScenesDataset [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.DATA_PATH: ../data/nuscenes [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.VERSION: v1.0-trainval [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.SET_NAN_VELOCITY_TO_ZEROS: True [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.FILTER_MIN_POINTS_IN_GT: 1 [2022-06-10 10:20:37,962 config.py 10 INFO]
cfg.DATA_CONFIG.DATA_SPLIT = edict() [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.DATA_SPLIT.train: train [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.DATA_SPLIT.test: val [2022-06-10 10:20:37,962 config.py 10 INFO]
cfg.DATA_CONFIG.INFO_PATH = edict() [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.INFO_PATH.train: ['nuscenes_infos_10sweeps_train.pkl'] [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.INFO_PATH.test: ['nuscenes_infos_10sweeps_val.pkl'] [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4] [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.MIN_POINTS_OF_GT: 1 [2022-06-10 10:20:37,962 config.py 10 INFO]
cfg.DATA_CONFIG.DATA_AUGMENTOR = edict() [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['normalize_object_size'] [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'NAME': 'random_object_scaling', 'SCALE_UNIFORM_NOISE': [0.75, 1.0]}, {'NAME': 'normalize_object_size', 'SIZE_RES': [-0.75, -0.34, -0.2]}, {'NAME': 'random_world_flip', 'ALONG_AXIS_LIST': ['x', 'y']}, {'NAME': 'random_world_rotation', 'WORLD_ROT_ANGLE': [-0.3925, 0.3925]}, {'NAME': 'random_world_scaling', 'WORLD_SCALE_RANGE': [0.95, 1.05]}] [2022-06-10 10:20:37,962 config.py 10 INFO]
cfg.DATA_CONFIG.POINT_FEATURE_ENCODING = edict() [2022-06-10 10:20:37,962 config.py 13 INFO] cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z'] [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity', 'timestamp'] [2022-06-10 10:20:37,963 config.py 13 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.1, 0.1, 0.15], 'MAX_POINTS_PER_VOXEL': 5, 'MAX_NUMBER_OF_VOXELS': {'train': 80000, 'test': 90000}}] [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG._BASECONFIG: cfgs/dataset_configs/da_nuscenes_kitti_dataset.yaml [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG.MAX_SWEEPS: 1 [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG.PRED_VELOCITY: False [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG.BALANCED_RESAMPLING: False [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG.SHIFT_COOR: [0.0, 0.0, 1.8] [2022-06-10 10:20:37,963 config.py 10 INFO]
cfg.DATA_CONFIG_TAR = edict() [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.DATASET: KittiDataset [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.DATA_PATH: ../data/kitti [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.POINT_CLOUD_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4] [2022-06-10 10:20:37,963 config.py 10 INFO]
cfg.DATA_CONFIG_TAR.DATA_SPLIT = edict() [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.DATA_SPLIT.train: train [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.DATA_SPLIT.test: val [2022-06-10 10:20:37,963 config.py 10 INFO]
cfg.DATA_CONFIG_TAR.INFO_PATH = edict() [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.INFO_PATH.train: ['kitti_infos_train.pkl'] [2022-06-10 10:20:37,963 config.py 13 INFO] cfg.DATA_CONFIG_TAR.INFO_PATH.test: ['kitti_infos_val.pkl'] [2022-06-10 10:20:37,963 config.py 10 INFO]
cfg.DATA_CONFIG_TAR.DATA_AUGMENTOR = edict() [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['random_object_scaling', 'random_object_rotation'] [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'NAME': 'random_object_scaling', 'SCALE_UNIFORM_NOISE': [0.9, 1.1]}, {'NAME': 'random_object_rotation', 'ROT_PROB': 1.0, 'ROT_UNIFORM_NOISE': [-0.78539816, 0.78539816]}, {'NAME': 'random_world_flip', 'ALONG_AXIS_LIST': ['x', 'y']}, {'NAME': 'random_world_rotation', 'WORLD_ROT_ANGLE': [-0.78539816, 0.78539816]}, {'NAME': 'random_world_scaling', 'WORLD_SCALE_RANGE': [0.95, 1.05]}] [2022-06-10 10:20:37,964 config.py 10 INFO]
cfg.DATA_CONFIG_TAR.POINT_FEATURE_ENCODING = edict() [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z'] [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity'] [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.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.1, 0.1, 0.15], 'MAX_POINTS_PER_VOXEL': 5, 'MAX_NUMBER_OF_VOXELS': {'train': 80000, 'test': 90000}}] [2022-06-10 10:20:37,964 config.py 10 INFO]
cfg.DATA_CONFIG_TAR.TEST = edict() [2022-06-10 10:20:37,964 config.py 10 INFO]
cfg.DATA_CONFIG_TAR.TEST.BOX_FILTER = edict() [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.TEST.BOX_FILTER.USE_IMAGE_AREA_FILTER: True [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.TEST.BOX_FILTER.FOV_FILTER: True [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.TEST.BOX_FILTER.LIMIT_RANGE: [-75.2, -75.2, -2, 75.2, 75.2, 4] [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR._BASECONFIG: cfgs/dataset_configs/da_kitti_dataset.yaml [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.TARGET: True [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.FOV_POINTS_ONLY: True [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.CLASS_NAMES: ['Car'] [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.DATA_CONFIG_TAR.SHIFT_COOR: [0.0, 0.0, 1.6] [2022-06-10 10:20:37,964 config.py 10 INFO]
cfg.MODEL = edict() [2022-06-10 10:20:37,964 config.py 13 INFO] cfg.MODEL.NAME: SECONDNetIoU [2022-06-10 10:20:37,965 config.py 10 INFO]
cfg.MODEL.VFE = edict() [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.VFE.NAME: MeanVFE [2022-06-10 10:20:37,965 config.py 10 INFO]
cfg.MODEL.BACKBONE_3D = edict() [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_3D.NAME: VoxelBackBone8x [2022-06-10 10:20:37,965 config.py 10 INFO]
cfg.MODEL.MAP_TO_BEV = edict() [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.MAP_TO_BEV.NAME: HeightCompression [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 256 [2022-06-10 10:20:37,965 config.py 10 INFO]
cfg.MODEL.BACKBONE_2D = edict() [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_2D.NAME: BaseBEVBackbone [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [5, 5] [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [1, 2] [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [128, 256] [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2] [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [256, 256] [2022-06-10 10:20:37,965 config.py 10 INFO]
cfg.MODEL.DENSE_HEAD = edict() [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539 [2022-06-10 10:20:37,965 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0 [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2 [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.ANCHOR_GENERATOR_CONFIG: [{'class_name': 'car', 'anchor_sizes': [[4.2, 2.0, 1.6]], 'anchor_rotations': [0, 1.57], 'anchor_bottom_heights': [0], 'align_center': False, 'feature_map_stride': 8, 'matched_threshold': 0.55, 'unmatched_threshold': 0.4}] [2022-06-10 10:20:37,966 config.py 10 INFO]
cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG = edict() [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0 [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512 [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder [2022-06-10 10:20:37,966 config.py 10 INFO]
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG = edict() [2022-06-10 10:20:37,966 config.py 10 INFO]
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict() [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0 [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0 [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2 [2022-06-10 10:20:37,966 config.py 13 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] [2022-06-10 10:20:37,966 config.py 10 INFO]
cfg.MODEL.ROI_HEAD = edict() [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NAME: SECONDHead [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.ROI_HEAD.CLASS_AGNOSTIC: True [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.ROI_HEAD.SHARED_FC: [256, 256] [2022-06-10 10:20:37,966 config.py 13 INFO] cfg.MODEL.ROI_HEAD.IOU_FC: [256, 256] [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.DP_RATIO: 0.3 [2022-06-10 10:20:37,967 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.NMS_CONFIG = edict() [2022-06-10 10:20:37,967 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN = edict() [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_TYPE: nms_gpu [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.MULTI_CLASSES_NMS: False [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_PRE_MAXSIZE: 9000 [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_POST_MAXSIZE: 512 [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_THRESH: 0.8 [2022-06-10 10:20:37,967 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST = edict() [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_TYPE: nms_gpu [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.MULTI_CLASSES_NMS: False [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_PRE_MAXSIZE: 1024 [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_POST_MAXSIZE: 100 [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_THRESH: 0.7 [2022-06-10 10:20:37,967 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL = edict() [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.GRID_SIZE: 7 [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.IN_CHANNEL: 512 [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.DOWNSAMPLE_RATIO: 8 [2022-06-10 10:20:37,967 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.TARGET_CONFIG = edict() [2022-06-10 10:20:37,967 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.BOX_CODER: ResidualCoder [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.ROI_PER_IMAGE: 128 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.FG_RATIO: 0.5 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.SAMPLE_ROI_BY_EACH_CLASS: True [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_SCORE_TYPE: raw_roi_iou [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_FG_THRESH: 0.75 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH: 0.25 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH_LO: 0.1 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.HARD_BG_RATIO: 0.8 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.TARGET_CONFIG.REG_FG_THRESH: 0.55 [2022-06-10 10:20:37,968 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.LOSS_CONFIG = edict() [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.LOSS_CONFIG.IOU_LOSS: BinaryCrossEntropy [2022-06-10 10:20:37,968 config.py 10 INFO]
cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict() [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_iou_weight: 1.0 [2022-06-10 10:20:37,968 config.py 13 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] [2022-06-10 10:20:37,968 config.py 10 INFO]
cfg.MODEL.POST_PROCESSING = edict() [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7] [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.1 [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False [2022-06-10 10:20:37,968 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti [2022-06-10 10:20:37,968 config.py 10 INFO]
cfg.MODEL.POST_PROCESSING.NMS_CONFIG = edict() [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.01 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500 [2022-06-10 10:20:37,969 config.py 10 INFO]
cfg.OPTIMIZATION = edict() [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.NUM_EPOCHS: 50 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 4 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.LR: 0.003 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.MOMENTUM: 0.9 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.MOMS: [0.95, 0.85] [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.PCT_START: 0.4 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.DIV_FACTOR: 10 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45] [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.LR_DECAY: 0.1 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.LR_CLIP: 1e-07 [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.LR_WARMUP: False [2022-06-10 10:20:37,969 config.py 13 INFO] cfg.OPTIMIZATION.WARMUP_EPOCH: 1 [2022-06-10 10:20:37,970 config.py 13 INFO] cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10 [2022-06-10 10:20:37,970 config.py 13 INFO] cfg.TAG: secondiou_old_anchor_ros [2022-06-10 10:20:37,970 config.py 13 INFO] cfg.EXP_GROUP_PATH: cfgs/da-nuscenes-kitti_models/secondiou [2022-06-10 10:20:37,971 kitti_dataset.py 36 INFO] Loading KITTI dataset [2022-06-10 10:20:38,115 kitti_dataset.py 50 INFO] Total samples for KITTI dataset: 3769 [2022-06-10 10:20:41,789 detector3d_template.py 325 INFO] ==> Loading parameters from checkpoint ../outputs/da-nuscenes-kitti_models/secondiou/secondiou_old_anchor_ros/default/ckpt/checkpoint_epoch_50.pth to GPU [2022-06-10 10:20:41,941 detector3d_template.py 331 INFO] ==> Checkpoint trained from version: pcdet+0.3.0+0000000 [2022-06-10 10:20:42,820 detector3d_template.py 350 INFO] ==> Done (loaded 189/189) [2022-06-10 10:20:42,954 eval_utils.py 40 INFO] * EPOCH 50 EVALUATION *** [2022-06-10 10:22:30,985 eval_utils.py 78 INFO] * Performance of EPOCH 50 *** [2022-06-10 10:22:30,985 eval_utils.py 80 INFO] Generate label finished(sec_per_example: 0.0287 second). [2022-06-10 10:22:30,985 eval_utils.py 96 INFO] recall_roi_0.3: 0.719484 [2022-06-10 10:22:30,985 eval_utils.py 97 INFO] recall_rcnn_0.3: 0.719484 [2022-06-10 10:22:30,986 eval_utils.py 96 INFO] recall_roi_0.5: 0.648948 [2022-06-10 10:22:30,986 eval_utils.py 97 INFO] recall_rcnn_0.5: 0.648948 [2022-06-10 10:22:30,986 eval_utils.py 96 INFO] recall_roi_0.7: 0.312763 [2022-06-10 10:22:30,986 eval_utils.py 97 INFO] recall_rcnn_0.7: 0.312763 [2022-06-10 10:22:30,995 eval_utils.py 105 INFO] Average predicted number of objects(3769 samples): 25.733 [2022-06-10 10:22:56,620 eval_utils.py 116 INFO] Car AP@0.70, 0.70, 0.70: bbox AP:54.3816, 41.8908, 42.5384 bev AP:49.6528, 38.8520, 39.0831 3d AP:32.4719, 25.1919, 24.5210 aos AP:54.09, 41.40, 41.84 Car AP_R40@0.70, 0.70, 0.70: bbox AP:53.0719, 40.2305, 41.0495 bev AP:48.7658, 36.4707, 36.6339 3d AP:29.2495, 21.4579, 20.5671 aos AP:52.73, 39.67, 40.24 Car AP@0.70, 0.50, 0.50: bbox AP:54.3816, 41.8908, 42.5384 bev AP:59.0662, 46.8297, 48.1533 3d AP:57.2275, 45.2520, 46.4937 aos AP:54.09, 41.40, 41.84 Car AP_R40@0.70, 0.50, 0.50: bbox AP:53.0719, 40.2305, 41.0495 bev AP:59.1706, 45.3890, 46.9008 3d AP:56.4214, 43.4389, 44.7529 aos AP:52.73, 39.67, 40.24

[2022-06-10 10:22:56,628 eval_utils.py 122 INFO] Result is save to /ssd2/daiyongxing/3D-Detection/ST3D-st3d_v0.3/output/cfgs/da-nuscenes-kitti_models/secondiou/secondiou_old_anchor_ros/default/eval/epoch_50/val/default [2022-06-10 10:22:56,628 eval_utils.py 123 INFO] ****Evaluation done.*****

jihanyang commented 2 years ago

It seems that you have successfully loaded all paramters. Have you checked the evaluation results under spconv 1.x?

SikaStar commented 2 years ago

It seems that you have successfully loaded all paramters. Have you checked the evaluation results under spconv 1.x?

Hi, becuase I have no sudo rights on the server, I can not install spconv 1.x. Spconv 2.x can be installed easily only by pip. Besides, I can not load all paramters of the checkpoint you have provided because the version of Spconv.

jihanyang commented 2 years ago

According to the following logging infos, it seems that you have load all parameters.

[2022-06-10 10:20:41,941 detector3d_template.py 331 INFO] ==> Checkpoint trained from version: pcdet+0.3.0+0000000
[2022-06-10 10:20:42,820 detector3d_template.py 350 INFO] ==> Done (loaded 189/189)

Latest OpenPCDet should already support load paramters from spconv1.x to spconv 2.x: https://github.com/open-mmlab/OpenPCDet/blob/dadda9ed5c0f190d06856c6ec15d552116203947/pcdet/models/detectors/detector3d_template.py#L338-L348

BTW, you don't need sudo rights to install spconv 1.x. May I know which command stuck your installation of Spconv1.x? Since I don't have suitable code and environment to reproduce this issue intermediately, maybe change spconv to 1.x could be easier to follow in my perspective.

SikaStar commented 2 years ago

According to the following logging infos, it seems that you have load all parameters.

[2022-06-10 10:20:41,941 detector3d_template.py 331 INFO] ==> Checkpoint trained from version: pcdet+0.3.0+0000000
[2022-06-10 10:20:42,820 detector3d_template.py 350 INFO] ==> Done (loaded 189/189)

Latest OpenPCDet should already support load paramters from spconv1.x to spconv 2.x: https://github.com/open-mmlab/OpenPCDet/blob/dadda9ed5c0f190d06856c6ec15d552116203947/pcdet/models/detectors/detector3d_template.py#L338-L348

BTW, you don't need sudo rights to install spconv 1.x. May I know which command stuck your installation of Spconv1.x? Since I don't have suitable code and environment to reproduce this issue intermediately, maybe change spconv to 1.x could be easier to follow in my perspective.

Thanks for your help. I have successfully loaded parameters from spconv1.x to spconv2.x with your advice. I am still trying to reproduce your results with the latest OpenPCDet with spconv2.x and I found that the num_of_gpus and batch_size_per_gpu could affect the performance significantly on nuscenes->kitti. What are the settings of num_of_gpus and batch_size_per_gpu you used on nuscenes->kitti?

jihanyang commented 2 years ago

Hello, we use 8 gpus during the pretrain stage and use 4 gpus in the self-training stage. batch_size_per_gpu is set to 4 for SECOND-IoU and 2 for PVRCNN.