torchvision.datasets

译者:@那伊抹微笑、@dawenzi123、@LeeGeong、@liandongze

校对者:@咸鱼

所有的数据集都是 torch.utils.data.Dataset 类的子类, 也就是说, 他们内部都实现了 __getitem____len__ 这两个方法. 同时, 他们也都可以传递给类 torch.utils.data.Dataset, 它可以使用 torch.multiprocessing 工作器来并行的加载多个样本.

示例:

  1. imagenet_data = torchvision.datasets.ImageFolder('path/to/imagenet_root/')
  2. data_loader = torch.utils.data.DataLoader(imagenet_data,
  3. batch_size=4,
  4. shuffle=True,
  5. num_workers=args.nThreads)

可用的数据集如下所示:

Datasets

  • MNIST
  • Fashion-MNIST
  • COCO
    • Captions
    • Detection
  • LSUN
  • ImageFolder
  • Imagenet-12
  • CIFAR
  • STL10
  • SVHN
  • PhotoTour

所有数据集都有几乎相似的 API, 它们有两个普通的参数: transformtarget_transform 可分别的对输入和目标数据集进行变换. - transform: 输入原始图片, 返回转换后的图片. - target_transform: 输入为 target, 返回转换后的 target.

MNIST

  1. class torchvision.datasets.MNIST(root, train=True, transform=None, target_transform=None, download=False)

MNIST Dataset.

参数:

  • root (string)processed/training.ptprocessed/test.pt 存在的主目录.
  • train (bool, 可选) – 如果 True, 数据来自训练集 training.pt , 如果 False, 数据来自测试集 test.pt .
  • download (bool, 可选) – 如果 true, 就从网上下载数据集并且放到 root 目录下. 如果数据集已经下载, 那么不会再次下载.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.

Fashion-MNIST

  1. class torchvision.datasets.FashionMNIST(root, train=True, transform=None, target_transform=None, download=False)

Fashion-MNIST Dataset.

参数:

  • root (string)processed/training.ptprocessed/test.pt 存在的主目录.
  • train (bool, 可选) – 如果 True, 数据来自训练集 training.pt , 如果 False, 数据来自测试集 test.pt .
  • download (bool, 可选) – 如果 true, 就从网上下载数据集并且放到 root 目录下. 如果数据集已经下载, 那么不会再次下载.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.

COCO

注解:

需要安装 COCO API

Captions

  1. class torchvision.datasets.CocoCaptions(root, annFile, transform=None, target_transform=None)

MS Coco Captions Dataset.

参数:

  • root (string) – 数据集下载存放的主目录.
  • annFile (string) – json 注释文件存放的路径
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.ToTensor
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.

示例:

  1. import torchvision.datasets as dset
  2. import torchvision.transforms as transforms
  3. cap = dset.CocoCaptions(root = 'dir where images are',
  4. annFile = 'json annotation file',
  5. transform=transforms.ToTensor())
  6. print('Number of samples: ', len(cap))
  7. img, target = cap[3] # load 4th sample
  8. print("Image Size: ", img.size())
  9. print(target)

Output:

  1. Number of samples: 82783
  2. Image Size: (3L, 427L, 640L)
  3. [u'A plane emitting smoke stream flying over a mountain.',
  4. u'A plane darts across a bright blue sky behind a mountain covered in snow',
  5. u'A plane leaves a contrail above the snowy mountain top.',
  6. u'A mountain that has a plane flying overheard in the distance.',
  7. u'A mountain view with a plume of smoke in the background']
  1. __getitem__(index)

参数:index (int) – Index

返回值:Tuple (image, target). 目标是一个图像标注的列表.

返回类型:tuple

Detection

  1. class torchvision.datasets.CocoDetection(root, annFile, transform=None, target_transform=None)

MS Coco Detection Dataset.

参数:

  • root (string) – 数据集下载存放的主目录.
  • annFile (string) – json 注释文件存放的路径
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.ToTensor
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.
  1. __getitem__(index)

参数:index (int) – Index

返回值:Tuple (image, target). 目标是由 coco.loadAnns 返回的对象.

返回类型:tuple

LSUN

  1. class torchvision.datasets.LSUN(db_path, classes='train', transform=None, target_transform=None)

LSUN dataset.

