Python调用腾讯API实现人脸检测

  • 1. 作者介绍
  • 1. 腾讯云人脸检测API
  • 2.调用API过程
    • 1、根据接口文档直接调用
    • 2、SDK调用
      • (1)代码解析
      • (2)完整代码
      • (3)运行结果
  • 3.拓展实验
  • 4.问题与分析

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,secretKeycred = credential.Credential(secretId,secretKey)client = iai_client.IaiClient(cred,"ap-beijing",clientProfile)req = models.DetectFaceRequest()

●人脸参数,这里我选择返回人脸属性和质量信息

req.MaxFaceNum = 1req.Image = base64_codereq.NeedFaceAttributes = 1req.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,secretKeyclient = iai_client.IaiClient(cred,"ap-beijing",clientProfile) #传入地域参数# 实例化一个请求对象req = models.DetectFaceRequest()# 人脸检测参数req.MaxFaceNum = 1req.Image = base64_codereq.NeedFaceAttributes = 1req.NeedQualityDetection = 1# 通过 client 对象调用想要访问的接口,需要传入请求对象resp = client.DetectFace(req)# 输出 JSON 格式的字符串回包json_data = resp.to_json_string()return json_dataexcept 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. Python调用腾讯API进行人脸身份证比对

    目录 1.作者介绍 2.调用腾讯人脸身份证比对的知识介绍 2.1 应用场景 3.调用腾讯云API步骤 3.1微信扫码登录 3.2鼠标选择云产品,并找到人脸核身 3.3进入人脸核身界面 3.4编辑参数 ...

  2. Python调用腾讯API进行人像动漫化

    Python调用腾讯API进行人像动漫化 1. 作者介绍 2. API获取 3. 代码调试 3.1整体结构 3.2 代码解析 3.3完整代码 3.4效果展示: 4. 问题与分析 1. 作者介绍 李犇, ...

  3. Python调用腾讯API合成语音

    Python调用腾讯API合成语音 腾讯语音合成 Python调用腾讯接口 说明 腾讯语音合成 腾讯AI开放平台中有ai语音合成的接口,其体验网址是https://ai.qq.com/product/ ...

  4. Python调用腾讯API进行银行卡识别

    目录 1. 作者介绍 2. 腾讯云银行卡识别介绍 2.1 腾讯云银行卡识别API接口描述 2.2 接口说明 2.3 调用腾讯API实现银行卡识别 3. 实验过程 3.1 实验代码 3.2 运行结果 1 ...

  5. Python调用腾讯API发送短信验证码

    目录 1.作者介绍 2.腾讯云简介 3.实现过程 3.1进入官网 3.2扫码登录 3.3实名制注册 3.4获取腾讯API 4.完整代码与结果 4.1完整代码 4.2实验结果 1.作者介绍 王晓明,男, ...

  6. python调用百度翻译api+离线语种检测

    百度翻译api调用(具体参考的哪篇博文找不到了,好几篇太像了,原作者留意到可以告知我改转载附上链接): import urllib, hashlib import random import requ ...

  7. Python调用EasyDLBML模型API实现缺陷检测

    前言 首先需要知道的是: ①EasyDL和BML平台之间的区别在于BML更专业,训练时的算法.网络以及各种训练参数可选择性更高.而EasyDL可选择性更低,学习成本相对也更低. ②无论是EasyDL还 ...

  8. python实现简单的api接口-简单实现Python调用有道API接口(最新的)

    # ''' # Created on 2018-5-26 # # @author: yaoshuangqi # ''' import urllib.request import urllib.pars ...

  9. 用Python调用华为云API接口发短信

    [摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...

  10. python 调用 .netcore api_浅谈Python调用XBee的API来进行通讯

    浅谈Python调用XBee的API来进行通讯 用python编程来控制串口(COM口),来让一对XBee进行通讯.不需要借助终端来发送和接收数据,增大了XBee使用的灵活性.这才是使用XBee模块的 ...

最新文章

  1. lda 吗 样本中心化 需要_PCA 与 LDA 分析
  2. java基础系列:集合入门
  3. MFC中获取任务栏大小
  4. .h .dll .lib
  5. python下载谷歌地图瓦片_python获取bing地图发布自己的TMS服务(一)下载瓦片
  6. C++socket编程(八):8.2简单的基于UDP的客户端和服务端
  7. 一大早,分享一个好消息
  8. I.MX6 linux kernel编译错误处理
  9. ROS 机器人操作系统:版本说明
  10. 什么是逻辑结构以及物理结构
  11. mac的python换字体_Python -mac-画图及设置坐标中文字体
  12. 计算机组成原理学习笔记(7.I/O系统)
  13. 大工2021年11月份《电气制图与CAD》课程设计离线作业
  14. [译]网页移动端SEO权威指南
  15. 省社科基金本子评审标准总结
  16. 如何排查网络丢包问题
  17. 从项目管理角度看马谡失街亭
  18. ipad如何改造成linux终端,如何实现让ipad上使用终端terminal
  19. 四位行波进位加法器_加法器学习记录
  20. 从网景到chrome

热门文章

  1. FIR滤波器设计(1)——利用matlab的fdatool工具箱设计FIR滤波器参数
  2. 【数据分析】京东2019校招数据分析工程师笔试题
  3. Android怎么设置快捷键,Android Studio的快捷键设置方法
  4. 为什么博士后的年薪远远高于刚入职的大学老师?
  5. 【转】国家集训队论文分类整理 作者:洪雁书
  6. /etc/shadow文件是什么?
  7. Xcode 学习OpenGL 报错:stbi_set_flip_vertically_on_load
  8. 东北大学《传输原理》随堂练习
  9. 【qq机器人】天气查询
  10. 【帧率倍频】基于FPGA的视频帧率倍频系统verilog开发实现