def METHOD_NAME(img, factors, interpolation="auto"):
    """Resize input image to a new size using resize factors along x and y axes.
    Inputs:
    img           = RGB or grayscale image data
    factors       = Resizing factors (width, height). E.g. (0.5, 0.5)
    interpolation = Interpolation method (if requested):
                      "auto" = select method automatically (default)
                      "area" = resampling using pixel area (OpenCV INTER_AREA)
                      "bicubic" = bicubic interpolation (OpenCV INTER_CUBIC)
                      "bilinear" = bilinear interpolation (OpenCV INTER_LINEAR)
                      "lanczos" = Lanczos interpolation (OpenCV INTER_LANCZOS4)
                      "nearest" = nearest-neighbor interpolation (OpenCV INTER_NEAREST)
    Returns:
    resized_img   = Resized image
    :param img: numpy.ndarray
    :param factors: tuple
    :param interpolation: str
    :return resized_img: numpy.ndarray
    """
    if not isinstance(factors, tuple) or len(factors) != 2 or not all([n > 0 for n in factors]):
        fatal_error(f"The input factors={factors} should be a tuple of length 2 with values greater than 0.")
    interp_mtd = _set_interpolation(input_size=(1, 1), output_size=factors, method=interpolation)
    resized_img = cv2.resize(img, (0, 0), fx=factors[0], fy=factors[1], interpolation=interp_mtd)
    _debug(visual=resized_img, filename=os.path.join(params.debug_outdir, str(params.device) + '_resized.png'))
    return resized_img