参数:

  • db_path (string) – 数据集文件存放的主目录.
  • classes (string 或 list) – {‘train’, ‘val’, ‘test’} 中的一个, 或者是一个要载入种类的列表. e,g. [‘bedroom_train’, ‘church_train’].
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.
  1. __getitem__(index)

参数:index (int) – Index

返回值:Tuple (image, target) 目标是目标类别的索引.

返回类型:tuple

ImageFolder

  1. class torchvision.datasets.ImageFolder(root, transform=None, target_transform=None, loader=<function default_loader at 0x432aa28>)

一个通用的数据加载器, 数据集中的数据以以下方式组织:

  1. root/dog/xxx.png
  2. root/dog/xxy.png
  3. root/dog/xxz.png
  4. root/cat/123.png
  5. root/cat/nsdf3.png
  6. root/cat/asd932_.png

参数:

  • root (string) – 主目录.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.
  • loader – 一个从给定路径载入图像的函数.
  1. __getitem__(index)

参数:index (int) – Index

返回值:(image, target) 目标是目标类别的class_index.

返回类型:tuple

Imagenet-12

这可以通过一个 ImageFolder 数据集轻易实现. 该数据预处理过程如 这里描述的 所示

这里是一个预处理示例.

CIFAR

  1. class torchvision.datasets.CIFAR10(root, train=True, transform=None, target_transform=None, download=False)

CIFAR10 Dataset.

参数:

  • root (string)cifar-10-batches-py 存在的主目录.
  • train (bool, 可选) – 如果 True, 数据来自训练集, 如果 False, 数据来自测试集.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.
  • download (bool, 可选) – 如果 true, 就从网上下载数据集并且放到 root 目录下. 如果数据集已经下载, 那么不会再次下载.
  1. __getitem__(index)

参数:index (int) – Index

返回值:(image, target) 目标是目标分类的索引.

返回类型:tuple

  1. class torchvision.datasets.CIFAR100(root, train=True, transform=None, target_transform=None, download=False)

CIFAR100 Dataset.

CIFAR10 Dataset 的一个子类.

STL10

  1. class torchvision.datasets.STL10(root, split='train', transform=None, target_transform=None, download=False)

STL10 Dataset.

参数:

  • root (string)stl10_binary数据集存放的主目录.
  • split (string) – {‘train’, ‘test’, ‘unlabeled’, ‘train+unlabeled’} 中的一个. 它是根据数据集选择的.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.
  • download (bool, 可选) – 如果 true, 就从网上下载数据集并且放到 root 目录下. 如果数据集已经下载, 那么不会再次下载.
  1. __getitem__(index)

参数:index (int) – Index

返回值:(image, target) 目标是目标类的索引.

返回类型:tuple

SVHN

  1. class torchvision.datasets.SVHN(root, split='train', transform=None, target_transform=None, download=False)

SVHN Dataset. Note: 原始的 SVHN 数据集把标签 10 分给了数字 0. 然而在这个数据集, 我们把标签 0 分给了数字 0 以便 和 PyTorch 的损失函数不产生冲突, 它期待的类标签的范围是 [0, C-1].

参数:

  • root (string)SVHN数据集存放的主目录.
  • split (string) – {‘train’, ‘test’, ‘extra’} 中的一个. 它是根据数据集选择的. ‘extra’ 是一个额外的训练集.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本. E.g, transforms.RandomCrop
  • target_transform (callable, 可选) – 一个 transform 函数, 输入 target 并且 转换它.
  • download (bool, 可选) – 如果 true, 就从网上下载数据集并且放到 root 目录下. 如果数据集已经下载, 那么不会再次下载.
  1. __getitem__(index)

参数:index (int) – Index

返回值:(image, target) 目标是目标类的索引.

返回类型:tuple

PhotoTour

  1. class torchvision.datasets.PhotoTour(root, name, train=True, transform=None, download=False)

Learning Local Image Descriptors Data Dataset.

参数:

  • root (string) – 图像存放的主目录.
  • name (string) – 载入的数据集的名字.
  • transform (callable, 可选) – 一个 transform 函数, 它输入 PIL image 并且返回 转换后的版本.
  • download (bool, 可选) – 如果 true, 就从网上下载数据集并且放到 root 目录下. 如果数据集已经下载, 那么不会再次下载.
  1. __getitem__(index)

参数:index (int) – Index

返回值:(data1, data2, matches)

返回类型:tuple