2

百度开放云中提供了一项人脸识别服务,依托百度业界领先的人脸识别算法,提供了人脸检测、五官定位、人脸属性检测等功能。

功能

提供人脸及五官几何位置定位

支持人脸图像的性别、表情等人脸属性分析功能

支持REST API方式调用

支持常用图片格式,能应对复杂的光照场景,并支持多种人脸姿态

提供了ANDROID、iOS、WP7、JAVA及PHP多种平台的SDK

服务控制台支持详细的服务统计查询及服务使用频次管理

典型案例

  • 百度云网盘
  • 百度相册
  • 百度魔拍
  • 百度内部移动办公应用
  • 有缘网

API

开启服务

使用人脸服务前,首先需要开启服务。通过开发者中心“管理控制台”,进入“我的应用列表”,创建应用。填写信息,创建成功后,点击左侧“媒体云”开启媒体云人脸识别服务。

获取 access_token

  • 访问百度开发者中心使用百度账号登录
  • 从管理中心进入相应应用得到 API Key(client_id)和 Secret Key(client_secret)。
  • 采用Client Credentials方式,获取Access Token,具体步骤见下。

在服务端发送请求(推荐用POST方法)到百度OAuth2.0授权服务的“https://openapi.baidu.com/oauth/2.0/token”地址上,并带上以下参数:

  • grant_type:必须参数,固定为“client_credentials”;
  • client_id:必须参数,应用的API Key;
  • client_secret:必须参数,应用的Secret Key;
  • scope:非必须参数。以空格分隔的权限列表,采用本方式获取Access Token时只能申请跟用户数据无关的数据访问权限。关于权限的具体信息请参考“权限列表”

例如:

https://openapi.baidu.com/oauth/2.0/token?
    grant_type=client_credentials&
    client_id=Va5yQRHlA4Fq4eR3LT0vuXV4&
    client_secret= 0rDSjzQ20XUj5itV7WRtznPQSzr5pVw2&

若参数无误,服务器将返回一段JSON文本,包含以下参数:

  • access_token:要获取的Access Token;
  • expires_in:Access Token的有效期,以秒为单位;
  • refresh_token:用于刷新Access Token 的 Refresh Token,所有应用都会返回该参数;(10年的有效期)
  • scope:Access Token最终的访问范围,即用户实际授予的权限列表(用户在授权页面时,有可能会取消掉某些请求的权限),关于权限的具体信息参考“权限列表”一节;
  • session_key:基于http调用Open API时所需要的Session Key,其有效期与Access Token一致;
  • session_secret:基于http调用Open API时计算参数签名用的签名密钥。

例如:

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
    "access_token": "1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328",
    "expires_in": 86400,
    "refresh_token": "2.385d55f8615fdfd9edb7c4b5ebdc3e39.604800.1293440400-2346678-124328",
    "scope": "public",
    "session_key": "ANXxSNjwQDugf8615OnqeikRMu2bKaXCdlLxn",
    "session_secret": "248APxvxjCZ0VEC43EYrvxqaK4oZExMB",
}

若请求错误,服务器将返回一段JSON文本,包含error(错误码)和 error_description (错误描述信息),例如:

HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
    "error": "invalid_grant",
    "error_description": "Invalid authorization code: ANXxSNjwQDugOnqeikRMu2bKaXCdlLxn"
}

注意:

  • 默认情况下,Access Token的有效期为一个月,如果Access Token过期可以重新获取。
  • 获取Access Token时所返回的session_key和session_secret参数不是OAuth2.0协议标准规定的返回参数,而是百度OAuth2.0服务扩展加入的,目的是使得开发者可以基于http调用百度的Open API,因为基于https调用Open API虽然更为简单,但毕竟响应速度更差(比基于http的要差一倍时间左右)。

API 请求方式

  • 目前人脸检测接口支持 POST 和 GET 方式。
  • 媒体云人脸识别 REST API 的所有参数在传入时应当使用:UTF-8 编码。

URL 格式:

https://openapi.baidu.com/rest/2.0/media/v1/face/{request_type}?{query_string}

其中:

  • request_type 为操作方法,detect为人脸检测。

示例:

GET请求:

https://openapi.baidu.com/rest/2.0/media/v1/face/detect?access_token=urlencode(xxxxx)&url =urlencode(xxxxxx)

POST请求:

POST /rest/2.0/media/v1/face
User-Agent: curl/7.12.1 (x86_64-redhat-linux-gnu) libcurl/7.12.1 OpenSSL/0.9.7a zlib/1.2.1.2
libidn/0.5.6
Pragma: no-cache
Accept: */*
Host:openapi.baidu.com
Content-Type:application/x-www-form-urlencoded
Content-Length:123

access_token =urlencode(xxxx)&url =urlencode(xxxx)

人脸检测 API

请求:GET/POST

URL: https://openapi.baidu.com/rest/2.0/media/api/v1/face/detect

参数:

  • access_token
  • url:图片地址(需要使用 urlencode)
  • callback_url:(可选)离线请求回调地址

请求示例:

curl -v "https://openapi.baidu.com/rest/2.0/media/v1/face/detect?access_token=3.ad2ee1e9b351cd800fd62bddc8bef016.2592000.1377163536.4212382003-260146&url=http://c.hiphotos.bdimg.com/album/s%3D800/sign=6bd70c1da044ad342abf8a87e0a00c08/8d5494eef01f3a29d7017b3e9825bc315d607c71.jp"

返回示例:

{
"face": //在原图片中检测到的人脸数组
[{
"attribute"{
  "gender": { //检测到的人脸的性别
    "value": "male" //人脸性别结果
    "confidence": "1.0", //性别的置信度
  },
  "smiling ": { //检测到的笑脸
    "confidence":”1.0” //笑脸的置信度
  },
},
"face_id": "ffffff32c1f3813f0944f52427ed060b", //检测到的人脸的 id
"position": { //检测到的人脸的位置,坐标均进行了归一化,值在 0~1 之间
  "center": {
    "x": "0.591000", //人脸区域中心 x 坐标,
    "y": "0.267000"}, //人脸区域中心 y 坐标
  "width": "0.181290", //人脸区域宽度
  `height": "0.120600", //人脸区域高度
  "eye_left": {
    "x": "0.556230",//左眼 x 坐标
    "y": "0.230250" //左眼 y 坐标
  },
  "eye_right": {
    "x": "0.638620",//右眼 x 坐标
    "y": "0.244190", //右眼 y 坐标
  },
  "mouth": {
  ` "x":”0.574910”,//嘴巴中心 x 坐标
    "y":” 0.301350”,//嘴巴中心 y 坐标
  },
}
}],
"img_id": "966f0f32c1f3813f0944f52427ed060b", //图片 id
"url": "" //请求中的图片 url
"session_id":  "966f0f32c1f3813f0944f52427jjjkkk" //唯一标识请求
"img_width": "320" //图片宽度
"img_height": "240" //图片高度
}

附言

除了百度提供的人脸识别服务之外,国内还有其他人脸识别服务提供商,其中 Face++的技术非常先进,值得一看。

百度深度学习研究院目前招聘人脸方向的工程师,包括人脸算法工程师、物体检测算法工程师、多媒体高级研发工程师、计算机视觉研发工程师、大规模机器学习工程师、算法研发工程师、图像方向高级测试开发工程师等,地点在北京和深圳。如果你热爱计算机视觉技术,并且在视觉方向有深入理解或取得过突出成绩,请速投简历。


编撰 SegmentFault


思否编辑部
4.3k 声望116.9k 粉丝

思否编辑部官方账号,欢迎私信投稿、提供线索、沟通反馈。