人体结构化属性
识别输入图片中的人体区域,并返回每个区域人体位置坐标及属性分析,如性别、年龄、服饰等16种属性的语义信息。
适用场景
可应用于智慧安防、智慧零售、行人搜索等场景。
属性说明
| 名称 | 语义值 | 
|---|---|
| 上身服饰 | 短袖、长袖 | 
| 下身服饰 | 短裤/裙、长裤/裙 | 
| 上身服饰纹理 | 图案、纯色、格子/条纹 | 
| 背包 | 无包、有包 | 
| 是否戴眼镜 | 无、有 | 
| 是否戴帽子 | 无、有 | 
| 人体朝向 | 正面、背面、左面、右面 | 
| 上方截断 | 无、有 | 
| 下方截断 | 无、有 | 
| 遮挡情况 | 无、轻、重 | 
| 是否戴口罩 | 无、有 | 
| 性别 | 男、女 | 
| 年龄 | 幼儿、青少年、中年、老年 | 
| 吸烟 | 无、有 | 
| 电话 | 无、有 | 
| 拿东西 | 无、有 | 
API参数说明
- 
HTTP 方法:
POST - 
Body 请求参数
 
| 名称 | 类型 | 是否必选 | 说明 | 
|---|---|---|---|
| url | String | 与 img 参数二选一 | 图像的 URL 地址。支持 HTTP/HTTPS 和 S3 协议。要求图像格式为 jpg/jpeg/png/bmp ,最长边不超过 4096px。 | 
| img | String | 与 url 参数二选一 | 进行 Base64 编码的图像数据 | 
- 请求 Body 示例
 
{
  "url": "图像的URL地址"
}
{
  "img": "Base64编码的图像数据"
}
- 返回参数
 
| 名称 | 类型 | 说明 | 
|---|---|---|
| Labels | List | 图像中找到的人体列表 | 
| upper_wear | Dict | 短袖、长袖 | 
| upper_wear_texture | Dict | 图案、纯色、条纹/格子 | 
| lower_wear | Dict | 短裤/裙、长裤/裙 | 
| glasses | Dict | 有眼镜、无眼镜 | 
| bag | Dict | 有背包、无背包 | 
| headwear | Dict | 有帽、无帽 | 
| orientation | Dict | 左侧面、背面、正面、右侧面 | 
| upper_cut | Dict | 有截断、无截断 | 
| lower_cut | Dict | 有截断、无截断 | 
| occlusion | Dict | 无遮挡、轻度遮挡、重度遮挡 | 
| face_mask | Dict | 戴口罩、无口罩 | 
| gender | Dict | 男性、女性 | 
| age | Dict | 幼儿、青少年、中年、老年 | 
| smoke | Dict | 吸烟、未吸烟 | 
| cellphone | Dict | 使用手机、未使用手机 | 
| carrying_item | Dict | 有手提物、无手提物 | 
| BoundingBox | Dict | 人体在图像中的的坐标值,包含top,left,width,height相对全画面的百分比 | 
| LabelModelVersion | String | 当前模型版本号 | 
- 返回示例
 
