【云驻共创】华为云AI实战营:人脸识别

萌兔之约 发表于 2021/11/27 18:14:36 2021/11/27
【摘要】 人脸识别(Face Recognition)是基于人的脸部特征信息进行身份识别的一种生物识别技术。人脸识别利用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸图像进行—系列的相关应用操作。技术上包括图像采集、特征定位、身份的确认和查找等。

前言:

AI正在改变我们的生活,正在改变我们身边的各行各业,但是这条通往智能世界的路并不平坦,其中一个巨大鸿沟就是AI人才的稀缺。在中国庞大的IT从业群体,AI开发者缺口达百万级

AI将成为全民普及性的技能,所以今天华为云EI为大家带来《2020华为云AI实战营》免费课程,大幅降低AI学习门槛,帮助庞大的软件开发者群体快速掌握AI技能,把AI用起来。

课程主要内容包括图像分类、物体检测、图像分割、人脸识别、OCR、视频分析、自然语言处理和语音识别这八大热门AI领域的基础知识、经典数据集和经典算法的介绍,每章课程都是实战案例,模型训练、测试、评估全流程覆盖,配合代码讲解和课后作业,帮助您掌握八大热门AI领域的模型开发能力。


2020年华为云AI实战营 第四章 人脸识别

一、人脸识别

1.1 人脸识别介绍


概述:

人脸识别(Face Recognition)是基于人的脸部特征信息进行身份识别的一种生物识别技术。人脸识别利用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸图像进行—系列的相关应用操作。技术上包括图像采集、特征定位、身份的确认和查找等。


  随着计算机科学与互联网技术的飞速发展,生物识别技术广泛应用于我们的社会生活中,例如指纹识别、人脸识别等。由于人脸识别具有非强制性和非接触性等特点,因此,作为生物识别技术的人脸识别方法很快成为重要的研究领域。

      人脸识别是一种基于人的脸部特征信息达到身份识别的方法,目前,研究人员提出了很多不同的人脸识别方法,且开发出不同种类的人脸识别系统, 然而,在实际应用中,这些人脸识别方法或系统却暴露出很多的问题,它们主要来自两个方面:一是人脸图像易受外界环境的影响,比如雨、雪、风、泥点等,这些因素的存在将对人脸的检测与识别过程造成不同程度上的噪声干扰。另一是人脸图像数据的维数相对较高,在实际应用中,经常需要对高维数据进行降维处理,且不同的数据降维算法会影响特征提取的效率,从而降低人脸检测与识别的准确率。


      目前,人脸识别研究中遇到的问题主要有:

(1)人脸受不同光照角度照射时,人脸图像上的阴影分布有所不同,所提取的特征会有所不同。

(2)人体和头部的姿态以及人脸不同表情对特征提取的影响。

(3)面部是否有遮挡物,比如是否戴眼镜,围巾,帽子等。

(4)人脸图像的高维特性所造成的小样本问题。



应用场景

安防场景:

●机场、客运站、火车站等安检

核对身份证信息

对比黑名单信息

寻找失踪人员

●银行人脸识别

信息验证




越来越多的安防场景开始使用人脸识别技术,在智能美颜、动态特效、facelD和相册自动分类也有应用。


人脸识别流程


1. 人脸检测:检测到人脸、捕捉人脸图像,通过过滤器过滤信息。

2. 人脸规范化:将人脸进行大小同一化,对人脸面部区域进行切割分析。

3. 人脸建模:对局部纹理和特征进行建模分析,包括26个区域以及2000多个特征。

4. 分类对比:将被识别的人脸特征与数据库中人脸特征作对比,速度在100万次/秒。

5. 人脸身份识别完成。



Dlib (dlib.net)


dlib官网: http://dlib.net/ dlib是一个机器学习工具库,类似OpenCV,里面预置了一些开发好的传统机器学习算法和深度学习算法。


动手实践

点击鼠标右键,在新标签页中打开此链接https://nbviewer.jupyter.orgl,打开新的网页再依次右键复制下面的实践案例地址、粘贴到新打开网页的搜索框中,按回车进行访问。


人脸识别介绍实践案例地址: https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face_detector/face_detection.ipynb



小结:

在本次的学习中,我们了解了人脸识别的算法和发展,并且在ModelArts 的Notebook中,完成了dlib对图片及视频中的人脸区域以及关键点的检测。


1.2 MTCNN算法结合分类网络实现年龄和表情识别算法

概述:

MTCNN是英文Multi-task Cascaded Convolutional Neural Networks的缩写,翻译过来就是多任务级联卷积神经网络。该网络在诞生之初是表现最优的,虽然当前表现已经不是最优的了,但该网络具有很大的意义,第一次将人脸检测和人脸特征点定位结合起来,而得到的人脸特征点又可以实现人脸校正。该算法由3个阶段组成:

• 第一阶段,通过CNN快速产生候选框体。

• 第二阶段,通过更复杂一点的CNN精炼候选窗体,丢弃大量的重叠窗体。

• 第三阶段,使用更强大的CNN,实现候选窗体去留,同时回归5个面部关键点。


