# torchvision.datasets `torchvision.datasets`中包含了以下数据集 1. [MNIST](#mnist) 2. [COCO(用于图像标注和目标检测)(Captioning and Detection)](#coco) 3. [LSUN Classification](#lsun) 4. [ImageFolder](#imagefolder) 5. [Imagenet-12](#imagenet-12) 6. [CIFAR10 and CIFAR100](#cifar) 7. [STL10](#stl10) 8. [SVHN](#SVHN) 9. [PhotoTour](#PhotoTour) * * * 所有数据集都是`torch.utils.data.Dataset`的子类, 即它们具有**getitem**和**len**实现方法。因此,它们都可以传递给`torch.utils.data.DataLoader` 可以使用`torch.multiprocessing`工作人员并行加载多个样本的数据。例如: ```py imagenet_data = torchvision.datasets.ImageFolder('path/to/imagenet_root/') data_loader = torch.utils.data.DataLoader(imagenet_data, batch_size=4, shuffle=True, num_workers=args.nThreads) ``` 所有的数据集都有几乎相似的 API。他们都有两个共同的参数: transform 和 target_transform 分别转换输入和目标。 #### MNIST ```py dset.MNIST(root, train=True, transform=None, target_transform=None, download=False) ``` 参数说明: * `root` : 数据集,存在于根目录 processed/training.pt 和 processed/test.pt 中。 * `train` : `True` = 训练集, `False` = 测试集 * `download` : 如果为 true,请从 Internet 下载数据集并将其放在根目录中。如果数据集已经下载,则不会再次下载。 * `transform` :接收 PIL 映像并返回转换版本的函数/变换。例如:`transforms.RandomCrop` * `target_transform`:一个接收目标并转换它的函数/变换。 #### COCO 需要安装[COCO API](https://github.com/pdollar/coco/tree/master/PythonAPI) ```py dset.CocoCaptions(root="dir where images are", annFile="json annotation file", [transform, target_transform]) ``` 参数说明: * `root(string)` - 图像下载到的根目录。 * `annFile(string)` - json 注释文件的路径。 * `transform(可调用,可选)` - 接收 PIL 映像并返回转换版本的函数/变换。例如:transforms.ToTensor * `target_transform(可调用,可选)` - 一个接收目标并转换它的函数/变换。 例子: ```py import torchvision.datasets as dset import torchvision.transforms as transforms cap = dset.CocoCaptions(root = 'dir where images are', annFile = 'json annotation file', transform=transforms.ToTensor()) print('Number of samples: ', len(cap)) img, target = cap[3] # load 4th sample print("Image Size: ", img.size()) print(target) ``` 输出: ```py Number of samples: 82783 Image Size: (3L, 427L, 640L) [u'A plane emitting smoke stream flying over a mountain.', u'A plane darts across a bright blue sky behind a mountain covered in snow', u'A plane leaves a contrail above the snowy mountain top.', u'A mountain that has a plane flying overheard in the distance.', u'A mountain view with a plume of smoke in the background'] ``` **getitem**(index) 参数: index(int) - 索引 返回: 元组(图像,目标)。目标是图片的标题列表。 返回类型: 元组 检测: ```py dset.CocoDetection(root="dir where images are", annFile="json annotation file", [transform, target_transform]) ``` 参数: * `root(string)` - 图像下载到的根目录。 * `annFile(string)` - json 注释文件的路径。 * `transform`(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。例如,transforms.ToTensor * `target_transform`(可调用,可选) - 一个接收目标并转换它的函数/变换。 **getitem**(index) 参数: index(int) - 索引 返回: 元组(图像,目标)。目标是图片的标题列表。 返回类型: 元组 #### LSUN ```py dset.LSUN(db_path, classes='train', [transform, target_transform]) ``` 参数说明: * `db_path` = 数据集文件的根目录 * `classe` = `train` (所有类别, 训练集), `val` (所有类别, 验证集), `test` (所有类别, 测试集) [`bedroom_train`, `church_train`, …] : 要加载的类别列表 * `transform`(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。例如,transforms.RandomCrop * `target_transform`(可调用,可选) - 一个接收目标并转换它的函数/变换。 #### ImageFolder 一个通用的数据加载器,数据集中的数据以以下方式组织 ```py root/dog/xxx.png root/dog/xxy.png root/dog/xxz.png root/cat/123.png root/cat/nsdf3.png root/cat/asd932_.png dset.ImageFolder(root="root folder path", [transform, target_transform]) ``` 参数说明: * `root(string)` - 根目录路径。 * `transform`(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。例如,transforms.RandomCrop * `target_transform`(可调用,可选) - 一个接收目标并转换它的函数/变换。 * `loader` - 加载给定其路径的图像的函数。 #### Imagenet-12 这应该简单地用`ImageFolder`数据集实现。数据按照这里所述进行预处理 [这里有一个例子](https://github.com/pytorch/examples/blob/27e2a46c1d1505324032b1d94fc6ce24d5b67e97/imagenet/main.py#L48-L62) #### CIFAR ```py dset.CIFAR10(root, train=True, transform=None, target_transform=None, download=False) dset.CIFAR100(root, train=True, transform=None, target_transform=None, download=False) ``` 参数说明: * root : cifar-10-batches-py 的根目录 * train : True = 训练集, False = 测试集 * download : True = 从互联上下载数据,并将其放在 root 目录下。如果数据集已经下载,什么都不干。 * transform(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。例如,transforms.RandomCrop * target_transform(可调用,可选) - 一个接收目标并转换它的函数/变换。 #### STL10 ```py dset.STL10(root, split='train', transform=None, target_transform=None, download=False) ``` 参数说明: * root : stl10_binary 的根目录 * split : 'train' = 训练集, 'test' = 测试集, 'unlabeled' = 无标签数据集, 'train+unlabeled' = 训练 + 无标签数据集 (没有标签的标记为-1) * download : True = 从互联上下载数据,并将其放在 root 目录下。如果数据集已经下载,什么都不干。 * transform(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。例如,transforms.RandomCrop * target_transform(可调用,可选) - 一个接收目标并转换它的函数/变换。 #### SVHN ```py class torchvision.datasets.SVHN(root, split='train', transform=None, target_transform=None, download=False) ``` 参数: * root(string) - 目录 SVHN 存在的数据集的根目录 。 * split(string) - {'train','test','extra'}之一。因此选择数据集。“额外”是额外的训练集。 * transform(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。例如,transforms.RandomCrop * target_transform(可调用,可选) - 一个接收目标并转换它的函数/变换。 * download (bool,可选) - 如果为 true,请从 Internet 下载数据集并将其放在根目录中。如果数据集已经下载,则不会再次下载。 #### PhotoTour ```py class torchvision.datasets.PhotoTour(root, name, train=True, transform=None, download=False) ``` 参数: * root(string) - 图像所在的根目录。 * name(string) - 要加载的数据集的名称。 * transform(可调用,可选) - 接收 PIL 映像并返回转换版本的函数/变换。 * download (bool,可选) - 如果为 true,请从 Internet 下载数据集并将其放在根目录中。如果数据集已经下载,则不会再次下载。 ### 译者署名 | 用户名 | 头像 | 职能 | 签名 | | --- | --- | --- | --- | | [Song](https://ptorch.com) | ![](img/2018033000352689884.jpeg) | 翻译 | 人生总要追求点什么 |