示例#1
0
    def generate_prediction_dict(input_dict, index, record_dict):
        # finally generate predictions.
        sample_idx = input_dict['sample_idx'][
            index] if 'sample_idx' in input_dict else -1
        boxes3d_lidar_preds = record_dict['boxes'].cpu().numpy()

        if boxes3d_lidar_preds.shape[0] == 0:
            return {'sample_idx': sample_idx}

        calib = input_dict['calib'][index]
        image_shape = input_dict['image_shape'][index]

        boxes3d_camera_preds = box_utils.boxes3d_lidar_to_camera(
            boxes3d_lidar_preds, calib)
        boxes2d_image_preds = box_utils.boxes3d_camera_to_imageboxes(
            boxes3d_camera_preds, calib, image_shape=image_shape)
        # predictions
        predictions_dict = {
            'bbox': boxes2d_image_preds,
            'box3d_camera': boxes3d_camera_preds,
            'box3d_lidar': boxes3d_lidar_preds,
            'scores': record_dict['scores'].cpu().numpy(),
            'label_preds': record_dict['labels'].cpu().numpy(),
            'sample_idx': sample_idx,
        }
        return predictions_dict
示例#2
0
    def generate_prediction_dict(input_dict, index, record_dict):
        """
        Generate the prediction dict for EACH sample, called by the post processing. All this fn
        does really is mapping prediciton boxes to camera coordinates putting things together in
        a predictions_dict.
        Args:
            input_dict: provided by the dataset to provide dataset-specific information
            index: batch index of current sample
            record_dict: the predicted results of current sample from the detector,
                which currently includes these keys: {
                    'boxes': (N, 7 + C)  [x, y, z, w, l, h, heading_in_kitti] in LiDAR coords
                    'scores': (N)
                    'labels': (N)
                }
        Returns:
            predictions_dict: the required prediction dict of current scene for specific dataset
        """

        # finally generate predictions.
        sample_idx = input_dict['sample_idx'][
            index] if 'sample_idx' in input_dict else -1
        boxes3d_lidar_preds = record_dict['boxes'].cpu().numpy()

        if boxes3d_lidar_preds.shape[0] == 0:
            return {'sample_idx': sample_idx}

        calib = input_dict['calib'][index]
        image_shape = input_dict['image_shape'][index]

        boxes3d_camera_preds = box_utils.boxes3d_lidar_to_camera(
            boxes3d_lidar_preds, calib)
        boxes2d_image_preds = box_utils.boxes3d_camera_to_imageboxes(
            boxes3d_camera_preds, calib, image_shape=image_shape)
        # predictions
        predictions_dict = {
            'bbox': boxes2d_image_preds,
            'box3d_camera': boxes3d_camera_preds,
            'box3d_lidar': boxes3d_lidar_preds,
            'scores': record_dict['scores'].cpu().numpy(),
            'label_preds': record_dict['labels'].cpu().numpy(),
            'sample_idx': sample_idx,
        }
        return predictions_dict
示例#3
0
    def generate_prediction_dict(input_dict, index, record_dict):
        # finally generate predictions.
        sample_idx = input_dict['sample_idx'][
            index] if 'sample_idx' in input_dict else -1
        try:
            boxes3d_lidar_preds = record_dict['boxes'].cpu().numpy()
        except:
            boxes3d_lidar_preds = record_dict['boxes'].detach().cpu().numpy()
        if boxes3d_lidar_preds.shape[0] == 0:
            return {'sample_idx': sample_idx}

        if not cfg.DATA_CONFIG.TS_DATA:
            calib = input_dict['calib'][index]
            image_shape = input_dict['image_shape'][index]

            boxes3d_camera_preds = box_utils.boxes3d_lidar_to_camera(
                boxes3d_lidar_preds, calib)
            boxes2d_image_preds = box_utils.boxes3d_camera_to_imageboxes(
                boxes3d_camera_preds, calib, image_shape=image_shape)
            # predictions
            predictions_dict = {
                'bbox': boxes2d_image_preds,
                'box3d_camera': boxes3d_camera_preds,
                'box3d_lidar': boxes3d_lidar_preds,
                'scores': record_dict['scores'].cpu().numpy(),
                'label_preds': record_dict['labels'].cpu().numpy(),
                'sample_idx': sample_idx,
            }
        else:
            boxes3d_camera_preds = box_utils.ts_boxes3d_lidar_to_camera(
                boxes3d_lidar_preds)
            predictions_dict = {
                'bbox': np.zeros((boxes3d_lidar_preds.shape[0], 4)),
                'box3d_camera': boxes3d_camera_preds,
                'box3d_lidar': boxes3d_lidar_preds,
                'scores': record_dict['scores'].detach().cpu().numpy(),
                'label_preds': record_dict['labels'].detach().cpu().numpy(),
                'sample_idx': sample_idx,
            }
        return predictions_dict