open-mmlab / OpenPCDet

OpenPCDet Toolbox for LiDAR-based 3D Object Detection.
Apache License 2.0
4.62k stars 1.29k forks source link

d3_box_overlap_kernel # ONLY support overlap in CAMERA, not lidar. #911

Closed Anutlet closed 2 years ago

Anutlet commented 2 years ago

pcdet/datasets/kitti/kitti_object_eval_python/eval.py line126

I have lidar 3D detect result to evaluate, and there has no image 2d detect result. when I use it to evaluate,there has some problems. for test , I provide the same file at the same time as the input,which is ground truth and detect result , but the result is unnormal. when I debug the problem, I find that annotate confusing me.I can't understand what is mean.

laiyingxin2 commented 2 years ago

the same problem, there are some problems when evaluating my data set. My AP and other accuracy are 0. At the same time, I set the 2D information to car, 0,0,0,1,2,3,4 , x. Y, Z, Dy, DX, DZ, rotation angle,according to the issue

DJNing commented 2 years ago

I got the same questions here. And I've also noticed that the dt_annos from CenterPoint is formated in Lidar coordinate instead of camera coordinate. This problem makes all the posted results unreliable.

laiyingxin2 commented 2 years ago

Can anyone help us

DJNing commented 2 years ago

pcdet/datasets/kitti/kitti_object_eval_python/eval.py line126

I have lidar 3D detect result to evaluate, and there has no image 2d detect result. when I use it to evaluate,there has some problems. for test , I provide the same file at the same time as the input,which is ground truth and detect result , but the result is unnormal. when I debug the problem, I find that annotate confusing me.I can't understand what is mean.

For this problem, I think it will give you more or less the same result if your dt_annos and gt_annos are in the same coordinate system, either Lidar or Camera. Besides, if you load your gt with function box_utils.boxes3d_kitti_camera_to_lidar, it will change the order of dY and dZ even though your calibration matrix is identical.

What I am concerned about most is whether they use Lidar coordinate or Camera coordinate in the network during training/inference, especially for functions like assigned_targets. So far, I've checked that they use Lidar coordinate in CenterPoint, but I can't find codes that they transform the boxes to Camera coordinate.

laiyingxin2 commented 2 years ago

pcdet/datasets/kitti/kitti_object_eval_python/eval.py line126 I have lidar 3D detect result to evaluate, and there has no image 2d detect result. when I use it to evaluate,there has some problems. for test , I provide the same file at the same time as the input,which is ground truth and detect result , but the result is unnormal. when I debug the problem, I find that annotate confusing me.I can't understand what is mean.

For this problem, I think it will give you more or less the same result if your dt_annos and gt_annos are in the same coordinate system, either Lidar or Camera. Besides, if you load your gt with function box_utils.boxes3d_kitti_camera_to_lidar, it will change the order of dY and dZ even though your calibration matrix is identical.

What I am concerned about most is whether they use Lidar coordinate or Camera coordinate in the network during training/inference, especially for functions like assigned_targets. So far, I've checked that they use Lidar coordinate in CenterPoint, but I can't find codes that they transform the boxes to Camera coordinate.

What changes have you made so that your AP is not 0

DJNing commented 2 years ago

the same problem, there are some problems when evaluating my data set. My AP and other accuracy are 0. At the same time, I set the 2D information to car, 0,0,0,1,2,3,4 , x. Y, Z, Dy, DX, DZ, rotation angle,according to the issue

Actually, if your dt_annos and gt_annos are exactly the same, it should give you the right answer without any changes

DJNing commented 2 years ago

the same problem, there are some problems when evaluating my data set. My AP and other accuracy are 0. At the same time, I set the 2D information to car, 0,0,0,1,2,3,4 , x. Y, Z, Dy, DX, DZ, rotation angle,according to the issue

If you really want to calculate the iou in the lidar coordinate, you can modify the d3_box_overlap, the rinc means the BEV overlaps. So, change the input parameter of the right axis for function rotate_iou_gpu_eval to box[:, [0,1,3,4,6]]

laiyingxin2 commented 2 years ago

