APP下载

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

2021-06-29丁晴

数字技术与应用 2021年5期
关键词:文件夹人脸识别人脸

丁晴

(上海公安学院,上海 200137)

0 引言

当前,随着平安城市、智慧城市建设的快速发展,以及视频监控设备的普及安装,城市公共安全的技术应用日新月异,大数据、人工智能等前沿技术的应用更为视频监控提供了重要助力。人脸识别技术,通常也被称为人像识别或面部识别技术,是一种根据人类面部特征的信息进行人员身份识别的生物识别技术。[1]人脸识别技术能够在静态图像、动态视频或摄像机实时拍摄的视频流中检测和跟踪人脸,并可对人员身份进行识别。在公共安全领域的应用软件开发中,有大量的人脸识别业务需求。Python语言具有功能强大、运行高效的优点,现已成为人脸识别技术应用开发的主流技术。

1 人脸识别技术的特征

与指纹识别、虹膜认证等技术相比较,人脸识别技术作为一种新兴的生物特征识别技术,可以在被识别对象无感知的情况下对其进行远程身份识别,具有其他生物识别技术不可替代的优势。人脸识别技术具有几何特征、模型特征、统计特征和智能特征。

1.1 几何特征

人脸识别技术的识别对象是人类的面部特征,例如:面型、眉型、眼型、鼻型、口型、酒窝、眼袋、鼻孔等[2]。这些面部特征都是可以进行量化表示的几何数据,人脸识别提取面部图像中点与点之间的距离、线段的长度、线段之间的角度等数据,然后把这些点线之间的距离和相关比率转换为几何特征,从而实现对人脸的快速识别。

1.2 模型特征

人类的面部既相似,又不同。面部相似在于人脸的五官都具有相同的拓扑排列结构,几乎所有人的眼睛、眉毛、鼻子、嘴巴和耳朵的五官布局方向一致;面部不同在于五官部位的内部细节数据各不相同,例如:眉毛的浓密、眼睛的大小、鼻子的长度、嘴唇的厚度等。因此,人类面部的一些信息对应于一定的数据,根据脸型结构数据可以构建模型,利用调节参数的方式可以调节面部模型特征[3]。

1.3 统计特征

1991年,著名的“特征脸”(Eigenface)主成分分析和特征统计方法第一次被引入到人脸识别技术,在实用效果上取得了明显的进步。2013年,微软亚洲研究院的研究者首度尝试采集了10 万条公开人脸数据集,并进行统计分析,获得了人脸识别95.17%的精度。2014年3月,中国香港中文大学的汤晓鸥教授采集20万条公开人脸数据进行统计分析,把人脸识别精度推高到99.55%以上[4]。

1.4 智能特征

人脸识别利用大数据、深度学习、神经网络等技术,对人脸图像特征进行联想存储和记忆,并根据不同神经单元状态的概率实现对人脸图像准确识别[5]。在金融、通信、交通、教育和公共安全等领域,都能看到人脸识别应用的智能特征身影。在不久的将来,还会出现智能的“机器人战警”,车站、码头、机场、地铁、出入境边检等公共场所,都将成为逃犯和恐怖分子不可逾越的关卡。

2 人脸识别技术的流程

人脸识别集成了人工智能、机器学习、模型理论、专家系统、视频图像处理等多种技术,同时也是生物特征识别技术的最新应用,其流程可分为人脸检测、特征提取和人脸比对三个步骤。

2.1 人脸检测

人脸检测是指对于任意一幅给定的图像,采用一定的策略对图像进行搜索,以确定其中含有多少张人脸;如果有,则返回每张脸的大小和位置[6]。对于人脸这样复杂的图像,并没有一个简单的检测指标来判定是否为一张脸,而是需要使用机器学习算法在图像中进行成千上万次匹配,当每一次匹配成功后,才能认定是一张人脸。当然,人脸检测允许存在一定的容错率。

人脸检测技术难点在于人脸内部易变化、外部易受光线干扰。人脸检测是人脸图像处理的关键一步,由于采集到的人脸图像存在一定的角度偏转等问题,所以对于旋转人脸检测的问题就显得至关重要[7]。OpenCV是Intel公司于1999年建立的用C++语言编写的跨平台计算机视觉库,可以运行在Windows、Linux、Android和Mac OS操作系统上。OpenCV使用cascade算法把人脸检测问题分解为若干区块,可以迅速进行成千上万次检测,从而大大提高了人脸检测的效率和准确率。

2.2 特征提取

每个人的人脸相对于其他人都有不同的特征,例如:眼睛大小、眉毛粗细、纹理分布等。纹理分布是人脸的关键特征之一,被广泛用于人脸局部特征描述中;为了加强纹理分布特征提取并克服干扰因素对人脸图像的影响,通常对人脸图像进行滤波或预处理来降低干扰实现图像增强效果[8]。

人脸特征数据包括面型、眼睛、眉毛、鼻子、嘴巴等。眼睛特征数据有:左右眼睛的形状、大小、瞳孔距离等;眉左右毛的特征数据有:眉宽、眉高、眉距等;鼻子的特征数据有:鼻宽、眉高、最左与最右边缘距、鼻孔距等;嘴巴的特征数据有:嘴宽、嘴高、最左与最右边缘距等。

