APP下载

基于Python的人脸识别技术研究

2023-04-27陈佳佳邱晓荣熊宇昊段莉华

电脑知识与技术 2023年8期
关键词:图像处理人脸识别

陈佳佳 邱晓荣 熊宇昊 段莉华

关键词:人脸识别; 百度AI开放平台; 图像处理; Python

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2023)08-0034-03

0 引言

当今社会人工智能技术突飞猛进,机器人产业的经济发展蒸蒸日上,服务型机器人拥有明显的应用特性,服务型机器人不仅可以结合行业的需求,而且结合人工智能与人类和环境协同,不断为人们提供智能化高科技的服务体验。在机器智能化中,语音与视觉交互极大地增强了人与机器人间的联系[1]。当前,语音交互早已是人们生活中使用最广泛的交互方式,语音交互对于硬件的要求不高,使用扬声器和麦克风就可以實现,不用操作控制器,仅仅通过对话就可命令机器实现下达的命令。随着人工智能科技不断迅猛发展,更多服务型机器人已拥有语音及人脸识别技术的功能,给人们的生活带来了提升,这类机器已经用于学校以及一些小区的门禁方面,运用人脸识别技术判断是否可以进入,图书馆、银行以及商场也拥有这类机器,这类机器可以吸引人们完成人脸识别并且验证用户信息或者用于人脸扫码支付商品,机器与用户面对面交互实现高效运作。

1 国内外人脸识别研究现状

国内对于人脸识别发展的态度总体是好大于坏,人脸识别技术首先在我国上海得到应用,人脸识别规模逐步增大;而在国外,在政府端和商业端,人脸识别涉嫌种族歧视与人权侵犯,所以阻碍了人脸识别技术的开发与应用。

1.1 研究目的

本文的研究目的有以下两个方面:

(1) 语音识别与数据挖掘相联系,将服务机器人与用户之间实现语音交互。

(2) 使用图像识别和深度学习中的神经网络模型,实现服务机器人的人脸识别。服务型机器人一般放置于公共场合,通过机器人的摄像头拍摄的视频识别中除了当前用户的人脸,还有很多无关信息干扰人脸识别,因此在人脸识别与检测的过程中要求过滤干扰人脸的因素,同时对用户人脸进行跟踪,锁定用户人脸进行识别,保证识别的准确性[2]。

1.2 研究方案

实现人脸识别分为4个步骤:

(1) 百度云控制台,找到人工智能人脸识别。

(2) 创建应用,获取密钥,Access Token[3]。

(3) 调用人脸识别SDK转换为可视化文本。

(4) 人脸识别检测图片中的人脸并标记出位置信息。

2 相关算法及技术

自然语言处理算法、人脸检测、人脸识别、百度离线调用SDK服务、API服务。

2.1 人脸检测

人脸检测技术难点在于人脸内部容易变化、外部容易受光线干扰。人脸图像处理的重要组成是人脸检测技术,由于采集到的人脸图像存在一定角度偏转等问题, 所以对于旋转人脸检测的问题显得格外重要[4]。

当检测到人脸关键点后,就可以对人脸做一个空间归一化,这个空间归一化的操作就叫人脸对齐(facealignment).这个操作可以使后续模型提取与五官的位置无关,只有五官的形状纹理相关的特征,可以极大地提升人脸识别、人脸属性分析、表情分类等算法的性能和稳定性。

在进行人脸检测时,已得到人脸的关键点land⁃mark,用landmark对人脸进行对齐,对齐的方式是通过图像变换,将人脸上的眼睛、鼻子、嘴巴对准到一个预设的固定位置上。

# 每个epoch都有一个训练和验证阶段

for phase in ['train', 'val']:

if phase == 'train':

# 调用step函数进行参数更新

scheduler.step()

# Set model to training mode model.train()

else:

# Set model to evaluate mode model.eval()

(1) 实现基于百度平台的人脸检测:①API调用②

SDK调用。

(2) 实现人脸图像采集。定位人脸关键点进行人脸识别检测。

(3) 系统方案设计与实现。

2.2 人脸识别的特征

由于人脸识别中人脸特征依据每个区域的不同和每个分层不同的种类,例如整体的特征或者是一点的特征,所要提取的方法也会有许多不同的种类,在当前大部分机器中得到广泛使用的一种方法,它能够对所要检测目标的信息转化并且对其细分,使其与卷积神经网络相结合,能够进一步提高人脸检测的效率以及精准度。

人脸识别中最重要的一部分是特征分类环节,其中特征分类环节中较为常见的就是支持向量机,向量机有着较高的识别检测精准度,但是向量机不能进行实时检测,还有一种为目前人们常使用的人脸识别的方法就是卷积神经网络,卷积神经网络可以减少设置卷积层的参数,从而让网络更加简单,随着机器处理数据各种类型的改变,它的层数同样也在发生改变,可以解决更加复杂的分类等问题,在便于训练同时,也拥有更好的普适性图像识别,笔者选取的特征不仅能描述图像,还要能够很好地区分不同类别的图像[5]。

2.3 人脸识别的方法

人脸识别的方法主要是以子空间的人脸识别、几何特征的人脸识别、局部特征[6]描述符、支持向量机的人脸识别、稀疏表示以及深度学习的方法为基础。脸是由嘴巴、鼻子、眼睛等器官组成,众所周知,每个人脸的五官有着各种差异,进而使世界上每个人的脸与众不同,所以把人脸上五官的几何描写作为人脸检测重要的特征。但是,只从眼睛、嘴巴、鼻子之间的距离思考,人脸之间的相似之处很难区分,所以在几何结构方法的基础之上,提出以弹性模板为基础的方法,用在检测不一样大小,以及有着偏转角度的人脸。但在进行人脸检测之前,要依据准备检测人脸的形状,设计检测弹性模板的轮廓,不然就会影响收敛的效果。

