AI开发平台ModelArts-创建图像分类数据集并进行标注任务:操作步骤

时间:2025-01-26 10:45:13

操作步骤

  1. 调用认证鉴权接口获取用户的Token。
    1. 请求消息体:

      URI格式:POST https://{iam_endpoint}/v3/auth/tokens

      请求消息头:Content-Type →application/json

      请求Body:
      {  "auth": {    "identity": {      "methods": ["password"],      "password": {        "user": {          "name": "user_name",           "password": "user_password",          "domain": {            "name": "domain_name"            }        }      }    },    "scope": {      "project": {        "name": "cn-north-1"        }    }  }}
      其中,加粗的斜体字段需要根据实际值填写:
      • iam_endpoint IAM 的终端节点。
      • user_name为IAM用户名。
      • user_password为用户登录密码。
      • domain_name为用户所属的账号名。
      • cn-north-1为项目名,代表服务的部署区域。
    2. 返回状态码“201 Created”,在响应Header中获取“X-Subject-Token”的值即为Token,如下所示:
      x-subject-token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
  2. 调用创建数据集接口创建一个图像分类类型的数据集。
    1. 请求消息体:

      URI格式:POST https://{ma_endpoint}/v2/{project_id}/datasets

      请求消息头:
      • X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
      • Content-Type →application/json

      请求body:

      {  "workspace_id" : "0",  "dataset_name" : "dataset-f9e8",  "dataset_type" : 0,  "data_sources" : [ {    "data_type" : 0,    "data_path" : "/test-obs/classify/input/cat-dog/"  } ],  "description" : "",  "work_path" : "/test-obs/classify/output/",  "work_path_type" : 0,  "labels" : [ {    "name" : "Cat",    "type" : 0,    "property" : {      "@modelarts:color" : "#3399ff"    }  }, {    "name" : "Dog",    "type" : 0,    "property" : {      "@modelarts:color" : "#3399ff"    }  } ]}

      其中,加粗的斜体字段需要根据实际值填写:

      • ma_endpoint为ModelArts的终端节点。
      • project_id为用户的项目ID。
      • X-auth-Token的值为获取到的Token值。
      • “dataset_name”为创建的数据集名称。
      • “dataset_type”“0”表示数据集类型为图像分类。
      • “data_path”为数据源所在的存储路径。
      • “work_path”为数据集输出位置。
      • “labels”为数据集的标签列表,填写标签信息。
    2. 返回状态码为“201 Created”,响应Body如下:
      {    "dataset_id": "2MCIopOFu0bOmSxFkZ4"}

      “dataset_id”为新建的数据集ID,记录该值用于后续步骤。

  3. 调用查询数据集详情接口根据数据集ID查询数据集的详情。
    1. 请求消息体:

      URI格式:GET https://{ma_endpoint}/v2/{project_id}/datasets/{dataset_id}

      请求消息头:X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...

      其中,加粗的斜体字段需要根据实际值填写,dataset_id为上一步记录的数据集ID。

    2. 返回状态码为“200 OK”,响应Body如下所示:
      {  "dataset_id" : "DINKm5SUIDhhGb1eWm3",  "dataset_name" : "dataset-f9e8",  "dataset_type" : 0,  "data_format" : "Default",  "next_version_num" : 4,  "status" : 1,  "data_sources" : [ {    "data_type" : 0,    "data_path" : "/test-obs/classify/input/cat-dog/"  } ],  "create_time" : 1605690595404,  "update_time" : 1605690595404,  "description" : "",  "current_version_id" : "54IXbeJhfttGpL46lbv",  "current_version_name" : "V003",  "total_sample_count" : 10,  "annotated_sample_count" : 10,  "unconfirmed_sample_count" : 0,  "work_path" : "/test-obs/classify/output/",  "inner_work_path" : "/test-obs/classify/output/dataset-f9e8-DINKm5SUIDhhGb1eWm3/",  "inner_annotation_path" : "/test-obs/classify/output/dataset-f9e8-DINKm5SUIDhhGb1eWm3/annotation/",  "inner_data_path" : "/test-obs/classify/output/dataset-f9e8-DINKm5SUIDhhGb1eWm3/data/",  "inner_log_path" : "/test-obs/classify/output/dataset-f9e8-DINKm5SUIDhhGb1eWm3/logs/",  "inner_temp_path" : "/test-obs/classify/output/dataset-f9e8-DINKm5SUIDhhGb1eWm3/temp/",  "inner_task_path" : "/test-obs/classify/output/dataset-f9e8-DINKm5SUIDhhGb1eWm3/task/",  "work_path_type" : 0,  "workspace_id" : "0",  "enterprise_project_id" : "0",  "workforce_task_count" : 0,  "feature_supports" : [ "0" ],  "managed" : false,  "import_data" : false,  "ai_project" : "default-ai-project",  "label_task_count" : 1,  "dataset_format" : 0,  "dataset_version_count" : 3,  "dataset_version" : "v1",  "content_labeling" : true,  "labels" : [ {    "name" : "Cat",    "type" : 0,    "property" : {      "@modelarts:color" : "#3399ff"    }  }, {    "name" : "Dog",    "type" : 0,    "property" : {      "@modelarts:color" : "#3399ff"    }  } ]}

      根据响应可以了解数据集详情,其中“status”“1”表示数据集创建成功且状态正常。

  4. 调用查询样本列表接口根据数据集ID获取数据集的样本详情。
    1. 请求消息体:

      URI格式:GET https://{ma_endpoint}/v2/{project_id}/datasets/{dataset_id}/data-annotations/samples

      请求消息头:X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...

      其中,加粗的斜体字段需要根据实际值填写。

    2. 返回状态码为“200 OK”,响应Body如下所示:
      {  "sample_count" : 2,  "samples" : [         {            "sample_id": "012f99f3cf405860130b6ed2350c2228",            "sample_type": 0,            "labels": [],            "source": "https://test-obs.obs.{ma_endpoint}.com:443/classify/input/cat-dog/36502.jpg......",            "preview": "https://test-obs.obs.{ma_endpoint}.com:443/classify/input/cat-dog/36502.jpg......",            "metadata": {                "@modelarts:source_image_info": "https://test-obs.obs.{ma_endpoint}.com:443/classify/input/cat-dog/36502.jpg......",                "@modelarts:import_origin": 0            },            "sample_time": 1623914750831,            "sample_status": "UN_ANNOTATION"        },        {            "sample_id": "0192f3acfb000666033a0f85c21577c7",            "sample_type": 0,            "labels": [],            "source": "https://test-obs.obs.xxx.com:443/classify/input/cat-dog/36139.jpg......",            "preview": "https://test-obs.obs.xxx.com:443/classify/input/cat-dog/36139.jpg......",            "metadata": {                "@modelarts:source_image_info": "https://test-obs.obs.xxx.com:443/classify/input/cat-dog/36139.jpg......",                "@modelarts:import_origin": 0            },            "sample_time": 1623914751076,            "sample_status": "UN_ANNOTATION"        }    ]}

      根据响应可以了解数据集的样本数量,以及每个样本的详细信息,其中“sample_count”“2”表示该数据集共有2个样本,记录“sample_id”(样本ID)用于后续人工标注。

  5. 调用批量更新样本标签接口根据数据集ID和样本ID给样本添加标签进行人工标注。
    1. 请求消息体:

      URI格式:PUT https://{ma_endpoint}/v2/{project_id}/datasets/{dataset_id}/data-annotations/samples

      请求消息头:

      • X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
      • Content-Type →application/json
      请求body:
      {  "samples" : [ {    "sample_id" : "012f99f3cf405860130b6ed2350c2228",    "labels" : [ {      "name" : "Cat"    } ]  }, {    "sample_id" : "0192f3acfb000666033a0f85c21577c7",    "labels" : [ {      "name" : "Dog"    } ]  } ]}

      其中,加粗的字段需要根据实际值填写:

      • “sample_id”为要标注的样本ID,为上一步记录的值。
      • “labels”为样本需要标注的标签。
    2. 返回状态码为“200 OK”表示标注成功,响应Body如下所示:
      {  "success" : true}
  6. 调用查询数据集的统计信息接口查看数据集的标注统计信息。
    1. 消息请求体:

      URI格式:GET https://{ma_endpoint}/v2/{project_id}/datasets/{dataset_id}/data-annotations/stats

      请求消息头:X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...

      其中,加粗的斜体字段需要根据实际值填写。

    2. 返回状态码为“200 OK”,响应Body如下所示:
      {    "label_stats": [        {            "name": "Cat",            "type": 0,            "property": {                "@modelarts:color": "#3399ff"            },            "count": 5,            "sample_count": 2        },        {            "name": "Dog",            "type": 0,            "property": {                "@modelarts:color": "",                "@modelarts:shortcut": ""            },            "count": 4,            "sample_count": 3        }    ],    "sample_stats": {        "un_annotation": 10,        "all": 15,        "total": 15,        "deleted": 0,        "manual_annotation": 5,        "auto_annotation": 0,        "lefted": 15    },    "key_sample_stats": {        "total": 15,        "non_key_sample": 15,        "key_sample": 0    },    "deletion_stats": {},    "metadata_stats": {},    "data_spliting_enable": true}

      根据响应可以了解数据集的标签统计信息、样本状态统计信息等。

  7. 当数据集使用完成或不再使用时,调用删除数据集接口删除数据集。
    1. 请求消息体:

      URI格式:DELETE https://{ma_endpoint}/v2/{project_id}/datasets/{dataset_id}

      请求消息头:

      • X-auth-Token →MIIZmgYJKoZIhvcNAQcCoIIZizCCGYcCAQExDTALBglghkgBZQMEAgEwgXXXXXX...
      • Content-Type →application/json

      其中,加粗的斜体字段需要根据实际值填写。

    2. 返回状态码“204 No Content”表示数据集删除成功。
support.huaweicloud.com/api-modelarts/modelarts_03_0402.html