调用华为云API实现口罩识别
1.作者介绍
范小雨,女,西安工程大学电子信息学院,2024级研究生
研究方向:机器视觉与人工智能
电子邮件:1019044907@qq.com
高金年,男,西安工程大学电子信息学院,2024级研究生,张宏伟人工智能课题组
研究方向:机器人与智能装备控制技术
电子邮件:2432529790@qq.com
2.华为人脸检测API
2.1 API介绍
应用程序编程接口(英语:Application Programming Interface,简称:API),是一些预先定义的函数。
目的:让应用程序开发人员得以调用一组例程功能,而无须考虑其底层的源代码为何、或理解其内部工作机制的细节。
2.2 人脸检测与口罩检测
人脸检测是对输入图片进行人脸检测和分析,输出人脸在图像中的位置、人脸关键点位置和人脸关键属性。华为云口罩检测属于人脸检测的扩展功能,通过深度学习算法分析图像中的人脸区域,判断是否佩戴口罩。
2.3 主要特性
检测内容:人脸位置、口罩佩戴状态(是/否)、置信度。
适用场景:公共场所安防、疫情防控、智能门禁等。
2.4 约束限制
1、 只支持识别JPG、PNG、JPEG、BMP格式的图片。
2、 为保证识别效果,人脸图片建议要求如下:
a) 光照大于200lux、无反光强光阴影现象。
b) 人脸无遮挡、整体清晰无拖尾抖动等运动模糊。
c) 侧脸不超过30°、俯仰角小于15°、偏转角小于15°、图片中人脸保持竖置正脸。
3、由于过大图片对识别算法精度无明显提升,同时会导致时延较长,建议传入图片小于1MB,一般500KB左右足够。图片中人脸像素建议120*120以上。
3.实验过程
3.1 获取API
1.注册华为云账号,进行实名认证,开通服务。
3.2登录人脸识别管理控制台:
单击页面右上角的用户名,并选择“我的凭证”。进入“我的凭证”页面。
3.3单击“访问秘钥”页签下的“新增访问密钥”。弹出“新增访问密钥”对话框。
3.4 AK/SK认证,下载文件credentials.csv
3.5调试接口
显示“调试成功”即可。
注:本次实验使用base64的图片格式,python实现代码后附。
image_base64:图像数据,base64编码后图像大小不得超过8MB,图片为JPG/JPEG/BMP
/PNG格式。
attributes (人脸关键属性):
本案例中使用base64的图片格式,python实现代码后附。attributes (人脸关键属性,比如头部姿态):2:年龄 4:装束(帽子、眼镜) 6:口罩 7:发型 8:胡须 11:图片类型 12:质量 13:表情 21:人脸图片旋转角(顺时针偏转角度),支持0°、90°、180°和270°图片旋转。
4.实验结果
4.1代码实现
#############下载需要的库
import base64
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkfrs.v2.region.frs_region import FrsRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkfrs.v2 import *
###############导入AK和SK
if __name__ == "__main__":
ak = "输入获得的AK"
sk = "输入获得的SK" # ak和sk读取
credentials = BasicCredentials(ak, sk) \
client = FrsClient.new_builder() \
.with_credentials(credentials) \
.with_region(FrsRegion.value_of("cn-north-4")) \
.build()
f = open('C:\\图片路径\\图片名称.png', 'rb') # 图片路径读取
img = base64.b64encode(f.read()) # 图片转换为base64格式
try:
request = DetectFaceByBase64Request() # 人脸在图像中的位置
request.body = FaceDetectBase64Req(
attributes="6", # 人脸关键属性,这里的6代表口罩。
image_base64="asdfghjkl") # 图片的base64编码
response = client.detect_face_by_base64(request)
print(response) # 输出结果
except exceptions.ClientRequestException as e: # 有误情况的输出
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
注:本次实验使用base64的图片格式,图片的base64编码导出方法如下:
访问在线 Base64 转换网站(如 base64.guru)。
上传图片文件,网站会自动生成 Base64 编码。
复制结果(格式为data:image/png;base64,iVBORw0KGgo…)。
4.2运行结果
1.输入一张佩戴了口罩的图片:
输出结果包括以下2个部分:
1、 人脸在图片中的位置。(红线所示)
2、 人脸的特征:是否佩戴口罩mask,是(输出:yes);否(输出:none)。(方框所示)
2.输入一张未佩戴口罩的图片:
输出结果包括以下2个部分:
1.人脸在图片中的位置。(红线所示)
2.人脸的特征:是否佩戴口罩mask,是(输出:yes);否(输出:none)。(方框所示)
3 输入多人佩戴口罩的图片
输出结果:
输出三个结果,说明该人脸口罩检测可以识别多人面部特点。