智能人物相册搭建最佳实践

本文介绍利用智能媒体管理(IMM)服务,帮助用户对照片进行分析与识别,实现场景中人脸的智能分组及相关人物照片的检索能力。该技术适用于智能相册、网盘及社群等多种场景。

方案预览

方案预览@2x.png

搭建智能人物相册的流程如图所示。

  1. 请将待分组的照片上传至OSS数据库,详情请参见上传文件

  2. 通过IndexFileMeta - 文件元信息建立索引接口将照片元信息写入智能媒体管理所创建的数据集。

    重要

    首先,请确保您已创建IMM应用所需的项目(Project)和数据集(Dataset),详情请参见创建数据集,其中数据集的TemplateId应为Official:FaceManagement,以便存储所有照片中的人脸相关信息。此外,我们建议您为每个照片库建立一个数据集,因为自动创建人物相册的接口会对数据集中所有照片进行人脸聚类。

  3. 调用CreateFigureClusteringTask - 创建人物人脸聚类任务接口对数据集里的人脸进行聚类,该接口将聚类后的信息写回数据集,并对不同人物的人脸进行分组,生成相应的分组ID。

  4. 调用QueryFigureClusters - 查询人物聚类接口,查询数据集中人脸聚类分组的信息,包括分组数量、各分组的图片数量等。

  5. 可以调用SimpleQuery - 简单查询接口,通过分组ID查询某个分组中包含的所有图片。

适用场景

适用场景@2x.png

前提条件

步骤一:上传文件

请使用OSS管理控制台将需要分组的照片上传至已绑定的bucket。您可以使用face_test.zip或上传您自己的文件进行测试。

说明

该文件需在解压后进行上传。

image

步骤二:向照片集中添加照片

步骤二@2x.png

  • 使用智能媒体管理控制台,将您OSS中存储的照片添加到数据集中以构建照片库,包括照片中的人脸位置、性别、年龄等信息,以及用于人脸聚类的其他元数据信息。具体操作过程如下:

image

