AI接口概述
更新时间:2022-11-29
概述
欢迎使用智能视联网平台提供的AI算子服务;
目前支持的算子列表如下:
-
人脸相关算子:
- 人脸检测与属性识别;
- 人脸比对算子;
-
人体相关算子:
- 人体检测与属性识别;
- 人体比对算子;
- 人体特征;
- 人流量统计算子;
-
车辆相关算子:
- 车辆检测与属性识别
- 车型识别算子;
- 车牌识别;
- 车辆比对算子;
- 车辆特征提取;
- 车流量统计;
-
电动车相关算子:
- 电动车识别算子;
-
其他算子:
- 视频质量检测;
- 商标LOGO识别;
- 烟火检测;
- 通用文字识别OCR;
- 垃圾桶状态识别;
- 非法捕鱼识别;
- 吸烟识别;
- 船只检测;
- 门前五包;
- 仪表盘识别;
- 道路巡检;
- 厂区安全巡检;
- 电网安全巡检;
您可以使用本文档介绍的API对特定图片进行特征检测和识别;
接口概览
AI服务API提供下列接口类型:
接口类型 | 描述 |
---|---|
人脸检测与属性识别 | 检测图片中的人脸并获得位置信息、属性信息、特征信息和质量信息等; |
人脸比对算子 | 输入两张人脸图片,比对两张图片中人脸的相似度,并返回相似度分值,范围0~1; |
人体检测与属性识别 | 识别图片中的人体并获得位置信息、静态属性和行为,共支持28种属性; |
人体比对算子 | 输入两张人体图片,比对两张图片中人体的相似度,并返回相似度分值,范围0~1; |
人体特征 | 输入一张人体图片,提取图片中人体的210维特征向量; |
人流量统计算子 | 统计图片中的人体个数和流动趋势,支持静态人数统计和动态人数统计和跟踪; |
车辆检测与属性识别 | 识别图片中车辆个数、位置以及车辆所有属性和对应的概率分数; |
车型识别算子 | 识别图片中主体车辆位置、品牌型号、年份和颜色信息; |
车牌识别 | 识别图片中车辆的车牌号码; |
车辆比对算子 | 输入两张车辆图片,比对两张图片中车辆的相似度,并返回相似度分值,范围0~1; |
车辆特征提取 | 输入一张车辆图片并指定车辆的位置,提取图片中指定车辆的510维特征向量; |
车流量统计 | 统计图片中的每种车型的车辆个数和流动趋势,支持静态车辆统计和动态车辆统计和跟踪; |
电动车识别算子 | 识别图片中电动车(二轮车和三轮车)的类别和位置; |
产品限制
目前产品仅白名单开放,有测试需求的请提工单咨询;
通用说明
API调用遵循HTTP协议,数据交换格式为JSON,所有request/response body内容均采用UTF-8编码;
API鉴权机制
AI Server的安全认证一律采用请求签名机制; 对于每个HTTP请求,使用下面描述的算法生成一个认证字符串,提交请求的header中必须包含四个字段:
x-evs-user
:百度云统一生成的32位userId;x-evs-expire-date
:签名过期绝对时间,格式为10位时间戳;x-evs-content-md5
:请求body的md5字符串,方便evs定位问题;Authorization
:用户生成的认证字符串,生成算法见下面; 在服务端验证签名时,会重复签名算法计算出Authorization
,和用户生成的Authorization
进行比较,如果一致则验证通过,否则返回401 Unauthorized;
签名算法
签名中使用的Hash算法是HMAC SHA256,Hash结果转换成小写形式的十六进制字符串;
Authorization
的计算方式如下:
content-md5 = md5(请求body字符串)
注意请求body字符串为压缩空格后的json字符串;
Authorization = SHA256-HEX("${userId}:${key}:${path}:${expireTime}:${content-md5}", ${key})
其中:
userId
:evs console页面,算子仓库->AI鉴权中的Access Key;key
:私钥,系统分配或用户在evs console页面,算子仓库->AI鉴权中的Secret Key;path
:请求url对应的path;expireTime
:签名过期时间,header中获取;content-md5
:md5(请求body字符串),用于请求body校验;
请求结构说明
通用说明:
- 数据交换格式使用
JSON
,content-Type
使用application/json
,所有request和response内容均使用UTF-8
编码; - 所有请求都会生成唯一的一个
requestId
,用于定位问题和性能分析,所有的响应Header中的x-bce-request-id
对应请求的requestId
;
请求参数包括如下3种:
参数 | 可选 | 类型 | 说明 |
---|---|---|---|
image_base64 | 必选 | String | 图片base64编码,iamge_base64和image_url二选一即可,优先使用image_base64 |
image_url | 必选 | String | 图片url,只有当image_base64为空时才会使用image_url下载图片再base64编码,增加下载时延 |
min_score | 可选 | Double | 最小置信度,如果指定该参数,会对检测、识别结果按min_score过滤,只保留置信度大于min_score的特征结果 |
响应结构说明
响应值分为两种形式:
- 单一结果算子data中为对应的特征实体数据;
{
"code": 0,
"message": "",
"data": {}
}
- 对于多结果算子,data的结构为:
{
"code": 0,
"message": "",
"data": {
"items": [
{},
{}
],
"item_count": 2
}
}
说明:
- code为0标识请求成功,非0标识请求失败,message中是错误信息;
- 请求成功但是结果为空时,data结果为空对象
{}
;
鉴权代码示例
用户可参考以下代码,进一步了解AiServer请求鉴权逻辑,示例语言为Python。
import hmac
import hashlib
import time
import json
from hashlib import sha256
def get_params_with_node_auth(uri, body, user, password):
node_user = user
node_user_password = password
node_expire = to_expire_time()
node_body = to_md5(body)
params = {
"x-evs-user": node_user,
"x-evs-expire-date": node_expire,
"x-evs-content-md5": node_body,
"Authorization": None
}
content = "%s:%s:%s:%s:%s" % (node_user, node_user_password, uri, node_expire, node_body)
node_token = hmac.new(node_user_password.encode("utf-8"), content.encode("utf-8"),
digestmod=sha256).hexdigest()
params["Authorization"] = node_token
return params
def to_expire_time(minute_delta=5):
"""
use for auth expire
"""
now = time.time()
expire = int(round(now * 1000)) + 5 * 60 * 1000
return str(expire)
def to_md5(str):
md5 = hashlib.md5()
md5.update(str.encode('utf-8'))
return md5.hexdigest()
if __name__ == "__main__":
# 这里填写您自己在百度云的userId;
user_id = "ck3t1t37uumuwaifjx********"
# 这里填写百度云分配给您的密钥key,注意不要泄露;
key = "ck3t7mf5kpr8uaa2w*********"
# 鉴权签名计算中包括请求体,这里是请求体内容
body = '{"image_url":"https://127.0.0.1/ea.jpeg","min_score":0.6}'
# 计算前面包括url,记得这里修改请求url;
params = get_params_with_node_auth("/v1/human/model/detect", body, user_id, key)
print(params)