python调用百度人脸识别对美女进行颜值打分

调用百度人脸识别

一、注册百度api

先百度开发者开发平台注册应用https://ai.baidu.com/tech/face/detect

1、创建应用

python调用百度人脸识别对美女进行颜值打分_第1张图片
2、管理应用
APP_ID, API_KEY, SECRET_KEY都会用到
安装使用Python SDK
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EcrFJyrq-1571278051959)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1571276722943.png)]

二、使用Python SDK

1、安装SDK

pip install baidu-aip

2、新建一个AipFace:

from aip import AipFace

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipFace(APP_ID, API_KEY, SECRET_KEY)

3、人脸检测

from aip import AipFace

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipFace(APP_ID, API_KEY, SECRET_KEY)
def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()
#本地图片
image = base64.b64encode(get_file_content('图片路劲'))
#url地址
# image = 'https://img.52z.com/upload/news/image/20180912/20180912124602_94176.jpg'
#图片类型
imageType = "BASE64"

""" 调用人脸检测 """
client.detect(image, imageType);

""" 如果有可选参数 """
options = {}
#添加请求的参数age:年龄,beauty:颜值,gender:性别
options["face_field"] = "age"
options["max_face_num"] = 2
options["face_type"] = "LIVE"
options["liveness_control"] = "LOW"

""" 带参数调用人脸检测 """
client.detect(image, imageType, options)

返回结果:

{'error_code': 0, 'error_msg': 'SUCCESS', 'log_id': 744193212764433041, 'timestamp': 1571276443, 'cached': 0, 'result': {'face_num': 1, 'face_list': [{'face_token': '8189b74afd9de351cfcabf81cd349ebd', 'location': {'left': 149.37, 'top': 44.44, 'width': 170, 'height': 172, 'rotation': 25}, 'face_probability': 0.97, 'angle': {'yaw': 36.29, 'pitch': 10.16, 'roll': 20.51}, 'liveness': {'livemapscore': 1}, 'age': 20, 'beauty': 82.42, 'gender': {'type': 'female', 'probability': 1}}]}}

4、会遇到的问题
没有对本地文件img文件的编码BASE64进行字符串转换

client.detect(image, imageType, options)

出现以下错误:

TypeError: Object of type bytes is not JSON serializable

解决:

client.detect(str(image,'utf-8'),image_type,options)

附录:
请求参数详情

是否必选 类型 默认值 说明
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,landmark72,landmark150,race,quality,eye_status,emotion,face_type信息 逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
max_face_num string 1 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;最大值10,检测图片中面积最大的几张人脸。
face_type string 人脸的类型 LIVE表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等IDCARD表示身份证芯片照:二代身份证内置芯片中的人像照片 WATERMARK表示带水印证件照:一般为带水印的小图,如公安网小图 CERT表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片 默认LIVE
liveness_control string NONE 活体检测控制 NONE: 不进行控制 LOW:较低的活体要求(高通过率 低攻击拒绝率) NORMAL: 一般的活体要求(平衡的攻击拒绝率, 通过率) HIGH: 较高的活体要求(高攻击拒绝率 低通过率) 默认NONE

人脸检测 返回数据参数详情

字段 必选 类型 说明
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最大。
+angel 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:无情绪
++probability double 情绪置信度,范围0~1
+race array 人种 face_field包含race时返回
++type string yellow: 黄种人 white: 白种人 black:黑种人 arabs: 阿拉伯人
++probability double 人种置信度,范围【0~1】,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], 表示脸部区域的光照程度 越大表示光照越好
ouble 人脸模糊程度,范围[0~1],0表示清晰,1表示模糊
++illumination double 取值范围在[0~255], 表示脸部区域的光照程度 越大表示光照越好
++completeness int64 人脸完整度,0或1, 0为人脸溢出图像边界,1为人脸都在图像边界内

你可能感兴趣的:(爬虫,Python)