image

  • 也可以使用BatchIndexFileMeta - 批量文件元信息建立索引接口,向数据集中批量写入人脸照片中的信息。写入照片信息的过程为异步进行,您可以使用设置 Notification 消息通知参数来获取任务信息。

    代码示例:

    # -*- coding: utf-8 -*-
    # This file is auto-generated, don't edit it. Thanks.
    import os
    import sys
    
    from typing import List
    
    from alibabacloud_imm20200930.client import Client as imm20200930Client
    from alibabacloud_tea_openapi import models as open_api_models
    from alibabacloud_imm20200930 import models as imm_20200930_models
    from alibabacloud_tea_util import models as util_models
    from alibabacloud_tea_util.client import Client as UtilClient
    
    
    class Sample:
        def __init__(self):
            pass
    
        @staticmethod
        def create_client() -> imm20200930Client:
            """
            使用AK&SK初始化账号Client
            @return: Client
            @throws Exception
            """
            # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
            # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
            config = open_api_models.Config(
                # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
                access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
                # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
                access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
            )
            # Endpoint 请参考 https://api.aliyun.com/product/imm
            config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
            return imm20200930Client(config)
    
        @staticmethod
        def main(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            notification_mns = imm_20200930_models.MNS(
                topic_name='test-mns-topic'
            )
            notification = imm_20200930_models.Notification(
                mns=notification_mns
            )
            input_file_0 = imm_20200930_models.InputFile(
                uri='''[
        {
            "URI": "oss://test-bucket/1.jpg"
        },
        {
            "URI": "oss://test-bucket/2.jpg"
        },
        {
            "URI": "oss://test-bucket/3.jpg"
        },
        {
            "URI": "oss://test-bucket/4.jpg"
        },
        {
            "URI": "oss://test-bucket/5.jpg"
        },
        {
            "URI": "oss://test-bucket/6.jpg"
        }
    ]'''
            )
            batch_index_file_meta_request = imm_20200930_models.BatchIndexFileMetaRequest(
                project_name='test-project',
                dataset_name='test-dataset',
                files=[
                    input_file_0
                ],
                notification=notification
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 复制代码运行请自行打印 API 的返回值
                client.batch_index_file_meta_with_options(batch_index_file_meta_request, runtime)
            except Exception as error:
                # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
                # 错误 message
                print(error.message)
                # 诊断地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
        @staticmethod
        async def main_async(
            args: List[str],
        ) -> None:
            client = Sample.create_client()
            notification_mns = imm_20200930_models.MNS(
                topic_name='test-mns-topic'
            )
            notification = imm_20200930_models.Notification(
                mns=notification_mns
            )
            input_file_0 = imm_20200930_models.InputFile(
                uri='''[
        {
            "URI": "oss://test-bucket/1.jpg"
        },
        {
            "URI": "oss://test-bucket/2.jpg"
        },
        {
            "URI": "oss://test-bucket/3.jpg"
        },
        {
            "URI": "oss://test-bucket/4.jpg"
        },
        {
            "URI": "oss://test-bucket/5.jpg"
        },
        {
            "URI": "oss://test-bucket/6.jpg"
        }
    ]'''
            )
            batch_index_file_meta_request = imm_20200930_models.BatchIndexFileMetaRequest(
                project_name='test-project',
                dataset_name='test-dataset',
                files=[
                    input_file_0
                ],
                notification=notification
            )
            runtime = util_models.RuntimeOptions()
            try:
                # 复制代码运行请自行打印 API 的返回值
                await client.batch_index_file_meta_with_options_async(batch_index_file_meta_request, runtime)
            except Exception as error:
                # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
                # 错误 message
                print(error.message)
                # 诊断地址
                print(error.data.get("Recommend"))
                UtilClient.assert_as_string(error.message)
    
    
    if __name__ == '__main__':
        Sample.main(sys.argv[1:])

    返回示例:

    {
      'EventId':'049-1udsgM0nr0leAdDBAOxe4kDLYM5',
      'RequestId': 'D4C150A6-D8EF-502B-9F30-645346388E13'
     }

    轻量消息队列(原MNS)消息示例:

    {
        "TopicOwner": "14133977656xxxxx",
        "Message": "{\"id\":\"077-1x2s0rqA6ZOENW6gjAiN5Dl796T\",\"source\":\"acs.imm\",\"type\":\"imm:FileMeta:Index\",\"subject\":\"acs:imm:cn-hangzhou:14133977656xxxxx:test-project/imm:FileMeta:Index\",\"time\":\"1729564297965\",\"content\":\"{\\\"ProjectName\\\":\\\"test-project\\\",\\\"DatasetName\\\":\\\"test-dataset\\\",\\\"RequestId\\\":\\\"7FE8A307-1649-6B0D-1AB8-0600C9D4877B\\\",\\\"StartTime\\\":\\\"2024-10-22T10:31:37.787209251+08:00\\\",\\\"EndTime\\\":\\\"2024-10-22T10:31:37.965992728+08:00\\\",\\\"Success\\\":true,\\\"Message\\\":\\\"\\\",\\\"Files\\\":[{\\\"URI\\\":\\\"[\\\\n    {\\\\n        \\\\\\\"URI\\\\\\\": \\\\\\\"oss://test-bucket/1.jpg\\\\\\\"\\\\n    },\\\\n    {\\\\n        \\\\\\\"URI\\\\\\\": \\\\\\\"oss://test-bucket/2.jpg\\\\\\\"\\\\n    },\\\\n    {\\\\n        \\\\\\\"URI\\\\\\\": \\\\\\\"oss://test-bucket/3.jpg\\\\\\\"\\\\n    },\\\\n    {\\\\n        \\\\\\\"URI\\\\\\\": \\\\\\\"oss://test-bucket/4.jpg\\\\\\\"\\\\n    },\\\\n    {\\\\n        \\\\\\\"URI\\\\\\\": \\\\\\\"oss://test-bucket/5.jpg\\\\\\\"\\\\n    },\\\\n    {\\\\n        \\\\\\\"URI\\\\\\\": \\\\\\\"oss://test-bucket/6.jpg\\\\\\\"\\\\n    }\\\\n],\\\"UserData\\\":\\\"\\\"}\"}",
        "Subscriber": "14133977656xxxxx",
        "PublishTime": "1729564298068",
        "SubscriptionName": "test-mns-subscription",
        "MessageMD5": "9921327B25E01FB38151781B81042BA7",
        "TopicName": "test-mns-topic",
        "MessageId": "129D772E14277FA6182D6E67D354D069"
    }

步骤三:执行人物聚类,自动生成智能相册

步骤三@2x (2).png

在向数据集中写入了照片的人脸相关信息后,可以使用CreateFigureClusteringTask - 创建人物人脸聚类任务接口根据照片的人脸信息进行自动人物分类。人物聚类操作为异步过程,您可以使用设置 Notification 消息通知参数来获取任务信息。此外,还可以调用 GetTask - 获取任务信息 接口获取返回的 TaskId 查看任务信息。

代码示例:

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> imm20200930Client:
        """
        使用AK&SK初始化账号Client
        @return: Client
        @throws Exception
        """
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
        config = open_api_models.Config(
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
            access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
            access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        # Endpoint 请参考 https://api.aliyun.com/product/imm
        config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        notification_mns = imm_20200930_models.MNS(
            topic_name='test-mns-topic'
        )
        notification = imm_20200930_models.Notification(
            mns=notification_mns
        )
        create_figure_clustering_task_request = imm_20200930_models.CreateFigureClusteringTaskRequest(
            project_name='test-project',
            dataset_name='test-datset',
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            client.create_figure_clustering_task_with_options(create_figure_clustering_task_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        notification_mns = imm_20200930_models.MNS(
            topic_name='test-mns-topic'
        )
        notification = imm_20200930_models.Notification(
            mns=notification_mns
        )
        create_figure_clustering_task_request = imm_20200930_models.CreateFigureClusteringTaskRequest(
            project_name='test-project',
            dataset_name='test-dataset',
            notification=notification
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            await client.create_figure_clustering_task_with_options_async(create_figure_clustering_task_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

返回示例:

{
  "TaskId": "CreateFigureClusteringTask-1741f244-b8e5-47dc-8da0-be1e7d24604d",
  "RequestId": "7BA1459A-D5BE-5493-AE65-049405390C1D",
  "EventId": "351-1x0bvGzGA88K3qimNnyec2sAJTY"
}

轻量消息队列(原MNS)消息示例:

{
    "TopicOwner": "14133977656xxxxx",
    "Message": "{\"id\":\"0D8-1x0cVcQcOX4Od0FelqwHFsJEUkC\",\"source\":\"acs.imm\",\"type\":\"imm:Task:FigureClustering\",\"subject\":\"acs:imm:cn-hangzhou:14133977656xxxxx:test-project/imm:Task:FigureClustering\",\"time\":\"1729495470992\",\"content\":\"{\\\"ProjectName\\\":\\\"test-project\\\",\\\"DatasetName\\\":\\\"test-dataset\\\",\\\"RequestId\\\":\\\"279A338B-3561-5EEE-B47B-E66CC5E17FFA\\\",\\\"StartTime\\\":\\\"2024-10-21T07:24:31.04Z\\\",\\\"EndTime\\\":\\\"2024-10-21T07:24:31.463Z\\\",\\\"UserData\\\":\\\"\\\",\\\"TaskType\\\":\\\"FaceClustering\\\",\\\"TaskId\\\":\\\"CreateFigureClusteringTask-8a711151-5d94-407e-a9d2-c3e7c899f9c6\\\",\\\"Status\\\":\\\"Succeeded\\\",\\\"Code\\\":\\\"\\\",\\\"Message\\\":\\\"Success\\\",\\\"EventSourceId\\\":\\\"\\\",\\\"NewClusterCount\\\":2,\\\"UpdatedClusterCount\\\":0,\\\"UpdatedFigureCount\\\":6,\\\"NewClusterIds\\\":[\\\"Cluster-1\\\", \\\"Cluster-2\\\"],\\\"UpdatedClusterIds\\\":[]}\"}",
    "Subscriber": "14133977656xxxxx",
    "PublishTime": "1729495471584",
    "SubscriptionName": "test-mns-subscription",
    "MessageMD5": "75FC3BEB509CC5A5FEEFD923A8E4E948",
    "TopicName": "test-mns-topic",
    "MessageId": "129D772E142761357F976A4D9DE0F4E0"
}

步骤四:查询人脸分组信息

步骤四@2x.png

人脸聚类任务创建成功后,您可以调用QueryFigureClusters - 查询人物聚类接口,查询分组的信息,包括分组数量、各分组的图片数量等。

代码示例:

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_imm20200930.client import Client as imm20200930Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_imm20200930 import models as imm_20200930_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_tea_util.client import Client as UtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> imm20200930Client:
        """
        使用AK&SK初始化账号Client
        @return: Client
        @throws Exception
        """
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
        config = open_api_models.Config(
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
            access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
            access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        # Endpoint 请参考 https://api.aliyun.com/product/imm
        config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
        return imm20200930Client(config)

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        query_figure_clusters_request = imm_20200930_models.QueryFigureClustersRequest(
            project_name='test-project',
            dataset_name='test-datset'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            client.query_figure_clusters_with_options(query_figure_clusters_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        query_figure_clusters_request = imm_20200930_models.QueryFigureClustersRequest(
            project_name='test-project',
            dataset_name='test-dataset'
        )
        runtime = util_models.RuntimeOptions()
        try:
            # 复制代码运行请自行打印 API 的返回值
            await client.query_figure_clusters_with_options_async(query_figure_clusters_request, runtime)
        except Exception as error:
            # 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
            # 错误 message
            print(error.message)
            # 诊断地址
            print(error.data.get("Recommend"))
            UtilClient.assert_as_string(error.message)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

返回示例:

{
  "RequestId": "B955CD55-AB9D-534C-B531-A861C1428BAB",
  "NextToken": "",
  "FigureClusters": [
    {
      "VideoCount": 0,
      "ProjectName": "test-project",
      "ObjectId": "Cluster-2",
      "MetaLockVersion": 0,
      "CreateTime": "2024-10-21T15:19:41.614715608+08:00",
      "MaxAge": 26.0,
      "Gender": "female",
      "AverageAge": 25.0,
      "ObjectType": "figure-cluster",
      "ImageCount": 3,
      "MinAge": 24.0,
      "Cover": {
        "ImageHeight": 1650,
        "ObjectId": "48c0e16c50ec0bc00cc49504697d1f8ecd88615ef73c4856acbdf571ac549f63",
        "ImageWidth": 1486,
        "Figures": [
          {
            "Beard": "none",
            "MouthConfidence": 1.0,
            "FigureType": "face",
            "HeadPose": {
              "Pitch": 4.532,
              "Roll": 12.779,
              "Yaw": 0.32
            },
            "Mask": "none",
            "MaskConfidence": 0.818,
            "HatConfidence": 1.0,
            "GlassesConfidence": 1.0,
            "Sharpness": 1.0,
            "Boundary": {
              "Left": 511,
              "Top": 234,
              "Height": 680,
              "Width": 437
            },
            "FaceQuality": 0.87,
            "Attractive": 0.999,
            "BeardConfidence": 1.0,
            "FigureId": "0d5f269b-ae52-4c52-98da-5b3edab5e4a7",
            "Mouth": "open",
            "Glasses": "none",
            "Hat": "none"
          }
        ],
        "URI": "oss://test-bucket/6.jpg"
      },
      "OwnerId": "14133977656xxxxx",
      "DatasetName": "test-dataset",
      "UpdateTime": "2024-10-21T15:19:41.614715608+08:00",
      "FaceCount": 3
    },
    {
      "VideoCount": 0,
      "ProjectName": "test-project",
      "ObjectId": "Cluster-2,
      "MetaLockVersion": 0,
      "CreateTime": "2024-10-21T15:19:41.614715608+08:00",
      "MaxAge": 29.0,
      "Gender": "female",
      "AverageAge": 28.333,
      "ObjectType": "figure-cluster",
      "ImageCount": 3,
      "MinAge": 28.0,
      "Cover": {
        "ImageHeight": 3699,
        "ObjectId": "0bb00fcf9eb8415cec41f4520aef82933e21534daa07698bb440b876a7a17243",
        "ImageWidth": 3885,
        "Figures": [
          {
            "Beard": "none",
            "MouthConfidence": 0.999,
            "FigureType": "face",
            "HeadPose": {
              "Pitch": -3.278,
              "Roll": 1.611,
              "Yaw": 3.665
            },
            "Mask": "none",
            "MaskConfidence": 0.825,
            "HatConfidence": 0.996,
            "GlassesConfidence": 0.996,
            "Sharpness": 1.0,
            "Boundary": {
              "Left": 1294,
              "Top": 601,
              "Height": 1803,
              "Width": 1331
            },
            "FaceQuality": 0.968,
            "Attractive": 0.996,
            "BeardConfidence": 1.0,
            "FigureId": "cb94232c-e277-4ce4-a28d-2b6a551a3cef",
            "Mouth": "open",
            "Glasses": "none",
            "Hat": "none"
          }
        ],
        "URI": "oss://test-bucket/6.jpg"
      },
      "OwnerId": "14133977656xxxxx",
      "DatasetName": "test-dataset",
      "UpdateTime": "2024-10-21T15:19:41.614715608+08:00",
      "FaceCount": 3
    }
  ]
}
说明

该返回示例显示,此数据集中的人脸图片被分为2组,分组ID分别为Cluster-2Cluster-1,各包含3张图片。

步骤五:查询人脸分组中的图片列表

步骤五@2x.png

查询完分组信息之后,您可以调用SimpleQuery - 简单查询接口,通过分组ID查询某个分组中包含的所有图片。如下以查询数据集test中分组IDCluster-1的人脸分组图片信息为例。

代码示例:

# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import os
import sys

from typing import List

from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> OpenApiClient:
        """
        使用AK&SK初始化账号Client
        @return: Client
        @throws Exception
        """
        # 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。
        # 建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.html。
        config = open_api_models.Config(
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。,
            access_key_id=os.environ['ALIBABA_CLOUD_ACCESS_KEY_ID'],
            # 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。,
            access_key_secret=os.environ['ALIBABA_CLOUD_ACCESS_KEY_SECRET']
        )
        # Endpoint 请参考 https://api.aliyun.com/product/imm
        config.endpoint = f'imm.cn-hangzhou.aliyuncs.com'
        return OpenApiClient(config)

    @staticmethod
    def create_api_info() -> open_api_models.Params:
        """
        API 相关
        @param path: string Path parameters
        @return: OpenApi.Params
        """
        params = open_api_models.Params(
            # 接口名称,
            action='SimpleQuery',
            # 接口版本,
            version='2020-09-30',
            # 接口协议,
            protocol='HTTPS',
            # 接口 HTTP 方法,
            method='POST',
            auth_type='AK',
            style='RPC',
            # 接口 PATH,
            pathname=f'/',
            # 接口请求体内容格式,
            req_body_type='json',
            # 接口响应体内容格式,
            body_type='json'
        )
        return params

    @staticmethod
    def main(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        params = Sample.create_api_info()
        # query params
        queries = {}
        queries['ProjectName'] = 'test-project'
        queries['DatasetName'] = 'test-dataset'
        queries['Query'] = '{"Value":"Cluster-1","Operation":"eq","Field":"Figures.FigureClusterId"}'
        # runtime options
        runtime = util_models.RuntimeOptions()
        request = open_api_models.OpenApiRequest(
            query=OpenApiUtilClient.query(queries)
        )
        # 复制代码运行请自行打印 API 的返回值
        # 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
        client.call_api(params, request, runtime)

    @staticmethod
    async def main_async(
        args: List[str],
    ) -> None:
        client = Sample.create_client()
        params = Sample.create_api_info()
        # query params
        queries = {}
        queries['ProjectName'] = 'test-project'
        queries['DatasetName'] = 'test-dataset'
        queries['Query'] = '{"Value":"Cluster-1","Operation":"eq","Field":"Figures.FigureClusterId"}'
        # runtime options
        runtime = util_models.RuntimeOptions()
        request = open_api_models.OpenApiRequest(
            query=OpenApiUtilClient.query(queries)
        )
        # 复制代码运行请自行打印 API 的返回值
        # 返回值实际为 Map 类型,可从 Map 中获得三类数据:响应体 body、响应头 headers、HTTP 返回的状态码 statusCode。
        await client.call_api_async(params, request, runtime)


if __name__ == '__main__':
    Sample.main(sys.argv[1:])

返回示例:

{
  "TotalHits": 3,
  "RequestId": "B7D57DFA-5D67-5AC9-9071-E2CB156B6CBC",
  "Files": [
    {
      "ProduceTime": "2020-07-22T21:40:51+08:00",
      "ObjectACL": "default",
      "ContentType": "image/jpeg",
      "ProjectName": "test-project",
      "Size": 1614586,
      "URI": "oss://test-bucket/5.jpg",
      "ObjectType": "file",
      "CustomLabels": {
        "category": "人物"
      },
      "OwnerId": "14133977656xxxxx",
      "FileModifiedTime": "2024-10-21T14:38:58+08:00",
      "ImageWidth": 3885,
      "OSSStorageClass": "Standard",
      "MediaType": "image",
      "ObjectId": "0bb00fcf9eb8415cec41f4520aef82933e21534daa07698bb440b876a7a17243",
      "CreateTime": "2024-10-21T15:11:03.432029105+08:00",
      "Filename": "5.jpg",
      "Labels": [
        {
          "CentricScore": 0.873,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "发型",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.816,
          "Language": "zh-Hans",
          "LabelConfidence": 0.948,
          "LabelName": "人像",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.777,
          "Language": "zh-Hans",
          "LabelConfidence": 0.937,
          "LabelName": "微笑",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.864,
          "Language": "zh-Hans",
          "LabelConfidence": 0.931,
          "LabelName": "照片拍摄",
          "LabelLevel": 2,
          "ParentLabelName": "艺术品"
        },
        {
          "CentricScore": 0.809,
          "Language": "zh-Hans",
          "LabelConfidence": 0.923,
          "LabelName": "人",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.851,
          "Language": "zh-Hans",
          "LabelConfidence": 0.915,
          "LabelName": "女性",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.849,
          "Language": "zh-Hans",
          "LabelConfidence": 0.834,
          "LabelName": "美人",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.811,
          "Language": "zh-Hans",
          "LabelConfidence": 0.826,
          "LabelName": "服装",
          "LabelLevel": 2,
          "ParentLabelName": "衣服"
        },
        {
          "CentricScore": 0.826,
          "Language": "zh-Hans",
          "LabelConfidence": 0.826,
          "LabelName": "肖像",
          "LabelLevel": 2,
          "ParentLabelName": "其他事物"
        },
        {
          "CentricScore": 0.886,
          "Language": "zh-Hans",
          "LabelConfidence": 0.822,
          "LabelName": "珠宝",
          "LabelLevel": 2,
          "ParentLabelName": "衣服"
        },
        {
          "CentricScore": 0.872,
          "Language": "zh-Hans",
          "LabelConfidence": 0.766,
          "LabelName": "女孩",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.886,
          "Language": "zh-Hans",
          "LabelConfidence": 0.755,
          "LabelName": "模特",
          "LabelLevel": 2,
          "ParentLabelName": "职业&角色"
        },
        {
          "CentricScore": 0.847,
          "Language": "zh-Hans",
          "LabelConfidence": 0.648,
          "LabelName": "化妆",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.819,
          "Language": "zh-Hans",
          "LabelConfidence": 0.626,
          "LabelName": "肖像摄影",
          "LabelLevel": 2,
          "ParentLabelName": "艺术品"
        },
        {
          "CentricScore": 0.873,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "日常行为",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.872,
          "Language": "zh-Hans",
          "LabelConfidence": 0.948,
          "LabelName": "面部",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.849,
          "Language": "zh-Hans",
          "LabelConfidence": 0.937,
          "LabelName": "外貌特征",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.864,
          "Language": "zh-Hans",
          "LabelConfidence": 0.931,
          "LabelName": "艺术品",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.886,
          "Language": "zh-Hans",
          "LabelConfidence": 0.826,
          "LabelName": "衣服",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.826,
          "Language": "zh-Hans",
          "LabelConfidence": 0.826,
          "LabelName": "其他事物",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.886,
          "Language": "zh-Hans",
          "LabelConfidence": 0.755,
          "LabelName": "职业&角色",
          "LabelLevel": 1,
          "ParentLabelName": ""
        }
      ],
      "Orientation": 0,
      "Figures": [
        {
          "Beard": "none",
          "MaskConfidence": 0.825,
          "Gender": "female",
          "Boundary": {
            "Left": 1294,
            "Top": 601,
            "Height": 1803,
            "Width": 1331
          },
          "BeardConfidence": 1.0,
          "FigureId": "cb94232c-e277-4ce4-a28d-2b6a551a3cef",
          "Mouth": "open",
          "Emotion": "happiness",
          "Age": 28,
          "MouthConfidence": 0.999,
          "FigureType": "face",
          "GenderConfidence": 1.0,
          "HeadPose": {
            "Pitch": -3.278,
            "Roll": 1.611,
            "Yaw": 3.665
          },
          "Mask": "none",
          "EmotionConfidence": 0.999,
          "HatConfidence": 0.996,
          "GlassesConfidence": 0.996,
          "Sharpness": 1.0,
          "FigureClusterId": "Cluster-1",
          "FaceQuality": 0.968,
          "Attractive": 0.996,
          "AgeSD": 6.0,
          "Glasses": "none",
          "FigureConfidence": 1.0,
          "Hat": "none"
        }
      ],
      "EXIF": "{\"Copyright\":{\"value\":\"©ACloud Man - stock.adobe.com\"},\"DateTimeDigitized\":{\"value\":\"2020:07:22 21:40:51\"},\"DateTimeOriginal\":{\"value\":\"2020:07:22 21:40:51\"},\"ExifTag\":{\"value\":\"2154\"},\"FileSize\":{\"value\":\"1614586\"},\"Format\":{\"value\":\"jpg\"},\"FrameCount\":{\"value\":\"1\"},\"ImageHeight\":{\"value\":\"3699\"},\"ImageWidth\":{\"value\":\"3885\"},\"ResolutionUnit\":{\"value\":\"2\"},\"SubSecTimeDigitized\":{\"value\":\"00\"},\"SubSecTimeOriginal\":{\"value\":\"00\"},\"XPKeywords\":{\"value\":\"109 0 97 0 107 0 101 0 117 0 112 0 59 0 97 0 115 0 105 0 97 0 110 0 59 0 99 0 111 0 115 0 109 0 101 0 116 0 105 0 99 0 59 0 99 0 104 0 105 0 110 0 101 0 115 0 101 0 59 0 103 0 105 0 114 0 108 0 59 0 106 0 97 0 112 0 97 0 110 0 101 0 115 0 101 0 59 0 107 0 111 0 114 0 101 0 97 0 110 0 59 0 98 0 111 0 100 0 121 0 32 0 99 0 97 0 114 0 101 0 59 0 98 0 97 0 99 0 107 0 103 0 114 0 111 0 117 0 110 0 100 0 59 0 99 0 108 0 111 0 115 0 101 0 117 0 112 0 59 0 99 0 108 0 101 0 97 0 110 0 59 0 102 0 111 0 117 0 110 0 100 0 97 0 116 0 105 0 111 0 110 0 59 0 102 0 114 0 101 0 115 0 104 0 110 0 101 0 115 0 115 0 59 0 104 0 101 0 97 0 108 0 116 0 104 0 59 0 110 0 97 0 116 0 117 0 114 0 97 0 108 0 59 0 112 0 97 0 115 0 116 0 101 0 108 0 59 0 112 0 111 0 115 0 101 0 59 0 112 0 117 0 114 0 101 0 59 0 115 0 107 0 105 0 110 0 99 0 97 0 114 0 101 0 59 0 115 0 112 0 97 0 0 0\"},\"XResolution\":{\"value\":\"300/1\"},\"YResolution\":{\"value\":\"300/1\"}}",
      "ContentMd5": "3NgQCXJsq/NJZJuL2e7ocw==",
      "ImageHeight": 3699,
      "ImageScore": {
        "OverallQualityScore": 0.769
      },
      "ETag": "\"DCD81009726CABF349649B8BD9EEE873\"",
      "DatasetName": "test-dataset",
      "FileHash": "DCD81009726CABF349649B8BD9EEE873",
      "UpdateTime": "2024-10-21T15:11:08.786577032+08:00",
      "OSSCRC64": "12819954187629571497",
      "OSSTaggingCount": 0,
      "OSSObjectType": "Normal"
    },
    {
      "ProduceTime": "2020-07-20T08:58:53+08:00",
      "Artist": "LIUJIACHUAN",
      "ObjectACL": "default",
      "ContentType": "image/jpeg",
      "ProjectName": "test-project",
      "Size": 1650902,
      "URI": "oss://test-bucket/2.jpg",
      "ObjectType": "file",
      "CustomLabels": {
        "category": "人物"
      },
      "OwnerId": "14133977656xxxxx",
      "FileModifiedTime": "2024-10-21T14:13:10+08:00",
      "ImageWidth": 3479,
      "OSSStorageClass": "Standard",
      "MediaType": "image",
      "ObjectId": "2bf8d7c5d39a74c7da3544774dbb2a5da042e1ca2eefb129b5ce15ed0fa445d2",
      "CreateTime": "2024-10-21T14:39:12.844774611+08:00",
      "Filename": "2.jpg",
      "Title": "Portrait Of Beautiful Woman in Studio",
      "Labels": [
        {
          "CentricScore": 0.887,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "发型",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.841,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "肖像",
          "LabelLevel": 2,
          "ParentLabelName": "其他事物"
        },
        {
          "CentricScore": 0.789,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "服装",
          "LabelLevel": 2,
          "ParentLabelName": "衣服"
        },
        {
          "CentricScore": 0.853,
          "Language": "zh-Hans",
          "LabelConfidence": 0.969,
          "LabelName": "照片拍摄",
          "LabelLevel": 2,
          "ParentLabelName": "艺术品"
        },
        {
          "CentricScore": 0.845,
          "Language": "zh-Hans",
          "LabelConfidence": 0.95,
          "LabelName": "人像",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.803,
          "Language": "zh-Hans",
          "LabelConfidence": 0.941,
          "LabelName": "微笑",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.85,
          "Language": "zh-Hans",
          "LabelConfidence": 0.929,
          "LabelName": "美人",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.862,
          "Language": "zh-Hans",
          "LabelConfidence": 0.928,
          "LabelName": "女士",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.852,
          "Language": "zh-Hans",
          "LabelConfidence": 0.924,
          "LabelName": "人",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.881,
          "Language": "zh-Hans",
          "LabelConfidence": 0.923,
          "LabelName": "女性",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.908,
          "Language": "zh-Hans",
          "LabelConfidence": 0.91,
          "LabelName": "棕色头发",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.897,
          "Language": "zh-Hans",
          "LabelConfidence": 0.906,
          "LabelName": "长发",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.841,
          "Language": "zh-Hans",
          "LabelConfidence": 0.881,
          "LabelName": "肖像摄影",
          "LabelLevel": 2,
          "ParentLabelName": "艺术品"
        },
        {
          "CentricScore": 0.892,
          "Language": "zh-Hans",
          "LabelConfidence": 0.865,
          "LabelName": "女孩",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.851,
          "Language": "zh-Hans",
          "LabelConfidence": 0.86,
          "LabelName": "模特",
          "LabelLevel": 2,
          "ParentLabelName": "职业&角色"
        },
        {
          "CentricScore": 0.845,
          "Language": "zh-Hans",
          "LabelConfidence": 0.843,
          "LabelName": "人物特写",
          "LabelLevel": 2,
          "ParentLabelName": "其他场景"
        },
        {
          "CentricScore": 0.88,
          "Language": "zh-Hans",
          "LabelConfidence": 0.816,
          "LabelName": "珠宝",
          "LabelLevel": 2,
          "ParentLabelName": "衣服"
        },
        {
          "CentricScore": 0.694,
          "Language": "zh-Hans",
          "LabelConfidence": 0.814,
          "LabelName": "白色",
          "LabelLevel": 3,
          "ParentLabelName": "颜色"
        },
        {
          "CentricScore": 0.868,
          "Language": "zh-Hans",
          "LabelConfidence": 0.721,
          "LabelName": "梳头发",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.88,
          "Language": "zh-Hans",
          "LabelConfidence": 0.664,
          "LabelName": "吹头发",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.887,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "日常行为",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.841,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "其他事物",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.88,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "衣服",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.853,
          "Language": "zh-Hans",
          "LabelConfidence": 0.969,
          "LabelName": "艺术品",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.892,
          "Language": "zh-Hans",
          "LabelConfidence": 0.95,
          "LabelName": "面部",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.908,
          "Language": "zh-Hans",
          "LabelConfidence": 0.941,
          "LabelName": "外貌特征",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.851,
          "Language": "zh-Hans",
          "LabelConfidence": 0.86,
          "LabelName": "职业&角色",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.845,
          "Language": "zh-Hans",
          "LabelConfidence": 0.843,
          "LabelName": "其他场景",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.694,
          "Language": "zh-Hans",
          "LabelConfidence": 0.814,
          "LabelName": "颜色",
          "LabelLevel": 2,
          "ParentLabelName": "其他事物"
        }
      ],
      "Orientation": 0,
      "Figures": [
        {
          "Beard": "none",
          "MaskConfidence": 0.857,
          "Gender": "female",
          "Boundary": {
            "Left": 1223,
            "Top": 577,
            "Height": 1585,
            "Width": 1180
          },
          "BeardConfidence": 1.0,
          "FigureId": "fcbecbcb-6f1d-487d-8c16-0a96b375e30c",
          "Mouth": "open",
          "Emotion": "happiness",
          "Age": 28,
          "MouthConfidence": 0.999,
          "FigureType": "face",
          "GenderConfidence": 1.0,
          "HeadPose": {
            "Pitch": 2.643,
            "Roll": 11.223,
            "Yaw": -7.446
          },
          "Mask": "none",
          "EmotionConfidence": 1.0,
          "HatConfidence": 0.999,
          "GlassesConfidence": 0.998,
          "Sharpness": 1.0,
          "FigureClusterId": "Cluster-1",
          "FaceQuality": 0.96,
          "Attractive": 0.997,
          "AgeSD": 6.0,
          "Glasses": "none",
          "FigureConfidence": 1.0,
          "Hat": "none"
        }
      ],
      "EXIF": "{\"Artist\":{\"value\":\"LIUJIACHUAN\"},\"Copyright\":{\"value\":\"LIUJIACHUAN\"},\"DateTimeDigitized\":{\"value\":\"2020:07:20 08:58:53\"},\"DateTimeOriginal\":{\"value\":\"2020:07:20 08:58:53\"},\"ExifTag\":{\"value\":\"2268\"},\"FileSize\":{\"value\":\"1650902\"},\"Format\":{\"value\":\"jpg\"},\"FrameCount\":{\"value\":\"1\"},\"ImageDescription\":{\"value\":\"Portrait Of Beautiful Woman in Studio\"},\"ImageHeight\":{\"value\":\"3937\"},\"ImageWidth\":{\"value\":\"3479\"},\"Rating\":{\"value\":\"5\"},\"RatingPercent\":{\"value\":\"99\"},\"ResolutionUnit\":{\"value\":\"2\"},\"SubSecTimeDigitized\":{\"value\":\"00\"},\"SubSecTimeOriginal\":{\"value\":\"00\"},\"XPAuthor\":{\"value\":\"76 0 73 0 85 0 74 0 73 0 65 0 67 0 72 0 85 0 65 0 78 0 0 0\"},\"XPKeywords\":{\"value\":\"102 0 101 0 109 0 97 0 108 0 101 0 59 0 108 0 97 0 100 0 121 0 59 0 119 0 111 0 109 0 97 0 110 0 59 0 98 0 101 0 97 0 117 0 116 0 121 0 59 0 109 0 111 0 105 0 115 0 116 0 117 0 114 0 101 0 32 0 114 0 101 0 116 0 101 0 110 0 116 0 105 0 111 0 110 0 59 0 102 0 97 0 99 0 105 0 97 0 108 0 59 0 115 0 107 0 105 0 110 0 32 0 99 0 97 0 114 0 101 0 59 0 99 0 111 0 110 0 116 0 101 0 109 0 112 0 108 0 97 0 116 0 105 0 111 0 110 0 59 0 102 0 111 0 117 0 110 0 100 0 97 0 116 0 105 0 111 0 110 0 59 0 112 0 111 0 114 0 116 0 114 0 97 0 105 0 116 0 59 0 112 0 111 0 114 0 116 0 114 0 97 0 105 0 116 0 115 0 59 0 112 0 101 0 114 0 115 0 111 0 110 0 59 0 89 0 111 0 117 0 110 0 103 0 59 0 111 0 110 0 101 0 32 0 112 0 101 0 114 0 115 0 111 0 110 0 59 0 99 0 104 0 105 0 110 0 101 0 115 0 101 0 32 0 101 0 116 0 104 0 110 0 105 0 99 0 105 0 116 0 121 0 59 0 97 0 115 0 105 0 97 0 110 0 59 0 102 0 97 0 99 0 105 0 97 0 108 0 32 0 101 0 120 0 112 0 114 0 101 0 115 0 115 0 105 0 111 0 110 0 59 0 102 0 97 0 99 0 101 0 59 0 109 0 97 0 107 0 101 0 32 0 117 0 112 0 59 0 109 0 97 0 107 0 101 0 45 0 117 0 112 0 0 0\"},\"XPSubject\":{\"value\":\"80 0 111 0 114 0 116 0 114 0 97 0 105 0 116 0 32 0 79 0 102 0 32 0 66 0 101 0 97 0 117 0 116 0 105 0 102 0 117 0 108 0 32 0 87 0 111 0 109 0 97 0 110 0 32 0 105 0 110 0 32 0 83 0 116 0 117 0 100 0 105 0 111 0 0 0\"},\"XPTitle\":{\"value\":\"80 0 111 0 114 0 116 0 114 0 97 0 105 0 116 0 32 0 79 0 102 0 32 0 66 0 101 0 97 0 117 0 116 0 105 0 102 0 117 0 108 0 32 0 87 0 111 0 109 0 97 0 110 0 32 0 105 0 110 0 32 0 83 0 116 0 117 0 100 0 105 0 111 0 0 0\"},\"XResolution\":{\"value\":\"300/1\"},\"YResolution\":{\"value\":\"300/1\"}}",
      "ContentMd5": "nXMVmG+xwEgLZLwUyrHc5g==",
      "ImageHeight": 3937,
      "ImageScore": {
        "OverallQualityScore": 0.754
      },
      "ETag": "\"9D7315986FB1C0480B64BC14CAB1DCE6\"",
      "DatasetName": "test-dataset",
      "FileHash": "9D7315986FB1C0480B64BC14CAB1DCE6",
      "UpdateTime": "2024-10-21T14:48:08.786577032+08:00",
      "OSSCRC64": "18204555674833433107",
      "OSSTaggingCount": 0,
      "OSSObjectType": "Normal"
    },
    {
      "ObjectACL": "default",
      "ContentType": "image/jpeg",
      "ProjectName": "test-project",
      "Size": 9241112,
      "URI": "oss://test-bucket/1.jpg",
      "ObjectType": "file",
      "CustomLabels": {
        "category": "人物"
      },
      "OwnerId": "14133977656xxxxx",
      "FileModifiedTime": "2024-10-21T14:13:19+08:00",
      "ImageWidth": 3861,
      "OSSStorageClass": "Standard",
      "MediaType": "image",
      "ObjectId": "3a69d4f74493580ae821115a148d1ea1c361a970f8bc6c6274841b64efff9d4a",
      "CreateTime": "2024-10-21T14:39:12.749880168+08:00",
      "Filename": "1.jpg",
      "Title": "A beautiful young Chinese woman",
      "Labels": [
        {
          "CentricScore": 0.821,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "发型",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.754,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "肖像",
          "LabelLevel": 2,
          "ParentLabelName": "其他事物"
        },
        {
          "CentricScore": 0.728,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "服装",
          "LabelLevel": 2,
          "ParentLabelName": "衣服"
        },
        {
          "CentricScore": 0.672,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "白色",
          "LabelLevel": 3,
          "ParentLabelName": "颜色"
        },
        {
          "CentricScore": 0.765,
          "Language": "zh-Hans",
          "LabelConfidence": 0.993,
          "LabelName": "照片拍摄",
          "LabelLevel": 2,
          "ParentLabelName": "艺术品"
        },
        {
          "CentricScore": 0.784,
          "Language": "zh-Hans",
          "LabelConfidence": 0.969,
          "LabelName": "女士",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.741,
          "Language": "zh-Hans",
          "LabelConfidence": 0.959,
          "LabelName": "肖像摄影",
          "LabelLevel": 2,
          "ParentLabelName": "艺术品"
        },
        {
          "CentricScore": 0.731,
          "Language": "zh-Hans",
          "LabelConfidence": 0.95,
          "LabelName": "人像",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.853,
          "Language": "zh-Hans",
          "LabelConfidence": 0.948,
          "LabelName": "长发",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.713,
          "Language": "zh-Hans",
          "LabelConfidence": 0.944,
          "LabelName": "微笑",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.736,
          "Language": "zh-Hans",
          "LabelConfidence": 0.925,
          "LabelName": "人",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.768,
          "Language": "zh-Hans",
          "LabelConfidence": 0.924,
          "LabelName": "美人",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.825,
          "Language": "zh-Hans",
          "LabelConfidence": 0.918,
          "LabelName": "女性",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.827,
          "Language": "zh-Hans",
          "LabelConfidence": 0.909,
          "LabelName": "模特",
          "LabelLevel": 2,
          "ParentLabelName": "职业&角色"
        },
        {
          "CentricScore": 0.827,
          "Language": "zh-Hans",
          "LabelConfidence": 0.907,
          "LabelName": "棕色头发",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.835,
          "Language": "zh-Hans",
          "LabelConfidence": 0.906,
          "LabelName": "女孩",
          "LabelLevel": 2,
          "ParentLabelName": "面部"
        },
        {
          "CentricScore": 0.738,
          "Language": "zh-Hans",
          "LabelConfidence": 0.893,
          "LabelName": "人物特写",
          "LabelLevel": 2,
          "ParentLabelName": "其他场景"
        },
        {
          "CentricScore": 0.826,
          "Language": "zh-Hans",
          "LabelConfidence": 0.811,
          "LabelName": "吹头发",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.858,
          "Language": "zh-Hans",
          "LabelConfidence": 0.748,
          "LabelName": "珠宝",
          "LabelLevel": 2,
          "ParentLabelName": "衣服"
        },
        {
          "CentricScore": 0.786,
          "Language": "zh-Hans",
          "LabelConfidence": 0.647,
          "LabelName": "梳头发",
          "LabelLevel": 2,
          "ParentLabelName": "日常行为"
        },
        {
          "CentricScore": 0.862,
          "Language": "zh-Hans",
          "LabelConfidence": 0.632,
          "LabelName": "金发",
          "LabelLevel": 2,
          "ParentLabelName": "外貌特征"
        },
        {
          "CentricScore": 0.826,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "日常行为",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.754,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "其他事物",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.858,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "衣服",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.672,
          "Language": "zh-Hans",
          "LabelConfidence": 1.0,
          "LabelName": "颜色",
          "LabelLevel": 2,
          "ParentLabelName": "其他事物"
        },
        {
          "CentricScore": 0.765,
          "Language": "zh-Hans",
          "LabelConfidence": 0.993,
          "LabelName": "艺术品",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.835,
          "Language": "zh-Hans",
          "LabelConfidence": 0.969,
          "LabelName": "面部",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.862,
          "Language": "zh-Hans",
          "LabelConfidence": 0.948,
          "LabelName": "外貌特征",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.827,
          "Language": "zh-Hans",
          "LabelConfidence": 0.909,
          "LabelName": "职业&角色",
          "LabelLevel": 1,
          "ParentLabelName": ""
        },
        {
          "CentricScore": 0.738,
          "Language": "zh-Hans",
          "LabelConfidence": 0.893,
          "LabelName": "其他场景",
          "LabelLevel": 1,
          "ParentLabelName": ""
        }
      ],
      "Orientation": 1,
      "Figures": [
        {
          "Beard": "none",
          "MaskConfidence": 0.891,
          "Gender": "female",
          "Boundary": {
            "Left": 2013,
            "Top": 572,
            "Height": 2254,
            "Width": 1557
          },
          "BeardConfidence": 1.0,
          "FigureId": "a4dcdc27-c5be-4ae1-b85d-1b902dba97b9",
          "Mouth": "open",
          "Emotion": "happiness",
          "Age": 29,
          "MouthConfidence": 0.997,
          "FigureType": "face",
          "GenderConfidence": 1.0,
          "HeadPose": {
            "Pitch": 1.079,
            "Roll": 4.29,
            "Yaw": -6.545
          },
          "Mask": "none",
          "EmotionConfidence": 0.994,
          "HatConfidence": 0.999,
          "GlassesConfidence": 0.999,
          "Sharpness": 0.999,
          "FigureClusterId": "Cluster-1",
          "FaceQuality": 0.845,
          "Attractive": 0.947,
          "AgeSD": 7.0,
          "Glasses": "none",
          "FigureConfidence": 0.999,
          "Hat": "none"
        }
      ],
      "EXIF": "{\"ColorSpace\":{\"value\":\"1\"},\"Compression\":{\"value\":\"6\"},\"ExifTag\":{\"value\":\"78\"},\"ExifVersion\":{\"value\":\"48 50 51 48\"},\"FileSize\":{\"value\":\"9241112\"},\"Format\":{\"value\":\"jpg\"},\"FrameCount\":{\"value\":\"1\"},\"ImageDescription\":{\"value\":\"A beautiful young Chinese woman\"},\"ImageHeight\":{\"value\":\"5791\"},\"ImageWidth\":{\"value\":\"3861\"},\"JPEGInterchangeFormat\":{\"value\":\"202\"},\"JPEGInterchangeFormatLength\":{\"value\":\"7945\"},\"Orientation\":{\"value\":\"1\"},\"ResolutionUnit\":{\"value\":\"2\"},\"XResolution\":{\"value\":\"300/1\"},\"YResolution\":{\"value\":\"300/1\"}}",
      "ImageHeight": 5791,
      "ImageScore": {
        "OverallQualityScore": 0.778
      },
      "ETag": "\"DC2FAD852990AC52F474F5BD1D2D1577-2\"",
      "DatasetName": "test-dataset",
      "FileHash": "DC2FAD852990AC52F474F5BD1D2D1577-2",
      "UpdateTime": "2024-10-21T14:48:08.786577032+08:00",
      "OSSCRC64": "7952820220211789159",
      "OSSTaggingCount": 0,
      "OSSObjectType": "Multipart"
    }
  ]
}

如果您有任何反馈或疑问,欢迎加入钉钉用户群(钉钉群号:31690030817)与阿里云智能媒体管理工程师实时沟通。