#主程序入口

if __name__ == "__main__":

# 运行前清空上次运行识别结果缓存

if data == 'ok':

# 原图进行ROI裁剪

img_roi = image_roi()

# 将裁剪后的图像进行预处理

src_roi = image_pre(img_roi)

# 将预处理后的图像进行模型推理

label, pred_class = modelpre(src_roi)

目前分析和研究的方法就是基于人脸识别技术,因为一张普通的人脸图像就有100万左右的像素,其中每一个像素与之相对应的都是一个维度,一副人脸的图像有着100万左右的维数,这样的数据处理对人脸识别来说是十分困难的。基于子空间的方法和其中的核心就是降低所要检测的维度,把之前高维的人脸图像,通过一些转换,把他变到一个低维度的子空间之中,这样一来,在子空间中可以让数据处理和分析进一步简化。

在日常生活中,人脸会因为各种其他的外在因素而发生不同的改变,例如人们的表情,所在地方的光照以及人的年龄改变等,同时也有些局部特征变化很小,例如脸部的下三角区域或者人的虹膜之类,人脸的局部特征描述符方法被提出的前提就是存在局部特征的概念。局部特征描述符方法的优势就是把整体转化为部分,如把一整幅人脸图像分成许多局部特征来进行分析处理,同时也保存了图像整体特征的结构,它也不受其他外界因素干扰的性质。

2.4 Python 人脸识别开发

如图3所示,OpenCV2中人脸检测使用的是de⁃tectMultiScale函数[7]。1) 人脸数据;2) 算法;3) 建立模型;4) 训练模型;5) 测试模型;6) 上线使用。Python中有调用摄像头的模块,以及将手机的摄像头转换地址的模块,可以在代码中加入,调用摄像头并控制拍摄照片,这样就可以结合起来,实现动态人脸识别。

搭建Python编译环境,并预导入OpenCV库。

3 数据与图像处理

3.1 图像处理

二值化数据相对比较简单,通过二值图像,能更好地分析物体的轮廓与形状[8]。闭运算能够填平缺陷,还能保持形状与总位置不变,通过填充图像的凹角来滤波图像[9]。

# 图像处理:形态学开运算

kernel = np.ones((3,3),np.uint8)

opening=cv2. morphologyEx(dst_2, cv2. MORPH_

OPEN, kernel)

# 图像处理:包络轮廓

#binary,contours,hierarchy=cv2.findContours(open⁃ing, cv2. RETR_EXTERNAL, cv2. CHAIN_APPROX_SIMPLE)

contours, binary=cv2. findContours(opening, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)

# 如果找不到轮廓,则返回原图,防止空载报错

src_roi = image_source

3.2 数据处理

由于获取的数据(比如图片分辨率),大多不一致,为了更好地训练模型,常常需要对数据进行简单转换。

# 数据类型转换

box = np.int64(box)

# 根据最小外接矩形的中心坐标与角度,构建一个旋转矩阵rot_img

# 输入目标轮廓矩形中心点坐标

center = rect[0],矩形角度angle = rect[2]

rot_img=cv2. getRotationMatrix2D(rect[0], rect[2], 1.0)

# 使用前面获得的四个矩形顶点坐标数组[box],在原图层绘制轮廓

cv2. drawContours(image_source, [box], 0, (0, 255,0), 1)

# 利用旋转矩阵rot_img,原图层img实现中心仿射变换,变换后的图层尺寸保持不变

# height = image_source. shape[0],width = im⁃age_source.shape[1]

3.3 方法验证

人脸比对是对一个场景中的静态图像或动态视频中的人脸与存储的人脸图像库作比对,用来查找视频或者图像中人的真实身份过程[10]。人脸比对的核心步骤就是提取特征,比对特征的相似度。通过测试结果比较可看出,多次人脸识别的结果基本保持稳定,根据不同的使用场景,对人脸识别精确度的要求不同,能够满足的需求也不同。具体的测试效果如表1所示[10]:

通过多次识别,来提高实验的准确率。预设人脸信息库中,共注册了100个用户信息及人脸图像,选择3张图作为测试对象,测试次数不同,命中率不同,为了提升人脸识别精确度,笔者多次对图片中的人脸大小、位置、多张人脸以及视频中的人脸截取等进行识别。

4 结束语

随着生活的改善,人们网上购物越来越频繁,使得快递物流行业发展迅速,这也让人脸识别在物流行业之中的使用更加迅猛发展,人们在取快递时越来越注重快递签收时的安全与准确性,这也是人脸识别技术应用受到各大快递公司青睐的原因,例如各个小区及一些特定的地点有着存放快递的专柜,这些专柜使用扫描二维码或者人脸识别的方式让快递的购买者来取快递,快递专柜在人脸识别技术的基础之上,还增加了红外双目活体检测,这一举动极大提高了用户取件的效率,减少了快递领取错误或者快递被冒名领取等现象,更加保障了快递的安全性。除此之外部分地方已經有刷脸取快递的签收系统,这种系统可以在短时间内让用户完成快递的签收,人脸识别的深度学习应用在如今的快递物流行业之中也已经具有普遍性,把人脸识别技术应用于快递签收中,有效地保障顾客快递的安全性,同样也进一步提高了用户的体验感。

猜你喜欢

图像处理人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
基于图像处理的机器人精确抓取的设计与实现
机器学习在图像处理中的应用
基于图像处理的定位器坡度计算
基于类独立核稀疏表示的鲁棒人脸识别
Photo Shop通道在图像处理中的应用
基于K-L变换和平均近邻法的人脸识别