I made the change according to your method and printed out riou, and the result showed that the value was 0, but when I used demo.py, when visualizing, it is found that there is partial coincidence, and the result AP is 0, which is unreasonable

laiyingxin2 commented 2 years ago

python3 test.py --cfg_file cfgs/kitti_models/voxel_rcnn_car.yaml --batch_size 3 --ckpt voxel_rcnn_car_84.pth 2022-03-29 19:09:15,841 INFO **Start logging** 2022-03-29 19:09:15,842 INFO CUDA_VISIBLE_DEVICES=ALL 2022-03-29 19:09:15,842 INFO cfg_file cfgs/kitti_models/voxel_rcnn_car.yaml 2022-03-29 19:09:15,842 INFO batch_size 3 2022-03-29 19:09:15,842 INFO workers 4 2022-03-29 19:09:15,842 INFO extra_tag default 2022-03-29 19:09:15,842 INFO ckpt voxel_rcnn_car_84.pth 2022-03-29 19:09:15,842 INFO launcher none 2022-03-29 19:09:15,842 INFO tcp_port 18888 2022-03-29 19:09:15,842 INFO local_rank 0 2022-03-29 19:09:15,842 INFO set_cfgs None 2022-03-29 19:09:15,842 INFO max_waiting_mins 30 2022-03-29 19:09:15,842 INFO start_epoch 0 2022-03-29 19:09:15,842 INFO eval_tag default 2022-03-29 19:09:15,842 INFO eval_all False 2022-03-29 19:09:15,842 INFO ckpt_dir None 2022-03-29 19:09:15,842 INFO save_to_file False 2022-03-29 19:09:15,842 INFO cfg.ROOT_DIR: /opt/tiger/OpenPCDet 2022-03-29 19:09:15,842 INFO cfg.LOCAL_RANK: 0 2022-03-29 19:09:15,842 INFO cfg.CLASS_NAMES: ['Car'] 2022-03-29 19:09:15,842 INFO
cfg.DATA_CONFIG = edict() 2022-03-29 19:09:15,842 INFO cfg.DATA_CONFIG.DATASET: KittiDataset 2022-03-29 19:09:15,842 INFO cfg.DATA_CONFIG.DATA_PATH: ../data/kitti 2022-03-29 19:09:15,842 INFO cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [0, -40, -3, 70.4, 40, 1] 2022-03-29 19:09:15,842 INFO
cfg.DATA_CONFIG.DATA_SPLIT = edict() 2022-03-29 19:09:15,842 INFO cfg.DATA_CONFIG.DATA_SPLIT.train: train 2022-03-29 19:09:15,842 INFO cfg.DATA_CONFIG.DATA_SPLIT.test: val 2022-03-29 19:09:15,842 INFO
cfg.DATA_CONFIG.INFO_PATH = edict() 2022-03-29 19:09:15,842 INFO cfg.DATA_CONFIG.INFO_PATH.train: ['kitti_infos_train.pkl'] 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.INFO_PATH.test: ['kitti_infos_val.pkl'] 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.GET_ITEM_LIST: ['points'] 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.FOV_POINTS_ONLY: True 2022-03-29 19:09:15,843 INFO
cfg.DATA_CONFIG.DATA_AUGMENTOR = edict() 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['placeholder'] 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'NAME': 'gt_sampling', 'USE_ROAD_PLANE': False, 'DB_INFO_PATH': ['kitti_dbinfos_train.pkl'], 'PREPARE': {'filter_by_min_points': ['Car:5']}, 'SAMPLE_GROUPS': ['Car:15'], '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]}] 2022-03-29 19:09:15,843 INFO
cfg.DATA_CONFIG.POINT_FEATURE_ENCODING = edict() 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z', 'intensity'] 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity'] 2022-03-29 19:09:15,843 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}}] 2022-03-29 19:09:15,843 INFO cfg.DATA_CONFIG._BASECONFIG: cfgs/dataset_configs/kitti_dataset.yaml 2022-03-29 19:09:15,843 INFO
cfg.MODEL = edict() 2022-03-29 19:09:15,843 INFO cfg.MODEL.NAME: VoxelRCNN 2022-03-29 19:09:15,843 INFO
cfg.MODEL.VFE = edict() 2022-03-29 19:09:15,843 INFO cfg.MODEL.VFE.NAME: MeanVFE 2022-03-29 19:09:15,843 INFO
cfg.MODEL.BACKBONE_3D = edict() 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_3D.NAME: VoxelBackBone8x 2022-03-29 19:09:15,843 INFO
cfg.MODEL.MAP_TO_BEV = edict() 2022-03-29 19:09:15,843 INFO cfg.MODEL.MAP_TO_BEV.NAME: HeightCompression 2022-03-29 19:09:15,843 INFO cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 256 2022-03-29 19:09:15,843 INFO
cfg.MODEL.BACKBONE_2D = edict() 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_2D.NAME: BaseBEVBackbone 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [5, 5] 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [1, 2] 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [64, 128] 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2] 2022-03-29 19:09:15,843 INFO cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [128, 128] 2022-03-29 19:09:15,843 INFO
cfg.MODEL.DENSE_HEAD = edict() 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2 2022-03-29 19:09:15,844 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}] 2022-03-29 19:09:15,844 INFO
cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG = edict() 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder 2022-03-29 19:09:15,844 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG = edict() 2022-03-29 19:09:15,844 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict() 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0 2022-03-29 19:09:15,844 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2 2022-03-29 19:09:15,844 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-03-29 19:09:15,844 INFO
cfg.MODEL.ROI_HEAD = edict() 2022-03-29 19:09:15,844 INFO cfg.MODEL.ROI_HEAD.NAME: VoxelRCNNHead 2022-03-29 19:09:15,844 INFO cfg.MODEL.ROI_HEAD.CLASS_AGNOSTIC: True 2022-03-29 19:09:15,844 INFO cfg.MODEL.ROI_HEAD.SHARED_FC: [256, 256] 2022-03-29 19:09:15,844 INFO cfg.MODEL.ROI_HEAD.CLS_FC: [256, 256] 2022-03-29 19:09:15,844 INFO cfg.MODEL.ROI_HEAD.REG_FC: [256, 256] 2022-03-29 19:09:15,844 INFO cfg.MODEL.ROI_HEAD.DP_RATIO: 0.3 2022-03-29 19:09:15,844 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG = edict() 2022-03-29 19:09:15,844 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN = edict() 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_TYPE: nms_gpu 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.MULTI_CLASSES_NMS: False 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_PRE_MAXSIZE: 9000 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_POST_MAXSIZE: 512 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_THRESH: 0.8 2022-03-29 19:09:15,845 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST = edict() 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_TYPE: nms_gpu 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.MULTI_CLASSES_NMS: False 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.USE_FAST_NMS: False 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.SCORE_THRESH: 0.0 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_PRE_MAXSIZE: 2048 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_POST_MAXSIZE: 100 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_THRESH: 0.7 2022-03-29 19:09:15,845 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL = edict() 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.FEATURES_SOURCE: ['x_conv2', 'x_conv3', 'x_conv4'] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.PRE_MLP: True 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.GRID_SIZE: 6 2022-03-29 19:09:15,845 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS = edict() 2022-03-29 19:09:15,845 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv2 = edict() 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv2.MLPS: [[32, 32]] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv2.QUERY_RANGES: [[4, 4, 4]] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv2.POOL_RADIUS: [0.4] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv2.NSAMPLE: [16] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv2.POOL_METHOD: max_pool 2022-03-29 19:09:15,845 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3 = edict() 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.MLPS: [[32, 32]] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.QUERY_RANGES: [[4, 4, 4]] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.POOL_RADIUS: [0.8] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.NSAMPLE: [16] 2022-03-29 19:09:15,845 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv3.POOL_METHOD: max_pool 2022-03-29 19:09:15,846 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4 = edict() 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.MLPS: [[32, 32]] 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.QUERY_RANGES: [[4, 4, 4]] 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.POOL_RADIUS: [1.6] 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.NSAMPLE: [16] 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_LAYERS.x_conv4.POOL_METHOD: max_pool 2022-03-29 19:09:15,846 INFO
cfg.MODEL.ROI_HEAD.TARGET_CONFIG = edict() 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.BOX_CODER: ResidualCoder 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.ROI_PER_IMAGE: 128 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.FG_RATIO: 0.5 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.SAMPLE_ROI_BY_EACH_CLASS: True 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_SCORE_TYPE: roi_iou 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_FG_THRESH: 0.75 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH: 0.25 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH_LO: 0.1 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.HARD_BG_RATIO: 0.8 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.REG_FG_THRESH: 0.55 2022-03-29 19:09:15,846 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG = edict() 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CLS_LOSS: BinaryCrossEntropy 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.REG_LOSS: smooth-l1 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CORNER_LOSS_REGULARIZATION: True 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.GRID_3D_IOU_LOSS: False 2022-03-29 19:09:15,846 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict() 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_cls_weight: 1.0 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_reg_weight: 1.0 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_corner_weight: 1.0 2022-03-29 19:09:15,846 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_iou3d_weight: 1.0 2022-03-29 19:09:15,846 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-03-29 19:09:15,846 INFO
cfg.MODEL.POST_PROCESSING = edict() 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7] 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.3 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti 2022-03-29 19:09:15,847 INFO
cfg.MODEL.POST_PROCESSING.NMS_CONFIG = edict() 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.1 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096 2022-03-29 19:09:15,847 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500 2022-03-29 19:09:15,847 INFO
cfg.OPTIMIZATION = edict() 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 2 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.NUM_EPOCHS: 80 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.LR: 0.01 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.MOMENTUM: 0.9 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.MOMS: [0.95, 0.85] 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.PCT_START: 0.4 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.DIV_FACTOR: 10 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45] 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.LR_DECAY: 0.1 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.LR_CLIP: 1e-07 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.LR_WARMUP: False 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.WARMUP_EPOCH: 1 2022-03-29 19:09:15,847 INFO cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10 2022-03-29 19:09:15,847 INFO cfg.TAG: voxel_rcnn_car 2022-03-29 19:09:15,847 INFO cfg.EXP_GROUP_PATH: kitti_models 2022-03-29 19:09:15,848 INFO Loading KITTI dataset 2022-03-29 19:09:15,902 INFO Total samples for KITTI dataset: 44 2022-03-29 19:09:19,815 INFO ==> Loading parameters from checkpoint voxel_rcnn_car_84.pth to GPU 2022-03-29 19:09:19,868 INFO ==> Done (loaded 257/257) 2022-03-29 19:09:20,118 INFO * EPOCH 84 EVALUATION *** eval: 100%|████████████████████████████████████████| 15/15 [00:09<00:00, 1.56it/s, recall_0.3=(0, 0) / 754] 2022-03-29 19:09:29,743 INFO * Performance of EPOCH 84 *** 2022-03-29 19:09:29,744 INFO Generate label finished(sec_per_example: 0.2185 second). 2022-03-29 19:09:29,744 INFO recall_roi_0.3: 0.000000 2022-03-29 19:09:29,744 INFO recall_rcnn_0.3: 0.000000 2022-03-29 19:09:29,744 INFO recall_roi_0.5: 0.000000 2022-03-29 19:09:29,744 INFO recall_rcnn_0.5: 0.000000 2022-03-29 19:09:29,744 INFO recall_roi_0.7: 0.000000 2022-03-29 19:09:29,744 INFO recall_rcnn_0.7: 0.000000 2022-03-29 19:09:29,744 INFO Average predicted number of objects(44 samples): 1.114 /opt/tiger/test/envs/open/lib/python3.7/site-packages/numba/cuda/compiler.py:726: NumbaPerformanceWarning: Grid size (12) < 2 * SM count (80) will likely result in GPU under utilization due to low occupancy. warn(NumbaPerformanceWarning(msg)) riou [[0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]] /opt/tiger/test/envs/open/lib/python3.7/site-packages/numba/core/typed_passes.py:330: NumbaPerformanceWarning: The keyword argument 'parallel=True' was specified but no transformation for parallel execution was possible.

