mindspore.dataset

MindSpore的核心数据加载模块是Dataset,是一种基于Pipeline设计的 数据引擎

该模块提供了以下几种数据加载方式,帮助用户加载数据集到MindSpore中。

此外,该模块也提供了对数据进行采样、增强变换、批处理等功能,以及随机种子、并行数等基础配置,与数据集加载API配合使用。

  • 数据采样器:提供了多种常见 采样器 ,如RandomSampler、DistributedSampler等。

  • 数据增强变换:提供了多种 数据集操作 ,以此对数据进行增强,批处理等。

  • 基础配置:提供了 Pipeline配置 用于随机种子设置、并行数设置、数据恢复模式等功能。

常用数据集术语说明如下:

  • Dataset,所有数据集的基类,提供了数据处理方法来帮助预处理数据。

  • SourceDataset,一个抽象类,表示数据集管道的来源,从文件和数据库等数据源生成数据。

  • MappableDataset,一个抽象类,表示支持随机访问的源数据集。

  • Iterator,用于枚举元素的数据集迭代器的基类。

数据处理Pipeline介绍

../_images/dataset_pipeline.png

如上图所示,MindSpore Dataset模块使得用户很简便地定义数据预处理Pipeline,并以最高效(多进程/多线程)的方式处理 数据集中样本,具体的步骤参考如下:

  • 加载数据集(Dataset):用户可以方便地使用 *Dataset 类来加载已支持的数据集,或者通过 UDF Loader + GeneratorDataset 实现Python层自定义数据集的加载,同时加载类方法可以使用多种Sampler、数据分片、数据shuffle等功能;

  • 数据集操作(filter/ skip):用户通过数据集对象方法 .shuffle / .filter / .skip / .split / .take / … 来实现数据集的进一步混洗、过滤、跳过、最多获取条数等操作;

  • 数据集样本增强操作(map):用户可以将数据增强操作 (vision类nlp类audio类 ) 添加到map操作中执行,数据预处理过程中可以定义多个map操作,用于执行不同增强操作,数据增强操作也可以是 用户自定义增强的 PyFunc

  • 批(batch):用户在样本完成增强后,使用 .batch 操作将多个样本组织成batch,也可以通过batch的参数 per_batch_map 来自定义batch逻辑;

  • 迭代器(create_dict_iterator):最后用户通过数据集对象方法 create_dict_iterator 来创建迭代器, 可以将预处理完成的数据循环输出。

数据处理Pipeline快速上手

如何快速使用Dataset Pipeline,可以将 使用数据Pipeline加载 & 处理数据集 下载到本地,按照顺序执行并观察输出结果。

自定义数据集加载

mindspore.dataset.GeneratorDataset

自定义Python数据源,通过迭代该数据源构造数据集。

标准格式数据集加载

mindspore.dataset.MindDataset

读取和解析MindRecord数据文件构建数据集。

mindspore.dataset.OBSMindDataset

读取和解析存放在华为云OBS、Minio以及AWS S3等云存储上的MindRecord格式数据集。

mindspore.dataset.TFRecordDataset

读取和解析TFData格式的数据文件构建数据集。

开源数据集加载

视觉数据集

mindspore.dataset.Caltech101Dataset

Caltech 101数据集。

mindspore.dataset.Caltech256Dataset

Caltech 256数据集。

mindspore.dataset.CelebADataset

CelebA(CelebFaces Attributes)数据集。

mindspore.dataset.Cifar10Dataset

CIFAR-10数据集。

mindspore.dataset.Cifar100Dataset

CIFAR-100数据集。

mindspore.dataset.CityscapesDataset

Cityscapes数据集。

mindspore.dataset.CocoDataset

COCO(Common Objects in Context)数据集。

mindspore.dataset.DIV2KDataset

DIV2K(DIVerse 2K resolution image)数据集。

mindspore.dataset.EMnistDataset

EMNIST(Extended MNIST)数据集。

mindspore.dataset.FakeImageDataset

生成虚假图像构建数据集。

mindspore.dataset.FashionMnistDataset

Fashion-MNIST数据集。

mindspore.dataset.FlickrDataset

Flickr8k和Flickr30k数据集。

mindspore.dataset.Flowers102Dataset

Oxfird 102 Flower数据集。

mindspore.dataset.Food101Dataset

Food101数据集。

mindspore.dataset.ImageFolderDataset

从树状结构的文件目录中读取图片构建源数据集。

mindspore.dataset.KITTIDataset

KITTI数据集。

mindspore.dataset.KMnistDataset

KMNIST(Kuzushiji-MNIST)数据集。

mindspore.dataset.LFWDataset

LFW(Labeled Faces in the Wild)数据集。

mindspore.dataset.LSUNDataset

LSUN(Large-scale Scene UNderstarding)数据集。

mindspore.dataset.ManifestDataset

读取和解析Manifest数据文件构建数据集。

mindspore.dataset.MnistDataset

MNIST数据集。

mindspore.dataset.OmniglotDataset

Omniglot数据集。

