人像分割-证件照版(邀测)
更新时间:2022-01-26
接口描述
针对自拍类单人图片,先基于人脸检测、人体关键点定位,裁剪出符合证件照场景的人像图片(头肩上半身),对裁剪后的图片进行发丝级精细化分割;接口返回裁剪后的原图、分割结果灰度图、合成的黑底效果图,并输出人脸框坐标、关键点坐标、人像姿态(正脸/侧脸/正肩/侧肩等)等辅助信息,便于筛选结果、二次开发。
注:邀测的接口,暂未封装服务端SDK,只能通过API调用。
分割效果示意图:
请求说明
请求示例
HTTP 方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/image-classify/v1/body_seg_photo
URL参数:
参数 | 值 |
---|---|
access_token | 通过API Key和Secret Key获取的access_token,参考“Access Token获取” |
Header如下:
参数 | 值 |
---|---|
Content-Type | application/x-www-form-urlencoded |
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 说明 |
---|---|---|---|
image | 是 | string | 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M。图片的base64编码不包含图片头,如(data:image/jpg;base64, ),支持图片格式:jpg、bmp、png,最短边至少50px,最长边最大4096px。异常情况:当图片中的人体数目>=2时,或人像处于倒立状态,会报错 |
返回说明
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | unit64 | 请求唯一的log id,用于问题定位 |
seg_info | 是 | object | 人像精细化分割结果 |
+scoremap | 是 | string | 分割后人像前景灰度图,归一到0-255,不用进行二次处理,直接解码保存图片即可。Base64编码后的灰度图文件 |
+demo | 是 | string | 合成的证件照效果图(黑底) |
+cut | 是 | string | 按照证件照头肩比例裁剪后的原图 |
face_location | 是 | object | 人脸框位置信息 |
+height | 是 | int32 | 人脸框的高度 |
+left | 是 | int32 | 人脸框离左边界的距离 |
+top | 是 | int32 | 人脸框离上边界的距离 |
+width | 是 | int32 | 人脸框的宽度 |
+score | 是 | float | 人脸框的置信度分数,取值0-1 |
pose_info | 是 | object | 人体姿态信息,关键点的坐标 |
+facepose | 是 | int32 | 人脸姿态,一共5种类别,1:水平正脸,2:倾斜正脸,3:水平侧脸,4:倾斜侧脸, -1:未知姿态 |
+bodypose | 是 | int32 | 肩膀姿态,一共7种类别,1:水平正肩,2:水平微侧肩,3:水平侧肩,4:倾斜正肩,5:倾斜微侧肩,6:倾斜侧肩, -1:未知姿态 |
+body_parts | 是 | object[] | 人体关键点坐标信息,包含头肩部位的9个关键点 |
++left_ear | 是 | object | 左耳 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++right_ear | 是 | object | 右耳 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++left_eye | 是 | object | 左眼 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++right_eye | 是 | object | 右眼 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++++nose_tip | 是 | object | 鼻尖 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++left_mouth | 是 | object | 左嘴角 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++right_mouth | 是 | object | 右嘴角 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++left_shoulder | 是 | object | 左肩 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++right_shoulder | 是 | object | 右肩 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
++neck | 是 | object | 脖子 |
+++x | 是 | int32 | x坐标 |
+++y | 是 | int32 | y坐标 |
+++score | 是 | float | 关键点置信度分数,取值0-1 |
返回示例
{
log_id: 123,
seg_info:{
cut:"xxxx"
scoremap:"xxxx"
demo:"xxxx"
},
face_location:{
score:0.9999945,
top:116,
left:80,
width:173,
height:226
},
pose_info:{
body_parts:[
{
left_ear:{
score:0.8760631,
x:80,
y:202
}
},
{
right_ear:{
score:0.64241165,
x:252,
y:206
}
},
{
left_eye:{
score:0.95858794,
x:125,
y:214
}
},
{
right_eye:{
score:0.9648065,
x:199,
y:216
}
},
{
nose_tip:{
score:0.88654065,
x:160,
y:265
}
},
{
left_mouth:{
score:0.92905945,
x:135,
y:300
}
},
{
right_mouth:{
score:0.96665746,
x:189,
y:301
}
},
{
right_shoulder:{
score: 0.25711855,
x:344,
y:432
}
},
{
left_shoulder:{
score:0.4777191,
x:10,
y:431
}
},
{
neck:{
score:0.7303297,
x:173,
y:369
}
}
],
facepose:1,
bodypose:2
}
}