如何将图像变换应用于图像列表并保持正确的尺寸?

doctopus

我正在使用Omniglot数据集,该数据集是一组19,280张图像,每张图像均为105 x 105(灰度)。

我通过以下转换定义了自定义数据集类:

class OmniglotDataset(Dataset):

    def __init__(self, X, transform=None):
        self.X = X
        self.transform = transform

    def __len__(self):
        return self.X.shape[0]

    def __getitem__(self, idx):
        if torch.is_tensor(idx):
            idx = idx.tolist()
        img = self.X[idx]
        if self.transform:
            img = self.transform(img)
        return img

img_transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))
])

X_train.shape
(19280, 105, 105)
train_dataset = OmniglotDataset(X_train, transform=img_transform)

当我索引单个图像时,它返回正确的尺寸:

train_dataset[0].shape
torch.Size([1, 105, 105])

但是,当我索引多个图像时,它会以错误的顺序返回尺寸(我期望是3 x 105 x 105):

train_dataset[[1,2,3]].shape
torch.Size([105, 3, 105])
安东·加尼切夫(Anton Ganichev)

您收到错误,是因为尝试将单个图像的转换应用于列表:

获取任何大小的批处理的更方便的方法是使用Dataloader:

from torch.utils.data import DataLoader
from torchvision import datasets, transforms

img_transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Normalize((0.5,), (0.5,))
])

omniglot = datasets.Omniglot(root='./data', background=True, download=True, transform = img_transform)

data_loader = DataLoader(omniglot, shuffle=False, batch_size = 8)
for image_batch in data_loader:
  # now image_batch contain first eight samples
  print(image_batch.shape) # torch.Size([8, 1, 105, 105]) 
  break

如果您确实需要以任意顺序获取图像:

from operator import itemgetter

indexes = [1,3,5]
selected_samples = itemgetter(*b)(omniglot) 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单击拇指时,如何将淡入/淡出应用于全尺寸图像?

来自分类Dev

如何正确将滤镜应用于图像阵列?

来自分类Dev

如何将内核应用于栅格图像

来自分类Dev

如何将拖动应用于矩形/图像?

来自分类Dev

如何将半径应用于颤动的图像?

来自分类Dev

PyTorch:如何将相同的随机变换应用于多个图像?

来自分类Dev

如何将渲染变换应用于鼠标位置

来自分类Dev

如何将变换应用于火炬张量

来自分类Dev

如何将全局变换应用于子对象

来自分类Dev

如何将缩小图像的轮廓应用于原始图像?

来自分类Dev

如何正确地将“乘法”色调应用于 HTML5 画布中的图像?

来自分类Dev

图像遮罩后保持正确的色彩

来自分类Dev

图像遮罩后保持正确的色彩

来自分类Dev

如何将Box Shadow应用于Bootstrap Carousel中的单个图像

来自分类Dev

如何将高斯盒滤镜应用于完整图像?

来自分类Dev

如何将CSS模糊滤镜应用于背景(非图像)

来自分类Dev

SwiftUI-如何将AspectFit应用于图像,以使其不会超出指定区域

来自分类Dev

如何将多个click事件侦听器应用于android中的图像

来自分类Dev

如何将Box Shadow应用于Bootstrap Carousel中的单个图像

来自分类Dev

如何将python scikit-learn应用于图像/声音/视频以进行机器学习?

来自分类Dev

如何将两个颜色阈值应用于图像OpenCV

来自分类Dev

如何将蒙版应用于保存图像 (swift3)

来自分类Dev

如何将今天的日期应用于使用 ajax 和 php 上传的图像。

来自分类Dev

如何将泰勒级数扩展应用于opencv中的图像?

来自分类Dev

如何将 css 过渡应用于背景图像更改?

来自分类Dev

如何将霍夫圆方法应用于阈值图像?

来自分类Dev

Keras的ImageDataGenerator是否将变换随机应用于每个图像?

来自分类Dev

如何将AND应用于列表的所有元素?

来自分类Dev

如何将排列应用于列表?

Related 相关文章

  1. 1

    单击拇指时,如何将淡入/淡出应用于全尺寸图像?

  2. 2

    如何正确将滤镜应用于图像阵列?

  3. 3

    如何将内核应用于栅格图像

  4. 4

    如何将拖动应用于矩形/图像?

  5. 5

    如何将半径应用于颤动的图像?

  6. 6

    PyTorch:如何将相同的随机变换应用于多个图像?

  7. 7

    如何将渲染变换应用于鼠标位置

  8. 8

    如何将变换应用于火炬张量

  9. 9

    如何将全局变换应用于子对象

  10. 10

    如何将缩小图像的轮廓应用于原始图像?

  11. 11

    如何正确地将“乘法”色调应用于 HTML5 画布中的图像?

  12. 12

    图像遮罩后保持正确的色彩

  13. 13

    图像遮罩后保持正确的色彩

  14. 14

    如何将Box Shadow应用于Bootstrap Carousel中的单个图像

  15. 15

    如何将高斯盒滤镜应用于完整图像?

  16. 16

    如何将CSS模糊滤镜应用于背景(非图像)

  17. 17

    SwiftUI-如何将AspectFit应用于图像,以使其不会超出指定区域

  18. 18

    如何将多个click事件侦听器应用于android中的图像

  19. 19

    如何将Box Shadow应用于Bootstrap Carousel中的单个图像

  20. 20

    如何将python scikit-learn应用于图像/声音/视频以进行机器学习?

  21. 21

    如何将两个颜色阈值应用于图像OpenCV

  22. 22

    如何将蒙版应用于保存图像 (swift3)

  23. 23

    如何将今天的日期应用于使用 ajax 和 php 上传的图像。

  24. 24

    如何将泰勒级数扩展应用于opencv中的图像?

  25. 25

    如何将 css 过渡应用于背景图像更改?

  26. 26

    如何将霍夫圆方法应用于阈值图像?

  27. 27

    Keras的ImageDataGenerator是否将变换随机应用于每个图像?

  28. 28

    如何将AND应用于列表的所有元素?

  29. 29

    如何将排列应用于列表?

热门标签

归档