def METHOD_NAME(
    self,
    pcd: Union[str, Sequence[str]],
    input_shape: Sequence[int] = None,
    data_preprocessor: Optional[BaseDataPreprocessor] = None
) -> Tuple[Dict, torch.Tensor]:
    """Create input for detector.
    Args:
        pcd (str, Sequence[str]): Input pcd file path.
        input_shape (Sequence[int], optional): model input shape.
            Defaults to None.
        data_preprocessor (Optional[BaseDataPreprocessor], optional):
            model input preprocess. Defaults to None.
    Returns:
        tuple: (data, input), meta information for the input pcd
            and model input.
    """
    cfg = self.model_cfg
    test_pipeline = deepcopy(cfg.test_dataloader.dataset.pipeline)
    test_pipeline = Compose(test_pipeline)
    box_type_3d, box_mode_3d = \
        get_box_type(cfg.test_dataloader.dataset.box_type_3d)
    if isinstance(pcd, (list, tuple)):
        pcd = pcd[0]
    path_prefix = os.path.dirname(pcd)
    data_list = mmengine.load(pcd)['data_list']
    assert 1 == len(data_list)
    assert 'images' in data_list[0]
    data = []
    images = data_list[0]['images']
    for cam_type, item in images.items():
        # avoid data_info['images'] has multiple keys and camera views.
        # Only support one cam type here
        if cam_type not in ['CAM_FRONT', 'CAM2']:
            continue
        item['img_path'] = os.path.join(path_prefix, item['img_path'])
        mono_img_info = {f'{cam_type}': item}
        data_ = dict(
            images=mono_img_info,
            box_type_3d=box_type_3d,
            box_mode_3d=box_mode_3d)
        data_ = test_pipeline(data_)
        data.append(data_)
    collate_data = pseudo_collate(data)
    if data_preprocessor is not None:
        collate_data = data_preprocessor(collate_data, False)
        inputs = collate_data['inputs']
    else:
        inputs = collate_data['inputs']
    return collate_data, inputs