人体分析

    接口调用

    Hi,您好,欢迎使用百度人体分析私有化部署产品。

    人体分析私有化部署包部署成功后,即可获得与在线API基本完全相同的接口,相关接口将会启动,即可参考本文档开始调用测试。

    人体分析的各个接口拆分为不同的私有部署包,人体关键点识别、人流量统计、人体检测、人体属性识别(单人版)、手势识别、人像分割、手部关键点识别、驾驶行为分析对应8个不同的部署包,方便选取所需能力灵活应用。


    接口能力介绍

    1、人体关键点识别

    检测图片中的所有人体,识别每个人体的21个主要关键点,包含四肢、脖颈、五官等部位,同时可输出人体的坐标信息。支持多人检测、人体位置重叠、遮挡、背面、侧面、中低空俯拍、大动作等复杂场景。

    • 21个关键点的位置:头顶、左眼、右眼、左耳、右耳、左嘴角、右嘴角、鼻子、脖子、左肩、右肩、左手肘、右手肘、左手腕、右手腕、左髋部、右髋部、左膝、右膝、左脚踝、右脚踝。

    注:接口会返回人体坐标框和每个关键点的置信度分数,在应用时可综合置信度score分数,过滤掉置信度低的“无效人体”,推荐的过滤阈值在下文"接口调用说明"部分展开。

    2、人体检测

    检测图像中的所有人体,返回每个人体的矩形框位置;支持人体重叠、遮挡、截断、背面、侧面、动作变化等复杂场景。人体像素需大于60px * 60px。

    3、人体属性识别(单人版)

    输入单个人体的图片,识别人体的静态属性和行为,共支持28种属性。主要适用于中低空大角度斜拍视角,支持人体轻度重叠、轻度遮挡、背面、侧面等不同拍摄角度。

    • 可识别28种属性:性别、年龄阶段、下身服饰类别、上身服饰类别、戴帽子(可区分普通帽/安全帽)、戴口罩、上身服饰颜色、下身服饰颜色、使用手机、吸烟、身体朝向、撑伞、背包、是否有交通工具……

    注:接口返回的属性信息包括人体的遮挡、截断情况,在应用时可基于此过滤掉“无效人体”,比如严重遮挡、严重截断的人体。

    4、人流量统计

    识别和统计图像当中的人体个数(静态统计,不支持追踪和去重);支持框定多个不规则区域统计局部人数,同时可输出渲染图片。

    适用于3米以上的中远距离俯拍,5米以上为佳,以头部为主要识别目标统计人数,无需正脸、全身照,适应各类人流密集场景。支持轻度畸变的鱼眼摄像头

    5、手势识别

    识别图片中的手势类型,返回手势名称、手势矩形框、概率分数,可识别24种常见手势,适用于手势特效、智能家居手势交互等场景。

    • 支持的24类手势列表:拳头、OK、祈祷、作揖、作别、单手比心、点赞、Diss、我爱你、掌心向上、双手比心(3种)、数字(9种)、Rock、竖中指。

    适用于3米以内的拍摄距离,1米内为佳,自拍和他人拍摄均支持,拍摄距离尽量近一些,否则手势目标太小,容易漏识别。

    6、人像分割

    识别人体的轮廓范围,与背景进行分离,适用于拍照背景替换、照片合成、身体特效等场景。输入正常人像图片,返回分割后的二值结果图、灰度图、透明背景的人像图(png格式)。 美颜、P图等图片美化手段会影响分割效果,请使用原图进行分割

    7、手部关键点识别

    检测图片中的手部,输出手部坐标框、21个骨节点的坐标信息。当前主要适用于图片中单个手部的情况,图片中同时存在多个手部时,识别效果可能欠佳。

    8、驾驶行为分析

    针对车载场景,识别驾驶员使用手机、抽烟、不系安全带、未佩戴口罩、闭眼、打哈欠、双手离开方向盘等动作姿态,分析预警危险驾驶行为,提升行车安全性。


    接口格式说明


    变量类型定义


    类型 定义
    string 普通的字符串,可能会有长度要求,具体参见接口说明中的备注
    uint32 整形数字,最大取值为4字节int。自然数
    int64 整形数字,最大取值为8字节int。允许负数
    json 无论是request还是response中某个字段定义为json,那么它其实是一个json格式的字符串,需要二次解析
    array request的query中表示array请使用key[] 。response的json中的array即为jsonArray
    double 双精度,小数点后最大8位四舍五入

    返回格式

    • error_codeerror_msg即错误码和错误描述,详细含义请参考错误码表, error_code为0代表请求成功
    • result是接口返回的详细信息, 格式为数组。
    • log_id是请求的日志id, 13位长(bigint), 用于定位请求。
    {
        "error_code" : 0,  //错误码 0代表成功
        "error_msg"  : "SUCCESS", //错误信息
        "result" : {...} //返回结果 具体内容详见相关接口
        "log_id" : 3535325235 //请求的日志id
        "timestamp" : 1512391548 //请求到达的时间戳 精确到秒级
        "cached" : 0 //未启用 无需处理
    }

    接口调用说明


    人体关键点识别

    检测图片中的所有人体,识别每个人体的21个主要关键点,包含四肢、脖颈、五官等部位,同时可输出人体的坐标信息。

    21个关键点的位置:头顶、左耳、右耳、左眼、右眼、鼻子、左嘴角、右嘴角、脖子、左肩、右肩、左手肘、右手肘、左手腕、右手腕、左髋部、右髋部、左膝、右膝、左脚踝、右脚踝。示意图如下:

    71EB5D8B928D4DFEBBF42A6F2819E2D1.png


    调用接口的地址示例:[192.168.0.1]:8124/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8124

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 必选 类型 可选值范围 说明
    image true string 0-255彩色图像, size >50 图像数据,base64编码,图片长宽比需介于0.1-10之间,图片尺寸长宽小于50pixel时,会提示尺寸过小

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
    	"data" : base64encode(
    		{
    			"image" : base64encode(binary image data)
    		}
    	)
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data)
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    返回参数

    接口返回人体坐标框和每个关键点的置信度分数,在应用时可综合置信度score分数,过滤掉置信度低的“无效人体”,建议过滤方法:当关键点得分大于0.2的个数大于3,且人体框的得分大于0.2时,才认为是有效人体

    实际应用中,可根据对误识别、漏识别的容忍程度,调整阈值过滤方案,灵活应用,比如对误识别容忍低的应用场景,人体框的得分阈值可以提到0.3甚至更高。


    字段 是否必选 类型 说明
    person_num uint32 人体数目
    person_info object数组 人体姿态信息
    +location object 人体坐标信息
    ++height float 人体区域的高度
    ++left float 人体区域离左边界的距离
    ++top float 人体区域离上边界的距离
    ++width float 人体区域的宽度
    ++score float 置信度分数,取值0-1,越接近1代表识别准确的概率越大
    +body_parts object 身体部位信息,包含21个关键点
    ++left_ankle object 左脚踝
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_elbow object 左手肘
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_hip object 左髋部
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_knee object 左膝
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_shoulder object 左肩
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_wrist object 左手腕
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++neck object
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++nose object 鼻子
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_ankle object 右脚踝
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_elbow object 右手肘
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_hip object 右髋部
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_knee object 右膝
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_shoulder object 右肩
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_wrist object 右手腕
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++top_head object 头顶
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_mouth_corner object 左嘴角
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_mouth_corner object 右嘴角
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_eye object 右眼
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_eye object 左眼
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++right_ear object 右耳朵
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数
    ++left_ear object 左耳朵
    +++x float x坐标
    +++y float y坐标
    +++score float 置信度分数

    说明:body_parts,一共21个part,每个part包含x,y两个坐标,如果part被截断,则x、y坐标为part被截断的图片边界位置,part顺序以实际返回顺序为准

    返回示例

    {
      "err_no": 0,
      "err_msg": "fg_human_service[status:succeed]",
      "result": {
        "person_num": 1,
        "person_info": [
          {
            "body_parts": {
              "left_ankle":{
                "score":0.868368387222290,
                "x":643.8750,
                "y":649.6250
              },
              "left_ear":{
                "score":0.8685630559921265,
                "x":643.8750,
                "y":303.68750
              },
              "left_elbow":{
                "score":0.8781360983848572,
                "x":677.6250,
                "y":413.3750
              },"left_eye":{
                "score":0.9187903404235840,
                "x":635.43750,
                "y":303.68750
              },
              "left_hip":{
                "score":0.8074261546134949,
                "x":652.31250,
                "y":480.8750
              },
              "left_knee":{
                "score":0.7978388071060181,
                "x":652.31250,
                "y":565.250
              },
              "left_mouth_corner":{
                "score":0.8915061950683594,
                "x":635.43750,
                "y":320.56250
              },
              "left_shoulder":{
                "score":0.8677763342857361,
                "x":660.750,
                "y":354.31250
              },
              "left_wrist":{
                "score":0.8828375339508057,
                "x":702.93750,
                "y":464.0
              },
              "neck":{
                "score":0.8687257170677185,
                "x":627.0,
                "y":337.43750
              },
              "nose":{
                "score":0.9034447669982910,
                "x":627.0,
                "y":312.1250
              },
              "right_ankle":{
                "score":0.8528900742530823,
                "x":610.1250,
                "y":649.6250
              },
              "right_ear":{
                "score":0.8603078126907349,
                "x":610.1250,
                "y":303.68750
              },
              "right_elbow":{
                "score":0.8440912961959839,
                "x":559.50,
                "y":413.3750
              },
              "right_eye":{
                "score":0.8926745653152466,
                "x":618.56250,
                "y":303.68750
              },
              "right_hip":{
                "score":0.7821152210235596,
                "x":601.68750,
                "y":480.8750
              },
              "right_knee":{
                "score":0.7996079921722412,
                "x":610.1250,
                "y":573.68750
              },
              "right_mouth_corner":{
                "score":0.8937355875968933,
                "x":618.56250,
                "y":320.56250
              },
              "right_shoulder":{
                "score":0.8571984171867371,
                "x":584.81250,
                "y":354.31250
              },
              "right_wrist":{
                "score":0.8279093503952026,
                "x":542.6250,
                "y":455.56250
              },
              "top_head":{
                "score":0.8723988533020020,
                "x":627.0,
                "y":278.3750
              }
            },
            "location": {
              "height":449.7995910644531,
              "left":514.0347900390625,
              "score":0.9874296784400940,
              "top":256.1484069824219,
              "width":226.6530609130859
            }
          }
        ]
      },
      "format": "json",
      "img": "./data/img/normal_109.jpg" //这个字段为测试端新加,为方便核对图片结果,与服务端无关。
    }

    错误返回值

    参数 类型 必选 说明
    err_msg string 错误信息,只在异常中出现(参考错误码)
    err_code unit32 错误码,只在异常中出现(参考错误码)

    错误码表

    err_code err_msg 解释
    0 Succeed! 请求成功
    216100 Failed to parse input json json读取错误
    216201 Failed to load the image 图片加载出错
    216200 Image empty 图像数据为空
    216202 Image size error 图片尺寸错误
    216202 Image size is too small 图片太小,比如小于10像素
    216202 Invalid image ratio 图片长宽比超出范围,比如超过10
    216203 Image detection error 图片检测错误

    人体检测

    检测图像中的所有人体,返回每个人体的矩形框位置和置信度分数。人体目标需大于30px * 30px,否则模型会直接丢弃,无法检测到有效人体

    调用接口的地址示例:[192.168.0.1]:8125/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8125

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 必选 类型 说明
    image true string 图像数据,base64编码。若图片尺寸长或宽小于50pixel,会提示尺寸过小。
    return_crop false int 0或1,0表示false,1表示true,表示是否将检测到的人体框裁剪下来。
    异常:若该参数存在无法识别的单词,则忽略不进行处理,默认为false,不裁剪人体框

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
    	"data" : base64encode(
    		{
    			"image" : base64encode(binary image data),
    			 "return_crop"  : "0,1",
    		}
    	)
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data),
        "return_crop": 0,
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    返回参数

    字段 必选 类型 说明
    err_msg true string 错误信息,只在异常中出现(参考错误码表)
    err_no true uint32 错误码,只在异常中出现(参考错误码表)
    format true string 返回格式说明,默认添加,值为“json”
    result true string 人体检测结果,服务对返回结果做了base64编码

    正确返回值说明(返回参数为base64编码格式,将result字段base64解码后可得到以下内容):

    字段 类型 说明
    person_num int 检测到的人体框数目
    det_res object数组 每个人体框的具体信息
    +classname string 类型名称,默认为person
    +left int 检测框左坐标
    +top int 检测框顶坐标
    +width int 检测框宽度
    +height int 检测框高度
    +probability float 对应人体框的概率分数,取值0-1,越接近1代表识别准确的概率越大
    +label int 下标,默认为1,无实际含义
    +crop string 如果打开return_crop的请求参数为true,这里会返回该人体的patch图像,base64编码

    返回示例

        {
         "person_num": 3,
         "det_res":
         [
            {
                "classname":"person",
                "crop":"",
                "left": 1092,
                "top": 594,
                "width": 112,
                "height": 200,
                "probability": 0.6849,
                "label":1
            },
            {
                "classname":"person",
                "crop":"",
                "left": 1263,
                "top": 281,
                "width": 63,
                "height": 130,
                "probability": 0.5300,
                "label":1
            },
            {
                "classname":"person",
                "crop":"",
                "left": 969,
                "top": 192,
                "width": 71,
                "height": 75,
                "probability": 0.4311,
                "label":1
            }
         ]
        }

    错误码表

    err_no value err_msg 解释
    GENERAL_CLASSIFY
    _SUCCEED
    0 GeneralClassify
    [status: human detect succeed]
    人体检测成功(即整体流程成功)
    GENERAL_CLASSIFY
    _CONF_FILE_ERR
    216401 GeneralClassifyProcessorFactory
    [status:reading conf file error]
    读取conf文件出错
    GENERAL_CLASSIFY
    _BBOX_PREDICT_ERR
    216401 GeneralClassify
    [status: bbox predict error!]
    boudingbox检测过程出错
    GENERAL_CLASSIFY
    _INPUT_FORMAT_ERR
    216101 GeneralClassify
    [status:parse input format error]
    输入数据中不存在“image”字段
    GENERAL_CLASSIFY
    _INPUT_PARSING_ERR
    216401 pedestrian-detection-service
    [status:input parsing failed]
    读取base64输入图片出错
    GENERAL_CLASSIFY
    _IMAGE_EMPTY_ERR
    216200 pedestrian-detection-service
    [status:image empty]
    输入数据图片读取结果为空
    GENERAL_CLASSIFY
    _IMAGE_SIZE_ERR
    216202 pedestrian-detection-service
    [status:image size not
    between 50 and 4096]
    输入图片尺寸不在允许范围之内
    GENERAL_CLASSIFY
    _AUTH_ERR
    216401 pedestrian-detection-service
    [auth verify error]
    权限问题
    GENERAL_CLASSIFY
    _ENCODE_ERR
    216401 pedestrian-detection-service
    [status: encode error]
    人像patch编码成base64字符串

    人体属性识别(单人版)

    输入单个人体的图片,识别人体的静态属性和行为,共支持28种属性。

    注:模型默认将输入的整张图片当作“1个人体”直接识别属性,需提前使用人体检测模型,将原图中的每个人体检测、裁剪出来,再调用本服务识别属性信息

    接口返回每个属性的置信度分数,在应用时可综合置信度score分数,过滤掉置信度低的属性。实际应用中,可根据对误识别、漏识别的容忍程度,调整阈值过滤方案,灵活应用。

    调用接口的地址示例:[192.168.0.1]:8126/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8126

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 必选 类型 说明
    image true string 图像数据,base64编码。若图片尺寸长或宽小于50pixel,会提示尺寸过小。
    type false string 如只需返回某几个特定属性,请将type 参数值设定属性可选值,用逗号分隔,无空格。(如"gender,headwear,carrying_item,cellphone")。不提供该字段则输出默认的17个属性,若需获取其余属性,请将type参数值设定为需要返回的全部属性
    异常情况:
    ①若该参数存在无法识别的单词,则忽略不进行处理,返回17个默认输出的属性;
    ②若提供了该参数,但不含任何可识别的合法值,则按err_no=8返回

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
    	"data" : base64encode(
    		{
    			"image" : base64encode(binary image data),
    			"type"	: "gender,headwear,carrying_item,cellphone"
    		}
    	)
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data),
        "type": "gender,headwear,carrying_item,cellphone"
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    type字段说明

    ID type 说明 是否默认输出 类别数 类别取值
    0 gender 性别 2 男性、女性
    1 age 年龄阶段 5 幼儿、青少年、青年、中年、老年
    2 action 动作姿态 4 站立、蹲或坐、走、跑
    3 hair_length 发长 4 长发、中长发、短发、秃顶
    4 bag 背包 3 无背包、单肩包、双肩包
    5 upper_wear 上身服饰 2 长袖、短袖
    6 lower_wear 下身服饰 5 长裤、短裤、长裙、短裙、不确定
    7 upper_color 上身颜色 11 红、橙、黄、绿、蓝、紫、粉、黑、白、灰、棕
    8 lower_color 下身颜色 12 红、橙、黄、绿、蓝、紫、粉、黑、白、灰、棕、不确定
    9 upper_wear_fg 上身服饰细分 9 T恤、无袖、衬衫、西装、毛衣、夹克、羽绒服、风衣、外套
    10 upper_wear_texture 上身服饰纹理 4 纯色、图案、碎花、条纹或格子
    11 headwear 是否戴帽子 3 无帽、普通帽、安全帽
    12 glasses 是否戴眼镜 4 无眼镜、戴眼镜、戴墨镜、不确定
    13 smoke 是否吸烟 3 未吸烟、吸烟、不确定
    14 cellphone 是否使用手机 4 未使用手机、打电话、看手机、不确定
    15 orientation 人体朝向 4 正面、背面、左侧面、右侧面
    16 umbrella 是否打伞 2 未打伞、打伞
    17 carrying_baby 是否抱小孩 2 未抱小孩、抱小孩
    18 face_mask 是否戴口罩 3 无口罩、戴口罩、不确定
    19 glove 是否戴手套 2 无手套、戴手套
    20 carrying_item 是否有手提物 3 无手提物、有手提物、不确定
    21 vehicle 是否有交通工具 4 无交通工具、骑摩托车、骑自行车、骑三轮车
    22 luggage 是否有拉杆箱 2 无拉杆箱、有拉杆箱
    23 upper_cut 上方截断 2 无上方截断、有上方截断
    24 lower_cut 下方截断 2 无下方截断、有下方截断
    25 side_cut 侧方截断 2 无侧方截断、有侧方截断
    26 occlusion 遮挡情况 3 无遮挡、轻度遮挡、重度遮挡
    27 is_human 是否是正常人体 2 非正常人体、正常人体。用于判断说明人体的截断/遮挡情况,并非判断动物等非人类生物
    正常人体:身体露出大于二分之一的人体,一般以能看到腰部肚挤眼为标准;
    非正常人体:严重截断、严重遮挡的人体,一般是看不到肚挤眼的,比如只有个脑袋、一条腿

    返回参数

    字段 必选 类型 说明
    err_msg true string 错误信息,只在异常中出现(参考错误码表)
    err_no true uint32 错误码,只在异常中出现(参考错误码表)
    format true string 返回格式说明,默认添加,值为“json”
    result true string 人体属性识别结果,服务对返回结果做了base64编码

    正确返回值说明(返回参数为base64编码格式,将result字段base64解码后可得到以下内容):

    字段 类型 说明
    person_num int 人体框数目,固定为1
    person_info object数组 每个人体框的具体信息
    +location object 人体框位置,固定为整图范围(即:原图大小)
    ++left int 检测框左坐标
    ++top int 检测框顶坐标
    ++width int 检测框宽度
    ++height int 检测框高度
    ++score float 人体框的置信度分数,固定为1
    +attributes object 人体属性内容
    ++gender object 性别
    +++name string 如"男性"
    +++score float 对应概率分数
    ++age object 年龄阶段
    +++name string 如"青年"
    +++score float 对应概率分数
    ++action object 动作姿态
    +++name string 如"站立"
    +++score float 对应概率分数
    ++hair_length object 发长
    +++name string 如"短发"
    +++score float 对应概率分数
    ++bag object 背包
    +++name string 如"双肩包"
    +++score float 对应概率分数
    ++upper_wear object 上身服饰
    +++name string 如"短袖"
    +++score float 对应概率分数
    ++lower_wear object 下身服饰
    +++name string 如"长裤"
    +++score float 对应概率分数
    ++upper_color object 上身颜色
    +++name string 如"白"
    +++score float 对应概率分数
    ++lower_color object 下身颜色
    +++name string 如"蓝"
    +++score float 对应概率分数
    ++upper_wear_fg object 上身服饰细分
    +++name string 如"衬衫"
    +++score float 对应概率分数
    ++upper_wear_texture object 上身服饰纹理
    +++name string 如"纯色"
    +++score float 对应概率分数
    ++headwear object 是否戴帽子
    +++name string 如"无帽"
    +++score float 对应概率分数
    ++glasses object 是否戴眼镜
    +++name string 如"戴眼镜"
    +++score float 对应概率分数
    ++smoke object 是否吸烟
    +++name string 如"未吸烟"
    +++score float 对应概率分数
    ++cellphone object 是否使用手机
    +++name string 如"未使用手机"
    +++score float 对应概率分数
    ++orientation object 人体朝向
    +++name string 如"右侧面"
    +++score float 对应概率分数
    ++umbrella object 是否打伞
    +++name string 如"未打伞"
    +++score float 对应概率分数
    ++carrying_baby object 是否抱小孩
    +++name string 如"未抱小孩"
    +++score float 对应概率分数
    ++face_mask object 是否戴口罩
    +++name string 如"无口罩"
    +++score float 对应概率分数
    ++glove object 是否戴手套
    +++name string 如"无手套"
    +++score float 对应概率分数
    ++carrying_item object 是否有手提物
    +++name string 如“有手提物"
    +++score float 对应概率分数
    ++vehicle object 是否有交通工具
    +++name string 如"无交通工具"
    +++score float 对应概率分数
    ++luggage object 是否有拉杆箱
    +++name string 如"有拉杆箱"
    +++score float 对应概率分数
    ++upper_cut object 上方截断
    +++name string 如"无上方截断"
    +++score float 对应概率分数
    ++lower_cut object 下方截断
    +++name string 如"无下方截断"
    +++score float 对应概率分数
    ++side_cut object 侧方截断
    +++name string 如"无侧方截断"
    +++score float 对应概率分数
    ++occlusion object 遮挡情况
    +++name string 如"轻度遮挡"
    +++score float 对应概率分数
    ++is_human object 是否是正常人体
    +++name string 对应概率分数
    +++score float 如"正常人体"

    说明:接口返回每个属性的置信度分数,在应用时可综合置信度score分数,过滤掉置信度低的属性。实际应用中,可根据对误识别、漏识别的容忍程度,调整阈值过滤方案,灵活应用。

    返回示例

    {
    "person_num": 1,
     "person_info":
     [
    	{
    	 	"location":
     		{
    			"left": 0,
    			"top": 0,
    			"width": 200,
    			"height": 400
    			"score": 1.0
    		 }
     		"attributes":
     		{
    			"gender": 
    			{
    				"name": "男性",
    				"score": 0.937
    		 	}
    			"hair_length": 
    			{
    				"name": "短发",
    				"score": 0.889
    		 	}
    			"lower_wear": 
    			{
    				"name": "长裤",
    				"score": 0.925
    		 	}
    			"upper_wear": 
    			{
    				"name": "短袖",
    				"score": 0.774
    		 	}
    	 	}
    	}
     ]
    }

    错误码表

    err_no value err_msg 解释
    GENERAL_CLASSIFY
    _SUCCEED
    0 GeneralClassify
    [status: human attrib succeed]
    人体属性检测成功(即整体流程成功)
    GENERAL_CLASSIFY
    _CONF_FILE_ERR
    1 GeneralClassifyProcessorFactory
    [status:reading conf file error]
    读取conf文件出错
    GENERAL_CLASSIFY
    _BBOX_PREDICT_ERR
    2 GeneralClassify
    [status: bbox predict error!]
    boudingbox检测过程出错
    GENERAL_CLASSIFY
    _ATTRIB_PREDICT_ERR
    3 GeneralClassify
    [status: attrib predict error!]
    人体属性检测过程出错
    GENERAL_CLASSIFY
    _INPUT_FORMAT_ERR
    4 GeneralClassify
    [status:parse input format error]
    输入数据中不存在“image”字段
    GENERAL_CLASSIFY
    _INPUT_PARSING_ERR
    5 fg_human_attribute
    [status:input parsing failed]
    读取base64输入图片出错
    GENERAL_CLASSIFY
    _IMAGE_EMPTY_ERR
    6 fg_human_attribute
    [status:image empty]
    输入数据图片读取结果为空
    GENERAL_CLASSIFY
    _IMAGE_SIZE_ERR
    7 fg_human_attribute
    [status:image size not
    between 50 and 4096]
    输入图片尺寸不在允许范围之内
    GENERAL_CLASSIFY
    _ATTRIB_TYPE_PARSING_ERR
    8 fg_human_attribute
    [status:attrib type parsing failed]
    读取提供的type参数出错

    人流量统计

    识别和统计图像当中的人体个数(静态统计,不支持追踪和去重)。默认识别整图中的人数,支持指定多个不规则区域统计局部人数,同时可输出渲染图片(会增加接口延时)

    适用于3米以上的中远距离俯拍,5米以上为佳,以头部为主要识别目标统计人数,无需正脸、全身照,适应各类人流密集场景。支持轻度畸变的鱼眼摄像头

    渲染图示例如下:

    D79CA306D774416DBB231FEC1408BB0D.png

    调用接口的地址示例:[192.168.0.1]:8122/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8122

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 必选 类型 说明
    image true string 图像数据,base64编码,图片尺寸长宽小于50pixel,会提示尺寸过小
    area false array < array < int > > 特定框选区域坐标,支持多个多边形区域,最多支持10个区域,如输入超过10个区域,截取前10个区域进行识别。
    此参数为空或无此参数、或area参数设置错误时,默认识别整个图片的人数
    area参数设置错误的示例:某个坐标超过原图大小(area坐标取值需<原图,如原图为1080 * 720,area取值范围为1~1079、1~719),x、y坐标未成对出现等;
    注意:设置了多个区域时,任意一个坐标设置错误,则认为area参数错误、失效
    area参数设置格式
    1)多个区域用英文逗号“,”分隔;
    2)同一个区域内的坐标用英文逗号“,”分隔,默认尾点和首点相连做闭合。
    示例:[[xa1,ya1,xa2,ya2,...,xan,yan], [xb1,yb1,xb2,yb2,...,xbn,ybn], ...]
    show false int 取值范围:0,1,2,3
    是否返回热力图渲染结果,含义如下:
    0:不返回渲染图(性能最高)
    1:只返回渲染图,如果设定了area区域参数,同时返回区域框
    2:返回渲染图+左上角的总人数,如果设置了area参数,也会返回区域框
    3:返回渲染图+左上角的总人数,如果设置了area参数,不会返回区域框
    小于0按0计,大于3按3计。上述结果中,渲染图为红云效果,区域框为蓝线绘制(如果设置了area参数)

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
    	"data" : base64encode(
    		{
    			"image" : base64encode(binary image data)
    		}
    	)
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data)
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)


    返回参数

    字段 必选 类型 说明
    err_msg true string 错误信息,只在异常中出现(参考错误码表)
    err_no true uint32 错误码,只在异常中出现(参考错误码表)
    format true string 返回格式说明,默认添加,值为“json”
    result true string 人流密度估计结果,服务对返回结果做了base64编码

    正确返回值说明:(返回参数为base64编码格式,将result字段base64解码后可得到以下内容

    字段名称 类型 说明
    person_num int32 识别出的人体数目;当未设置area参数时,返回的是全图人数;设置了有效的area参数时,返回的人数是所有区域的人数总和(所有区域求并集后的不规则区域覆盖的人数
    image string 渲染图片文件byte内容的base64编码,请求端得到后先做解码再以字节流形式直接写入文件
    area_counts array 每一个框选区域的人数,仅当请求中有area参数且参数有效时才会返回,否则该字段不返回;成功返回示例:[5,3,8]

    特别说明:

    1)person_num固定返回,image只有当请求字段中"show"为true时候返回;

    2) image 的内容是图片字节内容做byte64编码的string字符,拿到后反编码再按照字节写成文件即可

    返回示例

    {"person_num": 86}                                       // 请求时,show为0或者不传
    {"person_num": 86, "image": "/9j/4AAoFS2P/9k="}          // 请求时,show为1

    错误码表

    err_code err_msg 名称 说明
    0 fg-crowd-counting
    [status:succeed]
    GENERAL_CLASSIFY
    _SUCCEED
    整体流程成功
    1 fg-crowd-counting
    [status:input format illegal]
    GENERAL_CLASSIFY
    _INPUT_FORMAT_ERR
    请求未包含image
    2 fg-crowd-counting
    [status:input parsing failed]
    GENERAL_CLASSIFY
    _INPUT_PARSING_ERR
    输入格式有误
    3 fg-crowd-counting
    [status:image empty]
    GENERAL_CLASSIFY
    _IMAGE_EMPTY
    图片为空
    4 fg-crowd-counting
    [status:image size < 50]
    GENERAL_CLASSIFY
    _IMAGE_SIZE_ERR
    图片尺寸过小
    5 fg-crowd-counting
    [status:heatmap prediction fail]
    GENERAL_CLASSIFY
    _HM_PREDICT_ERR
    热力图forward出错
    6 fg-crowd-counting
    [auth verify error]
    GENERAL_CLASSIFY
    _AUTH_ERR
    鉴权错误
    7 fg-crowd-counting
    [status:detection prediction fail]
    GENERAL_CLASSIFY
    _BBOX_PREDICT_ERR
    检测器forward出错

    手势识别

    识别图片中的手势类型,返回手势名称、手势矩形框、概率分数,可识别24种常见手势:拳头、OK、祈祷、作揖、作别、单手比心、点赞、Diss、我爱你、掌心向上、双手比心(3种)、数字(9种)、Rock、竖中指。每种手势的示例图参考:https://ai.baidu.com/ai-doc/BODY/4k3cpywrv

    适用于3米以内的拍摄距离,1米内为佳,自拍和他人拍摄均支持,拍摄距离尽量近一些,否则手势目标太小,容易漏识别。

    调用接口的地址示例:[192.168.0.1]:8120/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8120

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 是否必选 类型 说明
    appid false string 固定值,示例:123456
    logid false int 随机数
    format false string 固定值,示例:json
    from false string 固定值,示例:test-python
    cmdid false string 固定值,示例:123
    clientip false string 固定值,示例:0.0.0.0
    data true string 图片的base64编码字符串

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
      "data" : base64encode(
        {
          "image" : base64encode(binary image data),
        }
      )
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data)
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    返回参数

    字段 是否必选 类型 说明
    err_msg true string 返回错误信息
    err_no true int 返回错误代码
    format true string 固定值,json
    result true json 包含所有检测到的目标
    +object true json 检测到的一个实例
    ++classname false string 目标所属的类别,即手势名称
    ++label false int 目标的标签
    ++left false int 目标框最左坐标
    ++top false int 目标框最上坐标
    ++width false int 目标框的宽
    ++height false int 目标框的高
    ++probability false float 目标属于该类别的概率

    其中classname和label的对应关系如下表所示:

    label classname 手势中文名
    1 One 数字1(也可以叫做食指)
    2 Five 数字5(也可以叫做掌心向前)
    3 Fist 拳头
    4 Ok OK
    5 Prayer 祈祷
    6 Congratulation 作揖(也可以叫恭喜)
    7 Honour 作别
    8 Heart_single 单手比心
    9 Thumb_up 点赞
    10 Thumb_down diss
    11 ILY 我爱你
    12 Palm_up 掌心向上
    13 Face 人脸
    14 Heart_1 双手比心1
    15 Heart_2 双手比心2
    16 Heart_3 双手比心3
    17 Two 数字2(也可以叫做比V)
    18 Three 数字3
    19 Four 数字4
    20 Six 数字6
    21 Seven 数字7
    22 Eight 数字8
    23 Nine 数字9
    24 Rock 摇滚
    25 Insult 竖中指

    返回示例:

    {
        u'err_no': 0,
        u'err_msg': u'DetectionSsd[status:succeed]',
        u'result': 
            '{
                 "object":
                     [
                         {
                             "classname":"Thumb_up",
                             "height":145,
                             "label":9,
                             "left":453,
                             "probability":0.5996769666671753,
                             "top":563,
                             "width":106
                        }
                    ]
            }\n',
        u'format': u'json'
    }

    错误码表

    错误码 错误信息 说明
    0 DetectionSsd
    [status:succeed]
    成功检测并返回结果
    216100 gestureservice
    [status:Failed to parse input json]
    输入参数解析失败
    216101 gestureservice
    [status:Invalid image string in input json]
    输入参数不足
    216200 gestureservice
    [status:image empty]
    输入图片为空
    216201 gestureservice
    [status:Failed to load the image]
    输入图片解析失败
    216202 gestureservice
    [status:Image size is too small]
    输入图片尺寸过小或者裁切后的图片尺寸过小
    216203 gestureservice
    [status:Image detection error]
    图片可以正常解析,但图片无法通过网络处理
    216204 gestureservice
    [status:Not authenticated]
    请求没有被授权

    手部关键点识别

    检测图片中的所有手部,返回每只手的坐标框、21个骨节点坐标信息。

    当前接口主要适用于图片中单个手部的情况,图片中同时存在多个手部时,识别效果可能欠佳。

    21个关键点对应位置示意图:

    375a4d697e9a138f560f34b23.png

    调用接口的地址示例:[192.168.0.1]:8128/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8128

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 是否必选 类型 说明
    appid false string 固定值,示例:123456
    logid false int 随机数
    format false string 固定值,示例:json
    from false string 固定值,示例:test-python
    cmdid false string 固定值,示例:123
    clientip false string 固定值,示例:0.0.0.0
    data true string 图片的base64编码字符串

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
      "data" : base64encode(
        {
          "image" : base64encode(binary image data),
        }
      )
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data)
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    返回参数

    字段 是否必选 类型 说明
    err_no true string 错误码,只在异常中出现(参考错误码表)
    err_msg true uint32 错误信息,只在异常中出现(参考错误码表)
    result true string base64编码的手部关键点识别结果

    正确返回值说明:(返回参数为base64编码格式,将result字段base64解码后可得到以下内容

    字段名称 类型 说明
    hand_info object数组 检测到的所有手部信息
    +hand_num uint32 检测到的手部数量
    +location object 手部所在的位置信息
    ++left uint32 手部区域离左边界的距离
    ++top uint32 手部区域离上边界的距离
    ++height uint32 手部区域的高度
    ++width uint32 手部区域的宽度
    ++score float 手部的置信度分数
    +hand_parts object 单个手部的关键点信息,包含21个关键点
    ++[0-20] object 检测到的关键点
    +++x uint32 关键点的x坐标
    +++y uint32 关键点中的y坐标
    +++score float 关键点的置信度分数

    返回示例

    {
    	"hand_num": 1,
    	"hand_info": [
    		{
    			"hand_parts": {
    				"0": {
    					"y": 707,
    					"x": 829,
    					"score": 0.81601244211197
    				},
    				"1": {
    					"y": 620,
    					"x": 873,
    					"score": 0.6850221157074
    				},
    				……
    				"20": {
    					"y": 325,
    					"x": 567,
    					"score": 0.91110396385193
    				}
    			},
    			"location": {
    				"height": 556,
    				"width": 426,
    				"top": 151,
    				"score": 17.495880126953,
    				"left": 567
    			}
    		}
    	]
    }

    错误码表

    err_code err_msg 说明
    0 Succeed! Congrats, May the force be with you ... 成功检测并返回结果
    216100 Failed to parse input json 输入参数解析失败
    216101 Invalid image string in input json 输入参数不足
    216200 Image empty 输入图片为空
    216201 Failed to load the image 输入图片解析失败
    216202 Image size is too small (less than 10 pixels) 输入图片尺寸过小或者裁切后的图片尺寸过小
    216203 Image detection error 图片可以正常解析,但图片无法通过网络处理
    216401 Not authenticated 请求没有被授权

    人像分割

    识别人体的轮廓范围,与背景进行分离,返回分割后的二值结果图、灰度图、透明背景的人像图(png格式)。分割效果示例图请参考:https://ai.baidu.com/ai-doc/BODY/Fk3cpyxua

    美颜、P图等图片美化手段会影响分割效果,请使用原图进行分割

    调用接口的地址示例:[192.168.0.1]:8127/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8127

    路径

    /GeneralClassifyService/classify

    请求参数

    参数 必选 类型 说明
    image true bytes 图像数据,base64编码。必须字段,待分割的图片

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
        	"data": base64.b64encode(data)
    }   

    python代码示例如下:

    import base64
    import json
    
    def encode_img_to_file(image_data):
    	img_encode = cv2.imencode('.png', image_data)[1]
    	data_encode = np.array(img_encode) 
    	str_encode = data_encode.tostring()
    	return str_encode
     
    file = "test.jpg"
    image = cv2.imread(file, -1)
    img_data = encode_img_to_file(image)
    proto_data.image = img_data
    data = proto_data.SerializeToString()
    
    data = {
        # 将图片进行json编码
        "data": base64.b64encode(image_string)
    }
    
    # 将数据转为json字符串
    request_body = json.dump(data)
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    返回参数

    字段 必选 类型 说明
    err_no true int 返回错误代码
    err_msg true string 返回错误信息
    result true string 分割结果信息
    +type true string 分割类型,目前仅支持person
    +labelmap true string 分割后的二值图结果,经过base64之后的字符串,单通道图片;需二次处理方能查看分割效果,Python、Java的处理示例代码见:https://ai.baidu.com/docs#/Body-API/a28d94ec
    +scoremap true string 分割后人像前景的scoremap,归一到0-255,单通道图片;不用进行二次处理,直接解码保存图片即可
    +foreground true string 分割后的人像前景抠图结果,png图片,透明背景,四通道;不用进行二次处理,直接解码保存图片即可
    format true string 固定值,json

    返回示例

    {    
    	"err_no": 0,	
    	"err_msg": "ParseService[status:succeed]",
    	"result": 
    		{
    			"labelmap": "",
    			"scoremap": "",
    			"type":"person",
    			"foreground": ""
    		},
    	"format": "json"
    }

    错误码表

    err_no 解释
    216100 参数无效或者错误
    216200 无效图片
    216201 图片格式错误
    216401 预测过程出错

    驾驶行为分析

    针对车内驾驶室监控画面,识别图像中是否有人体,若检测到至少1个人体,将目标最大的人体作为驾驶员,进一步识别驾驶员的属性行为,可识别使用手机、抽烟、未系安全带、双手离开方向盘、视线未朝前方、未佩戴口罩、闭眼、打哈欠、低头9种典型行为姿态。

    注:若图像中检测到多个大小相当的人体,默认取画面中右侧最大的人体作为驾驶员;针对香港、海外地区的右舵车,可通过请求参数里的wheel_location字段,指定将左侧最大的人体作为驾驶员。

    图片质量要求

    • 服务只适用于车载驾驶室监控场景,普通室内外监控场景,若要识别使用手机、抽烟等行为属性,请使用人体检测与属性识别服务。
    • 车内摄像头硬件选型无特殊要求,分辨率建议720p以上,但更低分辨率的图片也能识别,只是效果可能有差异。
    • 车内摄像头部署方案建议:尽可能拍全驾驶员的身体,并充分考虑背光、角度、方向盘遮挡等因素
    • 服务适用于夜间红外监控图片,识别效果跟可见光图片相比可能略微有差异。
    • 图片主体内容清晰可见,模糊、驾驶员遮挡严重、光线暗等情况下,识别效果肯定不理想。

    调用接口的地址示例:[192.168.0.1]:8132/GeneralClassifyService/classify,其中ip需要替换为用户自己服务器的ip,端口默认为:8132

    路径

    /GeneralClassifyService/classify


    请求参数

    参数 必选 类型 说明
    image true string 图像数据,base64编码。支持图片格式:jpg、bmp、png,若图片尺寸长或宽小于50pixel,会提示尺寸过小。
    type string 如只需识别某几个属性,可用type参数控制接口返回的属性list,英文逗号分隔,如:smoke,cellphone,not_buckling_up;默认所有属性都识别,目前支持的属性列表如下:
    smoke // 吸烟,
    cellphone // 使用手机 ,
    not_buckling_up // 未系安全带,
    both_hands_leaving_wheel // 双手离开方向盘,
    not_facing_front // 视角未看前方,
    no_face_mask // 未正确佩戴口罩,
    yawning // 打哈欠,
    eyes_closed // 闭眼,
    head_lowered // 低头
    wheel_location string 有效取值范围:0,1
    默认值"1",表示左舵车(普遍适用于中国大陆地区,若图像中检测到多个大小相当的人体,默认取画面中右侧最大的人体作为驾驶员);
    "0"表示右舵车(适用于香港等地区,若图像中检测到多个大小相当的人体,则取画面中左侧最大的人体作为驾驶员);
    其他输入值视为非法输入,直接使用默认值

    请求参数构造及python代码示例

    请求参数为json格式,请求时请将Content-Type设置为application/json格式。

    请求参数格式如下:

    {
    	"data" : base64encode(
    		{
    			"image" : base64encode(binary image data),
    			"type"	: "smoke,cellphone"
    		}
    	)
    }

    python代码示例如下:

    import base64
    import json
    
    # 输入图片为/home/work/01.jpg
    image_file = "/home/work/01.jpg"
    
    # 将图片内容读取至image_data
    with open(image_file, 'rb') as f:
        image_data = f.read()
    
    data = {
        # 将image_data进行base64编码
        "image": base64.b64encode(image_data),
        "type": "smoke,cellphone"
    }
    
    request_body = {
        # 将data转为json,并进行base64编码
        "data": base64.b64encode(json.dumps(data))
    }
    
    # 最终应该传入http body的内容
    print json.dumps(request_body)

    返回参数

    字段 必选 类型 说明
    err_msg true string 错误信息,只在异常中出现(参考错误码表)
    err_no true uint32 错误码,只在异常中出现(参考错误码表)
    format true string 返回格式说明,默认添加,值为“json”
    result true string 属性识别结果,服务对返回结果做了base64编码

    正确返回值说明(返回参数为base64编码格式,将result字段base64解码后可得到以下内容):

    字段 是否必选 类型 说明
    person_num uint64 检测到的总人数(包括驾驶员和乘客),0代表未监测到驾驶员
    driver_num uint64 检测到的驾驶员数目。若大于1,则综合考虑人体框尺寸和位置,选取最佳驾驶员目标框进行属性分析,默认取画面中右侧最大的人体作为驾驶员(普遍适用于中国大陆地区)
    person_info object[] 驾驶员的属性行为信息;若未检测到驾驶员,则该项为[]
    +location object 检测出驾驶员的位置
    ++left int 检测区域在原图的左起开始位置
    ++top int 检测区域在原图的上起开始位置
    ++width int 检测区域宽度
    ++height int 检测区域高度
    +attributes object 驾驶员属性行为内容
    ++smoke object 吸烟
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++cellphone object 使用手机
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++not_buckling_up object 未系安全带
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++both_hands_leaving_wheel object 双手离开方向盘
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++not_facing_front object 视角未朝前方
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++no_face_mask object 未正确佩戴口罩,包含戴了口罩、但口鼻外露这类未戴好的情况
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++yawning object 打哈欠,实际应用时,可结合闭眼综合判断疲劳,避免普通张嘴、说话等情况下被误判
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++eyes_closed object 闭眼, 实际应用时,可结合打哈欠综合判断疲劳,避免正常眨眼等情况下被误判
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可
    ++head_lowered object 低头,实际应用时,可结合闭眼、视角未朝前方综合判断分心、疲劳,避免单一属性引起误判
    +++score float 对应概率分数
    +++threshold float 建议阈值,仅作为参考,实际应用中根据测试情况选取合适的score阈值即可

    说明:接口返回每个属性的置信度分数,在应用时可综合置信度score分数,过滤掉置信度低的属性。实际应用中,可根据对误识别、漏识别的容忍程度,调整阈值过滤方案,灵活应用。

    返回示例

    1、未检测到驾驶员:

    {
        "person_num":0,
        "driver_num":0,
        "person_info":
        [
        ]
    }

    2、检测到1个驾驶员+1个乘客:

    {
        "person_num": 2,
        "driver_num": 1,
       "person_info":
        [
            "location":
            {
                "left": 100,
                "top": 200,
                "width": 200,
                "height": 400
                "score": 0.876
            },
           "attributes":
           {
                "smoke":
                {
                    "score": 0.937
                    "threshold": 0.5               
                }
                "cellphone":
                {
                    "score": 0.011
                    "threshold": 0.5               
                }
                "not_buckling_up":
                {
                    "score": 0.002
                    "threshold": 0.5               
                }
                "both_hands_leaving_wheel":
                {
                    "score": 0.889
                    "threshold": 0.5               
                }
                "not_facing_front":
                {
                    "score": 0.766
                    "threshold": 0.5               
                }
                "head_lowered":
                {
                    "score": 0.001
                    "threshold": 0.5               
                }
                "eyes_closed":
                {
                    "score": 0.010
                    "threshold": 0.5               
                }
                "yawning":
                {
                    "score": 0.108
                    "threshold": 0.5               
                }
                "no_face_mask":
                {
                    "score": 0.998
                    "threshold": 0.5               
                }
            }
        ]
    }

    错误码表

    err_no value err_msg 解释
    GENERAL_CLASSIFY
    _SUCCEED
    0 GeneralClassify
    [status: driver attrib succeed]
    驾驶员属性识别成功(即整体流程成功)
    GENERAL_CLASSIFY
    _CONF_FILE_ERR
    216401 GeneralClassifyProcessorFactory
    [status:reading conf file error]
    读取conf文件出错
    GENERAL_CLASSIFY
    _BBOX_PREDICT_ERR
    216401 GeneralClassify
    [status: bbox predict error!]
    boudingbox检测过程出错
    GENERAL_CLASSIFY
    _ATTRIB_PREDICT_ERR
    216401 GeneralClassify
    [status: attrib predict error!]
    属性识别过程出错
    GENERAL_CLASSIFY
    _INPUT_PARSING_ERR
    216201 fg_driver_behavior
    [status:input parsing failed]
    读取base64输入图片出错
    GENERAL_CLASSIFY
    _IMAGE_EMPTY_ERR
    216200 fg_driver_behavior
    [status:image empty]
    输入数据图片读取结果为空
    GENERAL_CLASSIFY
    _IMAGE_SIZE_ERR
    216202 fg_driver_behavior
    [status:image size not between 50 and 4096]
    输入图片尺寸不在允许范围之内

    上一篇
    部署说明
    下一篇
    Java SDK文档