MTCNN算法介绍

多任务卷积神经网络算法https.//kpzhang93,github.io/MTCNN face detection alianment/

完成人脸区域检测人脸对齐及5个人脸关键点(双眼,鼻子,嘴角)检测


第一阶段是使用一种叫做PNet(Proposal Network)的卷积神经网络,获得候选窗体和边界回归向量。同时,候选窗体根据边界框进行校准。然后利用非极大值抑制去除重叠窗体。


第二阶段是使用R-Net(Refine Network)卷积神经网络进行操作,将经过P-Net确定的包含候选窗体的图片在R-Net中训练,最后使用全连接网络进行分类。利用边界框向量微调候选窗体,最后还是利用非极大值抑制算法去除重叠窗体。


第三阶段,使用Onet(Output Network)卷积神经网络进行操作,该网络比R-Net多一层卷积层,功能与R-Net类似,只是在去除重叠候选窗口的同时标定5个人脸关键点位置。


SSR算法介绍


在图像识别领域里,人脸技术非常有代表性,达到了极高的精准度,并且应用最为广泛。人脸的基本问题包括人脸目标检测(即定位人脸的目标区域),人脸比对(比如人脸和证件照比对是否同一人),人脸属性(性别、年龄、颜值、是否戴眼镜),人脸关键点等。

年龄是人脸属性预测的一个topic。其基本流程是:人脸区域检测、人脸对齐和年龄预测。


经过人脸检测得到的人脸目标框,输出是预测的年龄结果。其要点包括:


• 网络设计尽可能轻量化,满足端上应用的时效性要求。

• 用分类损失预测年龄的分段(bin),设计了一个可以平移和缩放的软分类目标。

• 效果:网络大小0.32M,小于主流的mobile-net和dense-net,效果比以上两者要好。


SSR网络:https://github.com/shamangary/SSR-Net

轻量级网络完成人脸年龄估计任务,将人脸区域检测和人脸对齐之后的结果作为输入,输出年龄估计。


动手实践


点击鼠标右键,在新标签页中打开此链接https://nbviewer.jupyter.orgl,打开新的网页再依次右键复制下面的实践案例地址、粘贴到新打开网页的搜索框中,按回车进行访问。


●人脸表情预测实践案例地址: https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face _age _prediction/face_age_prediction.ipynb

●人脸表情预测实践案例地址: https://github.com/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face _facial_expression/face_expression.ipynb



小结:


●在本次的学习中,我们了解了MTCNN和SSR网络,完成了表情识别网络的搭建,训练以及推理。

●通过ModelArts提供的开发环境,完成了MTCNN下的人脸区域检测和对齐任务,SSR网络下的年龄识别任务,以及表情分类网络下的人脸表情识别任务。





1.3 faceNet算法完成人脸识别

FaceNet算法介绍

FaceNet是谷歌于[CVPR2015.02](FaceNet: A Unified Embedding for Face Recognition and Clustering)发表,提出了一个对识别(这是谁?)、验证(这是用一个人吗?)、聚类(在这些面孔中找到同一个人)等问题的统一解决框架,即它们都可以放到特征空间里统一处理,只需要专注于解决的仅仅是如何将人脸更好的映射到特征空间。



https://arxiv.org/abs/1503.03832 完成人脸识别任务

如上图所示: FaceNet网络结构分为︰批输入,深度神经网络,L2范式,embedding以及三重损失函数。


三重损失函数:

三重损失函数的输入分为三部分: anchor,positive,negative。anchor是随机挑选出的数据,positive与anchor来自同一类别,而negative与anchor类别不同。模型需要判断出三者的关系,将anchor和positive之间的距离拉近,将anchor和negative之间的距离推远。


谷歌人脸识别算法,发表于 CVPR 2015,利用相同人脸在不同角度等姿态的照片下有高内聚性,不同人脸有低耦合性,提出使用 CNN + Triplet mining 方法,在 LFW 数据集上准确度达到 99.63%。

通过 CNN 将人脸映射到欧式空间的特征向量上,实质上:不同图片人脸特征的距离较大;通过相同个体的人脸的距离,总是小于不同个体的人脸这一先验知识训练网络。

测试时只需要计算人脸特征Embedding,然后计算距离使用阈值即可判定两张人脸照片是否属于相同的个体。


动手实践

点击鼠标右键,在新标签页中打开此链接https://nbviewer.jupyter.orgl,打开新的网页再依次右键复制下面的实践案例地址、粘贴到新打开网页的搜索框中,按回车进行访问。


人脸识别实践案例地址: https://nbviewer.jupyter.org/github/huaweicloud/ModelArts-Lab/blob/master/notebook/DL_face _recognition_advanced/face_similarity.ipynb


小结:

在本次的学习中,我们了解了FaceNet网络的结构,并且在ModelArts中完成了模型的构建,训练和推理过程。


注:本文整理自华为云社区内容共创活动之华为云AI实战营:人脸识别

查看活动详情:https://bbs.huaweicloud.com/blogs/308924


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。