Отображение изображения в формате PIL от torch.Tensor - PullRequest
0 голосов
/ 22 апреля 2020

Я совсем новичок в 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:

1 Ответ

0 голосов
/ 22 апреля 2020

Поскольку ваше изображение нормализовано, вам необходимо его ненормализовать. Вы должны сделать обратные операции, которые вы делали во время нормализации. Одним из способов является

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...