人体关键点识别

对于输入的一张图片(可正常解码,且长宽比适宜),检测图片中的所有人体,输出每个人体的14个主要关键点,包含四肢、脖颈、鼻子等部位,以及人体的坐标信息和数量
支持多人检测、人体位置重叠、遮挡、背面、侧面、中低空俯拍、大动作等复杂场景。

14个关键点的位置:鼻子、脖子、左肩、右肩、左手肘、右手肘、左手腕、右手腕、左髋部、右髋部、左膝、右膝、左脚踝、右脚踝。示意图如下(接口只输出关键点的坐标信息,不包含连线,如要实现“火柴人”的展现效果,需自行连线),正在扩展更多关键点,敬请期待。

注:人体的坐标位置是根据关键点的坐标信息推算得出,当图片中人体有一定截断、遮挡时,也能识别出关键点,进而推算出人体的坐标位置。

单人场景:

多人场景:

Json::Value result;

std::string image;
aip::get_file_content("/assets/sample.jpg", &image);

// 调用人体关键点识别
result = client.body_analysis(image, aip::null);

人体关键点识别 请求参数详情

参数名称 是否必选 类型 说明
image std::string 图片数据的二进制字符串,可以使用aip::get_file_content函数获取

人体关键点识别 返回数据参数详情

字段 是否必选 类型 说明
person_num uint32 人体数目
person_info object[] 人体姿态信息
+body_parts object 身体部位信息,包含14个关键点
++left_ankle object 左脚踝
+++x float x坐标
+++y float y坐标
++left_elbow object 左手肘
+++x float x坐标
+++y float y坐标
++left_hip object 左髋部
+++x float x坐标
+++y float y坐标
++left_knee object 左膝
+++x float x坐标
+++y float y坐标
++left_shoulder object 左肩
+++x float x坐标
+++y float y坐标
++left_wrist object 左手腕
+++x float x坐标
+++y float y坐标
++neck object
+++x float x坐标
+++y float y坐标
++nose object 鼻子
+++x float x坐标
+++y float y坐标
++right_ankle object 右脚踝
+++x float x坐标
+++y float y坐标
++right_elbow object 右手肘
+++x float x坐标
+++y float y坐标
++right_hip object 右髋部
+++x float x坐标
+++y float y坐标
++right_knee object 右膝
+++x float x坐标
+++y float y坐标
++right_shoulder object 右肩
+++x float x坐标
+++y float y坐标
++right_wrist object 右手腕
+++x float x坐标
+++y float y坐标
+location object 人体坐标信息
++height float 人体区域的高度
++left float 人体区域离左边界的距离
++top float 人体区域离上边界的距离
++width float 人体区域的宽度
log_id uint64 唯一的log id,用于问题定位

人体关键点识别 返回示例

{
  "person_num": 1,
  "person_info": [
    {
      "body_parts": {
        "neck": {
          "y": 288.7258911132812,
          "x": 845.4238891601562
        },
        "left_shoulder": {
          "y": 307.2262573242188,
          "x": 949.0001831054688
        },
        "left_knee": {
          "y": 582.1116333007812,
          "x": 568.9564819335938
        },
        "left_ankle": {
          "y": 593.6278076171875,
          "x": 421.5616149902344
        },
        "right_elbow": {
          "y": 0.0,
          "x": 0.0
        },
        "right_shoulder": {
          "y": 270.217529296875,
          "x": 744.0525512695312
        },
        "left_hip": {
          "y": 575.1278076171875,
          "x": 776.3110961914062
        },
        "right_hip": {
          "y": 505.7799377441406,
          "x": 700.2752075195312
        },
        "left_wrist": {
          "y": 586.6766357421875,
          "x": 1001.920715332031
        },
        "left_elbow": {
          "y": 468.8005676269531,
          "x": 965.2022094726562
        },
        "nose": {
          "y": 203.2225036621094,
          "x": 792.3795776367188
        },
        "right_ankle": {
          "y": 524.3399658203125,
          "x": 393.8475036621094
        },
        "right_knee": {
          "y": 339.5772399902344,
          "x": 591.977783203125
        },
        "right_wrist": {
          "y": 0.0,
          "x": 0.0
        }
      },
      "location": {
        "width": 212.8609619140625,
        "top": 105.8213119506836,
        "height": 532.152587890625,
        "left": 591.45361328125
      }
    }
  ],
  "log_id": 6900199721518695010
}