Evaluate on pandaset get very low precision
See original GitHub issue@sshaoshuai @lindahua @jihanyang Thank you so much for your awesome work.
I want to use the model trained on Kitti to evaluate the accuracy on pandaset.
in pandaset_dataset.py, I changed evaluation function just like kitti evaluation.
I searched for a lot of methods on the Internet, mainly there are two methods.
- Import Pandaset by dataloader, and modify the evaluation function.
- Convert Pandaset to kitti format for evaluation.
I tried to use dataloader and imitate kitti’s evaluation function. I am getting very low precision, can you tell me why?Maybe how to get the right answer,please.
# self.logger.warning('Evaluation is not implemented for Pandaset as there is no official one. ' +
# 'Returning an empty evaluation result.')
if 'annos' not in self.pandaset_infos[0].keys():
return None, {}
from .kitti_object_eval_python import eval as kitti_eval
eval_det_annos = copy.deepcopy(det_annos)
eval_gt_annos = [copy.deepcopy(info['annos']) for info in self.pandaset_infos]
ap_result_str, ap_dict = kitti_eval.get_official_eval_result(eval_gt_annos, eval_det_annos, class_names)
return ap_result_str, ap_dict
And I also changed pv_rcnn.yaml
CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
DATA_CONFIG:
_BASE_CONFIG_: cfgs/dataset_configs/kitti_dataset.yaml
DATA_AUGMENTOR:
DISABLE_AUG_LIST: ['placeholder']
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]
MODEL:
NAME: PVRCNN
VFE:
NAME: MeanVFE
BACKBONE_3D:
NAME: VoxelBackBone8x
MAP_TO_BEV:
NAME: HeightCompression
NUM_BEV_FEATURES: 256
BACKBONE_2D:
NAME: BaseBEVBackbone
LAYER_NUMS: [5, 5]
LAYER_STRIDES: [1, 2]
NUM_FILTERS: [128, 256]
UPSAMPLE_STRIDES: [1, 2]
NUM_UPSAMPLE_FILTERS: [256, 256]
DENSE_HEAD:
NAME: AnchorHeadSingle
CLASS_AGNOSTIC: False
USE_DIRECTION_CLASSIFIER: True
DIR_OFFSET: 0.78539
DIR_LIMIT_OFFSET: 0.0
NUM_DIR_BINS: 2
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
}
]
TARGET_ASSIGNER_CONFIG:
NAME: AxisAlignedTargetAssigner
POS_FRACTION: -1.0
SAMPLE_SIZE: 512
NORM_BY_NUM_EXAMPLES: False
MATCH_HEIGHT: False
BOX_CODER: ResidualCoder
LOSS_CONFIG:
LOSS_WEIGHTS: {
'cls_weight': 1.0,
'loc_weight': 2.0,
'dir_weight': 0.2,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
PFE:
NAME: VoxelSetAbstraction
POINT_SOURCE: raw_points
NUM_KEYPOINTS: 2048
NUM_OUTPUT_FEATURES: 128
SAMPLE_METHOD: FPS
FEATURES_SOURCE: ['bev', 'x_conv1', 'x_conv2', 'x_conv3', 'x_conv4', 'raw_points']
SA_LAYER:
raw_points:
MLPS: [[16, 16], [16, 16]]
POOL_RADIUS: [0.4, 0.8]
NSAMPLE: [16, 16]
x_conv1:
DOWNSAMPLE_FACTOR: 1
MLPS: [[16, 16], [16, 16]]
POOL_RADIUS: [0.4, 0.8]
NSAMPLE: [16, 16]
x_conv2:
DOWNSAMPLE_FACTOR: 2
MLPS: [[32, 32], [32, 32]]
POOL_RADIUS: [0.8, 1.2]
NSAMPLE: [16, 32]
x_conv3:
DOWNSAMPLE_FACTOR: 4
MLPS: [[64, 64], [64, 64]]
POOL_RADIUS: [1.2, 2.4]
NSAMPLE: [16, 32]
x_conv4:
DOWNSAMPLE_FACTOR: 8
MLPS: [[64, 64], [64, 64]]
POOL_RADIUS: [2.4, 4.8]
NSAMPLE: [16, 32]
POINT_HEAD:
NAME: PointHeadSimple
CLS_FC: [256, 256]
CLASS_AGNOSTIC: True
USE_POINT_FEATURES_BEFORE_FUSION: True
TARGET_CONFIG:
GT_EXTRA_WIDTH: [0.2, 0.2, 0.2]
LOSS_CONFIG:
LOSS_REG: smooth-l1
LOSS_WEIGHTS: {
'point_cls_weight': 1.0,
}
ROI_HEAD:
NAME: PVRCNNHead
CLASS_AGNOSTIC: True
SHARED_FC: [256, 256]
CLS_FC: [256, 256]
REG_FC: [256, 256]
DP_RATIO: 0.3
NMS_CONFIG:
TRAIN:
NMS_TYPE: nms_gpu
MULTI_CLASSES_NMS: False
NMS_PRE_MAXSIZE: 9000
NMS_POST_MAXSIZE: 512
NMS_THRESH: 0.8
TEST:
NMS_TYPE: nms_gpu
MULTI_CLASSES_NMS: False
NMS_PRE_MAXSIZE: 1024
NMS_POST_MAXSIZE: 100
NMS_THRESH: 0.7
ROI_GRID_POOL:
GRID_SIZE: 6
MLPS: [[64, 64], [64, 64]]
POOL_RADIUS: [0.8, 1.6]
NSAMPLE: [16, 16]
POOL_METHOD: max_pool
TARGET_CONFIG:
BOX_CODER: ResidualCoder
ROI_PER_IMAGE: 128
FG_RATIO: 0.5
SAMPLE_ROI_BY_EACH_CLASS: True
CLS_SCORE_TYPE: roi_iou
CLS_FG_THRESH: 0.75
CLS_BG_THRESH: 0.25
CLS_BG_THRESH_LO: 0.1
HARD_BG_RATIO: 0.8
REG_FG_THRESH: 0.55
LOSS_CONFIG:
CLS_LOSS: BinaryCrossEntropy
REG_LOSS: smooth-l1
CORNER_LOSS_REGULARIZATION: True
LOSS_WEIGHTS: {
'rcnn_cls_weight': 1.0,
'rcnn_reg_weight': 1.0,
'rcnn_corner_weight': 1.0,
'code_weights': [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
}
POST_PROCESSING:
RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
SCORE_THRESH: 0.1
OUTPUT_RAW_SCORE: False
EVAL_METRIC: kitti
NMS_CONFIG:
MULTI_CLASSES_NMS: False
NMS_TYPE: nms_gpu
NMS_THRESH: 0.1
NMS_PRE_MAXSIZE: 4096
NMS_POST_MAXSIZE: 500
OPTIMIZATION:
BATCH_SIZE_PER_GPU: 2
NUM_EPOCHS: 80
OPTIMIZER: adam_onecycle
LR: 0.01
WEIGHT_DECAY: 0.01
MOMENTUM: 0.9
MOMS: [0.95, 0.85]
PCT_START: 0.4
DIV_FACTOR: 10
DECAY_STEP_LIST: [35, 45]
LR_DECAY: 0.1
LR_CLIP: 0.0000001
LR_WARMUP: False
WARMUP_EPOCH: 1
GRAD_NORM_CLIP: 10
Finally I use this command
python test.py --cfg_file cfgs/pandaset_models/pv_rcnn.yaml --batch_size 1 --ckpt pv_rcnn_8369.pth \--save_to_file
Got
python test.py --cfg_file cfgs/pandaset_models/pv_rcnn.yaml --batch_size 1 --ckpt pv_rcnn_8369.pth --save_to_file
/home/work/anaconda3/envs/openpcdet-new/lib/python3.7/site-packages/skimage/io/manage_plugins.py:23: UserWarning: Your installed pillow version is < 8.1.2. Several security issues (CVE-2021-27921, CVE-2021-25290, CVE-2021-25291, CVE-2021-25293, and more) have been fixed in pillow 8.1.2 or higher. We recommend to upgrade this library.
from .collection import imread_collection_wrapper
2022-02-16 07:14:36,886 INFO **********************Start logging**********************
2022-02-16 07:14:36,886 INFO CUDA_VISIBLE_DEVICES=ALL
2022-02-16 07:14:36,886 INFO cfg_file cfgs/pandaset_models/pv_rcnn.yaml
2022-02-16 07:14:36,886 INFO batch_size 1
2022-02-16 07:14:36,886 INFO workers 4
2022-02-16 07:14:36,886 INFO extra_tag default
2022-02-16 07:14:36,886 INFO ckpt pv_rcnn_8369.pth
2022-02-16 07:14:36,886 INFO launcher none
2022-02-16 07:14:36,886 INFO tcp_port 18888
2022-02-16 07:14:36,886 INFO local_rank 0
2022-02-16 07:14:36,886 INFO set_cfgs None
2022-02-16 07:14:36,886 INFO max_waiting_mins 30
2022-02-16 07:14:36,886 INFO start_epoch 0
2022-02-16 07:14:36,886 INFO eval_tag default
2022-02-16 07:14:36,886 INFO eval_all False
2022-02-16 07:14:36,886 INFO ckpt_dir None
2022-02-16 07:14:36,886 INFO save_to_file True
2022-02-16 07:14:36,886 INFO cfg.ROOT_DIR: /home/work/work/OpenPCDet
2022-02-16 07:14:36,887 INFO cfg.LOCAL_RANK: 0
2022-02-16 07:14:36,887 INFO cfg.CLASS_NAMES: ['Car', 'Pedestrian', 'Cyclist']
2022-02-16 07:14:36,887 INFO
cfg.DATA_CONFIG = edict()
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.DATASET: PandasetDataset
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.DATA_PATH: ../data/pandaset
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.POINT_CLOUD_RANGE: [-70, -40, -3, 70, 40, 1]
2022-02-16 07:14:36,887 INFO
cfg.DATA_CONFIG.DATA_SPLIT = edict()
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.DATA_SPLIT.train: train
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.DATA_SPLIT.test: val
2022-02-16 07:14:36,887 INFO
cfg.DATA_CONFIG.SEQUENCES = edict()
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.SEQUENCES.train: ['014', '050', '079', '048', '093', '091', '063', '104', '100', '092', '012', '047', '018', '006', '099', '085', '035', '041', '052', '105', '030', '113', '002', '084', '028', '119', '044', '005', '102', '034', '077', '064', '067', '058', '019', '015', '037', '095', '120', '066', '023', '071', '117', '098', '139', '038', '116', '046', '088', '089', '040', '033', '016', '024', '122', '039', '158', '069', '124', '123', '106']
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.SEQUENCES.val: ['045', '059', '055', '051', '020', '097', '073', '043', '003', '101', '027', '056', '011', '078', '080', '109', '042', '021', '094', '057']
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.SEQUENCES.test: ['074', '004', '086', '062', '068', '008', '001', '110', '053', '115', '054', '065', '017', '103', '072', '013', '029', '090', '112', '149', '070', '032']
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.LIDAR_DEVICE: 0
2022-02-16 07:14:36,887 INFO
cfg.DATA_CONFIG.INFO_PATH = edict()
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.INFO_PATH.train: ['pandaset_infos_train.pkl']
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.INFO_PATH.test: ['pandaset_infos_val.pkl']
2022-02-16 07:14:36,887 INFO
cfg.DATA_CONFIG.TRAINING_CATEGORIES = edict()
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Car: Car
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Pickup Truck: Car
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Medium-sized Truck: Truck
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Semi-truck: Truck
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Towed Object: Other Vehicle
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Motorcycle: Motorcycle
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Other Vehicle - Construction Vehicle: Other Vehicle
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Other Vehicle - Uncommon: Other Vehicle
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Other Vehicle - Pedicab: Other Vehicle
2022-02-16 07:14:36,887 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Emergency Vehicle: Other Vehicle
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Bus: Bus
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Bicycle: Bicycle
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Pedestrian: Pedestrian
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Pedestrian with Object: Pedestrian
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.TRAINING_CATEGORIES.Animals - Other: Animal
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.FOV_POINTS_ONLY: False
2022-02-16 07:14:36,888 INFO
cfg.DATA_CONFIG.DATA_AUGMENTOR = edict()
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.DISABLE_AUG_LIST: ['placeholder']
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.DATA_AUGMENTOR.AUG_CONFIG_LIST: [{'NAME': 'gt_sampling', 'USE_ROAD_PLANE': True, 'DB_INFO_PATH': ['pandaset_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]}]
2022-02-16 07:14:36,888 INFO
cfg.DATA_CONFIG.POINT_FEATURE_ENCODING = edict()
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.encoding_type: absolute_coordinates_encoding
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.used_feature_list: ['x', 'y', 'z', 'intensity']
2022-02-16 07:14:36,888 INFO cfg.DATA_CONFIG.POINT_FEATURE_ENCODING.src_feature_list: ['x', 'y', 'z', 'intensity']
2022-02-16 07:14:36,888 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-02-16 07:14:36,888 INFO cfg.DATA_CONFIG._BASE_CONFIG_: cfgs/dataset_configs/pandaset_dataset.yaml
2022-02-16 07:14:36,888 INFO
cfg.MODEL = edict()
2022-02-16 07:14:36,888 INFO cfg.MODEL.NAME: PVRCNN
2022-02-16 07:14:36,888 INFO
cfg.MODEL.VFE = edict()
2022-02-16 07:14:36,888 INFO cfg.MODEL.VFE.NAME: MeanVFE
2022-02-16 07:14:36,888 INFO
cfg.MODEL.BACKBONE_3D = edict()
2022-02-16 07:14:36,888 INFO cfg.MODEL.BACKBONE_3D.NAME: VoxelBackBone8x
2022-02-16 07:14:36,888 INFO
cfg.MODEL.MAP_TO_BEV = edict()
2022-02-16 07:14:36,888 INFO cfg.MODEL.MAP_TO_BEV.NAME: HeightCompression
2022-02-16 07:14:36,888 INFO cfg.MODEL.MAP_TO_BEV.NUM_BEV_FEATURES: 256
2022-02-16 07:14:36,888 INFO
cfg.MODEL.BACKBONE_2D = edict()
2022-02-16 07:14:36,888 INFO cfg.MODEL.BACKBONE_2D.NAME: BaseBEVBackbone
2022-02-16 07:14:36,888 INFO cfg.MODEL.BACKBONE_2D.LAYER_NUMS: [5, 5]
2022-02-16 07:14:36,889 INFO cfg.MODEL.BACKBONE_2D.LAYER_STRIDES: [1, 2]
2022-02-16 07:14:36,889 INFO cfg.MODEL.BACKBONE_2D.NUM_FILTERS: [128, 256]
2022-02-16 07:14:36,889 INFO cfg.MODEL.BACKBONE_2D.UPSAMPLE_STRIDES: [1, 2]
2022-02-16 07:14:36,889 INFO cfg.MODEL.BACKBONE_2D.NUM_UPSAMPLE_FILTERS: [256, 256]
2022-02-16 07:14:36,889 INFO
cfg.MODEL.DENSE_HEAD = edict()
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.NAME: AnchorHeadSingle
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.CLASS_AGNOSTIC: False
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.USE_DIRECTION_CLASSIFIER: True
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.DIR_OFFSET: 0.78539
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.DIR_LIMIT_OFFSET: 0.0
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.NUM_DIR_BINS: 2
2022-02-16 07:14:36,889 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}]
2022-02-16 07:14:36,889 INFO
cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG = edict()
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NAME: AxisAlignedTargetAssigner
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.POS_FRACTION: -1.0
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.SAMPLE_SIZE: 512
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.NORM_BY_NUM_EXAMPLES: False
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.MATCH_HEIGHT: False
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.TARGET_ASSIGNER_CONFIG.BOX_CODER: ResidualCoder
2022-02-16 07:14:36,889 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG = edict()
2022-02-16 07:14:36,889 INFO
cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.cls_weight: 1.0
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.loc_weight: 2.0
2022-02-16 07:14:36,889 INFO cfg.MODEL.DENSE_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.dir_weight: 0.2
2022-02-16 07:14:36,889 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-02-16 07:14:36,889 INFO
cfg.MODEL.PFE = edict()
2022-02-16 07:14:36,889 INFO cfg.MODEL.PFE.NAME: VoxelSetAbstraction
2022-02-16 07:14:36,889 INFO cfg.MODEL.PFE.POINT_SOURCE: raw_points
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.NUM_KEYPOINTS: 2048
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.NUM_OUTPUT_FEATURES: 128
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SAMPLE_METHOD: FPS
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.FEATURES_SOURCE: ['bev', 'x_conv1', 'x_conv2', 'x_conv3', 'x_conv4', 'raw_points']
2022-02-16 07:14:36,890 INFO
cfg.MODEL.PFE.SA_LAYER = edict()
2022-02-16 07:14:36,890 INFO
cfg.MODEL.PFE.SA_LAYER.raw_points = edict()
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.MLPS: [[16, 16], [16, 16]]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.POOL_RADIUS: [0.4, 0.8]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.raw_points.NSAMPLE: [16, 16]
2022-02-16 07:14:36,890 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv1 = edict()
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.DOWNSAMPLE_FACTOR: 1
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.MLPS: [[16, 16], [16, 16]]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.POOL_RADIUS: [0.4, 0.8]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv1.NSAMPLE: [16, 16]
2022-02-16 07:14:36,890 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv2 = edict()
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.DOWNSAMPLE_FACTOR: 2
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.MLPS: [[32, 32], [32, 32]]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.POOL_RADIUS: [0.8, 1.2]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv2.NSAMPLE: [16, 32]
2022-02-16 07:14:36,890 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv3 = edict()
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.DOWNSAMPLE_FACTOR: 4
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.MLPS: [[64, 64], [64, 64]]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.POOL_RADIUS: [1.2, 2.4]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv3.NSAMPLE: [16, 32]
2022-02-16 07:14:36,890 INFO
cfg.MODEL.PFE.SA_LAYER.x_conv4 = edict()
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.DOWNSAMPLE_FACTOR: 8
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.MLPS: [[64, 64], [64, 64]]
2022-02-16 07:14:36,890 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.POOL_RADIUS: [2.4, 4.8]
2022-02-16 07:14:36,891 INFO cfg.MODEL.PFE.SA_LAYER.x_conv4.NSAMPLE: [16, 32]
2022-02-16 07:14:36,891 INFO
cfg.MODEL.POINT_HEAD = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.NAME: PointHeadSimple
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.CLS_FC: [256, 256]
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.CLASS_AGNOSTIC: True
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.USE_POINT_FEATURES_BEFORE_FUSION: True
2022-02-16 07:14:36,891 INFO
cfg.MODEL.POINT_HEAD.TARGET_CONFIG = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.TARGET_CONFIG.GT_EXTRA_WIDTH: [0.2, 0.2, 0.2]
2022-02-16 07:14:36,891 INFO
cfg.MODEL.POINT_HEAD.LOSS_CONFIG = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_REG: smooth-l1
2022-02-16 07:14:36,891 INFO
cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.POINT_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.point_cls_weight: 1.0
2022-02-16 07:14:36,891 INFO
cfg.MODEL.ROI_HEAD = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NAME: PVRCNNHead
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.CLASS_AGNOSTIC: True
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.SHARED_FC: [256, 256]
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.CLS_FC: [256, 256]
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.REG_FC: [256, 256]
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.DP_RATIO: 0.3
2022-02-16 07:14:36,891 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG = edict()
2022-02-16 07:14:36,891 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_TYPE: nms_gpu
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.MULTI_CLASSES_NMS: False
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_PRE_MAXSIZE: 9000
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_POST_MAXSIZE: 512
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TRAIN.NMS_THRESH: 0.8
2022-02-16 07:14:36,891 INFO
cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST = edict()
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_TYPE: nms_gpu
2022-02-16 07:14:36,891 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.MULTI_CLASSES_NMS: False
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_PRE_MAXSIZE: 1024
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_POST_MAXSIZE: 100
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.NMS_CONFIG.TEST.NMS_THRESH: 0.7
2022-02-16 07:14:36,892 INFO
cfg.MODEL.ROI_HEAD.ROI_GRID_POOL = edict()
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.GRID_SIZE: 6
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.MLPS: [[64, 64], [64, 64]]
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_RADIUS: [0.8, 1.6]
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.NSAMPLE: [16, 16]
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.ROI_GRID_POOL.POOL_METHOD: max_pool
2022-02-16 07:14:36,892 INFO
cfg.MODEL.ROI_HEAD.TARGET_CONFIG = edict()
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.BOX_CODER: ResidualCoder
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.ROI_PER_IMAGE: 128
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.FG_RATIO: 0.5
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.SAMPLE_ROI_BY_EACH_CLASS: True
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_SCORE_TYPE: roi_iou
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_FG_THRESH: 0.75
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH: 0.25
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.CLS_BG_THRESH_LO: 0.1
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.HARD_BG_RATIO: 0.8
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.TARGET_CONFIG.REG_FG_THRESH: 0.55
2022-02-16 07:14:36,892 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG = edict()
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CLS_LOSS: BinaryCrossEntropy
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.REG_LOSS: smooth-l1
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.CORNER_LOSS_REGULARIZATION: True
2022-02-16 07:14:36,892 INFO
cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS = edict()
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_cls_weight: 1.0
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_reg_weight: 1.0
2022-02-16 07:14:36,892 INFO cfg.MODEL.ROI_HEAD.LOSS_CONFIG.LOSS_WEIGHTS.rcnn_corner_weight: 1.0
2022-02-16 07:14:36,893 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-02-16 07:14:36,893 INFO
cfg.MODEL.POST_PROCESSING = edict()
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.RECALL_THRESH_LIST: [0.3, 0.5, 0.7]
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.SCORE_THRESH: 0.1
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.OUTPUT_RAW_SCORE: False
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.EVAL_METRIC: kitti
2022-02-16 07:14:36,893 INFO
cfg.MODEL.POST_PROCESSING.NMS_CONFIG = edict()
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.MULTI_CLASSES_NMS: False
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_TYPE: nms_gpu
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_THRESH: 0.1
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_PRE_MAXSIZE: 4096
2022-02-16 07:14:36,893 INFO cfg.MODEL.POST_PROCESSING.NMS_CONFIG.NMS_POST_MAXSIZE: 500
2022-02-16 07:14:36,893 INFO
cfg.OPTIMIZATION = edict()
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.BATCH_SIZE_PER_GPU: 2
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.NUM_EPOCHS: 80
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.OPTIMIZER: adam_onecycle
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.LR: 0.01
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.WEIGHT_DECAY: 0.01
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.MOMENTUM: 0.9
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.MOMS: [0.95, 0.85]
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.PCT_START: 0.4
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.DIV_FACTOR: 10
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.DECAY_STEP_LIST: [35, 45]
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.LR_DECAY: 0.1
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.LR_CLIP: 1e-07
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.LR_WARMUP: False
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.WARMUP_EPOCH: 1
2022-02-16 07:14:36,893 INFO cfg.OPTIMIZATION.GRAD_NORM_CLIP: 10
2022-02-16 07:14:36,893 INFO cfg.TAG: pv_rcnn
2022-02-16 07:14:36,894 INFO cfg.EXP_GROUP_PATH: pandaset_models
2022-02-16 07:14:37,184 INFO Loading PandaSet dataset
2022-02-16 07:14:37,185 INFO Total samples for PandaSet dataset (test): 1600
2022-02-16 07:14:38,637 INFO ==> Loading parameters from checkpoint pv_rcnn_8369.pth to GPU
2022-02-16 07:14:38,679 INFO ==> Done (loaded 367/367)
2022-02-16 07:14:38,700 INFO *************** EPOCH 8369 EVALUATION *****************
eval: 0%| | 0/1600 [00:00<?, ?it/s]../pcdet/models/roi_heads/pvrcnn_head.py:126: UserWarning: This overload of nonzero is deprecated:
nonzero()
Consider using one of the following signatures instead:
nonzero(*, bool as_tuple) (Triggered internally at /opt/conda/conda-bld/pytorch_1603729047590/work/torch/csrc/utils/python_arg_parser.cpp:882.)
dense_idx = faked_features.nonzero() # (N, 3) [x_idx, y_idx, z_idx]
eval: 100%|█████████████████████████████████████| 1600/1600 [08:09<00:00, 3.27it/s, recall_0.3=(28743, 29004) / 229468]
2022-02-16 07:22:47,887 INFO *************** Performance of EPOCH 8369 *****************
2022-02-16 07:22:47,887 INFO Generate label finished(sec_per_example: 0.3057 second).
2022-02-16 07:22:47,887 INFO recall_roi_0.3: 0.125259
2022-02-16 07:22:47,887 INFO recall_rcnn_0.3: 0.126397
2022-02-16 07:22:47,888 INFO recall_roi_0.5: 0.100062
2022-02-16 07:22:47,888 INFO recall_rcnn_0.5: 0.106080
2022-02-16 07:22:47,888 INFO recall_roi_0.7: 0.030183
2022-02-16 07:22:47,888 INFO recall_rcnn_0.7: 0.040332
2022-02-16 07:22:47,889 INFO Average predicted number of objects(1600 samples): 14.273
2022-02-16 07:22:48,275 INFO None
2022-02-16 07:22:48,275 INFO Result is save to /home/work/work/OpenPCDet/output/pandaset_models/pv_rcnn/default/eval/epoch_8369/val/default
2022-02-16 07:22:48,276 INFO ****************Evaluation done.*****************
Issue Analytics
- State:
- Created 2 years ago
- Reactions:1
- Comments:10
Top Results From Across the Web
High Recall - Low Precision for unbalanced dataset
When predicting I get a low precision (0.47) for the minority class in the validation set; recall is 0.88. I tried to use...
Read more >Advanced Sensor Suite Dataset for Autonomous Driving - arXiv
In this paper, we introduce PandaSet, the first dataset produced by a complete, high-precision autonomous vehicle sensor kit.
Read more >The PandaSet Dataset – Weights & Biases - WandB
Models can be evaluated using Average Precision. LiDAR Point Cloud Segmentation. The PandaSet Dataset also provides the ground truth labels for ...
Read more >Getting good accuracy but very low precision for classification ...
I think I understand what is going on. Consider a dummy classifier that would return the majority class for each sample of your...
Read more >PandaSet: Advanced Sensor Suite Dataset for Autonomous ...
LiDAR has become a standard sensor for autonomous driving applications a ... named PandaSet, which provides a complete kit of high-precision ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Hi, I think that this may be due to the fact that you use a model trained on Kitti, which uses different reference coordinates than Pandaset,in Kitti the x axis points in front of the car, whereas in Pandaset it points to the left. You may also have to adjust the height of the lidar point clouds in pandaset to account for the difference in Lidar sensors, though I haven’t checked this precisely.
@LouisSF Thank you for your reply.
Are you referring to the second method I used to convert Pandaset data into kitti ? This reminds me, I will try to adjust the coordinates and use
demo.py
to see the result.also, i noticed kitti point cloud range is [0, -40, -3, 70.4, 40, 1] ,
https://github.com/open-mmlab/OpenPCDet/blob/6a1495ca610186d3b9d5142a4a6506b8dc78bce1/tools/cfgs/dataset_configs/kitti_dataset.yaml#L4
for pandaset is [-70, -40, -3, 70, 40, 1] , https://github.com/open-mmlab/OpenPCDet/blob/6a1495ca610186d3b9d5142a4a6506b8dc78bce1/tools/cfgs/dataset_configs/pandaset_dataset.yaml#L4
I’ve been trying to test pandaset with dataloader. In the case of only detecting the car, good results are achieved, but I still don’t know why cyclists and pedestrian are not detected.
I tried to change Xmin from 0 to -70, the detection result of pv-rcnn did not change, it seems that the pv-rcnn model trained on kitti only detected the part from 0 to 70, and the part from -70 to 0 was not detected at all.
If all objects from -70 to 0 cannot be detected, is it due to the use of the pv-rcnn model trained on Kitti?
https://arxiv.org/pdf/2112.12610.pdf I read pandaset’s paper and found that they were also tested with pv-rcnn on openpcdet, I tried to imitate their configuration, and the detection results were very bad. I am retraining pv-rcnn with pandaset and it looks like it will take some time.