基于人脸识别的登陆认证方案及思路

本文主要讨论基于人脸识别的登陆认证过程中的关键技术点,讨论如何实现这些关键技术点并解决困难问题。

1.关键技术点及思路

(1)登陆认证在服务器端实现还是在客户端实现?

换句话说,人脸识别的模型应该运行在服务器端还是客户端。如果人脸识别模型运行在服务器端,那么客户端必须在联网环境下才能通过服务端的认证并使用。某些场景下,例如音乐客户端场景(用户在无需联网的情况下也需要进入APP听音乐),人脸识别模型运行在服务器就无法满足需求。如果人脸识别模型运行在客户端,那么需要模型足够简单,客户端能够提供运行模型所需要的计算资源,例如,将能够运行在服务器的VGG16模型搬到客户端,大多数手机客户端的计算资源都无法满足需求,为了获得能在手机客户端运行的模型,需要投入人力做技术预研。

登陆认证在服务器端还是在客户端这个问题的整体思路:初期登录认证在服务器端运行,在必须联网才能使用客户端的场景使用,同时进行手机客户端做人脸识别的预研工作。手机客户端的人脸识别技术成熟后,再将登陆认证能力以SDK方式封装到客户端先以”咪咕考勤”作为人脸登录认证功能的试验田,最终为” 咪咕考勤”、“咪咕家“、“咪咕咖啡”及”九大客户端“以SDK方式提供人脸登陆认证能力。

(2)人脸检测是服务器端还是在客户端做?

在进行人脸识别的过程中,我们使用采集到图片中的人脸区域,需要先检测图片中的人脸位置,然后将该位置的人脸裁剪为只包含人脸区域的小图片。原始人脸图片是在客户端通过摄像头采集的,那么人脸检测应该在服务器端做还是在客户端做呢?

为了让人脸识别模型获取更大的人脸区域,从而使模型提取到更全面的人脸体征,使人脸识别更准确,需要在人脸检测步骤获得的人脸bounding box基础扩大人脸图片区域,因此,人脸识别模型在哪里运行,人脸检测就在哪里做。

(3)为什么VGG、RESNET等网络模型不能直接用于人脸识别?

VGG、RESNET等网络模型因资源消耗多不适合运行在手机客户端,即便是可以在手机客户端运行的MobileNET,也无法直接应用到我们的人脸识别场景,原因是:这些典型的网络无法对陌生人脸进行划分,例如,分类器可以识别3个人的人脸,当第4个人要识别时,他就会被误识别为这3个人中的其中一个。

(4)MobileNet模型不能直接用于手机端人脸识别,那该怎么办?

解决对陌生类别划分的问题,目前主要是通过Siamese网络和Triplet网络思路来解决,例如,DLIB中的人脸识别就是通过训练基于RESNET的Triplet网络实现。下面简单介绍Siamese网络和Triplet网络的原理。

Siamese 网络的主要思想是通过一个函数将输入映射到目标空间,在目标空间使用简单的距离(欧式距离等)进行对比相似度。在训练阶段去最小化来自相同类别的一对样本的损失函数值,最大化来自不同类别的一堆样本的损失函数值。

根据Siamese网络的主要思想,有人发明了Triplet 网络。triplet是一个三元组,这个三元组是这样构成的:从训练数据集中随机选一个样本,该样本称为Anchor,然后再随机选取一个和Anchor (记为x_a)属于同一类的样本和不同类的样本,这两个样本对应的称为Positive(记为x_p)和Negative (记为x_n),由此构成一个(Anchor,Positive,Negative)三元组。针对三元组中的每个元素(样本),训练一个参数共享或者不共享的网络,得到三个元素的特征表达,分别记为:f(xia),f (xip),f (xin)。triplet loss的目的就是通过学习,让x_a和x_p特征表达之间的距离尽可能小,而x_a和x_n的特征表达之间的距离尽可能大,并且要让x_a与x_n之间的距离和x_a与x_p之间的距离之间有一个最小的间隔t。公式化表示就是:||f (xia)-f (xip)||+t<||f(xia)-f (xin)||,损失函数就是L={ ||f (xia)-f (xip)||-||f (xia)-f (xin)||+t }+。这里距离用欧式距离度量,+表示{ }内的值大于零的时候,取该值为损失,小于零的时候,损失为零。

(5)DLIB提供的人脸识别满足我们的需要吗?

前面提到过DLIB人脸识别是基于RESNET的Triplet网络,限制了它在手机端的应用,但是当人脸识别模型运行在服务器端时,可以方便地利用DLIB提供的人脸识别功能

