更新时间:2024-01-18 GMT+08:00

创建数据集

创建数据集,支持从OBS中导入数据。

create_dataset(session, dataset_name=None, data_type=None, data_sources=None, work_path=None, dataset_type=None, **kwargs)

创建数据集支持两种用法:

  • 根据标注类型创建数据集,一个数据集只能支持一种标注任务类型。
    create_dataset(session,dataset_name=None, dataset_type=None, data_sources=None, work_path=None, **kwargs)
  • 根据数据类型创建数据集,用户可以在相同的数据集上创建不同类型的标注任务,如在图像数据集上创建图像分类、物体检测等标注任务。
    create_dataset(session,dataset_name=None, data_type=None, data_sources=None, work_path=None, **kwargs)

推荐使用根据数据类型创建数据集,根据标注类型创建数据集的功能将会下线。

示例代码

  • 示例一:根据数据类型创建图像数据集
    from modelarts.session import Session
    from modelarts.dataset import Dataset
    
    session = Session()
    
    dataset_name = "dataset-image"  # 数据集名称
    data_type = "IMAGE"             # 数据集类型,图像类型数据集
    data_sources = dict()           # 数据集数据来源
    data_sources["type"] = 0        # 数据来源类型,0表示OBS
    data_sources["path"] = "/obs-gaia-test/data/image/image-classification/" # 数据在OBS中的路径
    work_path = dict()              # 数据集输出位置,用于存放输出的标注信息等文件
    work_path['type'] = 0           # 数据集工作目录的类型,0表示OBS
    work_path['path'] = "/obs-gaia-test/data/output/work_path/"  # 数据集工作目录在OBS中的路径
    create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, data_type=data_type,
                                                 data_sources=data_sources, work_path=work_path)
  • 示例二:根据数据类型创建图像数据集(导入标注信息)
    from modelarts.session import Session
    from modelarts.dataset import Dataset
    
    session = Session()
    
    dataset_name = "dataset-image-with-annotations"
    data_type = "IMAGE"
    data_sources = dict()
    data_sources["type"] = 0
    data_sources["path"] = "/obs-gaia-test/data/image/image-classification/"
    annotation_config = dict()      # 源数据的标注格式
    annotation_config['scene'] = "image_classification" # 数据标注场景为图像分类标注
    annotation_config['format_name'] = "ModelArts image classification 1.0" # 标注格式为ModelArts image classification 1.0
    data_sources['annotation_config'] = annotation_config
    work_path = dict()
    work_path['type'] = 0
    work_path['path'] = "/obs-gaia-test/data/output/work_path/"
    create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, data_type=data_type,
                                                 data_sources=data_sources, work_path=work_path)
  • 示例三:根据数据类型创建表格数据集
    from modelarts.session import Session
    from modelarts.dataset import Dataset
    
    session = Session()
    
    dataset_name = "dataset-table"
    data_type = "TABLE"
    data_sources = dict()
    data_sources["type"] = 0
    data_sources["path"] = "/obs-gaia-test/data/table/table0/"
    data_sources['with_column_header'] = True
    work_path = dict()
    work_path['type'] = 0
    work_path['path'] = "/obs-gaia-test/data/output/work_path/"
    # 表格类型的数据集需要指定表格数据的schema信息
    schema0 = dict()
    schema0['schema_id'] = 0
    schema0['name'] = "name"
    schema0['type'] = "STRING"
    schema1 = dict()
    schema1['schema_id'] = 1
    schema1['name'] = "age"
    schema1['type'] = "STRING"
    schema2 = dict()
    schema2['schema_id'] = 2
    schema2['name'] = "label"
    schema2['type'] = "STRING"
    schemas = []
    schemas.append(schema0)
    schemas.append(schema1)
    schemas.append(schema2)
    create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, data_type=data_type,
                                                 data_sources=data_sources, work_path=work_path, schema=schemas)
  • 示例四:根据标注类型创建图像分类数据集
    from modelarts.session import Session
    from modelarts.dataset import Dataset
    
    session = Session()
    
    dataset_name = "dataset-image-classification"
    dataset_type = 0   # 数据集的标注类型,0表示图像分类标注类型
    data_sources = dict()
    data_sources["path"] = "/obs-gaia-test/data/image/image-classification/"
    data_sources["type"] = "0"
    work_path = dict()
    work_path['type'] = 0
    work_path['path'] = "/obs-gaia-test/data/output/work_path/"
    create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, dataset_type=dataset_type, data_sources=data_sources, work_path=work_path)
  • 示例五:根据标注类型创建文本三元组数据集
    dataset_name = "dataset-text-triplet"
    dataset_type = 102   # 数据集标注类型,102表示文本三元组标注类型
    data_sources = dict()
    data_sources['type'] = 0
    data_sources['path'] = "/obs-gaia-test/data/text/text-classification/"
    work_path = dict()
    work_path['type'] = 0
    work_path['path'] = "/obs-gaia-test/data/output/work_path/"
    
    # 创建文本三元组标注类型的数据集,需要传入标签参数
    label_entity1 = dict()    # 标签对象
    label_entity1['name'] = "疾病"    # 标签名称
    label_entity1['type'] = 101     # 标签类型,101表示实体类型标签
    label_entity2 = dict()
    label_entity2['name'] = "疾病别称"
    label_entity2['type'] = 101
    label_relation1 = dict()
    label_relation1['name'] = "又称为"
    label_relation1['type'] = 102    # 标签类型,102表示关系类型标签
    property = dict()    # 关系类型标签需要在标签属性中指定起始实体标签和终止实体标签
    property['@modelarts:from_type'] = "疾病"    # 起始实体标签
    property['@modelarts:to_type'] = "疾病别称"    # 终止实体标签
    label_relation1['property'] = property
    labels = []
    labels.append(label_entity1)
    labels.append(label_entity2)
    labels.append(label_relation1)
    create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, dataset_type=dataset_type, data_sources=data_sources, work_path=work_path, labels=labels)
  • 示例六:根据标注类型创建表格数据集
    dataset_name = "dataset-table"
    dataset_type = 400    # 数据集标注类型,400表示表格数据集
    data_sources = dict()
    data_sources['type'] = 0
    data_sources['path'] = "/obs-gaia-test/data/table/table0/"
    data_sources['with_column_header'] = True    # 用来指明表格数据中是否包含表头
    work_path = dict()
    work_path['type'] = 0
    work_path['path'] = "/obs-gaia-test/data/output/work_path/"
    
    # 表格数据集需要传入表格数据的表头参数
    schema0 = dict()    # 表格的表头
    schema0['schema_id'] = 0    # 第一列表头
    schema0['name'] = "name"    # 表头名称,该列表头为name
    schema0['type'] = "STRING"    # 表头数据类型,表示字符串
    schema1 = dict()
    schema1['schema_id'] = 1
    schema1['name'] = "age"
    schema1['type'] = "STRING"
    schema2 = dict()
    schema2['schema_id'] = 2
    schema2['name'] = "label"
    schema2['type'] = "STRING"
    schemas = []
    schemas.append(schema0)
    schemas.append(schema1)
    schemas.append(schema2)
    create_dataset_resp = Dataset.create_dataset(session, dataset_name=dataset_name, dataset_type=dataset_type, data_sources=data_sources, work_path=work_path, schema=schemas)