mindspore.dataset.PhotoTourDataset

PhotoTour数据集。

mindspore.dataset.Places365Dataset

Places365数据集。

mindspore.dataset.QMnistDataset

QMNIST数据集。

mindspore.dataset.RenderedSST2Dataset

RenderedSST2(Rendered Stanford Sentiment Treebank v2)数据集。

mindspore.dataset.SBDataset

SB(Semantic Boundaries)数据集。

mindspore.dataset.SBUDataset

SBU(SBU Captioned Photo)数据集。

mindspore.dataset.SemeionDataset

Semeion数据集。

mindspore.dataset.STL10Dataset

STL-10数据集。

mindspore.dataset.SUN397Dataset

SUN397(Scene UNderstanding)数据集。

mindspore.dataset.SVHNDataset

SVHN(Street View House Numbers)数据集。

mindspore.dataset.USPSDataset

USPS(U.S. Postal Service)数据集。

mindspore.dataset.VOCDataset

VOC(Visual Object Classes)数据集。

mindspore.dataset.WIDERFaceDataset

WIDERFace数据集。

文本数据集

mindspore.dataset.AGNewsDataset

AG News数据集。

mindspore.dataset.AmazonReviewDataset

Amazon Review Full和Amazon Review Polarity数据集。

mindspore.dataset.CLUEDataset

CLUE(Chinese Language Understanding Evaluation)数据集。

mindspore.dataset.CSVDataset

CSV 文件数据集。

mindspore.dataset.CoNLL2000Dataset

CoNLL-2000(Conference on Computational Natural Language Learning)分块数据集。

mindspore.dataset.DBpediaDataset

DBpedia数据集。

mindspore.dataset.EnWik9Dataset

EnWik9数据集。

mindspore.dataset.IMDBDataset

IMDb(Internet Movie Database)数据集。

mindspore.dataset.IWSLT2016Dataset

IWSLT2016(International Workshop on Spoken Language Translation)数据集。

mindspore.dataset.IWSLT2017Dataset

IWSLT2017(International Workshop on Spoken Language Translation)数据集。

mindspore.dataset.Multi30kDataset

Multi30k数据集。

mindspore.dataset.PennTreebankDataset

PennTreebank数据集。

mindspore.dataset.SogouNewsDataset

Sogou New数据集。

mindspore.dataset.SQuADDataset

SQuAD 1.1和SQuAD 2.0数据集。

mindspore.dataset.SST2Dataset

SST2(Stanford Sentiment Treebank v2)数据集。

mindspore.dataset.TextFileDataset

读取和解析文本文件构建数据集。

mindspore.dataset.UDPOSDataset

UDPOS(Universal Dependencies dataset for Part of Speech)数据集。

mindspore.dataset.WikiTextDataset

WikiText2和WikiText103数据集。

mindspore.dataset.YahooAnswersDataset

YahooAnswers数据集。

mindspore.dataset.YelpReviewDataset

Yelp Review Full和Yelp Review Polarity数据集。

音频数据集

mindspore.dataset.CMUArcticDataset

CMU Arctic数据集。

mindspore.dataset.GTZANDataset

GTZAN数据集。

mindspore.dataset.LibriTTSDataset

LibriTTS数据集。

mindspore.dataset.LJSpeechDataset

LJSpeech数据集。

mindspore.dataset.SpeechCommandsDataset

Speech Commands数据集。

mindspore.dataset.TedliumDataset

Tedlium数据集。

mindspore.dataset.YesNoDataset

YesNo数据集。

其他数据集

mindspore.dataset.NumpySlicesDataset

由Python数据构建数据集。

mindspore.dataset.PaddedDataset

由用户提供的填充数据构建数据集。

mindspore.dataset.RandomDataset

生成随机数据的源数据集。

采样器

mindspore.dataset.DistributedSampler

分布式采样器,将数据集进行分片用于分布式训练。

mindspore.dataset.PKSampler

为数据集中每P个类别各采样K个样本。

mindspore.dataset.RandomSampler

随机采样器。

mindspore.dataset.SequentialSampler

按数据集的读取顺序采样数据集样本,相当于不使用采样器。

mindspore.dataset.SubsetRandomSampler

给定样本的索引序列,从序列中随机获取索引对数据集进行采样。

mindspore.dataset.SubsetSampler

给定样本的索引序列,对数据集采样指定索引的样本。

mindspore.dataset.WeightedRandomSampler

给定样本的权重列表,根据权重决定样本的采样概率,随机采样[0,len(weights) - 1]中的样本。

配置

config模块能够设置或获取数据处理的全局配置参数。

mindspore.dataset.config.set_sending_batches

设置Host向Device发送数据的批数上限。

mindspore.dataset.config.load

根据文件内容加载项目配置文件。

mindspore.dataset.config.set_seed

设置数据处理中的随机数生成器的种子。

mindspore.dataset.config.get_seed

获取随机数的种子。

mindspore.dataset.config.set_prefetch_size

设置流水线中各个数据处理操作的缓冲队列大小。