2.3 人脸比对

人脸比对是对一个场景中静态图像或动态视频的人脸,与存储若干已知身份的人脸图像库作比对,以发现场景中的单个或多个人的真实身份的过程[9]。目前,基于人工智能的人脸比对技术有很多,例如:Dlib人脸识别工具包、百度人脸识别API、腾讯云AI人脸识别等,各大公司的人脸识别技术各有千秋,基本上都是免费开放。

Dlib是一个包含机器学习算法的C++工具包,免费开源且本地化,广泛应用于机器人、嵌入式设备、人脸识别等领域。face_recognition是一个基于dlib的深度学习人脸识别库,它采用深度学习算法来获得训练数据,比对人脸图像的68个特征点,人脸识别准确率高达99.38%[10]。

3 构建Python软件开发平台

Python是一种计算机程序设计语言,是动态的面向对象的脚本语言。Python具有程序简洁、代码易读和模块化扩展等优点,拥有大量成熟的应用模块。用Python开发应用软件项目,不仅开发效率高,而且运行速度快。以下是在Windows 10环境下构建Python软件开发平台的步骤。

3.1 安装Python软件

Python3是对Python2的重大版本升级。Python3版本升级后,统一了代码编写规范,使程序代码简洁优美、快速运行。在互联网进入网址https://www.python.org/downloads/windows,可免费下载最新版的Python3.9.2安装软件包python-3.9.2-amd64.exe。下载完成后安装该文件,注意需要勾选Add Python3.9 to PATH(把Python3.9路径加入Windows环境变量),然后选Customize installation方式自定义安装,其余选项大多保持默认,安装目录可设为C:Python39。

3.2 安装Python相关模块

Python3.9内置了os、sys、string、math等常用模块,但一些不常用的模块需要另行安装。由于初安装的Python自带的在线安装软件pip版本较低,故需要先对pip进行软件升级,方法是运行Windows系统菜单“开始-Windows系统-命令提示符”或“Win+R”组合键输入cmd回车,打开命令行小窗口;对pip升级的cmd命令语句为C:python39python-m pip install--upgrade pip。

在命令行小窗口中,安装Flask轻量级Web框架模块、Requests网络访问模块、Pillow图像处理模块和OpenCV计算机视觉和机器学习库模块,其命令语句分别是:pip install Flask、pip install Requests、pip install Pillow、pip install opencv-python。

3.3 测试Python开发平台

Windows自带的记事本软件可以用来编辑程序代码,但功能较少。代码编程工具可选用免费的Notepad++7.5绿色单文件版。Notepad++软件大小仅几兆,体积小巧、运行便捷,支持众多编程语言。新建C:Python39app.py文件,程序为如下5 行代码,以UTF-8 无BOM 的编码格式保存。

在命令行窗口运行python C:Python39app.py,开启Web服务;浏览器打开http://127.0.0.1,如果看到网页显示“Hello Python!”,则说明Python软件开发平台已安装成功。

4 用Python开发人脸识别小项目

新建C:Python39WWW 文件夹,用于保存开发人脸识别小项目的相关程序和资源;然后在该文件夹中新建static和templates两个子文件夹。其中,static子文件夹用于保存人脸模型文件和静态图像文件,templates子文件夹用于保存响应用户查看请求的Html 模板文件。

4.1 准备人脸识别的资源和素材

OpenCV运用机器学习算法生成大量人脸模型,例如:正脸、笑脸、眼睛等,可免费使用。Python自带多种人脸模型文件,安装时已自动保存于C:Python39Libsitepackagescv2data文件夹中,无需从网络上搜索和下载。其中,haarcascade_frontalface_default.xml 是正脸模型,可用于对静态图像进行人脸检测。另外,还需准备一张含有人脸的照片faces.jpg,复制到C:Python39WWWstatic文件夹中,待Python程序检测。

4.2 编写Html模板文件

新建C:Python39WWW emplatesindex.html 模板文件,源代码如下。

在命令行窗口运行python C:Python39WWWapp.py,本地打开http://127.0.0.1或远程访问http://(IP地址),可看到上述程序从照片中标记出人脸的大小和位置,运行效果如图1所示。

图1 人脸检测程序运行效果图Fig.1 Running effect picture of face detection program

5 结语

人脸识别技术应用研究是一项极富挑战性的课题。目前人脸识别技术对于正面人脸的图像变化已有良好的检测能力,但随着环境变化和需求更新,人脸识别技术将会引来更多的挑战。人脸识别技术将与大数据、物联网等技术相互结合,实现对视频文件和实时监控进行人脸识别检索,以提高公共安全管理水平,并将迎来公共安全防范协作的新飞越。

猜你喜欢

文件夹人脸识别人脸
人脸识别 等
有特点的人脸
揭开人脸识别的神秘面纱
三国漫——人脸解锁
摸清超标源头 大文件夹这样处理
调动右键 解决文件夹管理三大难题
挂在墙上的文件夹
基于类独立核稀疏表示的鲁棒人脸识别
马面部与人脸相似度惊人
基于K-L变换和平均近邻法的人脸识别