CN110532920B - 基于FaceNet方法的小数量数据集人脸识别方法 - Google Patents

基于FaceNet方法的小数量数据集人脸识别方法 Download PDF

Info

Publication number
CN110532920B
CN110532920B CN201910774084.7A CN201910774084A CN110532920B CN 110532920 B CN110532920 B CN 110532920B CN 201910774084 A CN201910774084 A CN 201910774084A CN 110532920 B CN110532920 B CN 110532920B
Authority
CN
China
Prior art keywords
face
training
pictures
image
recognition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910774084.7A
Other languages
English (en)
Other versions
CN110532920A (zh
Inventor
熊杰
王玉刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yangtze University
Original Assignee
Yangtze University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Yangtze University filed Critical Yangtze University
Priority to CN201910774084.7A priority Critical patent/CN110532920B/zh
Publication of CN110532920A publication Critical patent/CN110532920A/zh
Application granted granted Critical
Publication of CN110532920B publication Critical patent/CN110532920B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/168Feature extraction; Face representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明属于人脸识别技术领域,公开了一种基于FaceNet方法的小数量数据集人脸识别方法,使用FaceNet方法训练模型,并在训练完成后获得FaceNet预训练模型,再使用SVM分类器分类的方式或使用欧式距离比对的方式实现不同程度,以及不同尺度的小数量人脸数据集人脸识别。本发明对于现实场合中的小数量人脸数据集人脸识别具有很高的实用价值;两种方式在识别准确率和现实不同场合的适用宽度上均能达到100%;微小的人脸图片数据量更能适用现实场合下的所能提供的人脸识别的条件;本发明还具有降低人脸识别时所需的大量人脸图片的需求、成本低的优点。

Description

基于FaceNet方法的小数量数据集人脸识别方法
技术领域
本发明属于人脸识别技术领域,尤其涉及一种基于FaceNet方法的小数量数据集人脸识别方法。
背景技术
目前,最接近的现有技术:
当今,随着人工智能的不断发展,人脸识别技术已得到多领域的应用,例如:公共安全,场合进出,信息安全,电子商务,金融机构,政府职能等,很高程度上提供了生产和生活上的便利。从目前人脸识别技术对于在生产生活中在实践中的应用,以及人脸识别技术在实践中应用的实际情况来看,人脸识别技术发展至今在实践应用中已经达到一定程度的适用性。但是,对于现实场合中许多条件需求较高的人脸识别情景而言,人脸识别技术的应用还存在一定的局限性。不断研究和探索人脸识别技术,进一步加大人脸识别技术在多种现实的具体场合中应用的范围,能更高程度的满足不同现实情景中对人脸识别的需求,是人脸识别技术发展的一个重要方向。因此,本专利进一步研究人脸识别技术,旨在将人脸识别技术应用至更广泛的行业和领域,提升人脸识别在小数量人脸数据集人脸识别等多种不同情况下的适用性,拓宽在生产生活中的各种场合的应用。
在许多现实场合中,对于每个人的人脸照片的存储只有很少的数量,更多的情况下往往只有一张登记照。这样的现实条件对于基于大数据量的深度学习人脸识别方式而言,微小的人脸图片数据量便不能达到技术上的要求,即现实场合中的小数据量的人脸图片不能满足使用深度学习方式解决人脸识别问题时所需的大量人脸图片的需求。
现有技术中,人脸识别技术和人脸识别系统具有一定程度的适用性。针对于许多特定场合,人脸识别系统的应用具有很强的技术性和很高的应用价值;但是对于场景条件参差不一,场景状况具有很大差别的不同场合而言,一定适用范围的人脸识别系统便存在局限性,不便于灵活的匹配通用。将同一人脸识别系统应用于场景条件参差不一,场景状况具有很大差别的场合中时,需要对识别技术具有针对性的调整和改进,调整和改进的技术不同,那么所带来的技术问题的难易程度也不尽相同,这样使得在将同一人脸识别系统应用于场景条件参差不一,场景状况具有很大差别的场合中时,增加了解决问题的复杂程度。
现有人脸识别技术以及人脸识别系统,针对于不同的特定场合所采用的识别方法和识别技术不尽相同,在人脸识别场合中的适用宽度和所能达到的人脸识别的准确率等人脸识别重要的衡量标准上也不尽相同。针对于这种现实状况,现有的一些部分人脸识别系统在多种场合下的适用宽度存在有一定的局限,以及识别准确率有待于进一步提高。
综上所述,现有技术存在的问题是:
(1)现实场合中的人脸图片数据量少,不能满足使用深度学习方式解决人脸识别问题时所需的大量人脸图片的需求。
(2)现有技术对人脸图片的识别耗费时间长。
(3)对于场景条件参差不一,场景状况具有很大差别的不同场合而言,一定适用范围的人脸识别系统便存在局限性,不便于灵活的匹配通用。
(4)现有人脸识别系统在多种场合下的适用宽度存在有一定的局限,以及识别准确率有待于进一步提高。
解决上述技术问题的难度:
(1)对于训练用于人脸特征提取的模型的方法的选择上需要结合当前技术发展的状况以及现阶段存在的问题综合整体做出选择,使用不同的方法在训练的过程中出现不同的问题,不同问题在训练过程中的影响均很难预测,训练方法的选择对于解决小数量人脸数据集人脸识别的问题具有很大的重要性,它决定了在解决小数量人脸数据集人脸识别的问题中人脸识别精度。
(2)用于人脸特征提取的预训练模型的训练需要花费大量时间,以及对实验所用的机器配置要求较高。
(3)训练完成的用于人脸特征的模型在加以使用两种识别方式解决现实场合中的人脸识别问题时很难达到较高的识别准确率,高识别准确率的实现需要在实验整体过程中对每一步的实验数据处理结果做出分析,并依据分析的阶段性结果对后续实验做出预测,然后再依据具体的预测做出针对性的调整。整个过程便是一个反复不断调整的过程,需要很强的专业技术,期间需要从原有技术基础上,不断在技术上进行调整与创新。
(4)现实场合中的人脸识别问题复杂多变,并且每个具体的人脸识别场合的对于人脸识别的需求和所要达到的效果均不相同,这使得在解决现实场合中小数量人脸数据集的人脸识别的问题中,在识别技术上具有非常高的要求,需要识别技术在适用范围,以及识别精确率两个核心的需求上加以重大技术攻关。
(5)小数量人脸数据集的采集很难实现,在现实中,基于种种原因,例如:被识别对象要求肖像保护,以及在不同场合中,所采集的人脸图片要受到光照,角度,表情,清晰程度等不同因素的影响,等等,这样的一部分场合在采集人脸图片时需要更高的采集标准,增大了现实中采集人脸图片的难度。
解决上述技术问题的意义:
本发明既能最大程度的降低人脸识别中所需的人脸图片的数量,又能使用基于FaceNet方法的人脸识别方式解决现实中人脸图片数量有限情景下的人脸识别问题,具体体现于如下几方面:
(1)本发明所使用的两种不同方式实现小数量人脸数据集人脸识别对于人脸图片数量稀缺场合的人脸识别问题的解决具有很高的实用价值;
(2)本发明使得在基于深度学习方式实现人脸识别的微小的人脸图片数据量能更多的适用于场景条件参差不一,场景状况具有很大差别的场合中,拓宽了基于深度学习方式的人脸识别系统的适用宽度,具有很高程度的灵活性与可移植性;
(3)本发明从降低人脸识别所需的人脸图片数量的角度降低了现实场景中小数量人脸数据集采集的难度。通过两种不同方式将小数量人脸数据集人脸识别在现实场景中的应用得以实现,最大程度降低了人脸识别时所需的大量人脸图片的需求,这使得在现实中采集人脸图片所遇到的多种问题,包括:被识别对象要求肖像保护而不能提供多张个人的人脸图片,以及在不同场合中,所采集的人脸图片因受到光照,角度,表情,清晰程度等不同因素的影响致使采集的人脸图片的质量难以满足人脸识别的需求的等问题最大程度上得以解决,使得基于深度学习的小数量人脸数据集人脸识别在应用的过程中受到最少负面因素的影响;
(4)本发明中所运用的两种识别方式在小数量人脸数据集人脸识别问题的解决具有很高层次的积极效果,两种识别方式分别实现了将现实场合中的小数量人脸数据集人脸识别的识别准确率和在现实中不同场合的适用宽度上分别达到最好的效果;
(5)本发明所运用的两种不同的人脸识别方式能更多的匹配通用于场景条件参差不一,场景状况具有很大差别的不同场合,将其应用于多种不同的人脸识别系统,例如:家庭门禁系统,企业公司签到系统,课堂点名查到系统,等等,具有很大的便利性及实用意义。
发明内容
针对现有技术存在的问题,本发明提供了一种基于FaceNet方法的小数量数据集人脸识别方法。本发明既能最大程度的降低人脸识别中所需的人脸图片的数量,又能使用基于深度学习的人脸识别方式解决现实中人脸图片数量有限情景下的人脸识别问题。
本发明是这样实现的,一种基于FaceNet方法的小数量人脸数据集人脸识别方法,包括:
使用FaceNet方法训练模型,并在训练完成后获得FaceNet预训练模型,再使用SVM分类器分类的方式或使用欧式距离比对的方式实现不同程度,以及不同尺度的小数量人脸数据集人脸识别。并按照人脸图片逐步减少的路线进行测试,将人脸识别的图片数量进行降低。
进一步,所述SVM分类器分类的方式包括:
步骤一,使用指定范围下数据集使用SVM训练得出一个分类器。
步骤二,使用训练得出的分类器对指定范围下的数据集进行分类,得出每一类分类的结果。
步骤三,输入待识别的人脸图片,通过FaceNet网络后提取人脸特征向量,SVM分类器根据特征向量的距离进行类判定,然后将其分类至已分类的类别中,实现人脸识别。
进一步,步骤三中,选用所搜集的小数量人脸数据集进行SVM实现分类,按照人脸图片逐步减少的路线进行测试,将人脸识别的图片数量降为5张每人。
进一步,所述欧式距离比对的方式包括:
步骤1,将一定范围的人脸图片送入FaceNet网络中产生进行人脸特征向量提取。
步骤2,将所处理的所有人脸的特征向量的存入一个指定的文件中,用于的指定范围的人脸进行登记;按照人脸图片逐步减少的路线进行测试,将所需求的人脸识别的图片数量降为1张每人。
步骤3,将输入待识别的人脸图片送入FaceNet网络中进行人脸特征向量提取。
步骤4,将待检测的人脸图片的特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对。
步骤5,找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量进行匹配,在一定的阈值范围内,实现人脸识别。
进一步,使用FaceNet方法训练模型,并在训练完成后获得FaceNet预训练模型中,具体包括搭建开发环境。
人脸图像预处理:人脸训练数据集的选取,人脸测试数据集的选取,人脸训练数据集的预处理、人脸测试数据集的预处理及对人脸数据集进行预处理后得到指定大小人脸图片。
训练模型,首先加载大规模经处理过后的人脸图片,然后配置具体训练的参数,再经过预设置的训练迭代次数训练后,完成训练过程。
预训练模型测试与评估。通过k折交叉验证方法及10折交叉验证方法进行测试与评估。
进一步,所述人脸图像预处理具体包括:
第一步,人脸训练数据集的选取:
选用CASIA-WebFace人脸数据集,该数据库有10575个类别494414张图片,每个类别均作为一个单独的文件夹,每个文件夹下有同一个人的几张或者几十张不等的人脸图片。
CASIA-WebFace为人脸数据集的一级目录,其子目录为拥有具体编号的10575个类别子文件夹,每个文件夹代表编号为一个人,文件夹保存这个人的所有人脸图片。
第二步,人脸测试数据集的选取:
选用LFW人脸数据集,LFW数据集是由美国马赛诸塞大学阿姆斯特分校计算机实验室整理的人脸检测数据集,是评估人脸识别算法效果的公开测试数据集。LFW数据集共有5749个不同的人的13233张图片,其中有1680人对应不止一张图片,每张图片尺寸都是250×250,并且标示出对应的人的名字。每个文件夹均以人名命名以区分不同的人,每个文件夹下有同一个人的一张或者多张不等的人脸图片。
第三步,人脸训练数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入对应命令。人脸数据集的位置为datasets/casia/CASIA-WebFace,对齐后的图像保存在路径datasets/casia/casia_maxpy_mtcnnpy_182下,每张图像的大小都是182×182。而最终网络的输入是160×160,之所以先生成182×182的图像,是为了留出一定的空间给数据增强的裁切环节,即在182×182的图像上随机裁切出160×160的区域,再送入神经网络进行训练。
第四步,人脸测试数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入对应命令。
第五步,对人脸数据集进行预处理后得到指定大小人脸图片。
进一步,所述训练模型具体包括:
(1)训练模型过程:
模型的训练实现,首先加载大规模经处理过后的人脸图片,然后配置具体训练的参数,包括训练迭代次数,学习率,处理图像批次大小,优化方法的选择等诸多参数。然后经过预设置的训练迭代次数训练后,完成训练过程。
(2)训练模型实现:
执行训练交叉熵损失函数,同时设置训练时所需的相关参数,进行训练。使用预处理人脸训练数据集进行深度学习网络训练,执行项目中的模型损失训练文件,在ubuntu18.04系统下,在终端输入对应命令。
本发明的另一目的在于提供一种所述基于深度学习的小数量人脸数据集人脸识别方法的基于深度学习的小数量人脸数据集人脸识别系统。
本发明的另一目的在于提供一种实现所述基于深度学习的小数量人脸数据集人脸识别方法的信息数据处理终端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于深度学习的小数量人脸数据集人脸识别方法。
综上所述,本发明的优点及积极效果为:
(1)本发明对于现实场合中的小数量人脸数据集人脸识别具有很高的实用价值。
(2)本发明的两种方式在识别准确率和现实不同场合的适用宽度上均能达到100%。
(3)本发明微小的人脸图片数据量更能适用现实场合下的所能提供的人脸识别的条件。
(4)本发明降低人脸识别时所需的大量人脸图片的需求;本发明识别成本低。
(5)本发明采用方式一,选用所搜集的小数量人脸数据集进行SVM实现分类,在探索与实践的过程中,按照人脸图片逐步减少的路线进行测试,在保证分类器的分类识别结果为100%的准确率下,将实现人脸识别的最低需求的人脸图片数量降为5张每人。
5张人脸图片这个数量对于基于深度学习方式的人脸识别所需求的大量的人脸图片的需求而言,在技术上达到了一定的突破,大大降低了人脸识别中所需的人脸图片的数量,拓展了人脸识别在小数量人脸数据集人脸识别现实场合下的适用宽度,提升了人脸识别在小数量人脸数据集人脸识别现实场合下的实用价值,这是本发明在此种方式下在小数量人脸数据集人脸识别现实场合下实现的技术亮点之一;与此同时,在这种微小的人脸图片数量下,识别准确率为100%,这是本发明在此种方式下在小数量人脸数据集人脸识别现实场合下实现的另一技术亮点。
(6)本发明采用方式二,使用欧式距离比对实现识别的方式实现人脸识别,在探索与实践的过程中,按照人脸图片逐步减少的路线进行测试,在保证对输入FaceNet网络中的图片与人物标签全部实现正确匹配的前提下,将实现人脸识别的最低需求的人脸图片数量降为1张每人。此方案将使用基于深度学习方式的小数量数据集人脸识别时所需的人脸图片数量降到最低,在基于深度学习方式的小数量数据集人脸识别时所需的人脸图片数量上进一步达到突破,使得每个人只有1张人脸样本数据可以实现正确识别。
1张人脸图片这个数量对于基于深度学习方式的人脸识别所需求的大量的人脸图片的需求而言,将现实场合中小数量人脸数据集人脸识别所需的人脸图片需求降到最低;这种方式经过实验测得所达到的识别准确率高达99.23%,识别准确率几乎接近100%,这为现实中众多不同的人脸识别场合提供了强有力的技术保障,这是本发明在此种方式下在小数量人脸数据集人脸识别现实场合下实现的技术亮点之一;同时,在方式一的基础上,此种方式又进一步将现实场合中小数量人脸数据集人脸识别所需的人脸图片需求在技术上获得新的突破,在所有使得无论有几张人脸图片还是只有1张人脸登记照的现实场合均可适用。这种方式使得基于深度学习的人脸识别技术在不同的现实场合下的适用面为100%,实用价值极高,所有的小数量人脸数据人脸识别场合均可以适用,这是本发明在此种方式下现实场合中实现在小数量人脸数据集人脸识别的最大技术亮点。
(7)对于小数量人脸数据集人脸识别的实现,使用FaceNet预训练模型+SVM分类器方式和使用FaceNet预训练模型+欧氏距离比对方式两种方式在识别精确率和适用范围两个重要的衡量指标上的参数均能达到最优,综合适用性也同时达到最高;其中,使用FaceNet预训练模型+SVM分类器方式具有100%的识别精确率,实现了在解决小数量人脸数据集人脸识别时识别错误率为零的积极效果;与此同时,使用FaceNet预训练模型+SVM分类器方式在解决小数量人脸数据集人脸识别时所需要的最小图片数量为5张每人即可,在适用范围上能够适用于大多数小数量人脸数据集人脸识别场合;使用FaceNet预训练模型+欧氏距离比对方式具有100%的适用范围,在具体场合下所需要的最小图片数量为1张每人即可,实现了在解决小数量人脸数据集人脸识别问题时在所有小数量人脸数据集人脸识别场合均能适用的积极效果;与此同时,使用FaceNet预训练模型+欧式距离比对方式在解决小数量人脸数据集人脸识别时所达到的人脸识别准确率为99.23%,使得在解决小数量人脸数据集人脸识别时具有非常小的错误率,在具体小数量人脸数据集人脸识别场合解决人脸识别问题时具有很高的可靠性。
附图说明
图1是本发明实施例提供的基于深度学习的小数量人脸数据集人脸识别技术方式一的实现流程图。
图2是本发明实施例提供的基于深度学习的小数量人脸数据集人脸识别技术方式二的实现流程图。
图3是本发明实施例提供的使用基于SVM实现分类的方式实现小数量人脸数据集人脸识别流程图。
图4是本发明实施例提供的使用欧式距离比对方式实现人脸识别流程图。
图5是本发明实施例提供的一个标准的卷积网络的完整结构示意图。
图6是本发明实施例提供的Inceotion-V1深度卷积神经网络简图。
图7是本发明实施例提供的传统的卷积层结构(图a)与加入NIN结构后卷积层结构(图b)。
图8是本发明实施例提供的使用单一卷积核进行卷积操作过程。
图9是本发明实施例提供的使用1×1卷积进行降维过程。
图10是本发明实施例提供的运用将稀疏矩阵分解成密集矩阵的算法过程。
图11是本发明实施例提供的Triplet loss三元组损失分类。
图12是本发明实施例提供的FaceNet人脸识别效果。
图13是本发明实施例提供的设计流程图。
图14是本发明实施例提供的可视化结果。
图15是本发明实施例提供的训练过程中的交叉熵损失。
图16是本发明实施例提供的LFW数据集测试准确率accuracy变化过程。
图17是本发明实施例提供的LFW数据集测试precision变化过程。
图18是本发明实施例提供的训练过程中的总损失变化过程。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现实场合中的人脸图片数据量少,不能满足使用深度学习方式解决人脸识别问题时所需的大量人脸图片的需求。现有技术对人脸图片的识别耗费时间长。
针对现有技术存在的问题,本发明提供了一种基于深度学习的小数量人脸数据集人脸识别技术,下面结合附图对本发明作详细的描述。
本发明实施例提供的基于FaceNet方法的小数量人脸数据集人脸识别方法,包括:使用FaceNet方法训练模型,并在训练完成后获得FaceNet预训练模型,再使用SVM分类器实现分类的方式或使用欧式距离比对的方式实现不同程度,以及不同尺度的小数量人脸数据集人脸识别。用两种方式解决现实场合中小数量人脸数据集人脸识别的问题。
下面分别对这两种技术方案对本发明作详细说明。
方式一:如图1所示,本发明实施例提供的使用基于SVM实现分类的方式实现人脸识别方法包括:
S101:先使用指定范围下数据集使用SVM训练得出一个分类器。
S102:使用训练得出的分类器对指定范围下的数据集进行分类,得出每一类分类的结果。
S103:输入待识别的人脸图片,通过FaceNet网络后提取人脸特征向量,SVM分类器根据特征向量的距离进行类判定,然后将其分类至已分类的类别中,实现人脸识别。
在本发明实施例步骤S102中,选用所搜集的小数量人脸数据集进行SVM实现分类,在探索与实践的过程中,按照人脸图片逐步减少的路线进行测试,在保证分类器的分类识别结果为100%的准确率下,将实现人脸识别的最低需求的人脸图片数量降为5张每人。
在本发明实施例步骤S103中,5张人脸图片这个数量对于基于深度学习方式的人脸识别所需求的大量的人脸图片的需求而言,在技术上达到了一定的突破,大大降低了人脸识别中所需的人脸图片的数量,拓展了人脸识别在小数量人脸数据集人脸识别现实场合下的适用宽度,提升了人脸识别在小数量人脸数据集人脸识别现实场合下的实用价值,这是本发明在此种方式下在小数量人脸数据集人脸识别现实场合下实现的技术亮点之一;与此同时,在这种微小的人脸图片数量下,识别准确率为100%,这是本发明在此种方式下在小数量人脸数据集人脸识别现实场合下实现的一技术亮点。
方式二如图2所示,使用欧式距离比对的方式实现人脸识别方法包括:
S201:将一定范围的人脸图片送入FaceNet网络中产生进行人脸特征向量提取。
S202:将所处理的所有人脸的特征向量的存入一个指定的文件中,用于的指定范围的人脸进行登记。
S203:将输入待识别的人脸图片送入FaceNet网络中产生进行人脸特征向量提取。
S204:将待检测的人脸图片的特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对。
S205:找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量进行匹配,在一定的阈值范围内,实现人脸识别。
在本发明实施例步骤S204中,使用欧式距离比对实现识别的方式实现人脸识别时,对于人脸图像样本数据量无具体要求,每个人只有1张人脸样本数据也可以实现正确识别。
在本发明实施例步骤S205中,1张人脸图片这个数量对于基于深度学习方式的人脸识别所需求的大量的人脸图片的需求而言,将现实场合中小数量人脸数据集人脸识别所需的人脸图片需求降到最低;这种方式经过实验测得所达到的识别准确率高达99.23%,识别准确率几乎接近100%,这为现实中众多不同的人脸识别场合提供了强有力的技术保障,这是本发明在此种方式下在小数量人脸数据集人脸识别现实场合下实现的技术亮点之一;同时,在方式一的基础上,此种方式又进一步将现实场合中小数量人脸数据集人脸识别所需的人脸图片需求在技术上获得新的突破,在所有使得无论有几张人脸图片还是只有1张人脸登记照的现实场合均可适用。这种方式使得基于深度学习的人脸识别技术在不同的现实场合下的适用面为100%,实用价值极高,所有的小数量人脸数据人脸识别场合均可以适用,这是本发明在此种方式下现实场合中实现在小数量人脸数据集人脸识别的最大技术亮点。
在本发明实施例中,所述基于深度学习的小数量人脸数据集人脸识别方法的设计流程,具体包括:搭建开发环境、人脸图像预处理、训练模型、预训练模型模型测试与评估、小数量人脸数据集人脸识别。
在本发明实施例中,所述人脸图像预处理具体包括:
(1)人脸训练数据集的选取:
选用CASIA-WebFace人脸数据集,该数据库有10575个类别494414张图片,每个类别均作为一个单独的文件夹,每个文件夹下有同一个人的几张或者几十张不等的人脸图片。
CASIA-WebFace为人脸数据集的一级目录,其子目录为拥有具体编号的10575个类别子文件夹,每个文件夹代表编号为一个人,文件夹保存这个人的所有人脸图片。
(2)人脸测试数据集的选取:
选用LFW人脸数据集,LFW数据集是由美国马赛诸塞大学阿姆斯特分校计算机实验室整理的人脸检测数据集,是评估人脸识别算法效果的公开测试数据集。LFW数据集共有5749个不同的人的13233张图片,其中有1680人对应不止一张图片,每张图片尺寸都是250×250,并且标示出对应的人的名字。每个文件夹均以人名命名以区分不同的人,每个文件夹下有同一个人的一张或者多张不等的人脸图片。
(3)人脸训练数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入对应命令。人脸数据集的位置为datasets/casia/CASIA-WebFace,对齐后的图像保存在路径datasets/casia/casia_maxpy_mtcnnpy_182下,每张图像的大小都是182×182。而最终网络的输入是160×160,之所以先生成182×182的图像,是为了留出一定的空间给数据增强的裁切环节,即在182×182的图像上随机裁切出160×160的区域,再送入神经网络进行训练。
(4)人脸测试数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入对应命令。
(5)对人脸数据集进行预处理后得到指定大小人脸图片。
在本发明实施例中,所述训练模型具体包括:
(1)训练模型过程:
模型的训练实现,首先加载大规模经处理过后的人脸图片,然后配置具体训练的参数,包括训练迭代次数,学习率,处理图像批次大小,优化方法的选择等诸多参数。然后经过预设置的训练迭代次数训练后,完成训练过程。
(2)训练模型实现:
执行训练交叉熵损失函数,同时设置训练时所需的相关参数,进行训练。使用预处理人脸训练数据集进行深度学习网络训练,执行项目中的模型损失训练文件,在ubuntu18.04系统下,在终端输入对应命令。
下面结合具体实施例对本发明作进一步描述。
实施例1:
方式一:本发明实施例提供的使用基于SVM实现分类的方式实现人脸识别方法包括:
(1)每个文件夹下存储人脸图片数量为5张人脸图片,其中指定4张人脸图片用于分类器的训练,其余剩下的1张人脸用于测试分类器分类的准确率。
(2)人脸图像预处理:
使用MTCNN进行人脸图像的预处理。
(3)训练SVM分类器。
(4)训练完成后生成一个SVM分类器。
(5)分类器完成分类并得出分类结果。在结果中显示,共对标号为0至39的40张人脸图片进行了分类,对所有分类的结果进行测试准确率为100%,所有的分类结果均正确,也即测试中的所有识别均实现正确识别。
(6)对待检测图片进行人脸识别:
选取图片进行识别。所得识别结果表明实现正确识别,识别出的人物信息。
方式二:本发明实施例提供的使用欧式距离比对的方式实现人脸识别方法包括:
(1)选用收集的小数量人脸数据集选取8个人组成人脸数据库,每人只有1张人脸图片实现识别。
(2)人脸图像预处理:
使用MTCNN进行人脸图像的预处理。具体包括:
(2.1)MTCNN方法
MTCNN方法是人脸图像预处理中较为常用的方法,用于实现对人脸图像的处理。作为一种基于深度卷积神经网络的人脸检测和人脸对齐的方法,MTCNN方法可同时实现人脸检测和人脸对齐两项任务。
(2.2)MTCNN完成的任务
第一步人脸检测任务(Face Detection):实现人脸检测,也即完成的任务是在输入的含有人脸的图片中寻找到人脸。这个过程的输入与输出分别是:输入的是一张含有人脸的图片,输出的是能够确定人脸范围的矩形框。
第二步人脸对齐任务(Face Alignment):在第一步输出能够确定人脸范围的矩形框之后,实现人脸对齐。由于现实拍摄的图片中人脸的姿态和位置存在较大的区别,所以为了后续实现对人脸图像的统一处理,要将检测到的所有人脸进行“统一位置展现”操作,实现的效果也即为将检测到的不同姿态和位置的所有人脸实现对齐。具体实现的方式为根据人脸检测中的关键点(Landmark),包括眼睛,鼻子,嘴巴,脸的轮廓点等,然后将这些人脸检测中的关键点使用仿射变换实现将人脸统一校准,消除不同人脸的不同姿势带来的误差,完成人脸对齐。
(2.3)MTCNN工作原理
(i)MTCNN网络结构组成
MTCNN使用人脸检测框架实现人脸检测,将人脸检测和人脸特征点检测同时进行,人脸检测框架由3个CNN级联而成。多任务卷积神经网络(MTCNN)实现人脸检测与对齐是在一个网络里实现了人脸检测与五点标定的模型,主要是通过CNN模型级联实现了多任务学习网络。整个模型分为三大部分,第一部分使用第一个浅层的CNN网络初步产生待进一步精确定位的人脸矩形框;第二阶段使用能够实现精确定位的CNN网络对在第一部分产生的待精确的人脸矩形框进行筛选,通过进一步的精确计算去除框选人脸产生较大距离误差的人脸矩形框;第三部分使用一个定位更加精确的网络定位人脸上面的五个标记点。
(ii)MTCNN图像处理流程
MTCNN由三个神经网络组成,分别是P-Net,R-Net,O-Net。对于输入MTCNN网络的人脸图像,在实现人脸检测和人脸对齐时主要分为4个步骤:
第一步将原始图像进行不同尺度的缩放。
第二步P-Net神经网络计算与处理;
第三步R-Net神经网络计算与处理;
第四步O-Net神经网络计算与处理。
(iii)将原始图像进行不同尺度的缩放
在将原始图像输入MTCNN的3个网络进行计算与处理之前,首先要将原始图片缩放到不同尺度,形成一个图像金字塔;然后再将每个尺度的图片通过MTCNN的三个神经网络进行计算,这样做的原因在于:现实拍摄的图片中的人脸的尺度大小不一,人脸大小不规齐,比较小的人脸可以在放大后的图片上检测;比较大的人脸可以在缩小后的图片上检测。经过对原始图像进行不同尺度的缩放处理,实现在统一尺度下检测人脸。
(iv)P-Net神经网络工作流程
输入至P-Net神经网络的图像为一个宽和高皆为12像素,同时是3通道的RGB图像,P-Net神经网络完成3个任务:
任务一判断这个输入的图像中是否含有人脸;
任务二确定人脸矩形框;
任务三确定人脸关键点的位置。经过P-Net神经网络处理过后的图像输出为3部分:
face classification;bounding box regression;facial landmarklocalization.
face classification部分,实现对输入图像是否含有人脸的判断,输出向量的形状为1×1×2,也就是两个值,分别为该图像是人脸的概率,以及该图像不是人脸的概率。这两个值加起来应该严格等。使用两个值来表示,其作用是能够方便定义交叉熵损失。
bounding box regression部分,完成人脸矩形框的确定,即实现框回归。输入至P-Net神经网络的图像由于现实拍摄的人脸图像中人脸的姿态以及位置存在的较大区别致使更多的并不是人脸框的位置,所以输入至P-Net神经网络的图像在位置上存在偏差,因此需要输出输入至P-Net神经网络的图像的框位置相对于人脸矩形框位置的偏移。偏移量由四个变量组成。对于人脸矩形框的确定,用4个参数来表示人脸位置:矩形框左上角的横坐标,矩形框左上角的纵坐标,矩形框的宽度,矩形框的高度。因此,框回归输出的值是,矩形框左上角的横坐标的相对偏移,矩形框左上角的纵坐标的相对偏移,矩形框的宽度的误差,矩形框的高度的误差。
Facial landmark localization部分,实现人脸关键点的位置的确定,Faciallandmark localization确定人脸的5个关键点,分别为:左眼的位置、右眼的位置、鼻子的位置、左嘴角的位置,右嘴角的位置。每个关键点又需要横坐标和纵坐标两维来表示,因此输出一共是10维(即1×1×10)。
(v)R-NET神经网络工作流程
输入至P-Net神经网络的多种不同尺度的缩放图片,经过P-Net神经网络检测过后,得出多个大小不同的人脸矩形框。在此基础上,R-NET神经网络实现将P-Net计算得出多个大小不同的人脸矩形框进一步精确定位。R-NET神经网络与P-Net神经网络相类似,但是较P-Net神经网络更加精确。R-Net神经网络完成3个任务:
任务一是再次精确判断这个输入的图像中是否含有人脸;
任务二确定人脸矩形框;
任务三确定人脸关键点的位置。输入至R-NET神经网络是24×24×3的图像。经过R-Net神经网络处理过后的图像输出也同样为3部分:face classification;bounding boxregression;facial landmark localization.
(vi)O-NET神经网络工作流程.
在R-NET神经网络检测过后的图像的基础上,对于输入至O-NET神经网络的人脸区域,O-NET神经网络进一步把所得到的区域缩放成48x48的大小,O-Net网络结构特性同样与P-Net和R-Net相类似,但其网络结构进一步加深,网络的通道数和层数加多。针对使用MTCNN方法实现人脸检测任务,O-NET神经网络同样完成与P-Net和R-Net相同的任务:
任务一判断这个输入的图像中是否含有人脸;
任务二确定人脸矩形框;
任务三确定人脸关键点的位置。对于输入至O-NET神经网络的48×48×3的图像,对人脸检测的精度进一步提高,其检测精度进一步提高,实现人脸矩形框的定位,框选出图像中人脸的位置。
O-Net神经网络较之前的P-Net和R-Net神经网络的特点为:O-Net神经网络在人脸检测的速度上较P-Net和R-Net神经网络慢,但是在人脸检测的精度上P-Net和R-Net神经网络高。
在MTCNN神经网络完成人脸检测和人脸对齐任务的过程中,输入至MTCNN神经网络的图像依次经过P-Net,R-Net,最后再到O-Net,网络输入的图片越来越大,卷积层的通道数越来越多,内部的层数也越来越多,使得人脸检测的准确率不断提高。MTCNN的三个神经网络中,P-Net的运行速度最快,R-Net的速度其次,O-Net的运行速度最慢。三个网络的设计以及在级联顺序上的安排使得MTCNN整体网络在实现人脸检测和人脸对齐任务的过程中在速度和精度上达到最佳匹配,即在提升人脸检测的速度的同时又确保人脸检测的精度。MTCNN在训练过程中每个网络都有三部分输出,因此损失也由三部分组成。针对人脸判别部分,直接使用交叉熵损失;针对人脸矩形框回归判定,直接使用L2损失;针对人脸关键点位置判定,直接使用L2损失。最后将此三部分损失各自乘以自身的权重相加,就形成最后的总损失。P-Net和R-Net神经网络在训练时人脸矩形框判定损失的权重较大,O-Net神经网络在训练时关键点判定损失的权重较大。
(vii)MTCNN在训练过程中的算法实现:
MTCNN人脸检测与对齐的算法实现需要对以下三个任务的学习与训练:人脸与非人脸的分类,bounding box regression回归和人脸特征点定位。
人脸与非人脸的分类:
上式(1)为人脸与非人脸分类的交叉熵损失函数。其中,Pi是网络预测的结果是人脸的概率;yi是人脸的标签,其值为0或1。(1)式中人脸与非人脸分类的交叉熵损失函数所表达的含义为“预测的是人脸的概率”与“真实情况下是不是人脸”的接近程度,当二者的概率差值越小时,交叉熵损失函数的熵越小,损失越小。
人脸边界框回归:
上式(2)为通过欧氏距离计算的边界框回归损失。其中,为通过网络预测得到,/>为实际的真实的背景坐标。其中,/>为一个由边界框左上角横坐标x,边界框左上角纵坐标y,以及边界框的长,边界框的宽组成的四元组。预测的边界框bounding box与真实边界框bounding box的越接近程度越大,欧氏距离越小。
人脸关键点定位:
上式(3)的计算方式同人脸边界回归相类似,表达式计算的是MTCNN网络预测的人脸关键点位置坐标和实际真实的人脸关键点的位置坐标之间的欧式距离,并最小化该距离。其中,为通过网络预测得到的人脸关键点坐标,/>为实际的真实的人脸关键点坐标,共有5个人脸关键点,此5个人脸关键点分别为:左眼,右眼,鼻子,左嘴角,右嘴角。其中每个人脸关键点有分为2个维度坐标,5个人脸关键点共有10点人脸坐标,所以,/>属于一个十元组。预测的人脸关键点位置坐标landmarks位置与真实的人脸关键点位置坐标越接近,欧氏距离越小。
多个输入源的训练:
P-Net(αdet=1,αbox=0.5,αlandmark=0.5) (6)
R-Net(αdet=1,αbox=0.5,αlandmark=0.5) (7)
O-Net(αdet=1,αbox=0.5,αlandmark=1) (8)
上式(4)为多个输入源的训练的表达式,(5)(6)(7)(8)式为各个网络的参数。整个的训练学习过程即为对上式进行一个最小化的过程。其中,N为训练样本数量,αj表示任务的重要性,为样本标签,/>为人脸关键点定位损失函数。
由上述所述,完成对人脸检测与对齐后,根据检测与对齐过程中的所确定的人脸矩形框进行裁剪,实现将人脸数据集中的人脸图片按指定像素在包含人脸五点特征范围的基础上进行裁剪。
(3)将一定范围的人脸图片送入FaceNet网络进行人脸特征向量提取。
(4)将所处理的所有人脸的特征向量的存入一个指定的文件中,用于的指定范围的人脸进行登记。在结果中显示,输入共有8张人脸图片,输出显示共有8个人脸类别标签,在每人1张人脸图片的条件下,实现正确分类。
(5)对待检测图片进行人脸识别。选用另外1张人脸作为测试图片进行识别。所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息。
(6)多张人脸同时识别,按照相同的步骤与过程,当待识别的1张人脸图片中含有多张人脸时,依次经过建立人脸特征向量库,将所有人脸特征向量进行存储,对待检测图片进行人脸识别步骤后,同样显示所识别的具体人物信息。在这里,所选用的测试图片1.jpg中含有2个人脸图片。
对待检测图片进行人脸识别,所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息。
实施例2:下面结合实例一~实例六对采用的方式一和方式二进行人脸识别进行说明。
1、小数量人脸数据集人脸识别
1.1实现人脸识别的具体任务说明:
对于实现人脸识别主要有以下两方面任务:
(1)对于待检测的人脸图片实现具体识别,并返回识别信息。
(2)实现在小规模人脸数据下的人脸识别。
1.2实现人脸识别的两种具体方式说明:
在人脸识别任务的实现过程中,使用已训练好的模型通过FaceNet网络后提取人脸特征向量,然后分别使用以下两种方法实现:
(1)使用基于SVM实现分类的方式实现人脸识别。
(2)使用欧式距离比对的方式实现人脸识别。
1.2使用基于SVM分类实现识别的方式:
使用基于SVM实现分类的方式实现小数量人脸数据集人脸识别,识别流程如图3所示。
(1)使用基于SVM实现分类的方式实现人脸识别时,实现过程为:
1)先使用指定范围下数据集使用SVM训练得出一个分类器。
2)然后再使用训练得出的分类器对指定范围下的数据集进行分类,得出每一类分类的结果。
3)输入待识别的人脸图片,通过FaceNet网络后提取人脸特征向量,SVM分类器根据特征向量的距离进行类判定,然后将其分类至已分类的类别中,实现人脸识别。
(2)使用基于SVM实现分类的方式实现人脸识别时,具体需求为:
1)每个人脸文件夹下要满足有一定数量的人脸图片;
2)一定数量的人脸图片分为两部分,选取较多的一部分用于训练分类器模型,余下的部分用于对分类的结果进行准确率的测试。
实例一:使用SVM实现分类的方式实现人脸识别在一定数量人脸数据下的识别:选用LFW人脸数据集,每个文件下至少包含40张人脸图片,其中指定35张人脸图片用于分类器的训练,其余剩下的部分用于测试分类器分类的准确率,图片说明为数据处理过程。
具体包括:
1)选取LFW人脸数据集中部分人脸图片训练SVM分类器,
2)选取的条件为每个文件下至少包含40张人脸图片,其中指定35张人脸图片用于分类器的训练,其余剩下的部分用于测试分类器分类的准确率;
3)训练完成后将生成的分类器保存,在对待检测人脸图片进行识别时,通过将识别的人脸图片分类至已经存储的分类器中,输出对应分类的标签,实现识别。
具体识别过程如下所示:
·训练分类器;
·训练完成后生成一个分类器;
·使用分类器进行分类;
·分类器完成分类并得出测试结果;
·对待检测图片进行人脸识别;选取图片为Tony_Blair的Tony_Blair_0002.jpg图片进行识别;
·所得识别结果为实现正确识别,识别出的人物信息为Tony_Blair。
实例二:使用SVM实现分类的方式实现人脸识别在小数量人脸数据下的识别:选用收集的小数量人脸数据集选取8个人组成人脸数据集,每个文件夹下存储人脸图片数量为5张人脸图片,其中指定4张人脸图片用于分类器的训练,其余剩下的1张人脸用于部分用于测试分类器分类的准确率,图片说明为数据处理过程。
具体包括:
1)所选用的小数量人脸图像数据集中含有8个人,每个人含有5~8张图片。
2)选用所搜集的小数量人脸数据集进行SVM实现分类,在实践的过程中,按照使每个文件夹下的人脸图片逐步减少的路线进行测试,在保证分类器的分类测试结果为1.00的准确率下,实现的最低要求为每个文件夹下存储人脸图片数量为5张人脸图片,其中指定4张人脸图片用于分类器的训练,其余剩下的1张人脸用于部分用于测试分类器分类的准确率,最后通过将识别的人脸图片分类至已经存储的分类器中,输出对应分类的标签,实现识别。
具体过程如下所示:
·训练分类器;
·训练完成后生成一个分类器。
·分类器完成分类并得出测试结果;
在结果中显示,共对标号为0至39的40张人脸图片进行了分类,对所有分类的结果进行测试准确率为100%,所有的分类结果均正确,也即测试中的所有识别均实现正确识别。
·对待检测图片进行人脸识别;选取邓某的图片进行识别。
·所得识别结果为实现正确识别,识别出的人物信息为所述邓某。
1.3使用欧式距离比对方式实现人脸识别:
使用欧式距离比对方式实现人脸识别,识别流程如图4所示。
(1)使用欧式距离比实现分类的方式实现人脸识别时,实现过程为:
1)将一定范围的人脸图片送入FaceNet网络中产生进行人脸特征向量提取。
2)将所处理的所有人脸的特征向量的存入一个指定的文件中,用于的指定范围的人脸进行登记。
3)将输入待识别的人脸图片送入FaceNet网络中产生进行人脸特征向量提取。
4)然后将此待检测的人脸图片的特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对。
5)找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量进行匹配,在一定的阈值范围内,实现人脸识别。
(2)使用欧式距离比对实现识别的方式实现人脸识别时,在实验过程中按照人脸图片数量逐步减小的路线进行测试。在测试的过程中,对于每个人输入至FaceNet网络中的人脸图片数量的选取分别从多张逐步降低至1张。
1)每个人输入多张人脸图片时,FaceNet网络分别对每张人脸图片进行欧氏距离计算。对同一个人不同人脸图片的欧氏距离进行测试时,通过对返回的n行n列的欧氏距离结果矩阵中的每一个元素进行分析,可以得出结论:同个人的不同人脸图片的欧氏距离很相近,任意两张人脸图片间的欧氏距离的差值很小,均不超出标定阈值。由于同一人的不同人脸图片间的欧氏距离具有的非常小的差值,使得能够全部实现将输入至网络的多张人脸图片均正确匹配至一个共同的人脸标签,实现正确登记;在后续步骤中对待识别的人脸图片进行识别时,通过对待识别的人脸图片的欧氏距离与已经登记的每一个人中的多张人脸图片的欧氏距离进行比对,依据不超出阈值的标准,实现正确识别。
2)每个人输入1张人脸图片时,FaceNet网络分别对所输入的1张人脸图片进行欧氏距离计算。通过计算得到的欧氏距离即作为其所属人物标签的标定欧氏距离,进一步将输入至网络的1张人脸图片与其所属的人物标签匹配,实现正确登记;在后续步骤中对待识别的人脸图片进行识别时,通过对待识别的人脸图片的欧氏距离与已经登记的每一个人中的1张人脸图片的欧氏距离进行比对,依据不超出阈值的标准,实现正确识别。
实例三:选用LFW人脸数据集选取100个人组成人脸数据库,选取每人只有1张人脸图片实现识别:选用LFW人脸数据集选取100个人组成人脸数据集,每个人选取1张人脸图片,在每人只有1张人脸图片实现识别,图片说明为数据处理过程。
具体识别过程如下所示:
·建立人脸特征向量库;
·将所有人脸特征向量进行存储;
·对待检测图片进行人脸识别;
选取Alexander_Downer_0002.jpg为Alexander_Downe的图片进行识别。
·所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息为Alexander_Downe。
在上述识别过程中,通过待检测的人脸图片的特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对,找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量,实现匹配,并返回相近度最大的库存人脸特征向量的信息。
实例四:
使用欧式距离比对方式实现人脸识别:选用收集的小数量人脸数据集选取8个人组成人脸数据集,在每人只有1张人脸图片实现识别,图片说明为数据处理过程。
具体识别过程如下所示:
·建立人脸特征向量库。
·将所有人脸特征向量进行存储。
·对待检测图片进行人脸识别。
选取范某某的图片进行识别。
·所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息为范某某。
实例五:
使用欧式距离比对方式实现人脸识别:
选用收集的小数量人脸数据集选取8个人组成人脸数据集,在每人只有1张人脸图片实现识别,图片说明为数据处理过程—1张图片中含有4张人脸的情况。
按照相同的步骤与过程,在有搜集的8个人每个人1张人脸图片组成的小数量人脸数据库中,当待识别图片中含有多张人脸时,依次经过建立人脸特征向量库,将所有人脸特征向量进行存储,对待检测图片进行人脸识别步骤后,同样显示所识别的具体人物信息。
识别过程如下所示:
·建立人脸特征向量库。
·将所有人脸特征向量进行存储。
·对待检测图片进行人脸识别。
选取含有林某某,吴某,谢某某,霍某某4张人脸的图片duo.png中进行识别。
·对待检测图片进行人脸识别,所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息分别为林某某,吴某,谢某某,霍某某。
在上述识别过程中,待检测的1张人脸图片中含有4个不同的人脸图像,所提取的个不同的的人脸特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对,找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量,实现匹配,并返回相近度最大的库存人脸特征向量的信息。
实例六:
使用欧式距离比对方式实现人脸识别:
选用LFW数据集选取的100个人组成的小数量人脸数据集,在每人只有1张人脸图片实现识别,图片说明为数据处理过程—1张图片中含有8张人脸的情况。
按照相同的步骤与过程,在有LFW数据集选取的100个人每个人1张人脸图片组成的小数量人脸数据库中,当待识别图片中含有多张人脸时,依次经过建立人脸特征向量库,将所有人脸特征向量进行存储,对待检测图片进行人脸识别步骤后,同样显示所识别的具体人物信息。
在这里,由于英文姓名文字过长,所以为简化起见,将所选用的测试图片含有的8个不同的人物分别命名为A,B,C,D,E,F,G,H,待识别人物及其对应姓名。
识别过程如下所示:
·建立人脸特征向量库。
·将所有人脸特征向量进行存储。
·对待检测图片进行人脸识别。
选取含有A,B,C,D,E,F,G,H,8张人脸的图片duo1.png中进行识别。
·对待检测图片进行人脸识别,所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息分别为A,B,C,D,E,F,G,H。
在上述识别过程中,待检测的1张人脸图片中含有8个不同的人脸图像,所提取的个不同的的人脸特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对,找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量,实现匹配,并返回相近度最大的库存人脸特征向量的信息。
实施例3:实验结果分析--识别准确率的计算分析
1.分析方法
(1)分析方法:scikit-learnk中的k折交叉验证方法。
(2)K折交叉验证方法:
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
(3)10折交叉验证方法:
K折交叉验证中K取值为10时的情况。英文名叫做10-fold cross-validation,用来测试算法准确性。是常用的测试方法。将数据集分成10份,轮流将其中9份作为训练数据,1份作为测试数据,进行试验。每次试验都会得出相应的正确率(或差错率)。10次的结果的正确率(或差错率)的平均值作为对算法精度的估计。
(4)K折交叉验证的评估指标:
评价指标往往有如下几点:准确率(Accuracy),精确率(Precision),召回率(Recall)和F1-Measure。K折交叉验证的评估指标如下表3所示。
表3K折交叉验证的评估指标
相关(Relevant),正类 无关(Irrelevant),负类
被检索到(Retrieved) TP FP
未被检索到(Not Retrieved) FN TN
准确率(Accuracy):其定义是:对于给定的测试数据集,分类器正确分类的样本数与总样本数之比。也就是损失函数是0-1损失时测试数据集上的准确率。其公式是:
精确率(Precision):其定义是,所有“正确被检索的结果(TP)”占所有“实际被检索
到的(TP+FP)”的比例。其公式是:
召回率(Recall):其定义是所有"正确被检索的结果(TP)占所有应该检索到的结果(TP+FN)的比例。其公式是:
F1-Measure:其定义是精确率(Precision)和召回率(Recall)的调和均值,也就是:
调整后为:
AUC(Area Under Curve):AUC(Area Under Curve)被定义为ROC曲线下的面积,ROC曲线图中,横轴为FP,纵轴为TP,对角线y=x上的点其实表示的是一个采用随机猜测策略的分类器的结果,实际分类中的ROC曲线越接近左上角,该分类器的性能越好。ROC曲线的面积的数值不会大于1。又由于ROC曲线一般都处于y=x这条直线的上方,所以AUC的取值范围在0.5和1之间。AUC值作为评价标准在于:ROC曲线从整体的角度来评测分类器的分类效果,作为一个数值,AUC数值越大表示分类器整体分类的效果比较好。
5.1.2 10折交叉验证中准确率(Accuracy)的计算
(1)人脸图像测试对pairs.txt文件相关说明:
pairs.txt文件中,共有6000行人脸登记,共分为10组,每600行人脸登记为1组。600行人脸中,又分为2组不同的人脸登记,每组人脸登记为300行。
其中第一组登记的300个人脸为同一个人的2张不同的图片;例如:Abel_Pacheco1,4表示为同一个人Abel_Pacheco的2张不同图片Abel_Pacheco_0001.jpg和Abel_Pacheco_0004.jpg
第二组登记的300个人脸为2个不同的人的各1张图片。例如:Abdel_Madi_Shabneh1,Dean_Barker1表示的是2个不同的人Abdel_Madi_Shabneh和Dean_Barker的各1张不同的图片。
原文件中的pairs.txt第一行:10表示的是10折交叉验证的次数为10次,300表示的是每组用于匹配的300对人脸组合的图片。
(2)10折交叉验证的过程的实现:
使用LFW数据集作为测试集,将LFW数据集分为10份,轮流将其中9份作为训练数据,1份作为测试数据,进行试验。训练部分与测试部分的每一份为2个300对人脸图片的组合,每进行一次实验后得出1个Accuracy,进行10次实验后得出10个Accuracy,然后对其取均值,获得10折交叉验证的准确率Accuracy。
(3)代码实现:
在validate_on_lfw.py文件中,通过import facenet实现将facenet.py文件调用。在facenet.py文件中,通过from sklearn.model_selection import KFold实现从sklearn库引入model_selection中的K折交叉验证部分KFold,在calculate_roc函数中实现对roc曲线的绘制,在calculate_accuracy函数中实现对准确率accuracy的计算。
(4)10折交叉验证中Accuravy的获得:
10折交叉验证中10次Accuravy平均后的Accuracy获得:
在实验中,几种不同方式所获得的准确率均是依据上述十折交叉验证算法得来,通过使用十折交叉验证的方式所得出的人脸识别的准确率在很大程度上说明了在小数量人脸数据集人脸识别中所使用的两种识别方式达到很高的人脸识别准确率,证明了了小数量人脸数据集人脸识别系统在小数量人脸场合下具有很高的实用性。
实施例4:
表一:在LFW数据集上进行测试
表二:在小数量人脸数据集上进行测试
识别精确率 所需图片需求 最小图片数量 适用范围
SVM分类器 100% 5张及以上 5 大多数场合
欧氏距离比对 99.23% 1张及以上 1 所有场合
表三:几种识别方式的比对
通过对表格的对比结果可以看到,对于小数量人脸数据集人脸识别的实现,使用FaceNet预训练模型+SVM分类器方式和使用FaceNet预训练模型+欧氏距离比对方式两种方式在识别精确率和适用范围两个重要的衡量指标上的参数均能达到最优,综合适用性也同时达到最高;其中,使用FaceNet预训练模型+SVM分类器方式具有100%的识别精确率,实现了在解决小数量人脸数据集人脸识别时识别错误率为零的积极效果;与此同时,使用FaceNet预训练模型+SVM分类器方式在解决小数量人脸数据集人脸识别时所需要的最小图片数量为5张每人即可,在适用范围上能够适用于大多数小数量人脸数据集人脸识别场合;使用FaceNet预训练模型+欧氏距离比对方式具有100%的适用范围,在具体场合下所需要的最小图片数量为1张每人即可,实现了在解决小数量人脸数据集人脸识别问题时在所有小数量人脸数据集人脸识别场合均能适用的积极效果;与此同时,使用FaceNet预训练模型+欧式距离比对方式在解决小数量人脸数据集人脸识别时所达到的人脸识别准确率为99.23%,使得在解决小数量人脸数据集人脸识别时具有非常小的错误率,在具体小数量人脸数据集人脸识别场合解决人脸识别问题时具有很高的可靠性。
实施例5:FaceNet方法实现人脸特征提取
1.1FaceNet方法介绍
将人脸图片通过CNN深度卷积神经网络提取人脸特征,然后再将人脸特征用编码的方式映射到欧式空间的特征向量上,不同的欧几里得距离代表具有不同的特征向量;不同的特征向量代表具有不同的人脸特征。将人脸图片送入FaceNet网络中,处理不同的人脸图片所得的不同特征向量所处的欧几里得空间的维度为128维,即将处理前不同的人脸特征转化为处理后的128维的欧几里得向量空间中存在的不同欧几里得特征向量,不同的欧几里得特征向量通过128维的欧几里得向量空间不同的欧几里得距离表征。计算不同用于表征不同人脸特征的欧几里得距离,然后再学习表征每张人脸特征的的欧几里得距离,即通过计算两张或多张人脸图片欧几里得距离的L2范式的平方,便可以得出两张或多张人脸图片通过相同个体人脸相似性。相同个体的不同人脸图像的特征向量在128维的欧几里得空间距离比较小,不同个体的人脸图像的特征向量在128维的欧几里得空间距离比较大。这样通过将人脸图像特征表征为128维欧几里得空间特征向量,再经过学习判断欧几里得距离的方式实现人脸识别。
1.2FaceNet方法完成的任务
FaceNet可以完成的任务为人脸验证和人脸识别。
第一步人脸验证任务(Face verification):实现人脸验证,也即完成的任务是在输入两张或多张不同的人脸图片,判断输入的两张或多张人脸图片是不是属于同一个人。个过程的输入与输出分别是:输入的是一张含有人脸的图片,输出的是两张或多张人脸图片的欧氏距离矩阵,根据两张或多张人脸图片的欧几里得距离的差值验证是否为同一个人。
第二步人脸识别任务(Face recognitiont):人脸识别任务的实现是在第一步人脸验证任务的基础上进一步所完成的任务。具体过程为把人脸图片输入到FaceNet网络,计算输入人脸图片的特征向量,获得在128维度的欧几里得空间内输入人脸图片的特征向量的欧几里得距离;然后再同已经存储入库的人脸图片的特征向量所具有的欧几里得距离作比较,以所设置的最佳阈值作为比较的标准,根据两张人脸图片的欧几里得距离之间的差值与设置的最佳阈值比较判断的结果判断是否为同一人。当两张人脸图片的欧几里得距离之间的差值小于最佳阈值时,判定为同一个人,并返回已经存储入库的人脸图片相关信息。判定结束后所返回已经存储入库的人脸图片相关信息也同为输入人脸图片的相关信息,两张不同的人脸图片共同来源于一个相同的人,依据所返回的信息实现人脸识别;当两张人脸图片的欧几里得距离之间的差值大于最佳阈值时,判定为是不同的人,所返回的人脸信息为未知。
1.3FaceNet网络结构
FaceNet网络结构整体分为5部分,分别是Batch,Deep architecture,L2,Embeddings,triplet Loss。
(1)Batch部分:输入网络的人脸图像样本,这里的样本是经过MTCNN完成人脸检测找到人脸并裁剪到固定尺寸的人脸图片样本。
(2)Deep architecture部分:CNN深度卷积神经网络,采用谷歌推出的GoogleNet系列的Inception-V1网络结构。
(3)L2部分:是一种正则化计算方式,用于对所提取的特征向量的欧几里得距离进行归一化处理。
(4)Embedding部分:将在卷积过程中提取的图像特征向量进行编码表示。
(5)Tripletloss部分:FaceNet中所运用的三元组损失模型。
1.4Deep architecture部分实现深度学习的原理
对于一个基于深度学习来实现具体任务的网络结构而言,CNN深度卷积神经网络是其中重要的组成部分。CNN深度卷积神经网络所解决的核心问题为解决了在具体深度学习任务中所出现的因输入的数据过大时所致使神经网络学习参数太多的问题,实现运用很少的权重W而达到全连接网络所不能实现的效果。对于FaceNet网络结构中,CNN深度卷积神经网络为谷歌谷歌推出的GoogleNet系列的Inception-V1网络结构。作为CNN深度卷积神经网络发展历史中的深度卷积结构模型之一,Inception-V1网络结构同其他深度卷积结构模型相比较,具有其自身独特的特点,这也同为FaceNet网络结构的一个特点之一。
1.4.1CNN深度卷积神经网络原理
(1)卷积神经网络解决的问题:
对于输入的图像,当图像比较小时,所含有的像素点比较少,那么在卷积网络中一层所需要的W的数目为n×n×256,这仅是对输入的图像为灰度图时的情况;当输入的图像为3维RGB图像时,一层需要W的数目为n×n×256×3;同时,若在网络中
再加入隐藏层时,还需要更多的学习参数,这使得不仅消耗大量的内存,同时也需要大量的运算,使得在进行训练时花费更多的时间,并且对于机器硬件配置需求较高。所以,卷积神经网络解决了以下问题:
问题1:解决全连接网络的局限性。全连接网络对于像素点比较少的图像可以实现图像处理中的相关任务,比如分类问题;但是对于像素点比较多的图像,由于所需要的学习参数的数量非常大,致使在实际图像处理中输入至卷积神经网络的图像变大导至色彩数变多,不容易解决;
问题2:实现处理更高维数据。对于比较复杂的高维数据,如果仅限于使用全连接网络,则只能通过增加节点、增加层数的方式来解决,而增加节点的同时会引起学习数目参数过多。因为由于隐藏层神经网络使用的是Sigmoid或Tanh激活函数,其反向传播的有效层数也只能在4~6层左右。所以,层数的增加只会使反向传播的修正值越来越小,网络无法训练。而卷积神经网络使用了参数共享的方式,从另外一个角度来解决问题,卷积神经网络不仅在准确率上大大提升,也同时减少了学习参数的数目。
(2)卷积神经网络结构:
卷积神经网络可以分为以下组成部分:输入层,卷积层,池化层,全局平均池化层,输出层。
1)输入层:将图片中的每个像素代表一个特征节点输入进来。
2)卷积层:卷积层由图像块(image),步长(stride),卷积核(filter),feaaturemap四个要素组成。
·图像块(image):进行卷积操作时在图像上所选取的用于与卷积核进行相乘的矩阵。
·步长(stride):分为行步长和列步长。步长是进行卷积操作时的一个重要选择参数,不同步长的选取,便会有不同过程的卷积操作,得出不同结果的feaature map。
·卷积核(filter):卷积核是卷积神经网络在进行卷积操作时所选用的滤波器,即为图像处理时所选用的模板。卷积核也同样为一个矩阵,其中每一个值可以理解为训练时的权重W。对于每一个具体的卷积核,这些W也同样是具体的数值,其本质为一个具体的图像处理算子,将原图像所选取的图像块通过其每一个值,就会实现对原图像进行卷积操作,得出能够表征原图像特点的feaature map结果。
·feaature map:是在卷积操作过程中经过确定步长,选取具体的卷积核,对原图像进行卷积操作后的结果。
3)池化层:池化主要实现的效果是降维,即在保持原有特征的基础上最大限度地将数组的维数变小。池化的操作外表跟卷积很像,但是算法不同:
·卷积是将对应像素上的点相乘,然后再相加。
·池化中只考虑卷积核的尺寸,不考虑其内部具体的数值。具体计算方式是将卷积核映射区域内的像素点取平均值或最大值。
4)全局平均池化层:对由卷积操作后生成的feature map结果取全局平均值。
5)输出层:需要将图片几类,对应就有有几个输出节点。每个输出节点代表当前处理的图像样本属于此节点对应的具体分类类型的概率。
(3)卷积网络完整结构图
对于一个应用在实际中用于处理图像问题的CNN深度卷积神经网络而言,其实际的组成会基于所处理的问题的难度而增加其网络结构的复杂度。在图像处理问题中,一幅图片的处理就会用到比较复杂的卷积结构来实现。通常会使用多个卷积核(滤波器),然后将它们统一放到卷积层中进行操作。在一个卷积层中还会有多个卷积核(滤波器)。卷积操作过程有多个卷积核(滤波器)在卷积操作结束时便得出几个feature map。接下来在得出的feature map中,网络的后面还要加入一个池化层(pooling)用于池化处理,将生成的多个feature map依次对每一个进行缩小(降维)处理。如图5所示为一个标准的卷积网络的完整结构。
(4)卷积神经网络实现卷积的原理图解:
卷积神经网络在对图像进行处理时,实质为将原有图片的矩阵通过具体的卷积核(滤波器)进行卷积处理,过程实现的操作是矩阵乘法运算,通过矩阵乘法运算,便可以得出一个具体的数值,这个具体的数值便可以理解为一个特征值。卷积神经网络实现卷积的过程具体实现的步骤可以分为:
1)padding:在将原图转化矩阵表示后,通常还要进行padding处理,具体操作为在图像的在外面补一圈0,其作用是能够使得在卷积操作后生成同样大小的矩阵。
2)在整体图像中选取图像块,然后将图像块矩阵中的每个元素分别与选用的卷积核(滤波器)矩阵对应位置上的元素相乘,然后再相加,得到一个具体的数值,放入用于表征feature map结果矩阵的对应位置。
3)将原有选取的图像块矩阵向右移动一个格,这可以理解为步长为1,移动后又形成一个新的图形矩阵块,将此图像矩阵块再次进行2)步的操作,得到第二个新的具体的数值。再次放入用于表征feature map结果矩阵的对应位置。
4)在卷积操作的过程中,选取的步长不同,便会有不同的卷积操作过程,最终得到不同的feature map。在以下图示中,5×5大小的矩阵代表将原图转化矩阵表示,每个图片右侧的3×3矩阵代表所选用的卷积核(滤波器),最右侧的3×3矩阵为卷积操作完成后所得的feature map结果矩阵。最右侧的feature map矩阵中的第一个元素,是由原输入图像所选取的图像块(image)矩阵中前3行3列中的每个元素与卷积核(滤波器)中的对应元素相乘再相加得到,具体计算方式为:
(4=1×1+1×0+1×1+0×0+1×1+1×0+0×1+0×0+1×1)。步长(stride)具体表示图像块在图片上每次移动的格数。
·当步长Stride为1时,右侧的feature map结果矩阵的第二个元素为3,是由卷积核计算完第一个元素4,依据步长Stride为1右移一格后计算得来,相当于图片中的前3行和第1到第4列围成的3×3矩阵与卷积核各对应元素进行相乘相加操作,(3=1×1+1×0+0×1+1×0+1×1+1×0+0×1+1×0+1×1)。
·当步长Stride为2时,代表每次移动2个格,所得feature map结果矩阵为2×2矩阵。右侧的feature map结果矩阵的第二个元素3,是由卷积核计算完第一个元素4,依据步长Stride为2右移两格后进行计算,相当于原图矩阵的前3行和第1到第4列围成的3×3矩阵与卷积核各对应元素进行相乘相加操作,(4=1×1+0×0+0×1+1×0+1×1+0×0+1×1+1×0+1×1)。
5)变换后的图片矩阵中的每个数值相当于一个像素值,每个数值不会全都在0~256之间。这样当所得的数值在0~256范围外时,那么在此范围之外的像素点会导致灰度图无法显示,解决方式为将所得数值进行归一化处理,具体计算方式为:x=(x-Min)/(Max-Min)。其中,Max与Min为整体数据里的最大值和最小值,x是当前要转换的像素值。然后再将归一化所得到的每个值乘以256,再将所有的值映射到这个区间内。归一化之后可以保证每个x都在[0,1]的区间内。
6)重复执行2)3)4)步骤操作,直到将变换后的用于表征feature map结果矩阵对应位置处的数值全部填满,整个过程即为卷积。
1.4.2Inception-V1深度卷积神经网络
(1)Inception-V1是由Google推出的GoogleNet系列模型第一代模型,其网络结构简图如图6所示。
(2)Inception-V1深度卷积神经网络整体网络结构参数如下表1所示。
表1Inceotion-V1深度卷积神经网络整体网络结构参数
(3)Inception-V1网络结构特性:
特性一:Inception-V1网络结构所运用多种大小不同的的卷积核(滤波器)所起到的作用为在卷积操作过程中由不同的的卷积核(滤波器)进行卷积后便会得到多个不同的feature map结果,在卷积结束后将多个不同的feature map结果进行拼接时实现将原图像的特征在不同尺度进行融合,加强对原图像特征的表现程度,达到较好的图像处理效果。
特性二:Inception-V1网络结构选取运用了1×1,3×3,以及5×5多种大小不同的的卷积核(滤波器),这种卷积核(滤波器)的选取方案起到的作用为在卷积过程中由不同的的卷积核(滤波器)进行卷积后便会得到多个不同的feature map结果矩阵,在相同的卷积步长的设置下,再将原图转化后的矩阵表示后,分别进行padding=0、1、2处理,这样使得在卷积操作结束后所得的feature map结果矩阵均为相同的维度。在卷积结束后将多个不同的feature map结果进行拼接时,由于不同的的卷积核(滤波器)进行卷积后所得到的多个不同的feature map结果矩阵的维度相同,从而得到相同维度的特征,最后在特征融合时便可以将不同尺度的特征直接拼接在一起,实现了将原图像特征的表现程度提高,得到较好的特征提取结果。
特性三:Inception-V1网络结构中,随着网络层数的加深,3×3和5×5卷积核(滤波器)选用的比例增加,这样实现了在卷积操作过程中选用多个不同的的卷积核(滤波器)时,选用维数大的卷积核(滤波器)使得经过卷积网络所提取出的每个特征的抽象度增大,即由卷积网络所提取的特征能够表征原图像特征的范围更广,所提取的特征抽象度更大,最后在卷积操作结束后将不同尺度的特征直接拼接在一起时,维度大的卷积核(滤波器)所提取的特征对于特征融合后的总体特征的贡献越大,使得整体卷积操作过程中所提取到的图像特征的表现程度更高,获得更好的学习效果。
特性四:Inception-V1网络结构中,随着选用的卷积核(滤波器)的维度逐渐增大,学习参数越来越多,使得在卷积过程中的计算量越来越大。对于此问题的解决,Inception-V1网络结构参考Network In Network文章中的思想,具体解决办法为设计了InceptionModule以提高参数的利用效率,同时增加了分支网络,采用1×1卷积核(滤波器)进行降维。
特性五:Inception-V1网络结构最后采用了average pooling来代替全连接层。Inception-V1网络结构的特点表现为通过增加宽度和深度来提升网络的复杂度,加强学习能力。增加深度的具体表现为增加网络中的层数,增加宽度的具体表现为增加每层中神经元的数量。但是这种提升网络复杂度的方式在提升网络学习能力的同时也产生了Inception-V1网络结构的缺点,主要表现在两方面,一方面增加宽度和深度使得学习参数不断增加,这样使得网络更加容易过拟合;另一方面,增加宽度和深度使得学习参数不断增加,使得网络产生巨大的计算量,在现实中难以解决具体的问题。采用average pooling来代替全连接层使得在空间域上产生一定程度的稀疏性,能够改善Inception-V1网络结构产生的过拟合现象,同时降低计算量,使得Inception-V1网络结构在增加宽度和深度的同时,还伴随有稀疏结构的特点,这样Inception-V1网络结构在通过增加宽度和深度来提升网络的复杂度,加强学习能力的同时,又通过average pooling降低Inception-V1网络结构增加宽度和深度所产生的负面作用,实现减轻过拟合并降低计算量的效果。
(4)Inception-V1网络结构所采用的技术以及算法:
1)使用1x1卷积核作用:
作用一:在相同尺寸的感受野中叠加更多的卷积操作,能将原图像的特征提取到更多,使得在卷积过程中实现更高程度的表征,传统的卷积层结构(图左)与加入NIN结构后卷积层结构(图右)如下图7所示。图14左侧是传统的卷积层结构(线性卷积),在其结构中只存在有一个尺度上的一次卷积;图15右侧是加入NIN结构后卷积层结构,在Inception-V1网络结构中加入Network in Network文章中所用的结构(NIN结构),先进行一次普通的卷积(比如3×3),然后在3×3卷积的后面叠加一个1×1的卷积核(滤波器),对于输入区网络中的图像的任意一个像素点,1×1卷积核(滤波器)所达到的效果为将任一像素点在所有特征上进行一次全连接的计算,在3×3卷积核(滤波器)以及1×1卷积核(滤波器)的后面,都加入激活函数用以加入非线性因素,实现非线性特征的表达。在这个过程中,3×3卷积核(滤波器)和1×1卷积核(滤波器)的叠加设计,实现了在最后的特征融合时组合出更多的非线性特征,从而在表征原图像特征上进一步增强。
作用二:使用1×1卷积进行降维,降低了计算复杂度。对于任意一个卷积层而言,当所选用的卷积核(滤波器)的维度增大时,学习的参数也会越来越多,向网络中输入的特征数也越来越多,从而使得在卷积操作过程中卷积产生巨大的计算量;如果对输入先进行降维,减少特征数后再做卷积计算量就会显著减少。例如,不使用1×1卷积进行降维,只使用单一卷积核进行卷积操作过程(图上)与使用1×1卷积进行降维过程(图下)如图8和图9所示。下图是两种不同的方式选择的各自所产生的乘法次数,第一种方式选择为对输入不进行降维处理,单一选取3×3卷积核(滤波器)进行卷积操作,那么处理输入一组为192个特征,32×32大小,输出256组特征的数据时,需要计算的乘法次数为:192×256×3×3×32×32=4529848次乘法;第二种方式选择为对输入进行降维,即先选取1×1卷积核(滤波器)进行降维操作处理,将输入数据的特征数降到96个,然后再在1×1卷积核(滤波器)的后面叠加3×3卷积核(滤波器),用以卷积操作再次恢复出256组特征,那么对于输入一组为192个特征,32×32大小,输出256组特征的数据,选用第二种方式对输入特征进行处理时,所产生的计算量共分为两部分,一部分为降维产生,一部分由恢复产生,两部分计算量之和为总体卷积操作过程中的计算量大小,需要计算的乘法次数为:192×96×1×1×32×32+256×96×3×3×32×32=245366784次乘法。选用第二种方式对输入特征进行处理,在3×3卷积核(滤波器)对图像特征提取前先选取1×1卷积核(滤波器)实现将输入特征数据降维方式的选择,使得最终产生的计算量与对输入不进行降维处理的第一种选择方式相比,第二种在3×3卷积核(滤波器)对图像特征提取前先选取1×1卷积核(滤波器)实现将输入特征数据降维的选择方式对节省了多于一半的计算量。第二种选择方式在卷积层整体对输入图像进行卷积操作提取特征的过程中,先选取1×1卷积核(滤波器)进行降维操作处理,将输入数据的特征数降到96个,不影响对输入图像特征的训练学习的效果,因为选取1×1卷积核(滤波器)进行降维操作处理是一种中间处理过程,在1×1卷积核(滤波器)实现降维处理后,还要在后面叠加3×3卷积核(滤波器)再次恢复出256组特征,这样对于最终的输出而言,与用3×3卷积核(滤波器)直接进行卷积操作的输出相同。但就计算复杂度而言,优先选取1×1卷积核(滤波器)实现降维处理后,然后在后面叠加3×3卷积核(滤波器)再次恢复出一定数目特征的方式选取大大简化了计算量。
2)多尺度卷积再聚合作用:
作用一:在多个尺度上同时进行卷积,能够实现将原图像进行多种不同程度的抽象特征的提取,使得在卷积操作结束进行特征融合时得到的用于表征图像的特征更为丰富,使得在实现具体图像分类任务时运用所生成的模型预测分类结果更加准确。在多个尺度上同时进行卷积,即运用多种大小不同的的卷积核(滤波器)实现对输入图像的卷积操作处理,能提取到不同尺度的特征。所运用多种大小不同的的卷积核(滤波器),在卷积操作过程结束后会得到多个不同的feature map结果,将多个不同的feature map结果进行拼接时实现将原图像的特征在不同尺度进行融合,加强对原图像特征的表现程度,达到较好的图像处理效果。
作用二:运用将稀疏矩阵分解成密集矩阵的算法实现加快卷积层在进行卷积操作时的速度。在多个尺度上同时进行卷积,在实现过程中一种具体的方式为需要对有原图像转化后的矩阵进行分割处理,当原有图像转化后的图像矩阵中的表现特点为一个稀疏矩阵时,即原有图像转化后的矩阵中很多元素都为0,不均匀分布在矩阵中。运用将稀疏矩阵分解成密集矩阵的算法过程如图10所示。图中展示了两种运用不同的卷积操作进行矩阵乘积的过程,选取维度为2卷积核(滤波器)。在卷积运算过程中,将特点为稀疏矩阵的原图像矩阵和一个具体维度的卷积核(滤波器)进行卷积,在这里需要对稀疏矩阵中的每一个元素进行计算。如果将左图的矩阵乘积分解成像右图矩阵乘积的形式,即将左图的稀疏矩阵分解成2个子密集矩阵,然后再同和2×2卷积核(滤波器)进行卷积,使用这种方式即可实现将左图的稀疏矩阵中0较多的区域进行简化,省略计算过程,从而很大程度上降低了计算量。这个原理应用到Inception-V1网络结构中的Inception Module上便实现将原图像稀疏矩阵在特征维度上进行分解。传统的卷积层对于输入数据的处理往往只使用单一种维度的卷积核(滤波器)对输入数据进行卷积操作处理,最终的输出结果只输出固定维度的数据,所获得的输出特征基本上是均匀分布在固定维度的卷积核(滤波器)范围之中,这种方式所得的输出的分布特点仍是一种稀疏分布的特征;而Inception Module模块选取运用稀疏矩阵分解成密集矩阵的算法,将左稀疏矩阵分解成多个子密集矩阵,然后再与多个不同维度的卷积核(滤波器)进行卷积操作运算,提取多种维度下的不同程度的特征,例如选取1×1,3×3,5×5三种不同的卷积核(滤波器)便会得到三种不同抽象程度的特征,这种方式所得出的多种特征解决了输出稀疏分布的缺陷,其输出特点表现为多种不同维度的特征聚合,同时还具有很强的相关性,即将原输入图像的由不同的的卷积核(滤波器)进行卷积后便会得到多种不同程度的抽象特征,在卷积结束后将多种不同程度的抽象特征进行融合时实现集中对原图像进行表征,减少了表征原图像特征程度较低的特征的输出。运用这种将稀疏矩阵分解成密集矩阵再与卷积核(滤波器)的卷积的算法,在不影响训练学习结果的情况下提高训练学习的速度,将现实中的问题解决难度降低。
(5)每层输入输出具体计算方式:
第一层:convolution层
输入数据维度(data):224×224×3
卷积核维度size:7×7,滑动步长(stride)为2,padding为3
输出维度:112×112×64,计算方式:(224+2×3-7+1)/2=112,kernel size=64
第二层:max pool层
输入数据维度(data):112×112×64
卷积核维度size:3×3,滑动步长(stride)为2,padding为1
输出维度:56×56×64,计算方式:(112+2×1-3+1)/2=56
第三层:convolution层
输入数据维度(data):56x56x64
卷积核维度size:3x3,滑动步长(stride)为1,padding为1
输出维度:56x56x192,计算方式:(56+2×1-3+1)/1=56,kernel size=192
第四层:max pool层
输入数据维度(data):56x56x192
卷积核维度size:3x3,滑动步长(stride)为2,padding为1
输出维度:28×28×192,计算方式:(56+2×1-3+1)/2=28
第五层:Inception层
分为4条通道,每条通道的输入均为第四层的输出(28x 28x 192)
通道1:1×1卷积层,64个卷积核,输出大小为28×28×64;
通道2:1×1卷积层,96个卷积核,输出大小为28×28×96;作为输入进入3×3卷积层,输出大小为28×28×128;
通道3:1×1卷积层,32个卷积核,输出大小为28×28×32;作为输入进入3×3卷积层,输出大小为28×28×32;
通道4:3×3的pooling层,输出大小为28×28×192;作为输入进入1x1卷积层,输出大小为28×28×32。
Inception层的输出为这四个通道的输出和:64+128+32+32=256
1.4.3L2范数归一化
L2范数归一是一种正则化计算方式,用于对所提取的特征向量的欧几里得距离进行归一化处理。其公式为:
化简表达为:
通过L2范数归一化公式实现了特征归一化,实现将所有特征的欧几里得距离在归一化之后的平方和||f(x)||2=1,幂次2即为取平方。L2范数归一化实现了所有图像的特征都会被映射到一个超球面上。
1.4.4Embeddings
Embedding完成的任务是将在深度学习网络中卷积过程中提取的图像特征进行编码表示。然后使用L2归一化对每个编码的特征向量进行归一化处理,每个特征向量就代表经过深度学习网络对输入的一张样本图片进行了特征提取。
1.4.5Triplet Loss
三元组损失模型实现将输入的人脸图像embedding嵌入128维度的欧几里得空间f(x)∈R128。在此向量空间内,学习单个个体的图像与相同个体的其它图像/>距离近,与非相同个体的其它个体的图像/>距离远,得到在128维度的欧几里得向量空间内用于通过计算人脸特征之间的欧几里得距离来进行人脸判断的模型。
(1)Triplet loss分类表达式:
Triplet loss为三元组损失的模型表达。三元组损失的原理为:将人脸特征之间的距离作为三元组中每一组的目标,根据目标的相似性大小来设计损失。具体的设计为,每次都在训练数据中取出3张人脸图像,第一张图像记为第二张图像记为/>第三张图像记为/>在三张人脸图像组成的组合中,/>和/>对应的是同一个人的不同人脸图像,而/>是另外一个不同的人的人脸图像。
在这种表示下,距离在表示同一个人的不同人脸图像的特征点的欧几里得距离时较小,而距离/>在表示两个不同人的不同人脸图像的特征点的欧几里得距离时较大。因此,由三张人脸图像组成的三元组损失满足下面的式子成立:
即同一个人的不同人脸图像间的欧几里得距离平方要比不同人的不同人脸图像间的距离平方小α,在公式中将人脸距离取平方处理便于进行求导处理。根据三元组损失的原理,设计三元组损失函数为:
当由三张人脸图像组成的三元组的人脸特征之间的距离满足表达式:时不产生任何损失,此时Li=0。
当由三张人脸图像组成的三元组的人脸特征之间的距离不满足上述表达式时,就会产生值为的损失。此外,在训练时会固定||f(x)||2=1,用以确保在人脸特征的欧几里得向量距离的表示上有最大距离的边界值。
(2)Triplet loss分类图:
Triplet loss三元组损失分类如图11所示。
在图18中,输入的Anchor、Positive、Negative分别为随机选取的人脸样本的特征、Anchor的正样本的特征、Anchor的负样本的特征。对应的三元组损失的公式为:
在上式中,Anchor的每一行就是一个Positive的每行就是相应正样本的/>Negative的每行就是负样本/>Anchor与Negative之间的距离即为随机选取的人脸样本的特征与Anchor的正样本的特征的欧几里得向量距离,Anchor与Positive之间的距离即为随机选取的人脸样本的特征与Anchor的负样本的特征的欧几里得向量距离。在经过三元组损失模型进行训练学习后,便获得能够正确预测人脸之间相似程度的能力,实现了在根据人脸特征之间的欧几里得距离来进行人脸判断时得到正确的判断结果。即:随机选取的人脸样本的特征与Anchor的正样本的特征的欧几里得向量距离,Anchor与Positive之间的距离即为随机选取的人脸样本的特征与Anchor的负样本的特征的欧几里得向量距离。
1.4.6FaveNet人脸识别效果
选取一张库存已知人脸图片作为标准,再另外选取两组人脸图片,一组人脸图片为与已知的库存人脸图片互为同一个人的不同人脸图片,另一组人脸图片为与已知的库存人脸图片互为不同人的不同人脸图片,设定最佳特征向量的阈值,实现人脸识别。FaveNet人脸识别效果如图12所示。
在图12中,设定最佳特征向量的阈值为1.16,在此阈值的设置下,图中5张人脸图中上方的2张人脸图片与中间的1张库存已知人脸图片被判定为不同人的人脸图片;图中下方的2张人脸图片与中间的1张库存已知人脸图片被判定为同一个人的不同人脸图片,实现人脸识别。
在选用FaceNet方法训练模型,获得预训练模型的基础上,加以基于SVM实现分类的方式和使用欧式距离比对的方式两种方式实现小数量人脸数据集人脸识别。
实施例6:小数量人脸数据集人脸识别的实现
1.1设计方案
本设计的实现采用的方法为:
1.FaceNet+SVM实现小数量人脸数据集人脸识别
2.FaceNet+欧氏距离比对实现小数量人脸数据集人脸识别
本设计的流程如图13所示。
1.1.1环境搭建与配置
整体系统的搭建与环境配置如下表2所示。
表2整体系统的搭建与环境配置
1.1.2人脸图像预处理
(1)人脸训练数据集的选取:
选用CASIA-WebFace人脸数据集,这个数据库有10575个类别494414张图片,每个类别均作为一个单独的文件夹,每个文件夹下有同一个人的几张或者几十张不等的人脸图片。
CASIA-WebFace为人脸数据集的一级目录,其子目录为拥有具体编号的10575个类别子文件夹,每个文件夹代表编号为一个人,文件夹保存这个人的所有人脸图片。
(2)人脸测试数据集的选取:
选用LFW人脸数据集,LFW数据集是由美国马赛诸塞大学阿姆斯特分校计算机实验室整理的人脸检测数据集,是评估人脸识别算法效果的公开测试数据集。LFW数据集共有5749个不同的人的13233张图片,其中有1680人对应不止一张图片,每张图片尺寸都是250×250,并且标示出对应的人的名字。每个文件夹均以人名命名以区分不同的人,每个文件夹下有同一个人的一张或者多张不等的人脸图片。
LFW为人脸数据集的一级目录,其子目录为拥有具体编号的5749个类别子文件夹,每个文件夹具体代表为一个人,文件夹保存这个人的所有人脸图片。
(3)人脸训练数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入命令。
人脸数据集的位置为datasets/casia/CASIA-WebFace,对齐后的图像保存在路径datasets/casia/casia_maxpy_mtcnnpy_182下,每张图像的大小都是182×182。而最终网络的输入是160×160,之所以先生成182×182的图像,是为了留出一定的空间给数据增强的裁切环节,即在182×182的图像上随机裁切出160×160的区域,再送入神经网络进行训练。
(4)人脸测试数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入命令。
(5)对人脸数据集进行预处理后得到指定大小人脸图片。
1.1.3训练模型
(1)训练模型过程:
模型的训练实现,首先加载大规模经处理过后的人脸图片,然后配置具体训练的参数,包括训练迭代次数,学习率,处理图像批次大小,优化方法的选择等诸多参数。然后经过预设置的训练迭代次数训练后,完成训练过程。
(2)训练模型实现:
执行训练交叉熵损失函数,同时设置训练时所需的相关参数,进行训练。使用预处理人脸训练数据集进行深度学习网络训练,执行项目中的模型损失训练文件。
在上面命令中,在执行训练命令时需要设置很多参数。对于train_softmax.py文件整体而言,文件采用softmax损失来训练模型,其中参数如下:--logs_base_dir./logs:这个参数的作用为将训练日志保存到./logs文件夹中,执行训练命令后,自动./logs文件夹下新建一个以开始训练时间节点命名的文件夹,最终将日志保存在此以开始训练时间节点命名的文件夹中。日志文件其实质为实际上指的是tensorflow中的events文件,它包含的主要内容为在每一步训练时的当前损失、当前训练步数、当前学习率等信息。在模型训练完以后,能够使用TensorBoard查看训练过程中的相关信息。
--models_base_dir./models:这个参数的作用为将训练好的模型保存在./models文件夹下,执行训练命令后,同样会在./models文件夹下新建一个以开始训练时间节点命名的文件夹,并用来保存训练好的模型。
--data_dir./datasets/casis/casia_maxpy_mtcnnpy_182:这个参数的作用为指定在训练时所使用的人脸数据集的路径,在这里使用的人脸数据集即为在第二步中对CASIA-WebFace人脸数据集人脸数据集进行预处理后所得到的对齐好的CASIA-WebFace人脸数据;
--image_size 160:这个参数的作用为输入网络的图片尺寸为160×160大小,在第二步中对CASIA-WebFace人脸数据集人脸数据集进行预处理后所得的图片尺寸为182×182,在向网络输入图片时,使用数据增强技术,在原图像182×182大小的基础上再次选取一定空间进行裁切,即在在182×182的图像上再次随机裁切出160×160的区域,然后将其送入神经网络进行训练。
--mode_def models.inception_resnet_v1:这个参数的作用为指定了训练所使用的卷积网络结构为Inception_resnet_v1网络。
--lfw_dir./datasets/lfw/lfw_mtcnnpy_160:这个参数的作用为标明LFW测试数据集的路径。在此参数的指定下,在训练过程中,每迭代训练完成一个epoch,就会在LFW测试数据集上执行一次测试,并将测试的准确率写入到日志文件中。
--optimizer ADAM:这个参数的作用为在训练人脸数据集的过程中使用ADAM优化方法。
--learning_rate-1:这个参数的作用为指定学习率,当此参数的值为负数时,其作用为指示忽略这个参数,转至使用项目中的learning_rate_schedule_file文件中所设置的参数实现对训练时学习率的设置。
--max_nrof_epochs 80:这个参数的作用为指定训练迭代的次数为80。
--keep_probability 0.8:这个参数的作用为指定在训练过程中使用dropout方法来防止过拟合时,将部分将部分神经单元暂时舍弃后所剩余的神经元保留率。
--random_crop:这个参数的作用为设置在使用人脸数据集进行训练过程中运用数据增强时使用随机裁切技术;
--random_flip:这个参数的作用为设置在使用人脸数据集进行训练过程中运用数据增强时使用随机随机翻转技术;
--learning_rate_schedule_filedata/learning_rate_schedule_classifier_casia.txt:这个参数的作用为在继参数learning_rate之后,训练网络的学习率的设置存放于data/learning_rate_schedule_classifier_casia.txt文件之中,最终的学习率将由learning_rate_schedule_file中的参数决定。
--weight_decay 5e-5:这个参数为正则化系数。
--center_loss_factor 1e-2:这个参数为中心损失和Softmax损失的平衡系数。
--center_loss_alfa 0.9:这个参数为中心损失的内部参数。
batch_size:这个参数的作用为在每次训练时批处理的图像数量大小。
random_rotate:这个参数的作用为这个参数的作用为设置在使用人脸数据集进行训练过程中运用数据增强时使用随机旋转技术;
(6)训练过程:
在训练过程中,每训练一步,在终端都会显示具体的训练信息。
在训练过程中每一行的参数含义如下:
Epoch:[15][286/1000]表示当前训练的进度为第15个内的第286个训练batch,在train_softmax.py文件中,设置默认参数epoch_size为1000,其含义为一个epoch有1000个batch。Time表示这一步的消耗的时间,Lr为学习率,Loss为当前batch的损失,Xent是softmax损失,RegLoss为正则化损失和中心损失之和,Cl是中心损失。
(7)训练结果:
按照训练命令,在机器硬件配置为GeForce GTX 1050Ti显卡的情况下,使用30小时左右的时间,将模型训练完成。
在训练结束后,显示了在LFW数据集上的测试结果,得出两个比较重要的结果参数:Accuracy和Validation rate两个测试结果。Accuracy的含义为:训练完成的模型在LFW数据集上的测试的准确率;Validation rate的含义为:对生成模型的评测。
1.1.4模型的可视化
运用tensorflow中的可视化工具可以查看模型训练的过程和结果。
所得的http://wyg-lenovo:6006即为在浏览器打开浏览的网址,其也等同于网址http://127.0.0.1:6006打开浏览器,在这里127.0.0.1是本机地址,6006是端口号。输入http://wyg-lenovo:6006或http://127.0.0.1:6006,打开后,单击SCALARS,可以查看到在程序中创建的多个变量,点击会显示如图14所示内容。
再次单击SCALARS,可以查看到在程序中创建的多个变量,点击会显示如图15、16、17、18所示内容,分别为训练过程中的交叉熵损失,LFW数据集测试准确率accuracy变化过程,LFW数据集测试precision变化过程以及训练过程中的总损失变化过程。
1.1.5模型的评估与测试
(1)测试说明:
1)选取的人脸图像数目选用LFW人脸数据集,选取LFW数据集中6000对人脸图片进行测试。
2)每一份为2个300对人脸图片的组合,第一个300对人脸为2个人的2张不同人脸图片,第二个300对人脸为同一个人的2张不同人脸图片。
(2)测试的实现:执行相应文件进行模型的测试。
(3)根据对模型测试的结果可以看出,测试结束后显示在LFW数据集测试准确率为98.10%,与训练结束后最后一步准确率相同。
(4)提升模型测试的准确率:
根据对使用CASIA-WebFace数据集所得的模型在LFW数据集上测试的结果来看,所获得准确率已经达到一定高度,但还有一定的提升空间,所以换用更大的数据集进行训练,选用vggface2数据集进行重新训练模型,包含331万图片,9131个人,最终获得的准确率为99.23%。
更换数据集测试结束后显示在LFW数据集测试准确率为99.23%,较之前训练模型测试所得的准确率提高1.13%。
(5)模型的应用:
训练完成时,得出所训练的模型。使用人脸验证文件进行对生成模型的测试。具体操作即效果展示为:输入2张或多张不同人脸图片,计算2张或多张不同人脸图片的特征向量的欧几里得距离,然后再次计算2张或多张不同人脸图片的特征向量的欧几里得距离的差值,结果返回为一个n阶方阵,其中n为输入的人脸图片数目。
由于选取的人脸数目为3张不同人脸图片,所以返回的结果为一个3阶方阵,每一行以及每一列矩阵元素的数值均为当前行或当前列所在的人脸图片与当前行或当前列人脸图片以及其他另外两行或另外两列所在的人脸图片的人脸特征向量的欧几里得距离比较过后的差值。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于FaceNet方法的小数量人脸数据集人脸识别方法,其特征在于,所述基于深度学习的小数量人脸数据集人脸识别方法包括:
首先使用FaceNet方法训练模型,并在所述模型训练完成后获得FaceNet预训练模型;
然后使用SVM分类器分类的方式或使用欧式距离比对的方式进行不同程度以及不同尺度的小数量人脸数据集人脸识别;并按照人脸图片逐步减少的路线进行测试,将人脸识别的图片数量进行降低;
所述SVM分类器分类的方式包括:
步骤一,使用指定范围下数据集使用SVM训练得出一个分类器;
步骤二,使用训练得出的分类器对指定范围下的数据集进行分类,得出每一类分类的结果;
步骤三,输入待识别的人脸图片,通过FaceNet网络后提取人脸特征向量,SVM分类器根据所述人脸特征向量的距离进行类判定,然后将所述人脸特征向量的距离分类至已分类的类别中,实现人脸识别;
步骤三实现人脸识别中,选用所搜集的小数量人脸数据集进行SVM分类,按照人脸图片逐步减少的路线进行测试,将人脸识别的图片数量降为5张每人;
所述欧式距离比对的方式包括:
步骤1,将一定范围的人脸图片送入FaceNet网络中产生进行人脸特征向量提取;
步骤2,将所处理的所有人脸的特征向量的存入一个指定的文件中,用于的指定范围的人脸进行登记;按照人脸图片逐步减少的路线进行测试,将所需求的人脸识别的图片数量降为1张每人;
步骤3,将输入待识别的人脸图片送入FaceNet网络中进行人脸特征向量提取;
步骤4,将待检测的人脸图片的特征向量与之前指定范围内的所有人脸特征向量的欧式距离进行比对;
步骤5,找出与待检测的人脸图片的特征向量欧式距离相近度最大的库存人脸特征向量进行匹配,在一定的阈值范围内,实现人脸识别;
使用基于SVM实现分类的方式实现人脸识别方法包括:
(1)每个文件夹下存储人脸图片数量为5张人脸图片,其中指定4张人脸图片用于分类器的训练,其余剩下的1张人脸用于测试分类器分类的准确率;
(2)人脸图像预处理:使用MTCNN进行人脸图像的预处理;
(3)训练SVM分类器;
(4)训练完成后生成一个SVM分类器;
(5)分类器完成分类并得出分类结果,在结果中显示,共对标号为0至39的40张人脸图片进行了分类,对所有分类的结果进行测试准确率为100%,所有的分类结果均正确,也即测试中的所有识别均实现正确识别;
(6)对待检测图片进行人脸识别;选取图片进行识别,所得识别结果表明实现正确识别,识别出的人物信息;
使用欧式距离比对的方式实现人脸识别方法包括:
(1)选用收集的小数量人脸数据集选取8个人组成人脸数据库,每人只有1张人脸图片实现识别;
(2)人脸图像预处理:
使用MTCNN进行人脸图像的预处理,具体包括:
第一步人脸检测任务:实现人脸检测,也即完成的任务是在输入的含有人脸的图片中寻找到人脸,输入与输出分别是:输入的是一张含有人脸的图片,输出的是能够确定人脸范围的矩形框;
第二步人脸对齐任务:在第一步输出能够确定人脸范围的矩形框之后,实现人脸对齐,将检测到的所有人脸进行统一位置展现操作,即为将检测到的不同姿态和位置的所有人脸实现对齐;具体实现的方式为根据人脸检测中的关键点,包括眼睛,鼻子,嘴巴,脸的轮廓点,然后将人脸检测中的关键点使用仿射变换实现将人脸统一校准,消除不同人脸的不同姿势带来的误差,完成人脸对齐;
MTCNN由三个神经网络组成,分别是P-Net,R-Net,O-Net,对于输入MTCNN网络的人脸图像,在实现人脸检测和人脸对齐时分为4个步骤:
第一步将原始图像进行不同尺度的缩放;
第二步P-Net神经网络计算与处理;
第三步R-Net神经网络计算与处理;
第四步O-Net神经网络计算与处理;
将原始图像进行不同尺度的缩放,在将原始图像输入MTCNN的3个网络进行计算与处理之前,首先要将原始图片缩放到不同尺度,形成一个图像金字塔;然后再将每个尺度的图片通过MTCNN的三个神经网络进行计算,经过对原始图像进行不同尺度的缩放处理,实现在统一尺度下检测人脸;
P-Net神经网络工作流程:
输入至P-Net神经网络的图像为一个宽和高皆为12像素,同时是3通道的RGB图像,P-Net神经网络完成3个任务:
任务一判断这个输入的图像中是否含有人脸;
任务二确定人脸矩形框;
任务三确定人脸关键点的位置,经过P-Net神经网络处理过后的图像输出为3部分:
face classification;bounding box regression;facial landmark localization;
face classification部分,实现对输入图像是否含有人脸的判断,输出向量的形状为1×1×2,也就是两个值,分别为该图像是人脸的概率,以及该图像不是人脸的概率,使用两个值来表示;
bounding box regression部分,完成人脸矩形框的确定,即实现框回归,输出输入至P-Net神经网络的图像的框位置相对于人脸矩形框位置的偏移,偏移量由四个变量组成,对于人脸矩形框的确定,用4个参数来表示人脸位置:矩形框左上角的横坐标,矩形框左上角的纵坐标,矩形框的宽度,矩形框的高度,框回归输出的值是,矩形框左上角的横坐标的相对偏移,矩形框左上角的纵坐标的相对偏移,矩形框的宽度的误差,矩形框的高度的误差;
Facial landmarklocalization部分,实现人脸关键点的位置的确定,Faciallandmarklocalization确定人脸的5个关键点,分别为:左眼的位置、右眼的位置、鼻子的位置、左嘴角的位置,右嘴角的位置,每个关键点又需要横坐标和纵坐标两维来表示,输出一共是10维,即1×1×10;
R-NET神经网络工作流程:
输入至P-Net神经网络的多种不同尺度的缩放图片,经过P-Net神经网络检测过后,得出多个大小不同的人脸矩形框,R-NET神经网络实现将P-Net计算得出多个大小不同的人脸矩形框进一步精确定位,R-Net神经网络完成3个任务:
任务一是再次精确判断这个输入的图像中是否含有人脸;
任务二确定人脸矩形框;
任务三确定人脸关键点的位置,输入至R-NET神经网络是24×24×3的图像,经过R-Net神经网络处理过后的图像输出也同样为3部分:face classification;bounding boxregression;facial landmark localization;
O-NET神经网络工作流程;
在R-NET神经网络检测过后的图像的基础上,对于输入至O-NET神经网络的人脸区域,O-NET神经网络进一步把所得到的区域缩放成48x48的大小,使用MTCNN方法实现人脸检测任务,O-NET神经网络同样完成与P-Net和R-Net相同的任务:
任务一判断这个输入的图像中是否含有人脸;
任务二确定人脸矩形框;
任务三确定人脸关键点的位置,对于输入至O-NET神经网络的48×48×3的图像,实现人脸矩形框的定位,框选出图像中人脸的位置;
在MTCNN神经网络完成人脸检测和人脸对齐任务的过程中,输入至MTCNN神经网络的图像依次经过P-Net,R-Net,最后再到O-Net;
MTCNN在训练过程中的算法实现:
MTCNN人脸检测与对齐的算法实现需要对以下三个任务的学习与训练:人脸与非人脸的分类,bounding box regression回归和人脸特征点定位;
人脸与非人脸的分类:
上式(1)为人脸与非人脸分类的交叉熵损失函数,其中,Pi是网络预测的结果是人脸的概率;是人脸的标签,其值为0或1,(1)式中人脸与非人脸分类的交叉熵损失函数所表达的含义为“预测的是人脸的概率”与“真实情况下是不是人脸”的接近程度,当二者的概率差值越小时,交叉熵损失函数的熵越小,损失越小;
人脸边界框回归:
上式(2)为通过欧氏距离计算的边界框回归损失,其中,为通过网络预测得到,/>为实际的真实的背景坐标,其中,/>为一个由边界框左上角横坐标x,边界框左上角纵坐标y,以及边界框的长,边界框的宽组成的四元组,预测的边界框bounding box与真实边界框bounding box的越接近程度越大,欧氏距离越小;
人脸关键点定位:
上式(3)的计算方式同人脸边界回归相类似,表达式计算的是MTCNN网络预测的人脸关键点位置坐标和实际真实的人脸关键点的位置坐标之间的欧式距离,并最小化该距离,其中,为通过网络预测得到的人脸关键点坐标,/>为实际的真实的人脸关键点坐标,共有5个人脸关键点,此5个人脸关键点分别为:左眼,右眼,鼻子,左嘴角,右嘴角,其中每个人脸关键点有分为2个维度坐标,5个人脸关键点共有10点人脸坐标,所以,/>属于一个十元组,预测的人脸关键点位置坐标landmarks位置与真实的人脸关键点位置坐标越接近,欧氏距离越小;
多个输入源的训练:
P-Net(αdet=1,αbox=0.5,αlandmark=0.5) (6)
R-Net(αdet=1,αbox=0.5,αlandmark=0.5) (7)
O-Net(αdet=1,αbox=0.5,αlandmark=1) (8)
上式(4)为多个输入源的训练的表达式,(5)(6)(7)(8)式为各个网络的参数,整个的训练学习过程即为对上式进行一个最小化的过程,其中,N为训练样本数量,αj表示任务的重要性,为样本标签,/>为人脸关键点定位损失函数;
完成对人脸检测与对齐后,根据检测与对齐过程中的所确定的人脸矩形框进行裁剪,实现将人脸数据集中的人脸图片按指定像素在包含人脸五点特征范围的基础上进行裁剪;
(3)将一定范围的人脸图片送入FaceNet网络进行人脸特征向量提取;
(4)将所处理的所有人脸的特征向量的存入一个指定的文件中,用于的指定范围的人脸进行登记,在结果中显示,输入共有8张人脸图片,输出显示共有8个人脸类别标签,在每人1张人脸图片的条件下,实现正确分类;
(5)对待检测图片进行人脸识别,选用另外1张人脸作为测试图片进行识别,所得识别结果为实现正确识别,在人脸矩形框上方显示具体识别的人物姓名,识别出的人物信息;
(6)多张人脸同时识别,当待识别的1张人脸图片中含有多张人脸时,依次经过建立人脸特征向量库,将所有人脸特征向量进行存储,对待检测图片进行人脸识别步骤后,同样显示所识别的具体人物信息;
使用FaceNet方法训练模型,并在训练完成后获得FaceNet预训练模型中,具体包括搭建开发环境;
人脸图像预处理:人脸训练数据集的选取,人脸测试数据集的选取,人脸训练数据集的预处理、人脸测试数据集的预处理及对人脸数据集进行预处理后得到指定大小人脸图片;
训练模型,首先加载大规模经处理过后的人脸图片,然后配置具体训练的参数,再经过预设置的训练迭代次数训练后,完成训练过程;
预训练模型测试与评估;通过k折交叉验证方法及10折交叉验证方法进行测试与评估。
2.如权利要求1所述的基于FaceNet方法的小数量人脸数据集人脸识别方法,其特征在于,所述人脸图像预处理具体包括:
第一步,人脸训练数据集的选取:
选用CASIA-WebFace人脸数据集,该数据库有10575个类别494414张图片,每个类别均作为一个单独的文件夹,每个文件夹下有同一个人的几张或者几十张不等的人脸图片;
CASIA-WebFace为人脸数据集的一级目录,其子目录为拥有具体编号的10575个类别子文件夹,每个文件夹代表编号为一个人,文件夹保存这个人的所有人脸图片;
第二步,人脸测试数据集的选取:
选用LFW人脸数据集,LFW数据集是由美国马赛诸塞大学阿姆斯特分校计算机实验室整理的人脸检测数据集,是评估人脸识别算法效果的公开测试数据集;LFW数据集共有5749个不同的人的13233张图片,其中有1680人对应不止一张图片,每张图片尺寸都是250×250,并且标示出对应的人的名字;每个文件夹均以人名命名以区分不同的人,每个文件夹下有同一个人的一张或者多张不等的人脸图片;
第三步,人脸训练数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入对应命令;人脸数据集的位置为datasets/casia/CASIA-WebFace,对齐后的图像保存在路径datasets/casia/casia_maxpy_mtcnnpy_182下,每张图像的大小都是182×182;而最终网络的输入是160×160,之所以先生成182×182的图像,是为了留出一定的空间给数据增强的裁切环节,即在182×182的图像上随机裁切出160×160的区域,再送入神经网络进行训练;
第四步,人脸测试数据集的预处理:
执行项目中的人脸裁剪预处理文件,在ubuntu18.04系统下,在终端输入对应命令;
第五步,对人脸数据集进行预处理后得到指定大小人脸图片。
3.如权利要求1所述的基于FaceNet方法的小数量人脸数据集人脸识别方法的设计流程,其特征在于,所述训练模型具体包括:
(1)首先加载大规模经处理过后的人脸图片,然后配置具体训练的参数,包括训练迭代次数,学习率,处理图像批次大小,优化方法的选择参数;然后经过预设置的训练迭代次数训练后,完成训练过程;
(2)执行训练交叉熵损失函数,同时设置训练时所需的相关参数,进行训练;使用预处理人脸训练数据集进行深度学习网络训练,执行项目中的模型损失训练文件,在ubuntu18.04系统下,在终端输入对应命令。
4.一种如权利要求1所述基于FaceNet方法的小数量人脸数据集人脸识别方法的基于FaceNet方法的小数量人脸数据集人脸识别系统。
5.一种实现权利要求1~3任意一项所述基于FaceNet方法的小数量人脸数据集人脸识别方法的信息数据处理终端。
6.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-3任意一项所述的基于FaceNet方法的小数量人脸数据集人脸识别方法。
CN201910774084.7A 2019-08-21 2019-08-21 基于FaceNet方法的小数量数据集人脸识别方法 Active CN110532920B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910774084.7A CN110532920B (zh) 2019-08-21 2019-08-21 基于FaceNet方法的小数量数据集人脸识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910774084.7A CN110532920B (zh) 2019-08-21 2019-08-21 基于FaceNet方法的小数量数据集人脸识别方法