{
    "Labels": [
        {
            "upper_wear": {
                "短袖": 0.01, 
                "长袖": 99.99
            }, 
            "upper_wear_texture": {
                "图案": 0, 
                "纯色": 99.55, 
                "条纹/格子": 0.45
            }, 
            "lower_wear": {
                "短裤/裙": 0.15, 
                "长裤/裙": 99.85
            }, 
            "glasses": {
                "有眼镜": 57.74, 
                "无眼镜": 42.26
            }, 
            "bag": {
                "有背包": 0.69, 
                "无背包": 99.31
            }, 
            "headwear": {
                "有帽": 97.02, 
                "无帽": 2.98
            }, 
            "orientation": {
                "左侧面": 99.99, 
                "背面": 0, 
                "正面": 0, 
                "右侧面": 0.01
            }, 
            "upper_cut": {
                "有截断": 0, 
                "无截断": 100
            }, 
            "lower_cut": {
                "无截断": 0.18, 
                "有截断": 99.82
            }, 
            "occlusion": {
                "无遮挡": 100, 
                "重度遮挡": 0, 
                "轻度遮挡": 0
            }, 
            "face_mask": {
                "无口罩": 100, 
                "戴口罩": 0
            }, 
            "gender": {
                "男性": 100, 
                "女性": 0
            }, 
            "age": {
                "幼儿": 0, 
                "青少年": 100, 
                "中年": 0, 
                "老年": 0
            }, 
            "smoke": {
                "吸烟": 0, 
                "未吸烟": 100
            }, 
            "cellphone": {
                "使用手机": 0, 
                "未使用手机": 100
            }, 
            "carrying_item": {
                "有手提物": 0.03, 
                "无手提物": 99.97
            }, 
            "BoundingBox": {
                "Width": 0.11781848725818456, 
                "Height": 0.43450208474661556, 
                "Left": 0.5310931977771577, 
                "Top": 0.45263674786982644
            }
        }, 
        ...
    ], 
    "LabelModelVersion": "1.2.0"
}
开始使用
API资源浏览器
前提条件
通过AWS CloudFormation部署解决方案时,您需要:
- 设置参数API Explorer为yes。
 - 设置参数API Gateway Authorization为NONE。
 
否则,在API资源浏览器中只能看到该API的参考定义,而不能进行在线测试等操作。
操作步骤
- 访问AWS CloudFormation控制台。
 - 
从堆栈列表中选择方案的根堆栈,而不是嵌套堆栈。列表中嵌套堆栈的名称旁边会显示嵌套(NESTED)。

 - 
打开输出(Outputs)标签页,找到APIExplorer对应的URL。
 - 
点击URL访问API资源浏览器。页面将显示在部署解决方案时选中的API。

 - 
点击API右侧的向下箭头,展开显示API标准模型的请求方法。
 - 点击右侧的测试(Try it out)按钮,并在Request body中输入正确的Body请求数据进行测试,并查看测试结果。
 - 确认格式正确后,点击下方的Execute。
 - 在Responses body中查看返回的JSON结果。您还可以通过右侧复制或下载按钮保存处理结果。
 - 在Response headers中查看响应头的相关信息。
 - (可选)点击Execute右侧Clear按钮,即可清空Request body与Responses测试结果。
 
Postman(AWS_IAM认证)
- 访问AWS CloudFormation控制台。
 - 从堆栈列表中选择方案的根堆栈。
 - 打开输出标签页,找到以 HumanAttributeRecognition 为前缀的URL。
 - 
在Postman中新建标签页,并把URL粘贴到地址栏,选择POST作为HTTP调用方法。

 - 
打开Authorization配置,在下拉列表里选择Amazon Web Service Signature,并填写对应账户的AccessKey、SecretKey和Amazon Web Service Region(例如,cn-north-1或cn-northwest-1)。

 - 
打开Body配置项,选中raw和JSON数据类型。
 - 
在Body中输入测试数据,单击Send按钮即可看到相应返回结果。
 
{
  "url": "图像的URL地址"
}

cURL
- Windows
 
curl --location --request POST "https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/custom_ocr" ^
--header "Content-Type: application/json" ^
--data-raw "{\"url\": \"图像的URL地址\"}"
- Linux/MacOS
 
curl --location --request POST 'https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/custom_ocr' \
--header 'Content-Type: application/json' \
--data-raw '{
  "url":"图像的URL地址"
}'
Python(AWS_IAM认证)
import requests
import json
from aws_requests_auth.boto_utils import BotoAWSRequestsAuth
auth = BotoAWSRequestsAuth(aws_host='[API_ID].execute-api.[AWS_REGION].amazonaws.com',
                           aws_region='[AWS_REGION]',
                           aws_service='execute-api')
url = 'https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/custom_ocr'
payload = {
    'url': '图像的URL地址'
}
response = requests.request("POST", url, data=json.dumps(payload), auth=auth)
print(json.loads(response.text))
Python(NONE认证)
import requests
import json
url = "https://[API_ID].execute-api.[AWS_REGION].amazonaws.com/[STAGE]/custom_ocr"
payload = json.dumps({
  "url": "图像的URL地址"
})
headers = {
  'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
Java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"url\":\"图像的URL地址\"\n}");
Request request = new Request.Builder()
  .url("https://xxxxxxxxxxx.execute-api.xxxxxxxxx.amazonaws.com/[STAGE]/custom_ocr")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
