了解人工智能?-百度AI
Mr_Yun 人气:1了解人工智能?
什么是人工智能?
由人创造的"智慧能力",同样具备智慧生物的能力
耳朵=倾听=麦克风=语音识别 ASR Automatic Speech Recognition
嘴巴=诉说=扬声器=语音合成 TTS Text To Speech
眼睛=观察=摄像头=图像识别 IR Image Recognition
思考=理解=逻辑处理=自然语言处理 NLP Natural Language Processing
目前的人工智能做了哪些?
语音识别、合成:
小米的小爱同学
苹果的Siri
微软的Cortana, 声波的转写和拼接
图像识别:
交通摄像头拍违章,刷脸解锁手机等
视频识别:
抖音内容审核,视频社交APP的审核机制
文字识别:
从SFZ照片提取SFZ号码,扫一扫翻译
自然语言处理:
智能问答机器人,也包含小米的小爱同学,苹果的siri
我们身边的人工智能
银行办卡刷脸就ok 人脸识别+身份认证
车辆违章有牌儿就跑不了 图像识别+拍照识别
违法犯罪路过天眼,等于自投罗网 图像采集+人脸识别
“小爱同学”,“哎~”,"打开电视",“好的!” 语音识别+语音和成+自然语音处理
“欢迎使用10010智能语音系统”,“我还有多少话费?” “您的话费余额为0.01” 语音识别+语音合成+自然语言处理
扫一扫翻译看不懂的文字 文字识别+机器翻译
我们与人工智能的故事
了解百度AI开放平台--------百度大脑
官网:http://ai.baidu.com/
Python SDK
pip install baidu-aip
新建AipSpeech
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY)
语音合成
https://ai.baidu.com/ai-doc/SPEECH/7k38y8ier
合成文本长度必须小于1024字节,如果本文长度较长,可以采用多次请求的方式。文本长度不可超过限制
举例,要把一段文字合成为语音文件:
result = client.synthesis('你好百度', 'zh', 1, {
'vol': 5,
})
识别正确返回语音二进制 错误则返回dict 参照下面错误码
if not isinstance(result, dict):
with open('auido.mp3', 'wb') as f:
f.write(result)
参数 类型 描述 是否必须
tex String 合成的文本,使用UTF-8编码, 请注意文本长度必须小于1024字节 是
cuid String 用户唯一标识,用来区分用户, 填写机器 MAC 地址或 IMEI 码,长度为60以内 否
spd String 语速,取值0-9,默认为5中语速 否
pit String 音调,取值0-9,默认为5中语调 否
vol String 音量,取值0-15,默认为5中音量 否
per String 发音人选择, 0为女声,1为男声, 3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女 否
语音识别
将人类的语音中的词汇内容转换为计算机可读的输入,例如按键、二进制编码或者字符序列
支持的语音格式
原始 PCM 的录音参数必须符合 16k 采样率、16bit 位深、单声道,支持的格式有:pcm(不压缩)、wav(不压缩,pcm编码)、amr(压缩格式)。
注意事项
如果需要使用实时识别、长语音、唤醒词、语义解析等其它语音功能,请使用Android或者iOS SDK 或 Linux C++ SDK 等。
请严格按照文档里描述的参数进行开发,特别请关注原始录音参数以及语音压缩格式的建议,否则会影响识别率,进而影响到产品的用户体验。
目前系统支持的语音时长上限为60s,请不要超过这个长度,否则会返回错误。
接口描述
向远程服务上传整段语音进行识别
请求说明
举例,要对段保存有一段语音的语音文件进行识别:
读取文件
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
识别本地文件
client.asr(get_file_content('audio.pcm'), 'pcm', 16000, {
'dev_pid': 1536,
})
参数 类型 描述 是否必须
speech Buffer 建立包含语音内容的Buffer对象, 语音文件的格式,pcm 或者 wav 或者 amr。不区分大小写 是
format String 语音文件的格式,pcm 或者 wav 或者 amr。不区分大小写。推荐pcm文件 是
rate int 采样率,16000,固定值 是
cuid String 用户唯一标识,用来区分用户,填写机器 MAC 地址或 IMEI 码,长度为60以内 否
dev_pid Int 不填写lan参数生效,都不填写,默认1537(普通话 输入法模型),dev_pid参数见本节开头的表格 否
lan(已废弃) String 历史兼容参数,请使用dev_pid。如果dev_pid填写,该参数会被覆盖。语种选择,输入法模型,默认中文(zh)。 中文=zh、粤语=ct、英文=en,不区分大小写。 否
dev_pid 参数列表
dev_pid 语言 模型 是否有标点 备注
1536 普通话(支持简单的英文识别) 搜索模型 无标点 支持自定义词库
1537 普通话(纯中文识别) 输入法模型 有标点 支持自定义词库
1737 英语 无标点 不支持自定义词库
1637 粤语 有标点 不支持自定义词库
1837 四川话 有标点 不支持自定义词库
1936 普通话远场 远场模型 有标点 不支持
语音识别 返回数据参数详情
参数 类型 是否一定输出 描述
err_no int 是 错误码
err_msg int 是 错误码描述
sn int 是 语音数据唯一标识,系统内部产生,用于 debug
result int 是 识别结果数组,提供1-5 个候选结果,string 类型为识别的字符串, utf-8 编码
返回样例:
// 成功返回
{
"err_no": 0,
"err_msg": "success.",
"corpus_no": "15984125203285346378",
"sn": "481D633F-73BA-726F-49EF-8659ACCC2F3D",
"result": ["北京天气"]
}
// 失败返回
{
"err_no": 2000,
"err_msg": "data empty.",
"sn": null
}
FFmpeg音频转码工具
这个工具可以将wav wma mp3 等音频文件转换为 pcm 无压缩音频文件
添加环境变量:
H:\Python3全栈开发\Baidu_AI\音频转码工具\ffmpeg-20200131-62d92a8-win64-static\bin
image-20200201194941721
常用命令
.pcm
os.system('ffmpeg -y -i wyn.m4a -acodec pcm_s16le -f s16le -ac 1 -ar 16000 wyn.m4a.pcm') # 将.m4a文件转为.pcm
播放MP3文件
os.system('ffplay auido.mp3') #播放MP3文件
图像识别
接口能力
图像识别接口一览表
接口名称 接口能力简要描述
图像主体检测 识别图像中的主体具体坐标位置。
通用物体和场景识别高级版 识别图片中的场景及物体标签,支持10w+标签类型。
菜品识别 检测用户上传的菜品图片,返回具体的菜名、卡路里、置信度信息。
自定义菜品识别 入库自定义的单菜品图,实现上传多菜品图的精准识别,返回具体的菜名、位置、置信度信息
logo商标识别 识别图片中包含的商品LOGO信息,返回LOGO品牌名称、在图片中的位置、置信度。
动物识别 检测用户上传的动物图片,返回动物名称、置信度信息。
植物识别 检测用户上传的植物图片,返回植物名称、置信度信息。
花卉识别 检测用户上传的花卉图片,返回花卉名称、置信度信息。
果蔬食材识别 检测用户上传的果蔬类图片,返回果蔬名称、置信度信息。
地标识别 检测用户上传的地标图片,返回地标名称。
红酒识别 识别图像中的红酒标签,返回红酒名称、国家、产区、酒庄、类型、糖分、葡萄品种、酒品描述等信息。
货币识别 识别图像中的货币类型,返回货币名称、代码、面值、年份信息,可识别百余种国内外常见货币。
车辆分析接口一览表
接口名称 接口能力简要描述
车型识别 检测用户上传的车辆图片,识别所属车型,包括车辆品牌及具体型号、颜色、年份、位置信息。
版本更新记录
上线日期 版本号 更新内容
2019.6.6 2.2.17 新增红酒,货币,花卉,蔬菜识别
2018.12.7 2.2.10 新增地标识别接口
2018.4.9 2.2.2 新增通用物体识别接口
2017.12.22 2.0.0 SDK代码重构
2017.9.27 1.6.6 图像识别服务新增动物识别,植物识别接口
2017.9.7 1.6.5 新增图像识别服务
安装图像识别 Python SDK
图像识别 Python SDK目录结构
├── README.md
├── aip //SDK目录
│ ├── init.py //导出类
│ ├── base.py //aip基类
│ ├── http.py //http请求
│ └── imageclassify.py //图像识别
└── setup.py //setuptools安装
支持Python版本:2.7.+ ,3.+
安装使用Python SDK有如下方式:
如果已安装pip,执行pip install baidu-aip即可。
如果已安装setuptools,执行python setup.py install即可。
新建AipImageClassify
AipImageClassify是图像识别的Python SDK客户端,为使用图像识别的开发人员提供了一系列的交互方法。
参考如下代码新建一个AipImageClassify:
from aip import AipImageClassify
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)
在上面代码中,常量APP_ID在百度智能云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。
注意:如您以前是百度智能云的老用户,其中API_KEY对应百度智能云的“Access Key ID”,SECRET_KEY对应百度智能云的“Access Key Secret”。
配置AipFace
如果用户需要配置AipFace的网络请求参数(一般不需要配置),可以在构造AipFace之后调用接口设置参数,目前只支持以下参数:
接口 说明
setConnectionTimeoutInMillis 建立连接的超时时间(单位:毫秒
setSocketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒)
通用物体识别
该请求用于通用物体及场景识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的多个物体及场景标签。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用通用物体识别 """
client.advancedGeneral(image);
""" 如果有可选参数 """
options = {}
options["baike_num"] = 5
""" 带参数调用通用物体识别 """
client.advancedGeneral(image, options)
通用物体识别 请求参数详情
参数名称 是否必选 类型 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
baike_num 否 string 0 返回百科信息的结果数,默认不返回
通用物体识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 是 uint64 唯一的log id,用于问题定位
result_num 是 unit32 返回结果数目,及result数组中的元素个数
result 是 arrry(object) 标签结果数组
+keyword 是 string 图片中的物体或场景名称
+score 是 float 置信度,0-1
+root 是 string 识别结果的上层标签,有部分钱币、动漫、烟酒等tag无上层标签
+baike_info object 否 对应识别结果的百科词条名称
++baike_url string 否 对应识别结果百度百科页面链接
++image_url string 否 对应识别结果百科图片链接
++description string 否 对应识别结果百科内容描述
通用物体识别 返回示例
{
"log_id": 327863200205075661,
"result_num": 5,
"result": [{
"score": 0.967622,
"root": "公众人物",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E6%96%B0%E5%9E%A3%E7%BB%93%E8%A1%A3/8035884",
"image_url": "http://imgsrc.baidu.com/baike/pic/item/91ef76c6a7efce1b27893518a451f3deb58f6546.jpg",
"description": "新垣结衣(Aragaki Yui),1988年6月11日出生于冲绳县那霸市。日本女演员、歌手、模特。毕业于日出高中。2001年,参加《nicola》模特比赛并获得最优秀奖。2005年,因出演现代剧《涩谷15》而作为演员出道。2006年,参演校园剧《我的老大,我的英雄》;同年,她还出版了个人首本写真集《水漾青春》。2007年,她从日出高校毕业后开始专注于演艺发展,并发表个人首张音乐专辑《天空》;同年,新垣结衣还主演了爱情片《恋空》,而她也凭借该片获得了多个电影新人奖项。2010年,主演爱情片《花水木》。2011年,主演都市剧《全开女孩》。2012年,相继参演现代剧《Legal High》、剧情片《剧场版新参者:麒麟之翼》。2013年,主演都市剧《飞翔情报室》。2014年,她主演了剧情片《黎明的沙耶》。2016年,主演爱情喜剧《逃避虽可耻但有用》,并凭借该剧获得了多个电视剧女主角奖项。2017年,主演爱情片《恋爱回旋》,凭借该片获得第60届蓝丝带奖最佳女主角;同年11月,她还凭借医疗剧《Code Blue 3》获得第94届日剧学院赏最佳女配角。"
},
"keyword": "新垣结衣"
},
{
"score": 0.716067,
"root": "人物-人物特写",
"keyword": "头发"
},
{
"score": 0.421281,
"root": "商品-穿戴",
"keyword": "围巾"
},
{
"score": 0.22347,
"root": "商品-五金",
"keyword": "拉链"
},
{
"score": 0.028031,
"root": "商品-穿戴",
"keyword": "脖套"
}]
}
菜品识别
该请求用于菜品识别。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的菜品名称、卡路里信息、置信度。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用菜品识别 """
client.dishDetect(image);
""" 如果有可选参数 """
options = {}
options["top_num"] = 3
options["filter_threshold"] = "0.7"
options["baike_num"] = 5
""" 带参数调用菜品识别 """
client.dishDetect(image, options)
菜品识别 请求参数详情
参数名称 是否必选 类型 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
top_num 否 string 返回预测得分top结果数,默认为5
filter_threshold 否 string 默认0.95,可以通过该参数调节识别效果,降低非菜识别率.
baike_num 否 string 0 返回百科信息的结果数,默认不返回
菜品识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 是 uint64 唯一的log id,用于问题定位
result_num 否 unit32 返回结果数目,及result数组中的元素个数
result 否 array() 菜品识别结果数组
+name 否 string 菜名,示例:鱼香肉丝
+calorie 否 float 卡路里,每100g的卡路里含量
+probability 否 float 识别结果中每一行的置信度值,0-1
+baike_info object 否 对应识别结果的百科词条名称
++baike_url string 否 对应识别结果百度百科页面链接
++image_url string 否 对应识别结果百科图片链接
++description string 否 对应识别结果百科内容描述
菜品识别 返回示例
{
"log_id": 7357081719365269362,
"result_num": 5,
"result": [
{
"calorie": "119",
"has_calorie": true,
"name": "酸汤鱼",
"probability": "0.396031"
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E9%85%B8%E6%B1%A4%E9%B1%BC/1754055",
"description": "酸汤鱼,是黔桂湘交界地区的一道侗族名菜,与侗族相邻的苗、水、瑶等少数民族也有相似菜肴,但其中以贵州侗族酸汤鱼最为有名,据考证此菜肴最早源于黎平县雷洞镇牙双一带。制作原料主要有鱼肉、酸汤、山仓子等香料。成菜后,略带酸味、幽香沁人、鲜嫩爽口开胃,是贵州“黔系”菜肴的代表作之一。这道菜通常先自制酸汤,之后将活鱼去掉内脏,入酸汤煮制。"
}
},
{
"calorie": "38",
"has_calorie": true,
"name": "原味黑鱼煲",
"probability": "0.265432",
},
{
"calorie": "144",
"has_calorie": true,
"name": "椒鱼片",
"probability": "0.0998993"
},
{
"calorie": "98",
"has_calorie": true,
"name": "酸菜鱼",
"probability": "0.0701917"
},
{
"calorie": "257.65",
"has_calorie": true,
"name": "柠檬鱼",
"probability": "0.0471465"
}]
}
车辆识别
该请求用于检测一张车辆图片的具体车型。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片的车辆品牌及型号。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用车辆识别 """
client.carDetect(image);
""" 如果有可选参数 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5
""" 带参数调用车辆识别 """
client.carDetect(image, options)
车辆识别 请求参数详情
参数名称 是否必选 类型 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
top_num 否 string 返回预测得分top结果数,默认为5
baike_num 否 string 0 返回百科信息的结果数,默认不返回
车辆识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 否 uint64 唯一的log id,用于问题定位
color_result 是 string 颜色
result 否 car-result() 车型识别结果数组
+name 否 string 车型名称,示例:宝马x6
+score 否 double 置信度,示例:0.5321
+year 否 string 年份
+baike_info object 否 对应识别结果的百科词条名称
++baike_url string 否 对应识别结果百度百科页面链接
++image_url string 否 对应识别结果百科图片链接
++description string 否 对应识别结果百科内容描述
location_result 否 string 车在图片中的位置信息
车辆识别 返回示例
{
"log_id": 4086212218842203806,
"location_result": {
"width": 447,
"top": 226,
"height": 209,
"left": 188
},
"result": [{
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%B8%83%E5%8A%A0%E8%BF%AAChiron/20419512",
"description": "布加迪Chiron是法国跑车品牌布加迪出品的豪华超跑车。配置四涡轮增压发动机,420 公里每小时,有23种颜色的选择,售价高达260万美元。"
},
"score": 0.98793351650238,
"name": "布加迪Chiron",
"year": "无年份信息"
},
{
"score": 0.0021970034576952,
"name": "奥迪RS5",
"year": "2011-2017"
},
{
"score": 0.0021096928976476,
"name": "奥迪RS4",
"year": "无年份信息"
},
{
"score": 0.0015581247862428,
"name": "奥迪RS7",
"year": "2014-2016"
},
{
"score": 0.00082337751518935,
"name": "布加迪威航",
"year": "2004-2015"
}],
"color_result": "颜色无法识别"
}
logo商标识别
该请求用于检测和识别图片中的品牌LOGO信息。即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中LOGO的名称、位置和置信度。当效果欠佳时,可以建立子库(在控制台创建应用并申请建库)并通过调用logo入口接口完成自定义logo入库,提高识别效果。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用logo商标识别 """
client.logoSearch(image);
""" 如果有可选参数 """
options = {}
options["custom_lib"] = "true"
""" 带参数调用logo商标识别 """
client.logoSearch(image, options)
logo商标识别 请求参数详情
参数名称 是否必选 类型 可选值范围 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
custom_lib 否 string true - 返回自定义库 false - 返回自定义库+默认库的识别结果 false 是否只使用自定义logo库的结果,默认false:返回自定义库+默认库的识别结果
logo商标识别 返回数据参数详情
参数 类型 是否必须 说明 示例
log_id number 是 请求标识码,随机数,唯一 507499361
result_num number 是 返回结果数目,即:result数组中元素个数 2
result array 是 返回结果数组,每一项为一个识别出的logo -
+location object 是 位置信息(左起像素位置、上起像素位置、像素宽、像素高) {"left": 100,"top":100,"width":10,"height":10}
++left number 是 左起像素位置 100
++top number 是 上起像素位置 100
++width number 是 像素宽 100
++height number 是 像素高 100
+name string 是 识别的品牌名称 京东
+probability number 是 分类结果置信度(0--1.0) 0.8
+type number 是 type=0为1千种高优商标识别结果;type=1为2万类logo库的结果;其它type为自定义logo库结果 1 (2万类的结果)
logo商标识别 返回示例
{
"log_id": 843411868,
"result_num": 1,
"result": [
{
"type": 0,
"name": "科颜氏",
"probability": 0.99998807907104,
"location": {
"width": 296,
"top": 20,
"height": 128,
"left": 23
}
}
]
}
logo商标识别—添加
使用入库接口请先在控制台创建应用并申请建库,建库成功后方可正常使用。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
brief = "{"name": "宝马","code":"666"}"
""" 调用logo商标识别—添加 """
client.logoAdd(image, brief);
logo商标识别—添加 请求参数详情
参数名称 是否必选 类型 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
brief 是 string brief,检索时带回。此处要传对应的name与code字段,name长度小于100B,code长度小于150B
logo商标识别—添加 返回数据参数详情
参数 类型 是否必须 说明 示例
log_id number 是 请求标识码,随机数,唯一 507499361
cont_sign string 是 输入图片签名,可用于删除 -
logo商标识别—添加 返回示例
{
"log_id": 972934653,
"cont_sign": "217113248,419422301"
}
logo商标识别—删除
使用删除接口请先在控制台创建应用并申请建库,建库成功后先调用入库接口完成logo图片入库,删除接口用户在已入库的logo图片中删除图片。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用删除logo商标,传入参数为图片 """
client.logoDeleteByImage(image);
contSign = "8cnn32frvrr2cd901"
""" 调用删除logo商标,传入参数为图片签名 """
client.logoDeleteBySign(contSign);
logo商标识别—删除 请求参数详情
参数名称 是否必选 类型 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
cont_sign 是 string 图片签名(和image二选一,image优先级更高)
logo商标识别—删除 返回数据参数详情
参数 类型 是否必须 说明 示例
log_id number 是 请求标识码,随机数,唯一 507499361
logo商标识别—删除 返回示例
{
"log_id": 50488417
}
动物识别
该请求用于识别一张图片。即对于输入的一张图片(可正常解码,且长宽比适宜),输出动物识别结果
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用动物识别 """
client.animalDetect(image);
""" 如果有可选参数 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5
""" 带参数调用动物识别 """
client.animalDetect(image, options)
动物识别 请求参数详情
参数名称 是否必选 类型 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
top_num 否 string 6 返回预测得分top结果数,默认为6
baike_num 否 string 0 返回百科信息的结果数,默认不返回
动物识别 返回数据参数详情
参数 类型 是否必须 说明
log_id uint64 是 唯一的log id,用于问题定位
result arrry(object) 是 识别结果数组
+name string 是 动物名称,示例:蒙古马
+score uint32 是 置信度,示例:0.5321
+baike_info object 否 对应识别结果的百科词条名称
++baike_url string 否 对应识别结果百度百科页面链接
++image_url string 否 对应识别结果百科图片链接
++description string 否 对应识别结果百科内容描述
动物识别 返回示例
{
"log_id": 7392482912853822863,
"result": [{
"score": "0.993811",
"name": "叉角羚",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E5%8F%89%E8%A7%92%E7%BE%9A/801703",
"description": "叉角羚(学名:Antilocapra americana):在角的中部角鞘有向前伸的分枝,故名。体型中等,体长1-1.5米,尾长7.5-10厘米,肩高81-104厘米,成体重36-60千克,雌体比雄体小;背面为红褐色,颈部有黑色鬃毛,腹部和臀部为白色,颊面部和颈部两侧有黑色块斑;毛被下面为绒毛,上覆以粗糙、质脆的长毛,由于某些皮肤肌的作用,能使其毛被呈不同角度,以利于保暖或散热。植食。叉角羚奔跑速度非常快,最高时速达100千米。一次跳跃可达3.5-6米。善游泳。夏季组成小群活动,冬季则集结成上百只的大群。为寻找食物和水源,一年中常进行几次迁移。性机警,视觉敏锐,能看到数千米外的物体。遇险时,臀部的白色毛能立起,向同伴告警。分布于北美洲。"
}
},
{
"score": "0.000289439",
"name": "印度羚"
},
{
"score": "0.000186248",
"name": "藏羚羊"
},
{
"score": "0.000147176",
"name": "跳羚"
},
{
"score": "0.000134434",
"name": "驯鹿"
},
{
"score": "9.86555e-05",
"name": "高鼻羚羊"
}]
}
植物识别
该请求用于识别一张图片。即对于输入的一张图片(可正常解码,且长宽比适宜),输出植物识别结果。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用植物识别 """
client.plantDetect(image);
""" 如果有可选参数 """
options = {}
options["baike_num"] = 5
""" 带参数调用植物识别 """
client.plantDetect(image, options)
植物识别 请求参数详情
参数名称 是否必选 类型 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
baike_num 否 string 0 返回百科信息的结果数,默认不返回
植物识别 返回数据参数详情
参数 类型 是否必须 说明
log_id uint64 是 唯一的log id,用于问题定位
result arrry(object) 是 植物识别结果数组
+name string 是 植物名称,示例:吉娃莲
+score uint32 是 置信度,示例:0.5321
+baike_info object 否 对应识别结果的百科词条名称
++baike_url string 否 对应识别结果百度百科页面链接
++image_url string 否 对应识别结果百科图片链接
++description string 否 对应识别结果百科内容描述
植物识别 返回示例
{
"log_id": 1705495792822072357,
"result": [{
"score": 0.99979120492935,
"name": "莲",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E8%8E%B2/2717141",
"description": "莲(Nelumbo nucifera),又称荷、荷花、莲花、芙蕖、鞭蓉、水芙蓉、水芝、水芸、水旦、水华等,溪客、玉环是其雅称,未开的花蕾称菡萏,已开的花朵称鞭蕖,莲科,属多年生水生宿根草本植物,其地下茎称藕,能食用,叶入药,莲子为上乘补品,花可供观赏。是我国十大名花之一。是印度的国花。莲,双子叶植物,睡莲科。多年生挺水草本植物。根状茎横走,粗而肥厚,节间膨大,内有纵横通气孔道,节部缢缩。叶基生,挺出水面,盾形,直径30-90cm,波状边缘,上面深绿色,下面浅绿色。叶柄有小刺,长1-2m,挺出水面。花单生,直径10-25cm,椭圆花瓣多数,白色或粉红色;花柄长1-2m。花托在果期膨大,直径5-10cm,海绵质。坚果椭圆形和卵圆形,长1.5-2.0cm,灰褐色。种子卵圆形,长1.2-1.7cm,种皮红棕色。生于池塘、浅湖泊及稻田中。中国南北各省有自生或栽培,经济价值高。人们习惯上称种子为“莲子”、地下茎为“藕”、花托为“莲蓬”、叶为“荷叶”。"
}
},
{
"score": 0.00015144718054216,
"name": "红睡莲"
},
{
"score": 1.2172759852547e-05,
"name": "白睡莲"
},
{
"score": 6.305016540864e-06,
"name": "延药睡莲"
},
{
"score": 3.6133328649157e-06,
"name": "华夏慈姑"
}]
}
图像主体检测
用户向服务请求检测图像中的主体位置。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用图像主体检测 """
client.objectDetect(image);
""" 如果有可选参数 """
options = {}
options["with_face"] = 0
""" 带参数调用图像主体检测 """
client.objectDetect(image, options)
图像主体检测 请求参数详情
参数名称 是否必选 类型 可选值范围 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
with_face 否 string 0 - 不带人脸区域 1 - 带人脸区域 1 如果检测主体是人,主体区域是否带上人脸部分,0-不带人脸区域,其他-带人脸区域,裁剪类需求推荐带人脸,检索/识别类需求推荐不带人脸。默认取1,带人脸。
图像主体检测 返回数据参数详情
参数 类型 是否必须 说明 示例
log_id number 是 唯一的log id,用于问题定位 507499361
result object 是 裁剪结果 -
+left number 是 表示定位位置的长方形左上顶点的水平坐标 50
+top number 是 表示定位位置的长方形左上顶点的垂直坐标 60
+width number 是 表示定位位置的长方形的宽度 200
+height number 是 表示定位位置的长方形的高度 200
图像主体检测 返回示例
{
"log_id": 895582300,
"result": {
"width": 486,
"top": 76,
"left": 134,
"height": 394
}
}
地标识别
该请求用于识别地标,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的地标识别结果。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用地标识别 """
client.landmark(image);
地标识别 请求参数详情
参数名称 是否必选 类型 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
地标识别 返回数据参数详情
参数 类型 是否必须 说明 示例
log_id number 是 唯一的log id,用于问题定位 507499361
result object 是 裁剪结果 -
+landmark string 是 地标名称,无法识别则返回空字符串 狮身人面像
地标识别 返回示例
{
"log_id": 3450013152046070669,
"result":
{
"landmark": "狮身人面像"
}
}
花卉识别
检测用户上传的花卉图片,输出图片的花卉识别结果名称及对应的概率打分。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用花卉识别 """
client.flower(image);
""" 如果有可选参数 """
options = {}
options["top_num"] = 3
options["baike_num"] = 5
""" 带参数调用花卉识别 """
client.flower(image, options)
花卉识别 请求参数详情
参数名称 是否必选 类型 默认值 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
top_num 否 string 5 返回预测得分top结果数,默认为5
baike_num 否 string 0 返回百科信息的结果数,默认不返回
花卉识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 是 uint64 唯一的log id,用于问题定位
result_num 否 uint32 返回结果数目,及result数组中的元素个数
result 否 object() 标签结果数组
+name 否 string 花卉名称
+score 否 double 置信度,0-1
+baike_info object 否 对应识别结果的百科词条名称
++baike_url string 否 对应识别结果百度百科页面链接
++image_url string 否 对应识别结果百科图片链接
++description string 否 对应识别结果百科内容描述
花卉识别 返回示例
{
"log_id": 2233046923807801461,
"result": [{
"score": 0.79123616218567,
"name": "荷花",
"baike_info": {
"baike_url": "http://baike.baidu.com/item/%E8%8D%B7%E8%8A%B1/158674",
"description": "荷花(Lotus flower)属山龙眼目,莲科,是莲属二种植物的通称。又名莲花、水芙蓉等。是莲属多年生水生草本花卉。地下茎长而肥厚,有长节,叶盾圆形。花期6至9月,单生于花梗顶端,花瓣多数,嵌生在花托穴内,有红、粉红、白、紫等色,或有彩纹、镶边。坚果椭圆形,种子成卵形。荷花种类很多,分观赏和食用两大类。原产亚洲热带和温带地区,中国早在周朝就有栽培记载。荷花全身皆宝,藕和莲子能食用,莲子、根茎、藕节、荷叶、花及种子的胚芽等都可入药。其出污泥而不染之品格恒为世人称颂。“接天莲叶无穷碧,映日荷花别样红”就是对荷花之美的真实写照。荷花“中通外直,不蔓不枝,出淤泥而不染,濯清涟而不妖”的高尚品格,历来为古往今来诗人墨客歌咏绘画的题材之一。1985年5月荷花被评为中国十大名花之一。荷花是印度,越南的国花。"
}
},
{
"score": 0.16631570458412,
"name": "莲"
},
{
"score": 0.015812600031495,
"name": "非花"
},
{
"score": 0.0058604963123798,
"name": "碗莲"
},
{
"score": 0.0039983494207263,
"name": "并蒂莲"
}]
}
食材识别
该请求用于识别果蔬类食材,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的果蔬食材结果。
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用食材识别 """
client.ingredient(image);
""" 如果有可选参数 """
options = {}
options["top_num"] = 3
""" 带参数调用食材识别 """
client.ingredient(image, options)
食材识别 请求参数详情
参数名称 是否必选 类型 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
top_num 否 string 返回预测得分top结果数,如果为空或小于等于0默认为5;如果大于20默认20
食材识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 是 uint64 唯一的log id,用于问题定位
result 是 object() 识别结果
result_num 否 uint32 识别结果数
+name 否 string 图像中的食材名称
+score 否 double 得分,0-1
食材识别 返回示例
{
"log_id": 1091287364,
"result_num": 20,
"result": [
{
"name": "非果蔬食材",
"score": 0.99999988079071
},
{
"name": "油菜",
"score": 1.1175458780599e-8
},
{
"name": "蛇果",
"score": 7.2776291659693e-9
},
{
"name": "国光苹果",
"score": 5.6971951600815e-9
},
{
"name": "海枣",
"score": 4.2508210285064e-9
},
{
"name": "琼瑶浆葡萄",
"score": 4.1451895249622e-9
},
{
"name": "京锐号辣椒",
"score": 3.9915102334476e-9
},
{
"name": "冬瓜",
"score": 3.3611948779821e-9
},
{
"name": "长江豆",
"score": 2.9944848822794e-9
},
{
"name": "黑加仑",
"score": 2.7750137743254e-9
},
{
"name": "面包果",
"score": 2.3357531464541e-9
},
{
"name": "椰子",
"score": 1.9741890344704e-9
},
{
"name": "美人瓜",
"score": 1.9319581490151e-9
},
{
"name": "莲藕",
"score": 1.759222323372e-9
},
{
"name": "黑奥林",
"score": 1.7266311713726e-9
},
{
"name": "芥菜",
"score": 1.6180708994895e-9
},
{
"name": "样芹菜",
"score": 1.5472728653876e-9
},
{
"name": "篙巴",
"score": 1.4084827748562e-9
},
{
"name": "花生",
"score": 1.3972580870103e-9
},
{
"name": "魁绿猕猴桃",
"score": 1.3920842256709e-9
}
]
}
红酒识别
该服务用于识别红酒标签,即对于输入的一张图片(可正常解码,长宽比适宜,且酒标清晰可见),输出图片中的红酒名称、国家、产区、酒庄、类型、糖分、葡萄品种、酒品描述等信息。可识别数十万中外常见红酒。 注意:图片中酒标要清晰可见,示例图片如下
img
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用红酒识别 """
client.redwine(image);
红酒识别 请求参数详情
参数名称 是否必选 类型 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
红酒识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 是 uint64 请求标识码,随机数,唯一
result 是 dict 识别结果
+hasdetail 是 unit 判断是否返回详细信息(除红酒中文名之外的其他字段),含有返回1,不含有返回0
+wineNameCn 是 string 红酒中文名,无法识别返回空,示例:波斯塔瓦经典赤霞珠品丽珠半甜红葡萄酒
+wineNameEn 否 string 红酒英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Bostavan Classic Cabernet
+countryCn 否 string 国家中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:摩尔多瓦
+countryEn 否 string 国家英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Moldova
+regionCn 否 string 产区中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:波尔多
+regionEn 否 string 产区英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Bordeaux
+subRegionCn 否 string 子产区中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:梅多克
+subRegionEn 否 string 子产区英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Medoc
+wineryCn 否 string 酒庄中文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:波斯塔瓦酒庄
+wineryEn 否 string 酒庄英文名,hasdetail = 0时,表示无法识别,该字段不返回,示例:Vinaria Bostavan
+classifyByColor 否 string 酒类型,hasdetail = 0时,表示无法识别,该字段不返回,示例:红葡萄酒
+classifyBySugar 否 string 糖分类型,hasdetail = 0时,表示无法识别,该字段不返回,示例:半甜型
+color 否 string 色泽,hasdetail = 0时,表示无法识别,该字段不返回,示例:宝石红色
+grapeCn 否 string 葡萄品种,可能有多种葡萄,hasdetail = 0时,表示无法识别,该字段不返回,示例:品丽珠;赤霞珠
+grapeEn 否 string 葡萄品种英文名,可能有多种葡萄,hasdetail = 0时,表示无法识别,该字段不返回,示例:Cabernet Franc;Cabernet Sauvignon
+tasteTemperature 否 string 品尝温度,hasdetail = 0时,表示无法识别,该字段不返回,示例:6-11℃
+description 否 string 酒品描述,hasdetail = 0时,表示无法识别,该字段不返回,示例:葡萄酒呈深宝石红色,具有香料、香草和新鲜水果的果香,酒体分明,口感畅顺,果香横溢,单宁软化程度高,让你回味无穷
红酒识别 返回示例
仅识别出红酒名称,hasdetail = 0:
{
"log_id": 3450013152046070669,
"result":
{
"wineNameCn": "银色高地阙歌干红",
"hasdetail":0
}
}
识别出详细信息,hasdetail = 1:
{
"log_id": 2495538539661269738,
"result": {
"classifyByColor": "红葡萄酒/Red Wine",
"subRegionCn": "梅多克",
"wineNameCn": "拉图嘉利庄园红葡萄酒(正牌)",
"subRegionEn": "Medoc",
"regionEn": "Bordeaux",
"color": "深紫红色/Dark Violet",
"wineNameEn": "Chateau La Tour Carnet",
"hasdetail": 1,
"wineryCn": "拉图嘉利庄园",
"classifyBySugar": "干型/Dry",
"tasteTemperature": "16-18℃",
"regionCn": "波尔多",
"wineryEn": "Chateau La Tour-Carnet",
"grapeCn": "",
"grapeEn": "",
"countryCn": "法国",
"countryEn": "France",
"description": "此酒充满红果和黑果味道,并带有矿物质和花香(紫罗兰,玫瑰),混合些许香草气息,单宁柔软,余香悠长。在口中留下清新的味道,香料和香草味道萦绕口中。"
}
}
货币识别
识别图像中的货币类型,以纸币为主,正反面均可准确识别,接口返回货币的名称、代码、面值、年份信息;可识别各类近代常见货币,如美元、欧元、英镑、法郎、澳大利亚元、俄罗斯卢布、日元、韩元、泰铢、印尼卢比等。
注意:图片中货币要清晰可见,示例图片如下
img
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('example.jpg')
""" 调用货币识别 """
client.currency(image);
货币识别 请求参数详情
参数名称 是否必选 类型 说明
image 是 string 图像数据,base64编码,要求base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/png/bmp格式
货币识别 返回数据参数详情
字段 是否必选 类型 说明
log_id 是 uint64 请求标识码,随机数,唯一
result 是 dict 识别结果
+hasdetail 是 unit 判断是否返回详细信息(除货币名称之外的其他字段),含有返回1,不含有返回0
+currencyName 是 string 货币名称,无法识别返回空,示例:新加坡元
+currencyCode 否 string 货币代码,hasdetail = 0时,表示无法识别,该字段不返回,示例:SGD
+currencyDenomination 否 string 货币面值,hasdetail = 0时,表示无法识别,该字段不返回,示例:50元
+year 否 string 货币年份,hasdetail = 0时,表示无法识别,该字段不返回,示例:2004年
货币识别 返回示例
{
"log_id": 4247844653395235754,
"result": {
"currencyName": "美元",
"hasdetail": 1,
"currencyCode": "USD",
"year": "2001年",
"currencyDenomination": "50美元"
}
}
人脸识别
人脸检测
能力介绍
接口能力
人脸检测:检测图片中的人脸并标记出位置信息;
人脸关键点:展示人脸的核心关键点信息,及150个关键点信息。
人脸属性值:展示人脸属性信息,如年龄、性别等。
人脸质量信息:返回人脸各部分的遮挡、光照、模糊、完整度、置信度等信息。
业务应用
典型应用场景:如人脸属性分析,基于人脸关键点的加工分析,人脸营销活动等。
说明:检测响应速度,与图片中人脸数量相关,人脸数量较多时响应时间会有些许延长。
质量检测
如果需要判断一张图片中的人脸,是否符合后续识别或者对比的条件,可以使用此接口,在请求时在face_field参数中请求quality。基于返回结果quality中,以下字段及对应阈值,进行质量检测的判断,以保证人脸质量符合后续业务操作要求。
指标 字段与解释 推荐数值界限
遮挡范围 occlusion,取值范围[0~1],0为无遮挡,1是完全遮挡 含有多个具体子字段,表示脸部多个部位 通常用作判断头发、墨镜、口罩等遮挡 left_eye : 0.6, #左眼被遮挡的阈值 right_eye : 0.6, #右眼被遮挡的阈值 nose : 0.7, #鼻子被遮挡的阈值 mouth : 0.7, #嘴巴被遮挡的阈值 left_cheek : 0.8, #左脸颊被遮挡的阈值 right_cheek : 0.8, #右脸颊被遮挡的阈值 chin_contour : 0.6, #下巴被遮挡阈值
模糊度范围 blur,取值范围[0~1],0是最清晰,1是最模糊 小于0.7
光照范围 illumination,取值范围[0~255] 脸部光照的灰度值,0表示光照不好 以及对应客户端SDK中,YUV的Y分量 大于40
姿态角度 Pitch:三维旋转之俯仰角度[-90(上), 90(下)] Roll:平面内旋转角[-180(逆时针), 180(顺时针)] Yaw:三维旋转之左右旋转角[-90(左), 90(右)] 分别小于20度
人脸完整度 completeness(0或1),0为人脸溢出图像边界, 1为人脸都在图像边界内 视业务逻辑判断
人脸大小 人脸部分的大小 建议长宽像素值范围:8080~200200 人脸部分不小于100*100像素
调用方式
请求URL数据格式
向API服务地址使用POST发送请求,必须在URL中带上参数access_token,可通过后台的API Key和Secret Key生成,具体方式请参考“Access Token获取”。
示例代码
Bash
PHP
JAVA
Python
Cpp
C#
Node
!/bin/bash
curl -i -k 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的AK】&client_secret=【百度云应用的SK】'
注意:access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token;
例如此接口,使用HTTPS POST发送:
https://aip.baidubce.com/rest/2.0/face/v1/merge?access_token=24.f9ba9c5341b67688ab4added8bc91dec.2592000.1485570332.282335-8574074
POST中Body的参数,按照下方请求参数说明选择即可。
提示:如果您为百度云老用户,正在使用其他非AI的服务,可以参考百度云AKSK鉴权方式发送请求,虽然请求方式和鉴权方法和本文所介绍的不同,但请求参数和返回结果一致。
请求说明
注意事项:
请求体格式化:Content-Type为application/json,通过json格式化请求体。
Base64编码:请求的图片需经过Base64编码,图片的base64编码指将图片数据编码成一串字符串,使用该字符串代替图像地址。您可以首先得到图片的二进制,然后用Base64格式编码即可。需要注意的是,图片的base64编码是不包含图片头的,如data:image/jpg;base64,
图片格式:现支持PNG、JPG、JPEG、BMP,不支持GIF图片
人脸识别接口分为V2和V3两个版本,本文档为V3版本接口的说明文档,请确认您在百度云后台获得的是V3版本接口权限,再来阅读本文档。
辨别接口版本的方法是:在百度云后台进入【应用列表】,点击【应用名称】,在【API列表】中可以看到【请求地址】,若请求地址中带有【v3】标识,则您具有的是v3权限,可以阅读本文档;若请求地址中带有【v2】标识,则您具有的是v2权限,应该去阅读v2文档。
请求示例
HTTP方法:POST
请求URL: https://aip.baidubce.com/rest/2.0/face/v3https://img.qb5200.com/download-x/detect
URL参数:
参数 值
access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取”
Header:
参数 值
Content-Type application/json
Body中放置请求参数,参数详情如下:
请求参数
参数 必选 类型 说明
image 是 string 图片信息(总数据大小应小于10M),图片上传方式根据image_type来判断
image_type 是 string 图片类型 BASE64:图片的base64值,base64编码后的图片数据,编码后的图片大小不超过2M; URL:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长); FACE_TOKEN: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个。
face_field 否 string 包括age,beauty,expression,face_shape,gender,glasses,landmark,landmark150,race,quality,eye_status,emotion,face_type信息 逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
max_face_num 否 uint32 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;最大值10,检测图片中面积最大的几张人脸。
face_type 否 string 人脸的类型 LIVE表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等 IDCARD表示SFZ芯片照:二代SFZ内置芯片中的人像照片 WATERMARK表示带水印证件照:一般为带水印的小图,如公安网小图 CERT表示证件照片:如拍摄的SFZ、工卡、护照、学生证等证件图片 默认LIVE
liveness_control 否 string 活体控制 检测结果中不符合要求的人脸会被过滤 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE
说明:face_field参数,默认只返回人脸框、概率和旋转角度,age等更多属性,请在此参数中添加。
示例代码
提示一:使用示例代码前,请记得替换其中的示例Token、图片地址或Base64信息。
提示二:部分语言依赖的类或库,请在代码注释中查看下载地址。
Bash
PHP
JAVA
Python
Cpp
C#
人脸检测与属性分析
curl -i -k 'https://aip.baidubce.com/rest/2.0/face/v3https://img.qb5200.com/download-x/detect?access_token=【调用鉴权接口获取的token】' --data '{"image":"027d8308a2ec665acb1bdf63e513bcb9","image_type":"FACE_TOKEN","face_field":"faceshape,facetype"}' -H 'Content-Type:application/json; charset=UTF-8'
返回说明
返回参数
返回结果
字段 必选 类型 说明
face_num 是 int 检测到的图片中的人脸数量
face_list 是 array 人脸信息列表,具体包含的参数参考下面的列表。
+face_token 是 string 人脸图片的唯一标识
+location 是 array 人脸在图片中的位置
++left 是 double 人脸区域离左边界的距离
++top 是 double 人脸区域离上边界的距离
++width 是 double 人脸区域的宽度
++height 是 double 人脸区域的高度
++rotation 是 int64 人脸框相对于竖直方向的顺时针旋转角,[-180,180]
+face_probability 是 double 人脸置信度,范围【0~1】,代表这是一张人脸的概率,0最小、1最大。
+angle 是 array 人脸旋转角度参数
++yaw 是 double 三维旋转之左右旋转角[-90(左), 90(右)]
++pitch 是 double 三维旋转之俯仰角度[-90(上), 90(下)]
++roll 是 double 平面内旋转角[-180(逆时针), 180(顺时针)]
+age 否 double 年龄 ,当face_field包含age时返回
+beauty 否 int64 美丑打分,范围0-100,越大表示越美。当face_fields包含beauty时返回
+expression 否 array 表情,当 face_field包含expression时返回
++type 否 string none:不笑;smile:微笑;laugh:大笑
++probability 否 double 表情置信度,范围【0~1】,0最小、1最大。
+face_shape 否 array 脸型,当face_field包含face_shape时返回
++type 否 double square: 正方形 triangle:三角形 oval: 椭圆 heart: 心形 round: 圆形
++probability 否 double 置信度,范围【0~1】,代表这是人脸形状判断正确的概率,0最小、1最大。
+gender 否 array 性别,face_field包含gender时返回
++type 否 string male:男性 female:女性
++probability 否 double 性别置信度,范围【0~1】,0代表概率最小、1代表最大。
+glasses 否 array 是否带眼镜,face_field包含glasses时返回
++type 否 string none:无眼镜,common:普通眼镜,sun:墨镜
++probability 否 double 眼镜置信度,范围【0~1】,0代表概率最小、1代表最大。
+eye_status 否 array 双眼状态(睁开/闭合) face_field包含eye_status时返回
++left_eye 否 double 左眼状态 [0,1]取值,越接近0闭合的可能性越大
++right_eye 否 double 右眼状态 [0,1]取值,越接近0闭合的可能性越大
+emotion 否 array 情绪 face_field包含emotion时返回
++type 否 string angry:愤怒 disgust:厌恶 fear:恐惧 happy:高兴 sad:伤心 surprise:惊讶 neutral:无表情 pouty: 撅嘴 grimace:鬼脸
++probability 否 double 情绪置信度,范围0~1
+face_type 否 array 真实人脸/卡通人脸 face_field包含face_type时返回
++type 否 string human: 真实人脸 cartoon: 卡通人脸
++probability 否 double 人脸类型判断正确的置信度,范围【0~1】,0代表概率最小、1代表最大。
+landmark 否 array 4个关键点位置,左眼中心、右眼中心、鼻尖、嘴中心。face_field包含landmark时返回
+landmark72 否 array 72个特征点位置 face_field包含landmark72时返回
+landmark150 否 array 150个特征点位置 face_field包含landmark150时返回
+quality 否 array 人脸质量信息。face_field包含quality时返回
++occlusion 否 array 人脸各部分遮挡的概率,范围[0~1],0表示完整,1表示不完整
+++left_eye 否 double 左眼遮挡比例,[0-1] ,1表示完全遮挡
+++right_eye 否 double 右眼遮挡比例,[0-1] , 1表示完全遮挡
+++nose 否 double 鼻子遮挡比例,[0-1] , 1表示完全遮挡
+++mouth 否 double 嘴巴遮挡比例,[0-1] , 1表示完全遮挡
+++left_cheek 否 double 左脸颊遮挡比例,[0-1] , 1表示完全遮挡
+++right_cheek 否 double 右脸颊遮挡比例,[0-1] , 1表示完全遮挡
+++chin 否 double 下巴遮挡比例,,[0-1] , 1表示完全遮挡
++blur 否 double 人脸模糊程度,范围[0~1],0表示清晰,1表示模糊
++illumination 否 double 取值范围在[0~255], 表示脸部区域的光照程度 越大表示光照越好
++completeness 否 int64 人脸完整度,0或1, 0为人脸溢出图像边界,1为人脸都在图像边界内
返回示例
{
"face_num": 1,
"face_list": [
{
"face_token": "35235asfas21421fakghktyfdgh68bio",
"location": {
"left": 117,
"top": 131,
"width": 172,
"height": 170,
"rotation": 4
},
"face_probability": 1,
"angle" :{
"yaw" : -0.34859421849251
"pitch" 1.9135693311691
"roll" :2.3033397197723
}
"landmark": [
{
"x": 161.74819946289,
"y": 163.30244445801
},
...
],
"landmark72": [
{
"x": 115.86531066895,
"y": 170.0546875
},
...
],
"age": 29.298097610474,
"beauty": 55.128883361816,
"expression": {
"type": "smile",
"probability" : 0.5543018579483
},
"gender": {
"type": "male",
"probability": 0.99979132413864
},
"glasses": {
"type": "sun",
"probability": 0.99999964237213
},
"race": {
"type": "yellow",
"probability": 0.99999976158142
},
"face_shape": {
"type": "triangle",
"probability": 0.5543018579483
}
"quality": {
"occlusion": {
"left_eye": 0,
"right_eye": 0,
"nose": 0,
"mouth": 0,
"left_cheek": 0.0064102564938366,
"right_cheek": 0.0057411273010075,
"chin": 0
},
"blur": 1.1886881756684e-10,
"illumination": 141,
"completeness": 1
}
}
]
}
72个关键点分布图(对应landmark72个点的顺序,序号从0-71): img
150个关键点分布图,红色关键点为在72关键点基础上增加的关键点(对应landmark150个点的顺序,序号从0-149,且每个关键点有对应的英文命名作为参数名,请参考图片下方表格): img
关键点名称如下图, img
错误码
检测校花网大学校花首页各个校花的年龄及颜值
http://www.521609.comhttps://img.qb5200.com/download-x/daxuexiaohua/
image-20200203234323110
获取校花网的校花图片
import os
import time
import random
import requests
from lxml import etree
ips=['58.212.41.243:9999','60.167.22.162:9999','39.106.66.178:80']
url = 'http://www.521609.comhttps://img.qb5200.com/download-x/daxuexiaohua/'
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.17 Safari/537.36'
}
req = requests.get(url=url, headers=headers)
str转bytes叫encode,bytes转str叫decode
if req.encoding == 'ISO-8859-1':
encodings = requests.utils.get_encodings_from_content(req.text)
if encodings:
encoding = encodings[0]
else:
encoding = req.apparent_encoding
else:
encoding = req.encoding
encode_text = req.content.decode(encoding, 'replace')
print(encode_text)
tree = etree.HTML(encode_text)
img_list = tree.xpath('//*[@id="content"]https://img.qb5200.com/download-x/div[2]https://img.qb5200.com/download-x/div[2]/ul/li/a/img')
for img in img_list:
if str(img.xpath('@alt')[0])+'jpg' in os.listdir('bg'):
continue
print(str(img.xpath('@alt')[0]), img.xpath('@src')[0])
# http://www.521609.com/uploads/allimg/111020/11329353c0-1-lp.jpg
if str(img.xpath('@alt')[0]).startswith('h'):
img_content = requests.get(img.xpath('@src')[0], proxies={'http': random.choice(ips)}).content
else:
img_content = requests.get(f"http://www.521609.com{img.xpath('@src')[0]}").content
with open(f"bg//{img.xpath('@alt')[0]}.jpg", 'wb')as f:
f.write(img_content)
time.sleep(random.randint(1, 4))
调用百度人脸检测API,获取每个图片的人脸数据
import base64
import os
from aip import AipFace
""" 你的 APPID AK SK """
APP_ID = '18367011'
API_KEY = '9zXao1RoqfkvHuK3fhxW3iuO'
SECRET_KEY = 'MzlT3F4ErWFREFkgSLPZ9GW56panUwA7'
face_client = AipFace(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
for img in os.listdir('bg'):
options = {}
image = base64.b64encode(get_file_content(f'bg\{img}'))
image = str(image, 'utf8')
imageType = "BASE64"
options["face_field"] = "age,beauty,expression,face_shape"
""" 调用人脸检测 """
res = face_client.detect(image, imageType, options=options)
# print(img, res.get('result').get("face_list")[0].get('age'), res.get('result').get("face_list")[0].get('beauty'))
print(img, res.get('result'))
检测结果
image-20200203234724261
加载全部内容