除了人脸识别外,人脸登录认证过程中需要对人脸的真实性做判断(例如进行活体检测),DLIB不能满足这些需要,需要投入人力预研。由于我们目前的场景并不涉及类似支付的高度敏感场景的认证,所以可以将活体检测预研的优先级排低一些。

(6)人脸识别模型在客户端运行有哪些难点需要解决?

如何选择能在手机端运行的深度学习框架。用什么框架(tensorflow、pytorch、caffe)训练的模型,能同时在IOS、Android是上运行?工程上如何实现对这些模型的调用?

手机端如何实现人脸识别。怎样对现有模型(如MobileNET)进行改造,才能达到既满足运行效率(例如<100ms)的要求,又有足够的识别准确度 (如99%)的要求。

手机端如何实现人脸检测。OpenCV DNN人脸检测性能和效果都比较好,但是集成OpenCV会导致安装包过大,裁剪OpenCV代价会比较大。

2.核心业务流程(不含产品设计)

(1)人脸识别在服务器端

人脸注册阶段,客户端负责采集各个角度(中、左、右、上、下)的人脸照片,上传服务端请求注册,服务端接收到注册请求后,从人脸照片中识别人脸,并提取人脸特征并保存在数据库中,待人脸识别阶段与新上传照片的特征进行比较。

认证阶段,客户端负责采集人脸图片,并上传服务器端请求认证,服务器端收到请求后进行人脸检测、人脸特征提取,并与注册阶段生成的人脸特征比较,如果特征距离低于某阀值(如DLIB设置为0.6)则认证通过。另外,服务器端可以采集认证的效果数据,用户模型的调优和评估。

(2)人脸识别在客户端

当人脸识别在客户端进行时,所有服务端的工作都将按顺序发生在客户端。人脸注册过程中,客户端可以将注册人脸过程中产生的特征值在联网状态下发送给服务器端做保存备份。

3.参考文献

https://github.com/opencv/opencv/blob/master/samples/dnn/js_face_recognition.html

https://github.com/yeziyang1992/Python-Tensorflow-Face-v2.0

https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

https://towardsdatascience.com/one-shot-learning-face-recognition-using-siamese-neural-network-a13dcf739e

https://www.pytorchtutorial.com/pytorch-one-shot-learning/

https://hackernoon.com/facial-similarity-with-siamese-networks-in-pytorch-9642aa9db2f7

https://github.com/zdavidli/siamese-facial-recognition

https://github.com/harveyslash/Facial-Similarity-with-Siamese-Networks-in-Pytorch

http://blog.dlib.net/2017/02/high-quality-face-recognition-with-deep.html

https://github.com/davisking/dlib/blob/master/python_examples/face_recognition.py

http://krasserm.github.io/2018/02/07/deep-face-recognition/

https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python-and-deep-learning/

https://www.cnblogs.com/punkcure/p/9082626.html

https://zhuanlan.zhihu.com/p/44904820

原文地址:https://www.cnblogs.com/dskit/p/10298047.html

时间: 2024-10-10 02:01:37

基于人脸识别的登陆认证方案及思路的相关文章

人脸识别门禁应用方案

应用背景: 室内安全防范是人们最具关心的功能之一,人.物的安全重要性不言而喻.企事业单位,写字楼,商场,酒店没有可靠的门禁管理系统,外来人员较多,经常出现财物丢失的情况?现有的刷卡门禁,但员工常忘记带卡,不方便,常常遗失卡,具有安全隐患.指纹识别门禁,总有5%人群不能正确识别,长时间共同接触设备,不卫生.为了解决以上问题,科葩制定专用的人脸识别门禁解决方案. 人脸识别门禁系统,采取行业领先的人脸识别技术,精确分析人脸特征,作为身份识别的依据,从而提供安全的.便捷的访问解决方案.系统采用人脸识别认

基于人脸识别的商业大数据

主要内容: 人脸识别登录     根据人脸识别与浏览记录相结合的方式进行商品和广告推荐     根据表情识别来分别客户对广告推荐的喜好程度 功能性需求: 人脸检测:     通过摄像头获取人脸轮廓,提取特征生成特征数据库,将实时生成的特征数据与预置的特征库进行比较,计算相似度,给出相应识别结果,可以支持多个人脸识别,并能辨别出摄像头到人的距离. 年龄和性别监测: 通过摄像头捕获人脸图像,首先进行人脸轮廓检测,确定眼睛的精确位置(人眼定位),然后提取面部有分类能力的特征,生成人脸特征数据.通过实时

基于人脸识别技术实战开发人证比对访客系统

