Python 火炬视觉';RandomRotation()正在将图像张量归零
每次我使用Python 火炬视觉';RandomRotation()正在将图像张量归零,python,pytorch,python-imaging-library,torchvision,Python,Pytorch,Python Imaging Library,Torchvision,每次我使用torchvision.transforms.randomrotostation和torchvision.transforms.ToTensor时,我都会得到一个零输出图像张量。 例如,如果我在图像上运行此操作: import sys from PIL import Image from torchvision import transforms ROTATION_TRANSFORM = transforms.Compose([ transforms.RandomRotat
torchvision.transforms.randomrotostation
和torchvision.transforms.ToTensor
时,我都会得到一个零输出图像张量。
例如,如果我在图像上运行此操作:
import sys
from PIL import Image
from torchvision import transforms
ROTATION_TRANSFORM = transforms.Compose([
transforms.RandomRotation(30),
transforms.ToTensor(),
])
NO_ROTATION_TRANSFORM = transforms.Compose([
transforms.ToTensor(),
])
image = Image.open(sys.argv[1])
rotated_image_tensor = ROTATION_TRANSFORM(image)
image_tensor = NO_ROTATION_TRANSFORM(image)
print(rotated_image_tensor)
print(image_tensor)
我得到这个结果:
tensor([[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]],
[[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
...,
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.],
[0., 0., 0., ..., 0., 0., 0.]]])
tensor([[[0.5255, 0.5294, 0.5333, ..., 0.4902, 0.4980, 0.4980],
[0.5255, 0.5255, 0.5333, ..., 0.4863, 0.4941, 0.4941],
[0.5216, 0.5255, 0.5294, ..., 0.4784, 0.4863, 0.4863],
...,
[0.6275, 0.6353, 0.6471, ..., 0.6275, 0.6431, 0.6510],
[0.6196, 0.6275, 0.6431, ..., 0.6549, 0.6471, 0.6392],
[0.6392, 0.6471, 0.6549, ..., 0.6667, 0.6431, 0.6275]],
[[0.5255, 0.5294, 0.5333, ..., 0.5216, 0.5294, 0.5294],
[0.5255, 0.5255, 0.5333, ..., 0.5176, 0.5255, 0.5255],
[0.5216, 0.5255, 0.5294, ..., 0.5098, 0.5176, 0.5176],
...,
[0.6039, 0.6118, 0.6235, ..., 0.6196, 0.6353, 0.6431],
[0.5961, 0.6039, 0.6196, ..., 0.6471, 0.6392, 0.6314],
[0.6157, 0.6235, 0.6314, ..., 0.6588, 0.6353, 0.6196]],
[[0.5333, 0.5373, 0.5412, ..., 0.5333, 0.5412, 0.5412],
[0.5333, 0.5333, 0.5412, ..., 0.5294, 0.5373, 0.5373],
[0.5294, 0.5333, 0.5373, ..., 0.5216, 0.5294, 0.5294],
...,
[0.5569, 0.5647, 0.5765, ..., 0.5725, 0.5882, 0.5961],
[0.5490, 0.5569, 0.5725, ..., 0.6000, 0.5922, 0.5843],
[0.5686, 0.5765, 0.5843, ..., 0.6118, 0.5882, 0.5725]]])
图像张量不是因为旋转而丢失了信息吗?为什么它会被归零?我怎样才能防止呢
我还注意到,当随机旋转的数量减少时,结果是最后剧烈的。例如,当我使用
RandomRotation(10)
时,我仍然可以看到零,但看到的零更少。我试图使用RandomRotation
来增加分类器的训练图像,但我觉得图像张量的归零严重损害了我的数据。您正在旋转图像,因此当图像变大时会出现黑色背景。尝试随机旋转(1)您正在旋转图像,因此当图像超出尺寸时,将出现黑色背景。尝试随机旋转(1)