参数说明

表1 请求参数

参数

是否必选

参数类型

描述

session

Object

会话对象,初始化方法请参见Session鉴权

dataset_name

String

数据集名称。

data_type

String

数据集的数据类型,与dataset_type参数二选一,推荐使用data_type。可选值如下:

  • IMAGE:图像
  • TEXT:文本
  • AUDIO:音频
  • TABLE:表格
  • VIDEO:视频
  • PLAIN:自由格式

dataset_type

Integer

根据数据集类型查询数据集列表,与data_type参数二选一。可选值如下:

  • 0:图像分类
  • 1:物体检测
  • 3: 图像分割
  • 100:文本分类
  • 101:命名实体
  • 102:文本三元组
  • 200:声音分类
  • 201:语音内容
  • 202:语音分割
  • 400:表格数据集
  • 600:视频标注
  • 900:自由格式

data_sources

表2

数据集输入位置,用于将此目录及子目录下的源数据(如图片/文件/音频等)同步到数据集。对于表格数据集,该参数为导入目录。表格数据集的工作目录不支持为KMS加密桶下的OBS路径。

work_path

表6

数据集输出位置,用于存放输出的标注信息等文件。

labels

List of 表7

数据集标签列表,创建文本三元组标注类型的数据集时需要传递该参数。

schema

List of 表9

schema列表,用于表格数据集,指定表头的名称和类型。

description

String

