人脸验证与人脸识别(Face verification and Face identification / recognition) 您所在的位置:网站首页 数据库系统英语怎么说 人脸验证与人脸识别(Face verification and Face identification / recognition)

人脸验证与人脸识别(Face verification and Face identification / recognition)

2024-07-02 21:32| 来源: 网络整理| 查看: 265

前言:

   人脸验证与人脸识别在人脸识别过程中是不相同的.首先介绍下人脸识别的概念,其次对于人脸识别人脸验证进行区别对比分析,以及相关概念介绍.最后对于这两个过程的评测进行说明.

 内容: 1.人脸识别的相关概念

    人脸识别(Facial Recognition),即通过视频采集设备获取用户的面部图像,再利用核心的算法对其脸部的五官位置、脸型和角度进行计算分析,进而和自身数据库里已有的范本进行比对,从而判断出用户的真实身份.人脸识别算法,在检测到人脸并定位面部关键特征点之后,主要的人脸区域就可以被裁剪出来,经过预处理之后,馈入后端的识别算法。识别算法要完成人脸特征的提取,并与库存的已知人脸进行比对,完成最终的分类。[1]

      人脸识别算法的原理:系统输入一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者相应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份.

    人脸识别技术在日常生活中主要有两种用途,一是用来进行人脸验证(又叫人脸比对),验证“你是不是某某人”,还有一种用于人脸识别,验证“你是谁”[1]

整个的过程如下:

 

2.人脸识别与人脸验证区别

      人脸验证其实可以称作是人脸识别中的一种.

     人脸验证做的是1:1的比对,其身份验证模式本质上是计算机对当前人脸与人像数据库进行快速人脸比对,并得出是否匹配的过程,可以简单理解为证明你就是你。就是我们先告诉人脸识别系统,我是张三,然后用来验证站在机器面前的“我”到底是不是张三。

      这种模式最常见的应用场景便是人脸解锁,终端设备(如手机)只需将用户事先注册的照片与临场采集的照片做对比,判断是否为同一人,即可完成身份验证.1:1作为一种静态比对,一般在金融、信息安全领域中应用较多。例如在高速路、机场安检时,受检人员手持身份证等证件,通过检查通道,同时对受检人员的外貌及身份证信息进行识别,此过程就是典型的1:1模式的人脸识别。

      人脸识别做的是1:N的比对,即系统采集了“我”的一张照片之后,从海量的人像数据库中找到与当前使用者人脸数据相符合的图像,并进行匹配,找出来“我是谁”。比如疑犯追踪,小区门禁,会场签到,以及新零售概念里的客户识别。

       1:N人脸识别模式,同时具有动态比对与非配合两种特点。动态对比是指通过对动态视频流的截取来获得人脸数据并进一步比对的过程;而非配合性是指识别的过程表现出非强制性与高效性的特点,识别对象无需到特定的位置便能完成人脸识别的工作。

  3.人脸识别中的其他相关内容

 

      闭集:已知此人在该数据集中

     开集:不知道此人在不在这个数据集中

    正样本: 测试集的人在注册集当中已经注册过

    负样本: 测试集中的人没有在注册集当中注册过

     另外在 Face Recognition 数据集一般会经常看到这三个数据集 Training set 、Gallery set and Probe set.其中gallery 为注册集,probe为 测试集其中gallery 集和probe 集供测试时使用.[2]

4.人脸验证与人脸识别的评测

   对于评测过程,其实就是通过测试数据来看模型的性能.可以绘制一些曲线例如ROC曲线来表征模型的评价过程.

  人脸验证评测

   对于目前大多数的数据集在进行评测时,借助于开源的数据库以及开源的评测代码进行.例如LFW数据集

     LFW数据集主要测试人脸识别的准确率,该数据库从中随机选择了6000对人脸组成了人脸辨识图片对,其中3000对属于同一个人2张人脸照片,3000对属于不同的人每人1张人脸照片。测试过程LFW给出一对照片,询问测试中的系统两张照片是不是同一个人,系统给出“是”或“否”的答案。通过6000对人脸测试结果的系统答案与真实答案的比值可以得到人脸识别准确率。这个集合被广泛应用于评价 face verification算法的性能。[3]

   其实这样的过程和孪生网络的评测过程一样,具体的代码可以参看孪生网络的评测.这里放一个github上的链接关于孪生网络mnist的评测--https://github.com/Hzzone/determination-of-identity/blob/master/mnist_siamese/siamese_test.py  

mnist的评测就是对于测试的图片以及标签读取之后,通过在样本中随机取样,人脸相同的和不同的数目相等, 具体逻辑可以看代码, totals代表总数, threshold是阈值.最后再绘制阈值不同时的函数变化曲线, 可以得到不同的识别率.不同的人脸, 距离应该小于阈值,相同的人脸则距离应该大于阈值.[4]下面是具体的代码:

def generate_accuracy_map(features, labels, totals=6000, threshold=0): # the number of _diff and _same = totals/2 _diff = [] _same = [] unique_labels = set(labels) length = len(unique_labels) diff_features = [] for i in range(length): ith_features = features[labels==i] diff_features.append(ith_features) # 每个样本平均取 for j in range(totals/(2*length)): x = random.randint(0, len(ith_features)-1) y = random.randint(0, len(ith_features)-1) first = ith_features[x] second = ith_features[y] # 这是所有相同的 _same.append(cosine_distnace(first, second)) # 这是不相同 # 随机抽,不会抽在同一个类中 for j in range(totals/2): while True: x = random.randint(0, length-1) y = random.randint(0, length-1) if x != y: break first = random.randint(0, len(diff_features[x])-1) second = random.randint(0, len(diff_features[y])-1) _diff.append(cosine_distnace(diff_features[x][first], diff_features[y][second])) correct = 0 for elememt in _diff: if elememt < threshold: correct = correct + 1 for elememt in _same: if elememt >= threshold: correct = correct + 1 return float(correct)/totals )

通过以上相关进而可以绘制出不同阈值下的准确率如下图所示,从而根据最有原则,选取最优点的数据做为人脸相似度的阈值,该阈值下的准确率就是得到的模型的在该数据及下的准确率.

在另一位博友的博客当中已经对于lfw数据集测评进行介绍了,可以参看一下[5] ,他在博客中还分享了一下matlab代码进行测评的代码借用一下他的结果图,红色标记的*表示为最佳的识别率,测试的最终的最佳识别率为0.9875.

 人脸识别的测评:

    通常是先进行注册集以及测试集的划分.注册集将所进行测评数据集中的每一个人的正面人脸分别取一张,作为数据集中每一个人的注册,剩余的进行测试看识别的准确率.当然为了更好的体现自己模型的性能,可以在测试集中加入负样本来进行评测.

 Reference:

[1].http://www.slec.com.cn/News/Dynamic_421.html

[2].Gallery Set与Probe set_Elijah_Yi的博客-CSDN博客

[3].LFW介绍整理_乱红飞的博客-CSDN博客

[4].GitHub - Hzzone/determination-of-identity: Caffe Siamese Network and Similarity by feature vector.

[5].人脸识别之caffe-face_caffe人脸识别_watersink的博客-CSDN博客



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有