更新时间:2024-04-30 GMT+08:00
使用案例
主要包含三种场景的用例:
- 基于用户指定的数据集创建标注任务,并等待用户标注完成。
- 基于指定的标注任务进行标注。
- 基于数据集创建节点的输出创建标注任务。
用户基于指定的数据集创建标注任务,并等待用户标注完成
使用场景:
- 用户只创建了一个未标注完成的数据集,需要在工作流运行时对数据进行人工标注。
- 可以放在数据集导入节点之后,对导入的新数据进行人工标注。
数据准备:提前在ModelArts管理控制台创建一个数据集。
from modelarts import workflow as wf # 通过LabelingStep给输入的数据集对象创建新的标注任务,并等待用户标注完成 # 定义输入的数据集对象 dataset = wf.data.DatasetPlaceholder(name="input_dataset") # 定义标注任务的名称参数 task_name = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR) labeling = wf.steps.LabelingStep( name="labeling", # 数据集标注节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="数据集标注", # 标题信息,不填默认使用name值 properties=wf.steps.LabelTaskProperties( task_type=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION, # 标注任务的类型,以图像分类为例 task_name=task_name # 该名称对应的标注任务如果不存在则创建,如果存在则直接使用该任务 ), inputs=wf.steps.LabelingInput(name="input_name", data=dataset), # LabelingStep的输入,数据集对象在运行时配置;data字段也可使用wf.data.Dataset(dataset_name="fake_dataset_name")表示 outputs=wf.steps.LabelingOutput(name="output_name"), # LabelingStep的输出 ) workflow = wf.Workflow( name="labeling-step-demo", desc="this is a demo workflow", steps=[labeling] )
用户基于指定的标注任务进行标注
使用场景:
- 用户基于数据集自主创建了一个标注任务,需要在工作流运行时对数据进行人工标注。
- 可以放在数据集导入节点之后,对导入的新数据进行人工标注。
数据准备:提前在ModelArts管理控制台,基于使用的数据集创建一个标注任务。
from modelarts import workflow as wf # 用户输入标注任务,等待用户标注完成 # 定义数据集的标注任务对象 label_task = wf.data.LabelTaskPlaceholder(name="label_task_placeholder_name") labeling = wf.steps.LabelingStep( name="labeling", # 数据集标注节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="数据集标注", # 标题信息,不填默认使用name值 inputs=wf.steps.LabelingInput(name="input_name", data=label_task), # LabelingStep的输入,标注任务对象在运行时配置;data字段也可使用wf.data.LabelTask(dataset_name="dataset_name", task_name="label_task_name")来表示 outputs=wf.steps.LabelingOutput(name="output_name"), # LabelingStep的输出 ) workflow = wf.Workflow( name="labeling-step-demo", desc="this is a demo workflow", steps=[labeling] )
基于数据集创建节点,构建数据标注节点
使用场景:数据集创建节点的输出作为数据集数据标注节点的输入。
from modelarts import workflow as wf # 定义数据集输出路径参数 dataset_output_path = wf.Placeholder(name="dataset_output_path", placeholder_type=wf.PlaceholderType.STR, placeholder_format="obs") # 定义数据集名称参数 dataset_name = wf.Placeholder(name="dataset_name", placeholder_type=wf.PlaceholderType.STR) create_dataset = wf.steps.CreateDatasetStep( name="create_dataset",# 数据集创建节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="数据集创建", # 标题信息,不填默认使用name值 inputs=wf.steps.CreateDatasetInput(name="input_name", data=wf.data.OBSPlaceholder(name="obs_placeholder_name", object_type="directory")),# CreateDatasetStep的输入,数据在运行时进行配置;data字段也可使用wf.data.OBSPath(obs_path="fake_obs_path")对象表示 outputs=wf.steps.CreateDatasetOutput(name="create_dataset_output", config=wf.data.OBSOutputConfig(obs_path=dataset_output_path)),# CreateDatasetStep的输出 properties=wf.steps.DatasetProperties( dataset_name=dataset_name, # 该名称对应的数据集如果不存在,则创建新的数据集;如果已存在,则直接使用该名称对应的数据集 data_type=wf.data.DataTypeEnum.IMAGE, # 数据集对应的数据类型, 示例为图像 ) ) # 定义标注任务的名称参数 task_name = wf.Placeholder(name="placeholder_name", placeholder_type=wf.PlaceholderType.STR) labeling = wf.steps.LabelingStep( name="labeling", # 数据集标注节点的名称,命名规范(只能包含英文字母、数字、下划线(_)、中划线(-),并且只能以英文字母开头,长度限制为64字符),一个Workflow里的两个step名称不能重复 title="数据集标注", # 标题信息,不填默认使用name值 properties=wf.steps.LabelTaskProperties( task_type=wf.data.LabelTaskTypeEnum.IMAGE_CLASSIFICATION, # 标注任务的类型,以图像分类为例 task_name=task_name # 该名称对应的标注任务如果不存在则创建,如果存在则直接使用该任务 ), inputs=wf.steps.LabelingInput(name="input_name", data=create_dataset.outputs["create_dataset_output"].as_input()), # LabelingStep的输入,data数据来源为数据集创建节点的输出 outputs=wf.steps.LabelingOutput(name="output_name"), # LabelingStep的输出 depend_steps=create_dataset # 依赖的数据集创建节点对象 ) # create_dataset是 wf.steps.CreateDatasetStep的一个实例,create_dataset_output是wf.steps.CreateDatasetOutput的name字段值 workflow = wf.Workflow( name="labeling-step-demo", desc="this is a demo workflow", steps=[create_dataset, labeling] )
父主题: 数据集标注节点