def inference(model, im, ori_shape=None, transforms=None, sw_num=None):
    """
    Inference for image.
    Args:
        model (paddle.nn.Layer): model to get logits of image.
        im (Tensor): the input image.
        ori_shape (list): Origin shape of image.
        transforms (list): Transforms for image.
        sw_num(int):sw_num
    Returns:
        Tensor: If ori_shape is not None, a prediction with shape (1, 1, d, h, w) is returned.
            If ori_shape is None, a logit with shape (1, num_classes, d, h, w) is returned.
    """
    if hasattr(model, 'data_format') and model.data_format == 'NDHWC':
        im = im.transpose((0, 2, 3, 4, 1))

    # If you want to use sliding window inference, make sure the model has the img_shape parameter

    if sw_num:
        if hasattr(model, 'data_format') and model.data_format == 'NCDHW':
            data_format = model.data_format
            logits = sliding_window_inference(
                im, model.img_shape, sw_num, model, data_format=data_format)
        else:
            logits = sliding_window_inference(im, model.img_shape, sw_num,
                                              model)
    else:
        logits = model(im)
    if not isinstance(logits, collections.abc.Sequence):
        raise TypeError(
            "The type of logits must be one of collections.abc.Sequence, e.g. list, tuple. But received {}"
            .format(type(logits)))
    logit = logits[0]

    if hasattr(model, 'data_format') and model.data_format == 'NDHWC':
        logit = logit.transpose((0, 4, 1, 2, 3))

    if ori_shape is not None and ori_shape != logit.shape[2:]:
        logit = reverse_transform(logit, ori_shape, transforms, mode='bilinear')

    pred = paddle.argmax(logit, axis=1, keepdim=True, dtype='int32')

    return pred, logit

    Inference for image.
    Args:
        model (paddle.nn.Layer): model to get logits of image.
        im (Tensor): the input image.
        ori_shape (list): Origin shape of image.
        transforms (list): Transforms for image.
        sw_num(int):sw_num
    Returns:
        Tensor: If ori_shape is not None, a prediction with shape (1, 1, d, h, w) is returned.
            If ori_shape is None, a logit with shape (1, num_classes, d, h, w) is returned.
    
contrib/MedicalSeg/medicalseg/core/infer.py