将一张 PIL 图像转换为张量时,为什么像素会发生变化?

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

应用变换前

应用变换前

应用变换后

应用变换后

Q.1 为什么像素值发生了改变?
Q.2 如何进行纠正?

2个回答

4

问题1:torchvision 的 transforms.ToTensor() 函数可以对输入图片进行标准化处理,将像素值范围缩放至 [0,1],这是一种常见的预处理步骤。

问题2:使用 torch.tensor(input_image) 将图像转换为张量。


2
它不起作用,即使transforms.ToTensor()对输入图像进行了归一化,像素的相对值也不应该改变,但是在执行转换时,明亮的像素变得完全暗淡。 - atin

3
我能够通过在转换之前对输入数据进行标准化来解决这个问题。
问题是ToPILImage()会丢弃所有大于1的值,因此明亮的像素变暗了。

请问您能否在这里发布代码?那个链接已经失效了。 - CrazyChucky
非常抱歉回复晚了,我有一段时间没有在SO上活跃。 不幸的是,我现在没有代码了,但是如果我没记错的话,我只是使用transforms.Normalize对输入图像进行了归一化处理。@CrazyChucky - atin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接