NIQE#

class deepinv.loss.metric.NIQE(device='cpu', check_input_range=False, **kwargs)[source]#

Bases: Metric

Natural Image Quality Evaluator (NIQE) metric.

Calculates the NIQE \(\text{NIQE}(\hat{x})\) where \(\hat{x}=\inverse{y}\). It is a no-reference image quality metric that estimates the quality of images. Uses implementation from pyiqa.

Note

By default, no reduction is performed in the batch dimension.

Example:

>>> from deepinv.utils.demo import get_image_url, load_url_image
>>> from deepinv.loss.metric import NIQE
>>> ();m = NIQE();() 
(...)
>>> x_net = load_url_image(get_image_url("celeba_example.jpg"), img_size=128)
>>> m(x_net) 
tensor([...])
Parameters:
  • device (str) – device to use for the metric computation. Default: ‘cpu’.

  • complex_abs (bool) – perform complex magnitude before passing data to metric function. If True, the data must either be of complex dtype or have size 2 in the channel dimension (usually the second dimension after batch).

  • reduction (str) – a method to reduce metric score over individual batch scores. mean: takes the mean, sum takes the sum, none or None no reduction will be applied (default).

  • norm_inputs (str) – normalize images before passing to metric. l2``normalizes by L2 spatial norm, ``min_max normalizes by min and max of each input.

  • check_input_range (bool) – if True, pyiqa will raise error if inputs aren’t in the appropriate range [0, 1].

metric(x_net, *args, **kwargs)[source]#

Calculate metric on data.

Override this function to implement your own metric. Always include args and kwargs arguments.

Parameters:
  • x_net (torch.Tensor) – Reconstructed image \(\hat{x}=\inverse{y}\) of shape (B, ...) or (B, C, ...).

  • x (torch.Tensor) – Reference image \(x\) (optional) of shape (B, ...) or (B, C, ...).

Return torch.Tensor:

calculated metric, the tensor size might be (1,) or (B,).