Multi-Scale SSIM¶
Module Interface¶
- class torchmetrics.MultiScaleStructuralSimilarityIndexMeasure(gaussian_kernel=True, kernel_size=11, sigma=1.5, reduction='elementwise_mean', data_range=None, k1=0.01, k2=0.03, betas=(0.0448, 0.2856, 0.3001, 0.2363, 0.1333), normalize=None, **kwargs)[source]
Computes MultiScaleSSIM, Multi-scale Structural Similarity Index Measure, which is a generalization of Structural Similarity Index Measure by incorporating image details at different resolution scores.
- Parameters
gaussian_kernel¶ (
bool) – IfTrue(default), a gaussian kernel is used, if false a uniform kernel is usedkernel_size¶ (
Union[int,Sequence[int]]) – size of the gaussian kernelsigma¶ (
Union[float,Sequence[float]]) – Standard deviation of the gaussian kernelreduction¶ (
Literal[‘elementwise_mean’, ‘sum’, ‘none’, None]) –a method to reduce metric score over labels.
'elementwise_mean': takes the mean'sum': takes the sum'none'orNone: no reduction will be applied
data_range¶ (
Optional[float]) – Range of the image. IfNone, it is determined from the image (max - min)k1¶ (
float) – Parameter of structural similarity index measure.k2¶ (
float) – Parameter of structural similarity index measure.betas¶ (
Tuple[float,...]) – Exponent parameters for individual similarities and contrastive sensitivies returned by different image resolutions.normalize¶ (
Optional[Literal[‘relu’, ‘simple’, None]]) – When MultiScaleStructuralSimilarityIndexMeasure loss is used for training, it is desirable to use normalizes to improve the training stability. This normalize argument is out of scope of the original implementation [1], and it is adapted from https://github.com/jorge-pessoa/pytorch-msssim instead.kwargs¶ (
Dict[str,Any]) – Additional keyword arguments, see Advanced metric settings for more info.
- Returns
Tensor with Multi-Scale SSIM score
- Raises
ValueError – If
kernel_sizeis not an int or a Sequence of ints with size 2 or 3.ValueError – If
betasis not a tuple of floats with lengt 2.ValueError – If
normalizeis neither None, ReLU nor simple.
Example
>>> from torchmetrics import MultiScaleStructuralSimilarityIndexMeasure >>> import torch >>> preds = torch.rand([1, 1, 256, 256], generator=torch.manual_seed(42)) >>> target = preds * 0.75 >>> ms_ssim = MultiScaleStructuralSimilarityIndexMeasure() >>> ms_ssim(preds, target) tensor(0.9558)
References
[1] Multi-Scale Structural Similarity For Image Quality Assessment by Zhou Wang, Eero P. Simoncelli and Alan C. Bovik MultiScaleSSIM
Initializes internal Module state, shared by both nn.Module and ScriptModule.
Functional Interface¶
- torchmetrics.functional.multiscale_structural_similarity_index_measure(preds, target, gaussian_kernel=True, sigma=1.5, kernel_size=11, reduction='elementwise_mean', data_range=None, k1=0.01, k2=0.03, betas=(0.0448, 0.2856, 0.3001, 0.2363, 0.1333), normalize=None)[source]
Computes MultiScaleSSIM, Multi-scale Structual Similarity Index Measure, which is a generalization of Structual Similarity Index Measure by incorporating image details at different resolution scores.
- Parameters
preds¶ (
Tensor) – Predictions from model of shape[N, C, H, W]target¶ (
Tensor) – Ground truth values of shape[N, C, H, W]kernel_size¶ (
Union[int,Sequence[int]]) – size of the gaussian kernelsigma¶ (
Union[float,Sequence[float]]) – Standard deviation of the gaussian kernelreduction¶ (
Literal[‘elementwise_mean’, ‘sum’, ‘none’, None]) –a method to reduce metric score over labels.
'elementwise_mean': takes the mean'sum': takes the sum'none'orNone: no reduction will be applied
data_range¶ (
Optional[float]) – Range of the image. IfNone, it is determined from the image (max - min)k1¶ (
float) – Parameter of structural similarity index measure.k2¶ (
float) – Parameter of structural similarity index measure.betas¶ (
Tuple[float,...]) – Exponent parameters for individual similarities and contrastive sensitivies returned by different image resolutions.normalize¶ (
Optional[Literal[‘relu’, ‘simple’]]) – When MultiScaleSSIM loss is used for training, it is desirable to use normalizes to improve the training stability. This normalize argument is out of scope of the original implementation [1], and it is adapted from https://github.com/jorge-pessoa/pytorch-msssim instead.
- Return type
- Returns
Tensor with Multi-Scale SSIM score
- Raises
TypeError – If
predsandtargetdon’t have the same data type.ValueError – If
predsandtargetdon’t haveBxCxHxW shape.ValueError – If the length of
kernel_sizeorsigmais not2.ValueError – If one of the elements of
kernel_sizeis not anodd positive number.ValueError – If one of the elements of
sigmais not apositive number.
Example
>>> from torchmetrics.functional import multiscale_structural_similarity_index_measure >>> preds = torch.rand([1, 1, 256, 256], generator=torch.manual_seed(42)) >>> target = preds * 0.75 >>> multiscale_structural_similarity_index_measure(preds, target) tensor(0.9558)
References
[1] Multi-Scale Structural Similarity For Image Quality Assessment by Zhou Wang, Eero P. Simoncelli and Alan C. Bovik MultiScaleSSIM