最近有个小区用到了虹软的人脸识别,效果还不错.又有一个项目要用人证访客对比,分享一下项目,希望可以帮到有需要的. 码字前先上项目地址:https://gitee.com/panmingzhi/IdCardFaceIdentifier 首先是读证的问题,我们使用的是华视CVR100U,公司已经用这个型号6年了,以前一卡通的资料都用它录,除了不好看,质量杠杠的.大部人的身份证都是很多年前办理的,所有比对的相似度不要太高. 视频采集还是使用的Aforge,使用 NewFrame 一方面要显示到实时画面

一种基于主板BIOS的身份认证方案及实现

一.BIOS简介 BIOS是只读存储器基本输入/输出系统,它是被固化到计算机中的一组程序,为计算机提供最低级的.最直接的硬件控制,在计算机系统中起着非常重要的作用.BIOS是硬件与软件程序之间的接口,负责解决硬件的即时需求,并按软件对硬件的操作要求具体执行.BIOS的功能包括自检及初始化.硬件中断处理.程序服务处理. 1. 自检及初始化 这个部分的功能是启动计算机,包括三个部分,第一个部分是用于计算机刚接通电源时对硬件部分的检测,也叫做加电自检(POST),功能是检查计算机是否良好.第二个部分是

人脸识别系统在校园的应用场景日益丰富

各类证件.门禁卡.钥匙曾经是高校师生出入校园的必备品,如今在越来越多的高校,师生们只需"刷脸"即可轻松自如享受各种服务.常见的有"刷脸"进校园.进图书馆.进寝室等.作为人工智能领域大规模落地的成熟技术,人脸识别已经被越来越多的教育机构认可,用以构建安全智慧化校园,教育行业的"刷脸"时代正在到来. 在学校大门出入口, "人证合一"身份核验让师生们出入校门无需传达室登记,只需在闸机通道人脸识别终端前面短暂停留,毫秒时间单位内即可&

当AI遇上校园 人脸识别应用场景的多种可能-非思丸

证件.门禁卡.钥匙曾经是高校师生出入校园的必备品,如今在越来越多的高校,师生们只需"刷脸"即可轻松自如享受各种服务.除了"刷脸"进校园.进食堂.进寝室等,近期电子科技大学图书馆等高校纷纷采用人脸识别技术应用于图书馆,在智能化图书馆建设上实现率先探索.作为人工智能领域大规模落地的成熟技术,人脸识别已经被越来越多的教育机构认可,用以构建安全智慧化校园,教育行业的"刷脸"时代正在到来. 人脸识别应用校园带来的安全与便捷 当前在电子科技大学图书馆的出入通

基于javaweb人脸识别注册登录系统

---恢复内容开始--- 现在是2019年,人脸识别技术已经相当成熟了,百度自2017年发布人脸识别技术,已经被广泛应用,不管从现在的iphoneX掀起的面部解锁到手机应用端的各种人脸认证,这一技术已经悄然升息的方便了我们的生活,但是在web端注册登录缺很少用到刷脸登录,第一个最主要的原因可能是安全隐私方面人们对大数据时代的误解.不多废话,下面通过调用百度api来实现人脸注册及登录, Web端人脸识别主要有三个技术思路: 1.前端的人脸识别,例如使用Tensorflow.js, 2.后台人脸识别

人脸识别技术应用场景与前景

随着人工智能的发展,人脸识别也不落后,争相向人们展示它的风采,在一些比较发达的城市,普遍运用刷脸的方式来解决问题,在不知不觉中大家都要靠脸吃饭了,这绝对不是贬义词.大家都知道现下流行的小鲜肉.网红什么的,都是颜值高的,偶像明星靠脸吃饭.如今不光是作为明星名人才能靠脸吃饭,我们这些普通老百姓也能如此. 人脸识别技术经历了可见光图像人脸识别.三维图像人脸识别/热成像人脸识别.基于主动近红外图像的多光源人脸识别三层进化过程,逐渐缓解和解决了光线等环境的变化对于人脸识别的影响,加之算法的不断精准演化,人

人脸识别门禁系统保障行业的安全性能

动态场景两个维度 第一.1:11:1的定义是一个判断的作用,应用的场景其实是在金融和人证,特点是更加的精准和安全,所以现在大家不管是支付宝还是银行的人证比对.实名的业务,基本上都会用到1:1人脸的识别. 第二.1:N1:N更多的是在一个数据库当中或者是一个底库当中,能够找到这个人是不是在底库当中的人,所以是个识别的过程,是一个动态的,还是一个非配合的场景,比如说在安防当中我去缉拿逃犯,我去抓到逃犯总不能让逃犯看到摄象头.在商业场景当中也不可能让我们的VIP客户.员工.会员对着摄象头做着一遍操作,