To find out why, try turning on parallel diagnostics, see https://numba.readthedocs.io/en/stable/user/parallel.html#diagnostics for help.

File "../pcdet/datasets/kitti/kitti_object_eval_python/eval.py", line 140: @numba.jit(nopython=True, parallel=True) def d3_box_overlap_kernel(boxes, qboxes, rinc, criterion=-1): ^

state.func_ir.loc)) 2022-03-29 19:09:40,065 INFO Car AP@0.70, 0.70, 0.70: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Car AP_R40@0.70, 0.70, 0.70: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Car AP@0.70, 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00 Car AP_R40@0.70, 0.50, 0.50: bbox AP:0.0000, 0.0000, 0.0000 bev AP:0.0000, 0.0000, 0.0000 3d AP:0.0000, 0.0000, 0.0000 aos AP:0.00, 0.00, 0.00

2022-03-29 19:09:40,066 INFO Result is save to /opt/tiger/OpenPCDet/output/kitti_models/voxel_rcnn_car/default/eval/epoch_84/val/default 2022-03-29 19:09:40,066 INFO ****Evaluation done.*****

DJNing commented 2 years ago

I made the change according to your method and printed out riou, and the result showed that the value was 0, but when I used demo.py, when visualizing, it is found that there is partial coincidence, and the result AP is 0, which is unreasonable