Publications (2)

Publication Number Publication Date
CN110532920A CN110532920A (zh) 2019-12-03
CN110532920B true CN110532920B (zh) 2023-12-29

Family

ID=68662423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910774084.7A Active CN110532920B (zh) 2019-08-21 2019-08-21 基于FaceNet方法的小数量数据集人脸识别方法

Country Status (1)

Country Link
CN (1) CN110532920B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111081016B (zh) * 2019-12-18 2021-07-06 北京航空航天大学 一种基于复杂网络理论的城市交通异常识别方法
CN111191558B (zh) * 2019-12-25 2024-02-02 深圳市优必选科技股份有限公司 一种机器人及其人脸识别示教方法和存储介质
CN111695450B (zh) * 2020-05-26 2023-05-09 东南大学 一种基于IMobileNet的人脸快速识别方法
CN111753710A (zh) * 2020-06-18 2020-10-09 北京同城必应科技有限公司 一种应用于物流配送的细分类神经网络人脸识别方法
CN112070058A (zh) * 2020-09-18 2020-12-11 深延科技(北京)有限公司 人脸面部复合情感表情识别方法及系统
CN112308746A (zh) * 2020-09-28 2021-02-02 北京邮电大学 一种教学状态评估方法、装置及电子设备
WO2022082401A1 (zh) * 2020-10-20 2022-04-28 深圳市悦保科技有限公司 宠物鼻纹识别方法、装置、计算机设备及存储介质
CN112562150A (zh) * 2020-11-23 2021-03-26 深圳华颐智能系统有限公司 一种基于人脸识别的学生公寓管理方法、装置、系统及介质
CN112419310B (zh) * 2020-12-08 2023-07-07 中国电子科技集团公司第二十研究所 一种基于交并融合边框优选的目标检测方法
CN112597888B (zh) * 2020-12-22 2024-03-08 西北工业大学 一种针对cpu运算优化的在线教育场景学生注意力识别方法
CN113011370A (zh) * 2021-03-31 2021-06-22 重庆理工大学 一种基于深度学习的多状态人脸识别方法
CN113111950B (zh) * 2021-04-19 2022-05-31 中国农业科学院农业资源与农业区划研究所 一种基于集成学习的小麦锈病分类方法
CN112883946A (zh) * 2021-04-29 2021-06-01 南京视察者智能科技有限公司 一种自适应阈值的选取方法及人脸识别方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203533A (zh) * 2016-07-26 2016-12-07 厦门大学 基于混合训练的深度学习人脸验证方法
CN107330383A (zh) * 2017-06-18 2017-11-07 天津大学 一种基于深度卷积神经网络的人脸识别方法
CN109635643A (zh) * 2018-11-01 2019-04-16 暨南大学 一种基于深度学习的快速人脸识别方法
CN109711233A (zh) * 2017-10-26 2019-05-03 北京航天长峰科技工业集团有限公司 一种基于深度学习的比对证件照人脸识别方法
CN109948568A (zh) * 2019-03-26 2019-06-28 东华大学 基于arm微处理器和深度学习的嵌入式人脸识别系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10943096B2 (en) * 2017-12-31 2021-03-09 Altumview Systems Inc. High-quality training data preparation for high-performance face recognition systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106203533A (zh) * 2016-07-26 2016-12-07 厦门大学 基于混合训练的深度学习人脸验证方法
CN107330383A (zh) * 2017-06-18 2017-11-07 天津大学 一种基于深度卷积神经网络的人脸识别方法
CN109711233A (zh) * 2017-10-26 2019-05-03 北京航天长峰科技工业集团有限公司 一种基于深度学习的比对证件照人脸识别方法
CN109635643A (zh) * 2018-11-01 2019-04-16 暨南大学 一种基于深度学习的快速人脸识别方法
CN109948568A (zh) * 2019-03-26 2019-06-28 东华大学 基于arm微处理器和深度学习的嵌入式人脸识别系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
张晓林等.基于深度学习的证件照人脸识别方法.计算机系统应用.2017,第 27 卷(第 5 期),第1-6页. *
李华玲 ; 王智 ; 黄钰靖 ; .基于图片特征与人脸姿态的人脸识别方法.科学技术与工程.2018,(31),第200-204页. *
李涛等.数据挖掘的应用与实践 大数据时代的案例分析.厦门大学出版社,2013,313-315. *
雷敬炎.实验室工作创新与探索.中国地质大学出版社,2017,30. *

