- class torchmetrics.image.inception.InceptionScore(feature='logits_unbiased', splits=10, normalize=False, **kwargs)
Calculate the Inception Score (IS) which is used to access how realistic generated images are. It is defined as.
where is the KL divergence between the conditional distribution and the margianl distribution . Both the conditional and marginal distribution is calculated from features extracted from the images. The score is calculated on random splits of the images such that both a mean and standard deviation of the score are returned. The metric was originally proposed in inception ref1.
Using the default feature extraction (Inception v3 using the original weights from inception ref2), the input is expected to be mini-batches of 3-channel RGB images of shape
(3 x H x W). If argument
Trueimages are expected to be dtype
floatand have values in the
[0, 1]range, else if
normalizeis set to
Falseimages are expected to have dtype uint8 and take values in the
[0, 255]range. All images will be resized to 299 x 299 which is the size of the original training data.
using this metric with the default feature extractor requires that
torch-fidelityis installed. Either install as
pip install torchmetrics[image]or
pip install torch-fidelity
As input to
updatethe metric accepts the following input
Tensor): tensor with images feed to the feature extractor
As output of forward and compute the metric returns the following output
Tensor): float scalar tensor with mean FID value over samples
Either an str, integer or
an str or integer will indicate the inceptionv3 feature layer to choose. Can be one of the following: ‘logits_unbiased’, 64, 192, 768, 2048
nn.Modulefor using a custom feature extractor. Expects that its forward method returns an
Nis the batch size and
dis the feature size.
>>> import torch >>> _ = torch.manual_seed(123) >>> from torchmetrics.image.inception import InceptionScore >>> inception = InceptionScore() >>> # generate some images >>> imgs = torch.randint(0, 255, (100, 3, 299, 299), dtype=torch.uint8) >>> inception.update(imgs) >>> inception.compute() (tensor(1.0544), tensor(0.0117))
Initializes internal Module state, shared by both nn.Module and ScriptModule.