关键词:
Python调用腾讯API实现人脸检测
1. 作者介绍
张玉,女,西安工程大学电子信息学院,2021级硕士研究生
研究方向:模式识别与人工智能
电子邮件:994851526@qq.com
宋智伟,男,西安工程大学电子信息学院,2021级硕士研究生
研究方向:深度学习和图像处理技术
电子邮件:279657596@qq.com
孟莉苹,女,西安工程大学电子信息学院,2021级硕士研究生,张宏伟人工智能课题组
研究方向:机器视觉与人工智能
电子邮件:2425613875@qq.com
1. 腾讯云人脸检测API
(1)腾讯云人脸检测API接口介绍
腾讯云·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、五官定位、人脸搜索、人脸比对、人脸验证、人员查重、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于智慧零售、在线娱乐、智慧楼宇、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
人脸检测与分析的检测给定图片中的人脸的位置,相应的面部属性和人脸质量信息,位置包括(x,y,w,h),面部属性包括性别(gender)、年龄(age)、表情(expression)、魅力(beauty)、眼镜(glass)、发型(hair)、口罩(mask)、姿态(pitch,roll,yaw)、人脸质量信息包括整体质量分(score)、模糊分(sharpness)、光照分(brightness)、五官遮挡分(completeness)。
(2)扫码注册登录腾讯云账号
(3)登陆后便可实名认证
(4)实名认证后领取免费资源
每月都可以免费享受一定额度的免费调用(10000次/月),每个月初自动发放,可以在人脸识别的资源包管理里看到。
(5)新建密钥
云产品→管理与统计→访问密钥→API密钥管理→新建密钥
(6)调用方式
腾讯云API接口文档访问地址:https://cloud.tencent.com/document/api
腾讯云提供了丰富的接口,可以通过各种编程语言快捷的条用腾讯云提供的各种服务,腾讯云接口的调用提供两种方式:
①根据接口文档直接调用(需要自己组合接口调用的验证签名以及公共参数);
②使用腾讯云开发者工具套件(SDK)调用。
2.调用API过程
1、根据接口文档直接调用
在产品中找到人工智能→人脸识别
进入管理控制台
点击人脸检测与分析
以上该页面右上角有一个API文档,即人脸检测与分析API文档,新建窗口查看文档。
人脸检测与分析的API文档中有详细的接口描述、输入参数、输出参数以及示例,然后“点击调试”进入API Explorer。
参数有选填的有必填的,在“参数说明”里,每个参数都有详细说明。
例如,只选择地域参数ap-beijing,输入最大人脸数1,还有人脸最小size34,然后利用第三方网站进行“Base64在线编码解码”将自己想要输入的图片转成Base64数据填入image,也可以输入图片的url地址链接,也可利用第三方网站进行生成,然后发起调用,可以得到图片长宽、人脸长宽、人脸坐标的输出参数,如下图所示。
在人脸检测与分析相关接口里,还有一个人脸检测与属性分析,它与人脸检测与分析的区别如下,“FaceAttributesType”可以选年龄、性别、情绪等属性,合法值为(大小写不敏感):None、Age、Beauty、Emotion、Eye、Eyebrow Gender、Hair、Hat、Headpose、Mask、Mouth、Moustache、Nose、Shape、Skin、Smile,None为不需要返回。
如人脸属性选定年龄,可输出age参数
2、SDK调用
(1)代码解析
●安装需要的库
pip install tencentcloud-sdk-python
pip install base64
●从SKD包导入相应产品模块
from tencentcloud.common import credential
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.iai.v20200303 import iai_client, models
import base64
●定义一个json函数,以二进制方式读取图片,然后对读取的图片进行base64编码
def get_json(img_dir):
with open(img_dir, 'rb') as f:
base64_data = base64.b64encode(f.read())
base64_code = base64_data.decode()
●调用人脸检测与分析API
try:
httpProfile = HttpProfile()
httpProfile.endpoint = "iai.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.signMethod = "TC3-HMAC-SHA256"
secretId,secretKey
cred = credential.Credential(secretId,secretKey)
client = iai_client.IaiClient(cred,"ap-beijing",clientProfile)
req = models.DetectFaceRequest()
●人脸参数,这里我选择返回人脸属性和质量信息
req.MaxFaceNum = 1
req.Image = base64_code
req.NeedFaceAttributes = 1
req.NeedQualityDetection = 1
●返回参数使用json可读格式
json_data = resp.to_json_string()
●输入secretId、secretKey以及图片路径
secretId = '填入自己新建的访问密钥'
secretKey = '填入自己新建的访问密钥'
img_dir = r"D:\\调用腾讯API进行人脸检测\\646.jpg"
(2)完整代码
# 从SKD包导入相应产品模块
from tencentcloud.common import credential
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.iai.v20200303 import iai_client, models
import base64
# 以二进制方式读取图片,然后对读取的图片进行base64编码和解码
def get_json(img_dir):
with open(img_dir, 'rb') as f:
base64_data = base64.b64encode(f.read())
base64_code = base64_data.decode()
try:
# 实例化一个请求-响应协议
httpProfile = HttpProfile()
httpProfile.endpoint = "iai.tencentcloudapi.com" # 接口请求域名
# 实例化一个客户端配置对象
clientProfile = ClientProfile()
clientProfile.signMethod = "TC3-HMAC-SHA256" # 指定签名算法
# 实例化一个认证对象
cred = credential.Credential(secretId,secretKey) # 传入腾讯云账户 secretId,secretKey
client = iai_client.IaiClient(cred,"ap-beijing",clientProfile) #传入地域参数
# 实例化一个请求对象
req = models.DetectFaceRequest()
# 人脸检测参数
req.MaxFaceNum = 1
req.Image = base64_code
req.NeedFaceAttributes = 1
req.NeedQualityDetection = 1
# 通过 client 对象调用想要访问的接口,需要传入请求对象
resp = client.DetectFace(req)
# 输出 JSON 格式的字符串回包
json_data = resp.to_json_string()
return json_data
except TencentCloudSDKException as err:
print(err)
return None
# 填入自己新建的访问密钥和图片的详细地址
secretId = '填入自己新建的访问密钥'
secretKey = '填入自己新建的访问密钥'
img_dir = r"D:\\调用腾讯API进行人脸检测\\646.jpg"
json_data = get_json(img_dir)
print(json_data)
(3)运行结果
请求图片的宽度:551
请求图片的高度:690
Face infos(人脸信息列表)
人脸坐标信息: x=186,y=143,width=164,height=236
人脸属性信息:
gender(性别)=0,是女生
Age(年纪)=23岁
Expression(表情)=67
Glass(眼镜)=false,未戴眼镜
人脸姿态角度:
Pith(俯仰角,脸向上下侧转动的角度)=18
Yaw(偏航角,脸向左右转动的角度)=-10
Roll(滚动角,照片中脸旋转角度)=-1
Beauty(魅力)=100
Hat(帽子)=false,未戴帽子
Mask(口罩)=false,未戴口罩
Hair(发型):
length(长度)=3,bang(刘海)=1,color(颜色)=1
Eye open=true,睁着眼
人脸质量分信息:
score=78
Sharpness(锐度)=100
Brightness(亮度)=51
Completeness(完整性):
眉毛,眼睛,鼻子,脸颊,嘴巴,下巴
FaceModelVersion(人脸识别所用的算法模型版本): 3.0
RequestId(唯一请求 ID,每次请求都会返回)
输入男性:
运行结果:
输入戴帽子戴口罩的人像:
运行结果:
输入老人:
运行结果:
3.拓展实验
输入原始图片:
运行结果(部分)
Age:27
Beauty:87
Gender:0
Hat:False
Mask-False
对原始图片进行一些处理,研究这些处理对人脸检测与分析的结果的影响
结果如表格所示
如表格可知,对人脸进行随即遮挡和旋转,对人脸年龄检测有一定的影响,但对于遮挡口鼻时的口罩检测相对准确。
4.问题与分析
问题1:运行报错
解决:图片过大,图片base64编码后大小不能超过5M,将输入图片重新编辑一下大小。
问题2:属性值存疑
①对人脸属性中性别的数值存疑,输入一个女性图片,gender=0,我以为女性是0,男性是1,随后输入了一个戴着帽子的男性图片,gender=2
解决: 输入其他男性的图片,gender=99,又尝试了一些其他人脸图片,于是我得出结论,从0到99是女性到男性的数值变化,50是中间值,那个等于2的男性图片应该是因为他戴着帽子而且是个漂亮的男孩子。
②头发颜色属性信息值存疑
解决:多次测试具有不同头发颜色属性的人脸图片,发现得出的数值,黑色是2,红色是2,棕黑是1,白色是1,粉色是1,光头是0,戴着帽子是0。
所以我得出结论:
没有头发是0,浅色是1,深色是2。
至此,还有一些其他属性值存在疑惑,且还存在检测不准确的情况,例如除了会把男生检测成女生,还有没有戴帽子的人检结果中Hat=true,Hair中的length长度属性和bang刘海属性值还未准确知其代表含义,欢迎大家一起探索研究,批评指正!
python调用华为api实现人脸比对(代码片段)
目录1.作者介绍2.背景及访问流程介绍2.1人脸识别服务介绍2.2华为人脸服务2.3华为API访问流程2.4构建HTTPS协议2.5人脸识别限制要求3.关于实验代码、实验过程、测试结果3.1Token获取代码3.2调用人脸比对算法API3.3结果输出3.4... 查看详情
python调用腾讯api进行人脸身份证比对(代码片段)
Python调用腾讯API进行人脸身份证比对1.作者介绍2.人脸身份证比对介绍2.1应用场景3.代码调试3.1实验过程3.2编辑参数3.3查看API并复制进程序3.4完整代码3.5运行结果1.作者介绍钱文浩,男,西安工程大学电子信息学院ÿ... 查看详情
python实现人脸识别(代码片段)
文章目录叨叨几句准备工作代码流程叨叨几句哈喽兄弟们,今天实现一下人脸识别。先问大家一个问题什么是百度Aip模块?百度AI平台提供了很多的API接口供开发者快速的调用运用在项目中本文写的是使用百度AI的在线接... 查看详情
调用腾讯优图开放平台进行人脸识别-java调用api实现
ttp://open.youtu.qq.com官网腾讯产品文档直接234.第一步:鉴权服务技术方案Java代码实现如下import java.util.Date; import com.baidu.aip.util.Base64Util; /** * 获取Authorizatio 查看详情
python调用百度api实现人脸融合(代码片段)
目录1.作者介绍2.人脸融合介绍3.调用百度智能云API4.代码解析4.1导入库4.2获取token4.3读取图片,转换编码4.4调用百度智能云接口实现图片融合4.5下载融合图片4.6运行主程序4.7融合结果展示5.完整代码1.作者介绍刘帅波,男... 查看详情
opencv-python也能实现人脸检测了(代码片段)
opencv中也可以实现深度学习中的人脸识别算法了。是怎么一回事呢?就是opencv中的DNN库,更新了好多深度学习的模块或者说是库函数,这样就让我们摆脱了安装庞大繁琐的深度学习框架。我们只需下载相应的权重文件... 查看详情
python调用腾讯api进行营业执照核验(代码片段)
目录1.作者介绍2.腾讯API介绍2.1腾讯云文字识别(OCR)2.2营业执照核验(BLV)2.3调用腾讯API实现营业执照核验2.4参数分析3.实验过程3.1实验部分3.2运行结果参考1.作者介绍李嘉鹏,男,西安工程大学电子信息... 查看详情
python调用腾讯api进行银行卡识别(代码片段)
目录1.作者介绍2.腾讯云银行卡识别介绍2.1腾讯云银行卡识别API接口描述2.2接口说明2.3调用腾讯API实现银行卡识别3.实验过程3.1实验代码3.2运行结果1.作者介绍王杰,男,西安工程大学电子信息学院,2021级研究生研究方... 查看详情
python+opencv简单实现人脸检测多个和人脸识别2(附代码)(代码片段)
如果dilb和face_recognition第三方包安装失败,请移步到Python解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客上篇请移步到Python+dilb简单实现人脸检测(附代码)_水w的博客-CSDN博客本篇是在上篇的工作基础上... 查看详情
opencv调用手机摄像头与人脸检测(代码片段)
...器视觉环境搭建1.OpenCV下载2.OpenCV安装3.安装测试二、OpenCV调用摄像头及人脸检测1.调用电脑摄像头2.调用手机摄像头及人脸检测2.1准备工作2.2代码实现三、总结四、参考文献一、OpenCV机器视觉环境搭建1.OpenCV下载本文是基于Windows... 查看详情
腾讯优图人脸检测
参考技术A小程序使用腾讯优图实现人脸检测wx.request(OBJECT)使用接口https://youtu.api.qcloud.com/youtu/api/detectface这里说明了这个接口需要一个签名和appid,图片数据需要转成base64本来是使用canvas实现图片截图,在通过upng.js转成base64位截图... 查看详情
人脸检测实战终极:使用opencv和python进行人脸对齐(代码片段)
使用OpenCV和Python进行人脸对齐这篇博文的目的是演示如何使用OpenCV、Python和面部标志对齐人脸。给定一组面部标志(输入坐标),我们的目标是将图像扭曲并转换为输出坐标空间。在这个输出坐标空间中,整个数... 查看详情
基于python的百度ai人脸识别api接口(可用于opencv-python人脸识别)(代码片段)
基于Python的百度AI人脸识别API接口(可用于OpenCV-Python人脸识别)资源:https://download.csdn.net/download/weixin_53403301/43644312之前的项目:【最新】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别... 查看详情
python人脸遮挡检测(代码片段)
人脸检测+人体检测c++android实现(代码片段)
人脸检测+人体检测C++Android实现本博客将实现C++版本的人脸检测,人脸关键点检测,人体检测,人脸+人体检测,推理框架采用TNN,在普通Android手机,CPU和GPU都可以达到实时检测的效果人... 查看详情
人脸检测+人体检测c++android实现(代码片段)
人脸检测+人体检测C++Android实现本博客将实现C++版本的人脸检测,人脸关键点检测,人体检测,人脸+人体检测,推理框架采用TNN,在普通Android手机,CPU和GPU都可以达到实时检测的效果人... 查看详情
人脸识别经典网络-mtcnn(含python源码实现)(代码片段)
人脸检测-mtcnn本文参加新星计划人工智能赛道:https://bbs.csdn.net/topics/613989052文章目录人脸检测-mtcnn1.人脸检测1.1人脸检测概述1.2人脸检测的难点1.3人脸检测的应用场景2.mtcnn2.1mtcnn概述2.2mtcnn的网络结构2.3图像金字塔2.4P-Net2.5R-N... 查看详情
javacv实现图片中人脸检测完整代码教程(代码片段)
...到,可能他们提供的都是最基础的接口,如果想实现自己的想要的某种效果,比如人 查看详情