Also Published As

Publication number Publication date
CN110532920A (zh) 2019-12-03

Similar Documents

Publication Publication Date Title
CN110532920B (zh) 基于FaceNet方法的小数量数据集人脸识别方法
Alani et al. Hand gesture recognition using an adapted convolutional neural network with data augmentation
CN105447473B (zh) 一种基于PCANet-CNN的任意姿态人脸表情识别方法
CN112464865A (zh) 一种基于像素和几何混合特征的人脸表情识别方法
CN113033398B (zh) 一种手势识别方法、装置、计算机设备及存储介质
CN111709313B (zh) 基于局部和通道组合特征的行人重识别方法
CN113361495A (zh) 人脸图像相似度的计算方法、装置、设备及存储介质
CN111652273B (zh) 一种基于深度学习的rgb-d图像分类方法
Nguyen et al. Satellite image classification using convolutional learning
CN112597324A (zh) 一种基于相关滤波的图像哈希索引构建方法、系统及设备
CN116110089A (zh) 一种基于深度自适应度量学习的面部表情识别方法
Zhao et al. Cbph-net: A small object detector for behavior recognition in classroom scenarios
Yang et al. An improved algorithm for the detection of fastening targets based on machine vision
CN114492634A (zh) 一种细粒度装备图片分类识别方法及系统
CN110135435A (zh) 一种基于广度学习系统的显著性检测方法及装置
CN111582057B (zh) 一种基于局部感受野的人脸验证方法
CN111368637B (zh) 一种基于多掩模卷积神经网络的搬运机器人识别目标方法
Ouadiay et al. Simultaneous object detection and localization using convolutional neural networks
EP3588441B1 (en) Imagification of multivariate data sequences
CN108960005A (zh) 一种智能视觉物联网中对象视觉标签的建立及显示方法、系统
CN114627312B (zh) 零样本图像分类方法、系统、设备及存储介质
Kumar et al. Predictive analytics on gender classification using machine learning
Ma et al. Bottleneck feature extraction-based deep neural network model for facial emotion recognition
CN112686300B (zh) 一种数据处理方法、装置及设备
Jung et al. A metric to measure contribution of nodes in neural networks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant