【问题标题】:Display image in a PIL format from torch.Tensor从 torch.Tensor 以 PIL 格式显示图像
【发布时间】:2020-04-23 02:40:02
【问题描述】:

我对 Pytorch 还是很陌生。我想知道如何将尺寸为 torch.Size([1, 3, 224, 224]) 的张量转换为在 Jupyter 笔记本上以图像格式显示。 PIL 格式或 CV2 格式应该没问题。

我尝试使用transforms.ToPILImage(x),但结果是这样的不同格式:ToPILImage(mode=ToPILImage(mode=tensor([[[[1.3034e-16, 1.3034e-16, 1.3034e-16, ..., 1.4475e-16,.

也许我做错了什么:no_mouth:

【问题讨论】:

  • 图像可能被标准化。您必须先对其进行非规范化。
  • 是的。我如何对其进行非规范化?我应该乘以 255 吗? @akshayk07

标签: pytorch


【解决方案1】:

由于您的图像已标准化,因此您需要对其进行非标准化。您必须执行您在规范化期间执行的相反操作。一种方法是

class UnNormalize(object):
    def __init__(self, mean, std):
        self.mean = mean
        self.std = std

    def __call__(self, tensor):
        """
        Args:
            tensor (Tensor): Tensor image of size (C, H, W) to be normalized.
        Returns:
            Tensor: Normalized image.
        """
        for t, m, s in zip(tensor, self.mean, self.std):
            t.mul_(s).add_(m)
            # The normalize code -> t.sub_(m).div_(s)
        return tensor

要使用它,您需要平均值和标准差(用于标准化图像)。那么,

unorm = UnNormalize(mean = [0.35675976, 0.37380189, 0.3764753], std = [0.32064945, 0.32098866, 0.32325324])
image = unorm(normalized_image)

【讨论】:

  • 非常感谢!! @akshay07
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 2022-01-23
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2017-08-31
相关资源
最近更新 更多