the same problem, there are some problems when evaluating my data set. My AP and other accuracy are 0. At the same time, I set the 2D information to car, 0,0,0,1,2,3,4 , x. Y, Z, Dy, DX, DZ, rotation angle,according to the issue

If you really want to calculate the iou in the lidar coordinate, you can modify the d3_box_overlap, the rinc means the BEV overlaps. So, change the input parameter of the right axis for function rotate_iou_gpu_eval to box[:, [0,1,3,4,6]]

Also change the d3_box_overlap_kernel to use the correct coordinate for height overlap calculation

laiyingxin2 commented 2 years ago

I made the change according to your method and printed out riou, and the result showed that the value was 0, but when I used demo.py, when visualizing, it is found that there is partial coincidence, and the result AP is 0, which is unreasonable

the same problem, there are some problems when evaluating my data set. My AP and other accuracy are 0. At the same time, I set the 2D information to car, 0,0,0,1,2,3,4 , x. Y, Z, Dy, DX, DZ, rotation angle,according to the issue

If you really want to calculate the iou in the lidar coordinate, you can modify the d3_box_overlap, the rinc means the BEV overlaps. So, change the input parameter of the right axis for function rotate_iou_gpu_eval to box[:, [0,1,3,4,6]]

Also change the d3_box_overlap_kernel to use the correct coordinate for height overlap calculation

