开放能力
开发平台
行业应用
生态合作
开发与教学
资讯 社区 控制台
技术能力
语音技术
图像技术
文字识别
人脸与人体识别
视频技术
AR与VR
自然语言处理
知识图谱
数据智能
场景方案
部署方案
行业应用
智能教育
智能医疗
智能零售
智能工业
企业服务
智能政务
智能农业
信息服务
智能园区
智能硬件
人体分析

    驾驶行为分析

    接口描述

    对于输入的一张车载驾驶员监控图片(可正常解码,且长宽比适宜),识别图像中是否有人体,若检测到至少1个人体,将目标最大的人体作为驾驶员,进一步识别驾驶员的属性行为,可识别使用手机、抽烟、未系安全带、双手离开方向盘、视线未朝前方、未佩戴口罩、闭眼、打哈欠、低头9种典型行为姿态

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

    图片质量要求:

    1、服务只适用于车载监控场景,普通室内外监控场景,若要识别使用手机、抽烟等行为属性,请使用人体检测与属性识别服务。

    2、车内摄像头硬件选型无特殊要求,分辨率建议720p以上,但更低分辨率的图片也能识别,只是效果可能有差异。

    3、车内摄像头部署方案建议:尽可能拍全驾驶员的身体,并充分考虑背光、角度、方向盘遮挡等因素。

    4、服务适用于夜间红外监控图片,识别效果跟可见光图片相比可能略微有差异。

    5、图片主体内容清晰可见,模糊、驾驶员遮挡严重、光线暗等情况下,识别效果肯定不理想。

    示例图参考:

    在线调试

    您可以在 API Explorer 中调试该接口,可进行签名验证、查看在线调用的请求内容和返回结果、示例代码的自动生成。

    请求说明

    请求示例

    HTTP 方法:POST

    请求URL:https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior

    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
    type string smoke,cellphone,
    not_buckling_up,
    both_hands_leaving_wheel,
    not_facing_front
    识别的属性行为类别,英文逗号分隔,默认所有属性都识别;
    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"表示右舵车(适用于香港等地区,若图像中检测到多个大小相当的人体,则取画面中左侧最大的人体作为驾驶员);
    其他输入值视为非法输入,直接使用默认值

    请求代码示例

    提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。

    提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。

    驾驶行为分析
    curl -i -k 'https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior?access_token=【调用鉴权接口获取的token】' --data 'image=【图片Base64编码,需UrlEncode】' -H 'Content-Type:application/x-www-form-urlencoded'
    <?php
    /**
     * 发起http post请求(REST API), 并获取REST请求的结果
     * @param string $url
     * @param string $param
     * @return - http response body if succeeds, else false.
     */
    function request_post($url = '', $param = '')
    {
        if (empty($url) || empty($param)) {
            return false;
        }
    
        $postUrl = $url;
        $curlPost = $param;
        // 初始化curl
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $postUrl);
        curl_setopt($curl, CURLOPT_HEADER, 0);
        // 要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // post提交方式
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        // 运行curl
        $data = curl_exec($curl);
        curl_close($curl);
    
        return $data;
    }
    
    $token = '[调用鉴权接口获取的token]';
    $url = 'https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior?access_token=' . $token;
    $img = file_get_contents('[本地文件路径]');
    $img = base64_encode($img);
    $bodys = array(
        'image' => $img
    );
    $res = request_post($url, $bodys);
    
    var_dump($res);
    package com.baidu.ai.aip;
    
    import com.baidu.ai.aip.utils.Base64Util;
    import com.baidu.ai.aip.utils.FileUtil;
    import com.baidu.ai.aip.utils.HttpUtil;
    
    import java.net.URLEncoder;
    
    /**
    * 驾驶行为分析
    */
    public class DriverBehavior {
    
        /**
        * 重要提示代码中所需工具类
        * FileUtil,Base64Util,HttpUtil,GsonUtils请从
        * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
        * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
        * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
        * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
        * 下载
        */
        public static String driver_behavior() {
            // 请求url
            String url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior";
            try {
                // 本地文件路径
                String filePath = "[本地文件路径]";
                byte[] imgData = FileUtil.readFileByBytes(filePath);
                String imgStr = Base64Util.encode(imgData);
                String imgParam = URLEncoder.encode(imgStr, "UTF-8");
    
                String param = "image=" + imgParam;
    
                // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
                String accessToken = "[调用鉴权接口获取的token]";
    
                String result = HttpUtil.post(url, accessToken, param);
                System.out.println(result);
                return result;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        public static void main(String[] args) {
            DriverBehavior.driver_behavior();
        }
    }
    # encoding:utf-8
    
    import requests
    import base64
    
    '''
    驾驶行为分析
    '''
    
    request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior"
    # 二进制方式打开图片文件
    f = open('[本地文件]', 'rb')
    img = base64.b64encode(f.read())
    
    params = {"image":img}
    access_token = '[调用鉴权接口获取的token]'
    request_url = request_url + "?access_token=" + access_token
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        print (response.json())
    #include <iostream>
    #include <curl/curl.h>
    
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior";
    static std::string driver_behavior_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
     * @param 参数定义见libcurl文档
     * @return 返回值定义见libcurl文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
        // 获取到的body存放在ptr中,先将其转换为string格式
        driver_behavior_result = std::string((char *) ptr, size * nmemb);
        return size * nmemb;
    }
    /**
     * 驾驶行为分析
     * @return 调用成功返回0,发生错误返回其他错误码
     */
    int driver_behavior(std::string &json_result, const std::string &access_token) {
        std::string url = request_url + "?access_token=" + access_token;
        CURL *curl = NULL;
        CURLcode result_code;
        int is_success;
        curl = curl_easy_init();
        if (curl) {
            curl_easy_setopt(curl, CURLOPT_URL, url.data());
            curl_easy_setopt(curl, CURLOPT_POST, 1);
            curl_httppost *post = NULL;
            curl_httppost *last = NULL;
            curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "【base64_img】", CURLFORM_END);
    
            curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
            curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
            result_code = curl_easy_perform(curl);
            if (result_code != CURLE_OK) {
                fprintf(stderr, "curl_easy_perform() failed: %s\n",
                        curl_easy_strerror(result_code));
                is_success = 1;
                return is_success;
            }
            json_result = driver_behavior_result;
            curl_easy_cleanup(curl);
            is_success = 0;
        } else {
            fprintf(stderr, "curl_easy_init() failed.");
            is_success = 1;
        }
        return is_success;
    }
    using System;
    using System.IO;
    using System.Net;
    using System.Text;
    using System.Web;
    
    namespace com.baidu.ai
    {
        public class DriverBehavior
        {
            // 驾驶行为分析
            public static string driver_behavior()
            {
                string token = "[调用鉴权接口获取的token]";
                string host = "https://aip.baidubce.com/rest/2.0/image-classify/v1/driver_behavior?access_token=" + token;
                Encoding encoding = Encoding.Default;
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host);
                request.Method = "post";
                request.KeepAlive = true;
                // 图片的base64编码
                string base64 = getFileBase64("[本地图片文件]");
                String str = "image=" + HttpUtility.UrlEncode(base64);
                byte[] buffer = encoding.GetBytes(str);
                request.ContentLength = buffer.Length;
                request.GetRequestStream().Write(buffer, 0, buffer.Length);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string result = reader.ReadToEnd();
                Console.WriteLine("驾驶行为分析:");
                Console.WriteLine(result);
                return result;
            }
    
            public static String getFileBase64(String fileName) {
                FileStream filestream = new FileStream(fileName, FileMode.Open);
                byte[] arr = new byte[filestream.Length];
                filestream.Read(arr, 0, (int)filestream.Length);
                string baser64 = Convert.ToBase64String(arr);
                filestream.Close();
                return baser64;
            }
        }
    }

    返回说明

    返回参数

    字段 是否必选 类型 说明
    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阈值即可

    返回示例

       {
    	"person_num": 1,
    	"person_info": [
    		{
    			"attributes": {
    				"cellphone": {
    					"threshold": 0.76,
    					"score": 0.089325942099094
    				},
    				"yawning": {
    					"threshold": 0.66,
    					"score": 0.0007511890726164
    				},
    				"not_buckling_up": {
    					"threshold": 0.58,
    					"score": 0.81095975637436
    				},
    				"no_face_mask": {
    					"threshold": 0.72,
    					"score": 0.99875915050507
    				},
    				"both_hands_leaving_wheel": {
    					"threshold": 0.3,
    					"score": 0.9014720916748
    				},
    				"eyes_closed": {
    					"threshold": 0.1,
    					"score": 0.090511165559292
    				},
    				"head_lowered": {
    					"threshold": 0.58,
    					"score": 0.11450858414173
    				},
    				"smoke": {
    					"threshold": 0.25,
    					"score": 0.026156177744269
    				},
    				"not_facing_front": {
    					"threshold": 0.53,
    					"score": 0.68074524402618
    				}
    			},
    			"location": {
    				"width": 856,
    				"top": 419,
    				"score": 0.90945136547089,
    				"left": 464,
    				"height": 626
    			}
    		}
    	],
    	"log_id": 2320165720061799596
    }
    上一篇
    人像分割
    下一篇
    人流量统计-动态版