成本预估
您需要承担运行解决方案时使用亚马逊云科技各个服务的成本费用。截至这次发布的版本,影响解决方案的成本因素主要包括:
- Amazon API Gateway调用次数
 - Amazon API Gateway数据输出量
 - Amazon CloudWatch Logs存储量
 - Amazon Elastic Container Registry存储量
 
如果您选择基于Amazon Lambda架构部署,影响成本的因素还包括:
- Amazon Lambda调用次数
 - Amazon Lambda运行时间
 
与之对应的Amazon SageMaker架构部署,影响成本的因素还包括:
- Amazon SageMaker终端节点实例类型
 - Amazon SageMaker终端节点数据输入量
 - Amazon SageMaker终端节点数据输出量
 
成本预估示例1
以由西云数据运营的亚马逊云科技中国(宁夏)区域(cn-northwest-1)为例,处理1MB图像,处理时间1秒
使用本方案处理此图像所需的成本费用如下表所示:
| 服务 | 用量 | 费用 | 
|---|---|---|
| AWS Lambda | 调用百万次 | ¥1.36 | 
| AWS Lambda | 内存8192MB,每次运行1秒 | ¥907.8 | 
| Amazon API Gateway | 调用百万次 | ¥28.94 | 
| Amazon API Gateway | 数据输出以每次10KB计算,¥0.933/GB | ¥9.33 | 
| Amazon CloudWatch Logs | 每次10KB,¥6.228/GB | ¥62.28 | 
| Amazon Elastic Container Registry | 0.5GB存储,每月每GB¥0.69 | ¥0.35 | 
| 合计 | ¥1010.06 | 
成本预估示例2
以美国东部(俄亥俄州)区域(us-east-2)为例,处理1MB图像,处理时间1秒
使用本方案处理此图像所需的成本费用如下表所示:
| 服务 | 用量 | 费用 | 
|---|---|---|
| AWS Lambda | 调用百万次 | $0.20 | 
| AWS Lambda | 内存8192MB,每次运行1秒 | $133.3 | 
| Amazon API Gateway | 调用百万次 | $3.5 | 
| Amazon API Gateway | 数据输出以每次10KB计算,$0.09/GB | $0.9 | 
| Amazon CloudWatch Logs | 每次10KB,$0.50/GB | $5 | 
| Amazon Elastic Container Registry | 0.5GB存储,每月每GB$0.1 | $0.05 | 
| 合计 | $142.95 | 
成本预估示例3
以美国东部(俄亥俄州)区域(us-east-2)为例,用户一整天都有稳定的图像流,所需QPS约为2。其中Amazon SageMaker终端节点实例开启时会一直计费。
使用本方案的成本费用如下表所示:
| 服务 | 用量 | 费用 | 
|---|---|---|
| Amazon API Gateway | 调用5 百万次 | $17.5 | 
| Amazon API Gateway | 数据输出以每次10KB计算,$0.09/GB | $4.5 | 
| Amazon CloudWatch Logs | 每次10KB,$0.50/GB | $25 | 
| Amazon Elastic Container Registry | 0.5GB存储,每月每GB$0.1 | $0.05 | 
| Amazon SageMaker | 终端节点实例运行1个月,730小时,ml.g4dn.xlarge $0.736/小时 | $537.28 | 
| Amazon SageMaker | 终端节点数据输入以每次1MB计算,$0.016/GB | $16 | 
| Amazon SageMaker | 终端节点数据输出以每次10KB计算,$0.016/GB | $78.13 | 
| 合计 | $678.46 | 
卸载部署
您可以通过AWS CloudFormation卸载 自定义模板文字识别 功能,具体步骤请见部署解决方案:更新AWS CloudFormation堆栈(添加或删除AI功能),并在参数部分确认 HumanAttributeRecognition 参数设置为no。
卸载时间:10 分钟