basicsr.utils.__init__

class basicsr.utils.__init__.AvgTimer(window=200)[source]

Bases: object

get_avg_time()[source]
get_current_time()[source]
record()[source]
start()[source]
class basicsr.utils.__init__.DiffJPEG(differentiable=True)[source]

Bases: Module

This JPEG algorithm result is slightly different from cv2. DiffJPEG supports batch processing.

Parameters:

differentiable (bool) – If True, uses custom differentiable rounding function, if False, uses standard torch.round

forward(x, quality)[source]
Parameters:
  • x (Tensor) – Input image, bchw, rgb, [0, 1]

  • quality (float) – Quality factor for jpeg compression scheme.

training: bool
class basicsr.utils.__init__.FileClient(backend='disk', **kwargs)[source]

Bases: object

A general file client to access files in different backend.

The client loads a file or text in a specified backend from its path and return it as a binary file. it can also register other backend accessor with a given name and backend class.

backend

The storage backend type. Options are “disk”, “memcached” and “lmdb”.

Type:

str

client

The backend object.

Type:

BaseStorageBackend

get(filepath, client_key='default')[source]
get_text(filepath)[source]
class basicsr.utils.__init__.MessageLogger(opt, start_iter=1, tb_logger=None)[source]

Bases: object

Message logger for printing.

Parameters:
  • opt (dict) – Config. It contains the following keys: name (str): Exp name. logger (dict): Contains ‘print_freq’ (str) for logger interval. train (dict): Contains ‘total_iter’ (int) for total iters. use_tb_logger (bool): Use tensorboard logger.

  • start_iter (int) – Start iter. Default: 1.

  • (obj (tb_logger) – tb_logger): Tensorboard logger. Default: None.

reset_start_time()[source]
class basicsr.utils.__init__.USMSharp(radius=50, sigma=0)[source]

Bases: Module

forward(img, weight=0.5, threshold=10)[source]

Defines the computation performed at every call.

Should be overridden by all subclasses.

Note

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.

training: bool
basicsr.utils.__init__.bgr2ycbcr(img, y_only=False)[source]

Convert a BGR image to YCbCr image.

The bgr version of rgb2ycbcr. It implements the ITU-R BT.601 conversion for standard-definition television. See more details in https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion.

It differs from a similar function in cv2.cvtColor: BGR <-> YCrCb. In OpenCV, it implements a JPEG conversion. See more details in https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion.

Parameters:
  • img (ndarray) – The input image. It accepts: 1. np.uint8 type with range [0, 255]; 2. np.float32 type with range [0, 1].

  • y_only (bool) – Whether to only return Y channel. Default: False.

Returns:

The converted YCbCr image. The output image has the same type

and range as input image.

Return type:

ndarray

basicsr.utils.__init__.check_resume(opt, resume_iter)[source]

Check resume states and pretrain_network paths.

Parameters:
  • opt (dict) – Options.

  • resume_iter (int) – Resume iteration.

basicsr.utils.__init__.crop_border(imgs, crop_border)[source]

Crop borders of images.

Parameters:
  • imgs (list[ndarray] | ndarray) – Images with shape (h, w, c).

  • crop_border (int) – Crop border for each end of height and weight.

Returns:

Cropped images.

Return type:

list[ndarray]

basicsr.utils.__init__.get_env_info()[source]

Get environment information.

Currently, only log the software version.

basicsr.utils.__init__.get_root_logger(logger_name='basicsr', log_level=20, log_file=None)[source]

Get the root logger.

The logger will be initialized if it has not been initialized. By default a StreamHandler will be added. If log_file is specified, a FileHandler will also be added.

Parameters:
  • logger_name (str) – root logger name. Default: ‘basicsr’.

  • log_file (str | None) – The log filename. If specified, a FileHandler will be added to the root logger.

  • log_level (int) – The root logger level. Note that only the process of rank 0 is affected, while other processes will set the level to “Error” and be silent most of the time.

Returns:

The root logger.

Return type:

logging.Logger

basicsr.utils.__init__.get_time_str()[source]
basicsr.utils.__init__.imfrombytes(content, flag='color', float32=False)[source]

Read an image from bytes.

Parameters:
  • content (bytes) – Image bytes got from files or other streams.

  • flag (str) – Flags specifying the color type of a loaded image, candidates are color, grayscale and unchanged.

  • float32 (bool) – Whether to change to float32., If True, will also norm to [0, 1]. Default: False.

Returns:

Loaded image array.

Return type:

ndarray

basicsr.utils.__init__.img2tensor(imgs, bgr2rgb=True, float32=True)[source]

Numpy array to tensor.

Parameters:
  • imgs (list[ndarray] | ndarray) – Input images.

  • bgr2rgb (bool) – Whether to change bgr to rgb.

  • float32 (bool) – Whether to change to float32.

Returns:

Tensor images. If returned results only have

one element, just return tensor.

Return type:

list[tensor] | tensor

basicsr.utils.__init__.imwrite(img, file_path, params=None, auto_mkdir=True)[source]

Write image to file.

Parameters:
  • img (ndarray) – Image array to be written.

  • file_path (str) – Image file path.

  • params (None or list) – Same as opencv’s imwrite() interface.

  • auto_mkdir (bool) – If the parent folder of file_path does not exist, whether to create it automatically.

Returns:

Successful or not.

Return type:

bool

basicsr.utils.__init__.init_tb_logger(log_dir)[source]
basicsr.utils.__init__.init_wandb_logger(opt)[source]

We now only use wandb to sync tensorboard log.

