def _infer_yolox(session: onnxruntime.InferenceSession, preprocess: preprocess_yolox, 
                    opencv_image: ndarray, input_shape: Tuple[int, int]) -> Tuple[ndarray, float]:
    """inference for onnx yolox

    Args:
        session (onnxruntime.InferenceSession): the onnx session of the model
        preprocess (preprocess_yolox): the preprocess function for the input image
        opencv_image (ndarray):the opencv formatted input image 
        input_shape (Tuple[int, int]): the shape of the input image

    Returns:
        Tuple[ndarray, float]: _description_
    """
    img, ratio = preprocess(opencv_image, input_shape)

    ort_inputs = {session.get_inputs()[0].name: img[None, :, :, :]}
    output = session.run(None, ort_inputs)

    return output, ratio
inference for onnx yolox

    Args:
        session (onnxruntime.InferenceSession): the onnx session of the model
        preprocess (preprocess_yolox): the preprocess function for the input image
        opencv_image (ndarray):the opencv formatted input image 
        input_shape (Tuple[int, int]): the shape of the input image

    Returns:
        Tuple[ndarray, float]: _description_
    
src/marqo/s2_inference/processing/yolox_utils.py