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