数据集描述,默认为空,描述不能包含^!<>=&"'等特殊字符,长度为0-256。

表2 DataSource参数

参数

是否必选

参数类型

描述

type

Integer

数据类型。可选值如下:

  • 0:OBS桶(默认值)
  • 5:AI Gallery下载数据集

path

String

数据源所在路径。

  • 字符限制:不允许出现的特殊字符有换行符(\n)、回车符(\r)、制表符(\t)。

content_info

表3

从AI Gallery下载数据集时数据集资产的信息。

annotation_config

表4

数据标注格式的说明。目前支持的标注格式类型如下:

  • 图像分类
  • 物体检测
  • 文本分类
  • 声音分类

with_column_header

Boolean

表格数据集必选参数,表格的第一行是否为表头。

  • True:第一行数据作为表头
  • False:第一行数据不作为表头,仅为样本数据
表3 ContentInfo参数

参数

是否必选

参数类型

描述

content_id

String

AI Gallery中数据集资产的ID。

version_id

String

AI Gallery中数据集资产的版本ID。

表4 AnnotationConfig参数

参数

是否必选

参数类型

描述

scene

String

支持的标注格式场景,可选值如下:

  • image_classification:图像分类
  • object_detection:物体检测
  • text_classification:文本分类
  • audio_classification:声音分类

fromat_name

String

不同标注场景下的标注格式。可选值如下:

  • image_classification
    • ModelArts imageNet 1.0
    • ModelArts image classification 1.0
  • object_detection
    • ModelArts PASCAL VOC 1.0
    • YOLO
  • text_classification
    • ModelArts text classfication 1.0
    • ModelArts text classfication combine 1.0
  • audio_classification
    • ModelArts audio classfication dir 1.0

parameters

表5

标注格式的高级参数,如样本分割符等。

表5 AnnotationConfigParam参数

参数

是否必选

参数类型

描述

included_labels

List of 表7

只导入包含指定标签的样本。

sample_label_separator

String

文本和标签之间的分割符。分隔符仅支持一个字符,必须为大小写字母,数字或@#¥%^&*_=|?/':.;,中的某一个字符,分割符需要转义。

label_separator

String

标签和标签之间的分割符。分隔符仅支持一个字符,必须为大小写字母,数字或@#¥%^&*_=|?/':.;,中的某一个字符,分割符需要转义。

difficult_only

Boolean

是否只导入难例。

表6 WorkPath参数

参数

是否必选

参数类型

描述

type

Integer

数据类型。可选值如下:

  • 0:OBS桶(默认值)

path

String

数据集输出位置,用于存放输出的标注信息等文件。

  • 格式为 “/桶名称/文件路径”,例如“/obs-bucket/flower/rose/”(使用目录作为路径)。
  • 不能直接使用桶作为路径。
  • 输出位置不能与输入位置相同或者是输入位置的子目录。
  • 长度限制:不少于3字符,不能超过700个字符。
  • 字符限制:不允许出现的特殊字符有换行符(\n)、回车符(\r)、制表符(\t)。
表7 Label参数

参数

是否必选

参数类型

描述

name

String

标签名称。

type

Integer

标签类型,可选值如下:
  • 0:图像分类
  • 1:物体检测
  • 3: 图像分割
  • 100:文本分类
  • 101:命名实体标签
  • 102:文本三元组关系标签
  • 200:声音分类
  • 201:语音内容
  • 202:语音分割
  • 600:视频标注

property

表8

标签基本属性键值对,如颜色。

表8 LabelProperty参数

参数

是否必选

参数类型

描述

@modelarts:color

String

内置属性:标签展示的颜色,为色彩的16进制代码,默认为空。例如:“#FFFFF0”。

@modelarts:from_type

String

内置属性:三元组关系标签的起始实体类型,创建关系标签时必须指定,该参数仅文本三元组数据集使用。

@modelarts:to_type

String

内置属性:三元组关系标签的指向实体类型,创建关系标签时必须指定,该参数仅文本三元组数据集使用。

表9 Schema参数

参数

是否必选

参数类型

描述

schema_id

Integer

Schema ID。

name

String

Schema名称。

type

String

Schema值类型,可选值如下:

  • STRING
  • SHORT
  • INT
  • LONG
  • DOUBLE
  • FLOAT
  • BYTE
  • DATE
  • TIMESTAMP
  • BOOLEAN

description

String

Schema描述。