• 沒有找到結果。

6.1 数据集管理

6.1.2 创建数据集

创建数据集,支持从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)

参数说明

6-2 请求参数

参数 是否

必选

参数类型 描述

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 是

表6-3

数据集输入位置,用于将此目录及子目录下 的源数据(如图片/文件/音频等)同步到数据 集。对于表格数据集,该参数为导入目录。

表格数据集的工作目录不支持为KMS加密桶 下的OBS路径。

work_path 是

表6-7

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

labels 否 List of 表

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

schema 否 List of 表

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

description 否 String 数据集描述,默认为空,描述不能包含^!

<>=&"'等特殊字符,长度为0-256。

6-3 DataSource 参数

参数 是否

必选

参数类型 描述

type 是 Integer 数据类型。可选值如下:

● 0:OBS桶(默认值)

● 5:AI Gallery下载数据集

参数 是否 必选

参数类型 描述

path 是 String 数据源所在路径。

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

content_info 否

表6-4

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

annotation_co

nfig 否

表6-5

数据标注格式的说明。目前支持的标注格式

类型如下:

● 图像分类

● 物体检测

● 文本分类

● 声音分类 with_column_

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

● True:第一行数据作为表头

● False:第一行数据不作为表头,仅为样本 数据

6-4 ContentInfo 参数

参数 是否

必选

参数类型 描述

content_id 是 String AI Gallery中数据集资产的ID。

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

6-5 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 否

表6-6

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

6-6 AnnotationConfigParam 参数

参数 是否

eparator 否 String 文本和标签之间的分割符。分隔符仅支持一 个字符,必须为大小写字母,数字或@#¥

difficult_only 否 Boolean 是否只导入难例。

6-7 WorkPath 参数

参数 是否 必选

参数类型 描述

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

● 格式为 “/桶名称/文件路径”,例如“/

obs-bucket/flower/rose/”(使用目录作 为路径)。

● 不能直接使用桶作为路径。

● 输出位置不能与输入位置相同或者是输入 位置的子目录。

● 长度限制:不少于3字符,不能超过700个 字符。

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

6-8 Label 参数

参数 是否

必选

参数类型 描述

name 是 String 标签名称。

type 是 Integer 标签类型,可选值如下:

● 0:图像分类

● 1:物体检测

● 3: 图像分割

● 100:文本分类

● 101:命名实体标签

● 102:文本三元组关系标签

● 200:声音分类

● 201:语音内容

● 202:语音分割

● 600:视频标注

property 否

表6-9

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

6-9 LabelProperty 参数

参数 是否

必选

参数类型 描述

@modelarts:co

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

参数 是否 必选

参数类型 描述

@modelarts:fr

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

@modelarts:to

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

6-10 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描述。