涛哥的鄙视在“始终如一 虚拟变量与美丽的“虚拟变量陷阱”一文中,我曾经给大家简单介绍过Hamermesh 和 Biddle(1994)有关相貌吸引力对工资的影响的那篇论文。在1994年那个年代,想必作者也是被迫使用离散型变量去度量相貌。离散型变量不像连续型变量那样具有足够的变异性,因而我们能从中获取的信息自然也都是“大打折扣”的。在人工智能和机器学习技术飞速发展的今天,如果我们依然想要研究”相貌对XX的影响“,那么大可不必再去使用离散型变量度量相貌,我们已经可以做到使用连续型变量去度量相貌了。
百度AI开放平台为我们提供了人脸检测的API接口,可以实现人脸打分的功能。只要你有照片,那么就可以据此进行人脸打分,这极大方便了我们做相貌吸引力的相关研究。让我们先看看百度人脸检测的威力:
那么在Python中,我们该如何调用百度人脸识别API接口实现人脸打分功能呢?
想要调用百度人脸检测的API实现人脸打分,我们首先需要注册成为百度AI开放平台的开发者,然后创建一个应用,获取API Key和Secret Key,将其复制粘贴到下方代码指定位置就好,执行下面的代码就可以生成一个access_token(用户身份验证和授权的凭证)。
注意:access_token的有效期为30天,切记需要每30天进行定期更换,或者每次请求都拉取新token。
说明:开发者功能可免费注册,个人用户调用量免费,每秒可调用两次,轻度使用完全足够了,如果需更快的调用速度,那么就需要付费购买,让我们高呼一声“百度良心”。更多注意事项大家可以参见百度官方注册教程ERENCE/Ck3dwjgn3。
百度人脸检测对图片格式有要求,要求把图片转换为Base64编码,所以我们可以调用python中base64库实现图片转码。大家只需要把图片的本地保存路径复制到下方代码指定位置就好。
在完成获取access_token和图片转码两步后,我们就可以发送请求、获取响应,实现人脸打分功能了。在这里,请求地址request_url、请求头headers和请求参数params都只需按照百度人脸检测API说明文档(ERENCE/Ck3dwjgn3)里面的格式即可,在使用requests.post()方法发送请求后,百度API服务器就会将人脸检测结果(json格式数据)返回给我们,我们只需要使用response.json()方法将json字符串类型的响应内容转换为python对象(字典格式),然后提取我们想要的内容的就好。
在此,我就只提取了年龄、人脸评分、性别和脸型的信息,除此之外,我们还可以获取人脸位置、情绪、表情和眼睛状态等信息。我们最关心的当然就是人脸评分了,这个评分的取值范围在0-100之间,越大表示越美。
|