mindspore.dataset.config.get_prefetch_size

获取数据处理管道的输出缓存队列长度。

mindspore.dataset.config.set_num_parallel_workers

为并行工作线程数量设置新的全局配置默认值。

mindspore.dataset.config.get_num_parallel_workers

获取并行工作线程数量的全局配置。

mindspore.dataset.config.set_numa_enable

设置NUMA的默认状态为启动状态。

mindspore.dataset.config.get_numa_enable

获取NUMA的启动/禁用状态。

mindspore.dataset.config.set_monitor_sampling_interval

设置监测采样的默认间隔时间(毫秒)。

mindspore.dataset.config.get_monitor_sampling_interval

获取性能监控采样时间间隔的全局配置。

mindspore.dataset.config.set_callback_timeout

mindspore.dataset.WaitedDSCallback 设置的默认超时时间(秒)。

mindspore.dataset.config.get_callback_timeout

获取 mindspore.dataset.WaitedDSCallback 的默认超时时间。

mindspore.dataset.config.set_auto_num_workers

自动为每个数据集操作设置并行线程数量(默认情况下,此功能关闭)。

mindspore.dataset.config.get_auto_num_workers

获取当前是否开启自动线程调整。

mindspore.dataset.config.set_enable_shared_mem

设置是否在开启数据处理多进程时使用共享内存进行进程间通信。

mindspore.dataset.config.get_enable_shared_mem

获取当前是否开启共享内存。

mindspore.dataset.config.set_enable_autotune

设置是否开启数据处理参数自动调优。

mindspore.dataset.config.get_enable_autotune

获取当前是否开启自动数据加速。

mindspore.dataset.config.set_autotune_interval

设置自动数据加速的配置调整step间隔。

mindspore.dataset.config.get_autotune_interval

获取当前自动数据加速的配置调整step间隔。

mindspore.dataset.config.set_auto_offload

设置是否开启数据异构加速。

mindspore.dataset.config.get_auto_offload

获取当前是否开启数据异构加速。

mindspore.dataset.config.set_enable_watchdog

设置watchdog Python线程是否启用。

mindspore.dataset.config.get_enable_watchdog

获取当前是否开启watchdog Python线程。

mindspore.dataset.config.set_fast_recovery

在数据集管道故障恢复时,是否开启快速恢复模式(快速恢复模式下,无法保证随机性的数据增强操作得到与故障之前相同的结果)。

mindspore.dataset.config.get_fast_recovery

获取当前数据管道是否开启快速恢复模式。

mindspore.dataset.config.set_multiprocessing_timeout_interval

设置在多进程/多线程下,主进程/主线程获取数据超时时,告警日志打印的默认时间间隔(秒)。

mindspore.dataset.config.get_multiprocessing_timeout_interval

获取在多进程/多线程下,主进程/主线程获取数据超时时,告警日志打印的时间间隔的全局配置。

mindspore.dataset.config.set_error_samples_mode

设置在数据管道中处理错误样本的策略。

mindspore.dataset.config.get_error_samples_mode

获取当前数据管道中处理错误样本的策略配置。

mindspore.dataset.config.ErrorSamplesMode

指定数据管道中处理错误样本的策略。

mindspore.dataset.config.set_debug_mode

设置是否启动数据集管道的调试模式。

mindspore.dataset.config.get_debug_mode

获取当前是否开启数据处理流水线的调试模式。

mindspore.dataset.config.set_multiprocessing_start_method

设置启动数据预处理子进程方式的全局配置。

mindspore.dataset.config.get_multiprocessing_start_method

获取数据预处理子进程启动方式。

工具

mindspore.dataset.BatchInfo

batch 操作中参数 batch_sizeper_batch_map 的传入对象是回调函数时,可以通过此类提供的方法获取数据集信息。

mindspore.dataset.DatasetCache

创建数据缓存客户端实例。

mindspore.dataset.DSCallback

数据处理回调类的抽象基类,用户可以基于此类实现自己的回调操作。

mindspore.dataset.Schema

用于解析和存储数据列属性的类。

mindspore.dataset.Shuffle

指定混洗模式的枚举类。

mindspore.dataset.WaitedDSCallback

阻塞式数据处理回调类的抽象基类,用于与训练回调类 mindspore.train.Callback 的同步。

mindspore.dataset.compare

比较两个数据处理管道是否相同。

mindspore.dataset.debug.DebugHook

数据集管道Python调试器钩子的基类。

mindspore.dataset.deserialize

数据处理管道反序列化,支持输入Python字典或使用 mindspore.dataset.serialize() 接口生成的JSON文件。

mindspore.dataset.serialize

将数据处理管道序列化成JSON文件。

mindspore.dataset.show

将数据处理管道图写入logger.info文件。

mindspore.dataset.sync_wait_for_dataset

等待所有的卡需要的数据集文件下载完成。

mindspore.dataset.utils.imshow_det_bbox

使用给定的边界框和类别置信度绘制图像。

mindspore.dataset.utils.LineReader

基于行的文件读取器。