图片识别

图片识别功能基于图片AI技术,能够检测图片标签和置信度。

前提条件

  • 已开通智能媒体管理IMM,并在OSS中绑定IMM。具体操作,请参见快速入门

  • 如果您通过RAM用户使用IMM相关功能,需确保RAM用户拥有以下权限。

    • 系统权限:AliyunOSSReadOnlyAccessAliyunIMMFullAccess

      关于为RAM用户授权的具体操作,请参见为RAM用户授权

    • 自定义权限:oss:ProcessImmram:GetRole

      为RAM用户授予自定义权限时,您需要先创建对应的自定义权限,然后为RAM用户授权。具体操作,请参见为RAM用户授予自定义的权限策略

参数

操作名称:imm/tagimage

返回结果参数说明:

说明

标签采用分层体系结构,每个标签通常包含父标签(主标签)。目前支持的标签种类包含三十多个分类、数千个标签。更多信息,请参见内容识别

名称

类型

描述

TagId

String

标签ID。

TagLevel

String

标签级别,从1开始整数编码,1为一级,2为二级,以此类推。

TagName

String

标签名称。

ParentTagId

String

上一级的TagId,如果为一级则ParentTagId为0。

ParentTagName

String

上一级的标签名称,如果为一级则ParentTagName为空。

TagScore

String

标签置信度得分,小于等于1的浮点数。

返回结果示例:

{
    "ImageUri":"oss://image-demo/example.jpg",
    "RequestId":"5C3D858E530E23D52CA0ED09",
    "Tags":[
        {
            "TagConfidence":0.2999534606933594,
            "TagLevel":1,
            "TagName":"自然景观"
        },
        {
            "ParentTagName":"自然景观",
            "TagConfidence":0.2999534606933594,
            "TagLevel":2,
            "TagName":"夜晚"
        },
        {
            "TagConfidence":0.2677214741706848,
            "TagLevel":1,
            "TagName":"外部场景"
        },
        {
            "ParentTagName":"外部场景",
            "TagConfidence":0.2677214741706848,
            "TagLevel":2,
            "TagName":"城市全景"
        }
    ],
    "httpStatusCode":200,
    "success":true
}

对于图片标签的格式解析,请参见内容识别

示例

假如请求Bucket是imm-demo,该Bucket所在区域为华东1(杭州),对应的域名为oss-cn-hangzhou.aliyuncs.com,请求预览照片为image.jpg,未签名的请求结构如下:

http://image-demo.oss-cn-hangzhou.aliyuncs.com/image.jpg?x-oss-process=imm/tagimage

通过Python SDK实现接口调用如下:

# 创建存储空间实例,所有文件相关的方法都需要通过存储空间实例来调用。
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)

# 图像识别。
style = 'imm/tagimage'
resp = bucket.get_object(objectKey, process=style)
# 解析结果。
data = resp.read(resp.content_length)
result = json.loads(data)
print "requestId: " + json.dumps(result["RequestId"], indent=4, sort_keys=True)
print "SuccessDetails: " + json.dumps(result["SuccessDetails"], indent=4, sort_keys=True)
print "FailDetails: " + json.dumps(result["FailDetails"], indent=4, sort_keys=True)