While converting a PIL image into a tensor why the pixels are changing?
Asked Answered
K

2

5
transform = transforms.Compose([transforms.ToPILImage(), transforms.ToTensor()])

Before applying the transformation

Before applying the transformation

After applying the transformation

After applying the transformation

Q.1 Why the pixel values are changed?
Q.2 How to correct this?

Kauri answered 21/4, 2020 at 19:0 Comment(0)
K
3

I was able to solve this problem by normalizing the input data before transforming it.
The problem was that ToPILImage() was discarding all the values which were greater than 1 hence the bright pixels became dark.

Kauri answered 6/12, 2020 at 11:47 Comment(2)
Could you post the code here, please? That link is dead.Gloria
Sorry for the VERY late reply, I wasn't active on SO for some time. Also unfortunately I don't have the code now, although iirc i just normalized the input image using transforms.Normalize @GloriaKauri
T
4

Q1: transforms.ToTensor() of torchvision normalizes your input image, i.e. puts it in the range [0,1] as it is a very common preprocessing step.

Q2: use torch.tensor(input_image) to convert image into a tensor instead.

Twentytwo answered 25/4, 2020 at 9:20 Comment(1)
It doesn't work, and even if transforms.ToTensor() normalizes the input image the relative values of pixels should not change, but the bright pixels become completely dark when performing the transform.Kauri
K
3

I was able to solve this problem by normalizing the input data before transforming it.
The problem was that ToPILImage() was discarding all the values which were greater than 1 hence the bright pixels became dark.

Kauri answered 6/12, 2020 at 11:47 Comment(2)
Could you post the code here, please? That link is dead.Gloria
Sorry for the VERY late reply, I wasn't active on SO for some time. Also unfortunately I don't have the code now, although iirc i just normalized the input image using transforms.Normalize @GloriaKauri

© 2022 - 2024 — McMap. All rights reserved.