basicsr.utils.__init__.make_exp_dirs(opt)[source]

Make dirs for experiments.

basicsr.utils.__init__.mkdir_and_rename(path)[source]

mkdirs. If path exists, rename it with timestamp and create a new one.

Parameters:

path (str) – Folder path.

basicsr.utils.__init__.rgb2ycbcr(img, y_only=False)[source]

Convert a RGB image to YCbCr image.

This function produces the same results as Matlab’s rgb2ycbcr function. It implements the ITU-R BT.601 conversion for standard-definition television. See more details in https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion.

It differs from a similar function in cv2.cvtColor: RGB <-> YCrCb. In OpenCV, it implements a JPEG conversion. See more details in https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion.

Parameters:
  • img (ndarray) – The input image. It accepts: 1. np.uint8 type with range [0, 255]; 2. np.float32 type with range [0, 1].

  • y_only (bool) – Whether to only return Y channel. Default: False.

Returns:

The converted YCbCr image. The output image has the same type

and range as input image.

Return type:

ndarray

basicsr.utils.__init__.rgb2ycbcr_pt(img, y_only=False)[source]

Convert RGB images to YCbCr images (PyTorch version).

It implements the ITU-R BT.601 conversion for standard-definition television. See more details in https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion.

Parameters:

img (Tensor) – Images with shape (n, 3, h, w), the range [0, 1], float, RGB format. y_only (bool): Whether to only return Y channel. Default: False.

Returns:

converted images with the shape (n, 3/1, h, w), the range [0, 1], float.

Return type:

(Tensor)

basicsr.utils.__init__.scandir(dir_path, suffix=None, recursive=False, full_path=False)[source]

Scan a directory to find the interested files.

Parameters:
  • dir_path (str) – Path of the directory.

  • suffix (str | tuple(str), optional) – File suffix that we are interested in. Default: None.

  • recursive (bool, optional) – If set to True, recursively scan the directory. Default: False.

  • full_path (bool, optional) – If set to True, include the dir_path. Default: False.

Returns:

A generator for all the interested files with relative paths.

basicsr.utils.__init__.set_random_seed(seed)[source]

Set random seeds.

basicsr.utils.__init__.sizeof_fmt(size, suffix='B')[source]

Get human readable file size.

Parameters:
  • size (int) – File size.

  • suffix (str) – Suffix. Default: ‘B’.

Returns:

Formatted file size.

Return type:

str

basicsr.utils.__init__.tensor2img(tensor, rgb2bgr=True, out_type=<class 'numpy.uint8'>, min_max=(0, 1))[source]

Convert torch Tensors into image numpy arrays.

After clamping to [min, max], values will be normalized to [0, 1].

Parameters:
  • tensor (Tensor or list[Tensor]) – Accept shapes: 1) 4D mini-batch Tensor of shape (B x 3/1 x H x W); 2) 3D Tensor of shape (3/1 x H x W); 3) 2D Tensor of shape (H x W). Tensor channel should be in RGB order.

  • rgb2bgr (bool) – Whether to change rgb to bgr.

  • out_type (numpy type) – output types. If np.uint8, transform outputs to uint8 type with range [0, 255]; otherwise, float type with range [0, 1]. Default: np.uint8.

  • min_max (tuple[int]) – min and max values for clamp.

Returns:

3D ndarray of shape (H x W x C) OR 2D ndarray of shape (H x W). The channel order is BGR.

Return type:

(Tensor or list)

basicsr.utils.__init__.usm_sharp(img, weight=0.5, radius=50, threshold=10)[source]

USM sharpening.

Input image: I; Blurry image: B. 1. sharp = I + weight * (I - B) 2. Mask = 1 if abs(I - B) > threshold, else: 0 3. Blur mask: 4. Out = Mask * sharp + (1 - Mask) * I

Parameters:
  • img (Numpy array) – Input image, HWC, BGR; float32, [0, 1].

  • weight (float) – Sharp weight. Default: 1.

  • radius (float) – Kernel size of Gaussian blur. Default: 50.

  • threshold (int) –

basicsr.utils.__init__.yaml_load(f)[source]

Load yaml file or string.

Parameters:

f (str) – File path or a python string.

Returns:

Loaded dict.

Return type:

dict

basicsr.utils.__init__.ycbcr2bgr(img)[source]

Convert a YCbCr image to BGR image.

The bgr version of ycbcr2rgb. It implements the ITU-R BT.601 conversion for standard-definition television. See more details in https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion.

It differs from a similar function in cv2.cvtColor: YCrCb <-> BGR. In OpenCV, it implements a JPEG conversion. See more details in https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion.

Parameters:

img (ndarray) – The input image. It accepts: 1. np.uint8 type with range [0, 255]; 2. np.float32 type with range [0, 1].

Returns:

The converted BGR image. The output image has the same type

and range as input image.

Return type:

ndarray

basicsr.utils.__init__.ycbcr2rgb(img)[source]

Convert a YCbCr image to RGB image.

This function produces the same results as Matlab’s ycbcr2rgb function. It implements the ITU-R BT.601 conversion for standard-definition television. See more details in https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.601_conversion.

It differs from a similar function in cv2.cvtColor: YCrCb <-> RGB. In OpenCV, it implements a JPEG conversion. See more details in https://en.wikipedia.org/wiki/YCbCr#JPEG_conversion.

Parameters:

img (ndarray) – The input image. It accepts: 1. np.uint8 type with range [0, 255]; 2. np.float32 type with range [0, 1].

Returns:

The converted RGB image. The output image has the same type

and range as input image.

Return type:

ndarray