Комбинация torch.cat и torchvision.transforms Лидс в нулевой тензор - PullRequest
1 голос
/ 08 июля 2019

Я хочу добавить больше информации к изображению в четвертом слое тензора, первые три слоя которого основаны на изображении. После этого я хочу вырезать мир из изображения (увеличение данных) и должен изменить размер изображения до заданного размера.

Для этого я создал тензор из рисунка и соединил его с тензором с одним слоем дополнительной информации, используя torch.cat. (Почти все записи второго тензора были нулями.)

Я отправил результат через transforms.compose (чтобы вырезать и изменить размер тензора), но после этого он полностью состоял из нулей.

Здесь я построил воспроизводимый пример.

import torch
from torchvision import transforms

height = 2
width = 4
resize = 2
tensor3 = torch.rand(3,height,width)
tensor1 = torch.zeros(1,height,width)
#tensor1 = torch.rand(1,height,width)

imageToTensor = transforms.ToTensor()
tensorToImage = transforms.ToPILImage()

train_transform = transforms.Compose([
    transforms.RandomResizedCrop(resize, scale=(0.9, 1.0)),
    transforms.ToTensor(),
])

tensor4 = torch.cat((tensor3,tensor1),0)

image4 = tensorToImage(tensor4)
transformed_image4 = train_transform(image4)

print(tensor4)
print(transformed_image4)
tensor([[[0.6774, 0.5293, 0.4420, 0.2463],
         [0.1391, 0.7481, 0.3436, 0.9391]],

        [[0.0652, 0.2061, 0.2931, 0.6126],
         [0.2618, 0.3506, 0.5095, 0.7351]],

        [[0.8555, 0.6320, 0.9461, 0.0928],
         [0.2094, 0.3944, 0.0528, 0.7900]],

        [[0.0000, 0.0000, 0.0000, 0.0000],
         [0.0000, 0.0000, 0.0000, 0.0000]]])

tensor([[[0., 0.],
         [0., 0.]],

        [[0., 0.],
         [0., 0.]],

        [[0., 0.],
         [0., 0.]],

        [[0., 0.],
         [0., 0.]]])

Если я выберу «tenor1 = torch.rand (1, height, width)», у меня нет этой проблемы. Но если большинство записей равны нулю, у меня есть. С масштабом = (0,5, 1,0) у меня тоже нет проблем.

Нет вопросов:

  1. Как я могу получить размеры первых трех слоев с ненулевыми значениями?

  2. Я что-то не так понял или это действительно странно?

1 Ответ

0 голосов
/ 13 июля 2019

Я создал проблему:

https://github.com/pytorch/pytorch/issues/22611

И ответ состоял в том, что в Torchvision поддерживаются только PIL-изображения.

Альтернативой является библиотека albumentations-для трансформации.

...