mindspore/docs/api/api_python/dataset/mindspore.dataset.VOCDatase...

111 lines
7.4 KiB
ReStructuredText
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

mindspore.dataset.VOCDataset
=============================
.. py:class:: mindspore.dataset.VOCDataset(dataset_dir, task='Segmentation', usage='train', class_indexing=None, num_samples=None, num_parallel_workers=None, shuffle=None, decode=False, sampler=None, num_shards=None, shard_id=None, cache=None, extra_metadata=False, decrypt=None)
VOCVisual Object Classes数据集。
根据给定的 `task` 配置,生成数据集具有不同的输出列:
- `task```'Detection'`` ,输出列: `[image, dtype=uint8]``[bbox, dtype=float32]``[label, dtype=uint32]``[difficult, dtype=uint32]``[truncate, dtype=uint32]`
- `task```'Segmentation'`` ,输出列: `[image, dtype=uint8]``[target, dtype=uint8]`
参数:
- **dataset_dir** (str) - 数据集文件的根目录路径。
- **task** (str, 可选) - 指定读取VOC数据的任务类型现在只支持 ``'Segmentation'````'Detection'`` 。默认值: ``'Segmentation'``
- **usage** (str, 可选) - 指定数据集的子集。默认值: ``'train'``
- 如果 `task` 的值为 ``'Segmentation'`` ,则读取 'ImageSets/Segmentation/' 目录下定义的图片和label信息
- 如果 `task` 的值为 ``'Detection'`` ,则读取 'ImageSets/Main/' 目录下定义的图片和label信息。
- **class_indexing** (dict, 可选) - 指定一个从label名称到label索引的映射要求映射规则为string到int。索引值从0开始并且要求每个label名称对应的索引值唯一。
仅在 'Detection' 任务中有效。默认值: ``None`` ,不指定。
- **num_samples** (int, 可选) - 指定从数据集中读取的样本数。默认值: ``None`` ,所有图像样本。
- **num_parallel_workers** (int, 可选) - 指定读取数据的工作线程数。默认值: ``None`` 使用全局默认线程数8也可以通过 :func:`mindspore.dataset.config.set_num_parallel_workers` 配置全局线程数。
- **shuffle** (bool, 可选) - 是否混洗数据集。默认值: ``None`` 。下表中会展示不同参数配置的预期行为。
- **decode** (bool, 可选) - 是否对读取的图片进行解码操作。默认值: ``False`` ,不解码。
- **sampler** (Sampler, 可选) - 指定从数据集中选取样本的采样器。默认值: ``None`` 。下表中会展示不同配置的预期行为。
- **num_shards** (int, 可选) - 指定分布式训练时数据集划分的片数。默认值: ``None`` 。指定此参数后, `num_samples` 表示每个分片的最大样本数。一般在 `数据并行模式训练 <https://www.mindspore.cn/tutorials/zh-CN/master/parallel/data_parallel.html#数据集加载>`_ 的时候使用。
- **shard_id** (int, 可选) - 指定分布式训练时使用的分片ID号。默认值 ``None`` 。只有当指定了 `num_shards` 时才能指定此参数。
- **cache** (:class:`~.dataset.DatasetCache`, 可选) - 单节点数据缓存服务,用于加快数据集处理,详情请阅读 `单节点数据缓存 <https://www.mindspore.cn/tutorials/zh-CN/master/dataset/cache.html>`_ 。默认值: ``None`` ,不使用缓存。
- **extra_metadata** (bool, 可选) - 用于指定是否额外输出一个数据列用于表示图片元信息。如果为 ``True`` ,则将额外输出一个名为 `[_meta-filename, dtype=string]` 的数据列。默认值: ``False``
- **decrypt** (callable, 可选) - 图像解密函数接受加密的图片路径并返回bytes类型的解密数据。默认值 ``None`` ,不进行解密。
异常:
- **RuntimeError** - `dataset_dir` 路径下不包含任何数据文件。
- **RuntimeError** - 读取的xml文件格式异常或无效。
- **RuntimeError** - 读取的xml文件缺失 `object` 属性。
- **RuntimeError** - 读取的xml文件缺失 `bndbox` 属性。
- **RuntimeError** - 同时指定了 `sampler``shuffle` 参数。
- **RuntimeError** - 同时指定了 `sampler``num_shards` 参数,或同时指定了 `sampler``shard_id` 参数。
- **RuntimeError** - 指定了 `num_shards` 参数,但是未指定 `shard_id` 参数。
- **RuntimeError** - 指定了 `shard_id` 参数,但是未指定 `num_shards` 参数。
- **ValueError** - `num_parallel_workers` 参数超过系统最大线程数。
- **ValueError** - 指定的任务不为 ``'Segmentation'````'Detection'``
- **ValueError** - 指定任务为 ``'Segmentation'`` 时, `class_indexing` 参数不为 ``None``
- **ValueError** - 与 `usage` 参数相关的txt文件不存在。
- **ValueError** - 如果 `shard_id` 取值不在[0, `num_shards` )范围。
教程样例:
- `使用数据Pipeline加载 & 处理数据集
<https://www.mindspore.cn/docs/zh-CN/master/api_python/samples/dataset/dataset_gallery.html>`_
.. note::
- 当参数 `extra_metadata```True`` 时,还需使用 `rename` 操作删除额外数据列 '_meta-filename'的前缀 '_meta-'
否则迭代得到的数据行中不会出现此额外数据列。
- 入参 `num_samples``shuffle``num_shards``shard_id` 可用于控制数据集所使用的采样器,其与入参 `sampler` 搭配使用的效果如下。
.. include:: mindspore.dataset.sampler.rst
**关于VOC数据集**
PASCAL Visual Object ClassesVOC是视觉目标识别和检测的挑战赛它为视觉和机器学习社区提供了图像和标注的标准数据集称为VOC数据集。
您可以解压缩原始VOC-2012数据集文件到如下目录结构并通过MindSpore的API进行读取。
.. code-block::
.
└── voc2012_dataset_dir
├── Annotations
│ ├── 2007_000027.xml
│ ├── 2007_000032.xml
│ ├── ...
├── ImageSets
│ ├── Action
│ ├── Layout
│ ├── Main
│ └── Segmentation
├── JPEGImages
│ ├── 2007_000027.jpg
│ ├── 2007_000032.jpg
│ ├── ...
├── SegmentationClass
│ ├── 2007_000032.png
│ ├── 2007_000033.png
│ ├── ...
└── SegmentationObject
├── 2007_000032.png
├── 2007_000033.png
├── ...
**引用:**
.. code-block::
@article{Everingham10,
author = {Everingham, M. and Van~Gool, L. and Williams, C. K. I. and Winn, J. and Zisserman, A.},
title = {The Pascal Visual Object Classes (VOC) Challenge},
journal = {International Journal of Computer Vision},
volume = {88},
year = {2012},
number = {2},
month = {jun},
pages = {303--338},
biburl = {http://host.robots.ox.ac.uk/pascal/VOC/pubs/everingham10.html#bibtex},
howpublished = {http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html}
}
.. include:: mindspore.dataset.api_list_vision.rst