Thank you for your reply. If successful, I will synchronize on this issue.

DJNing commented 2 years ago

I made the change according to your method and printed out riou, and the result showed that the value was 0, but when I used demo.py, when visualizing, it is found that there is partial coincidence, and the result AP is 0, which is unreasonable

the same problem, there are some problems when evaluating my data set. My AP and other accuracy are 0. At the same time, I set the 2D information to car, 0,0,0,1,2,3,4 , x. Y, Z, Dy, DX, DZ, rotation angle,according to the issue

If you really want to calculate the iou in the lidar coordinate, you can modify the d3_box_overlap, the rinc means the BEV overlaps. So, change the input parameter of the right axis for function rotate_iou_gpu_eval to box[:, [0,1,3,4,6]]

Also change the d3_box_overlap_kernel to use the correct coordinate for height overlap calculation

Thank you for your reply. If successful, I will synchronize on this issue.

Note that the kitti dataset will convert the lidar bbox to camera coordinate, so the evaluation code is correct for kitti dataset

laiyingxin2 commented 2 years ago

Now I feel very confused. After coordinate conversion, I have visualized my data set and label, which can be matched, but the accuracy is still 0. At the same time, the code converted to the camera coordinate system should be in pcdet / dataset / Kitti / Kitti_utils.py file

github-actions[bot] commented 2 years ago

This issue is stale because it has been open for 30 days with no activity.

github-actions[bot] commented 2 years ago

This issue was closed because it has been inactive for 14 days since being marked as stale.