人脸识别算法初次了解-程序员宅基地

技术标签: 面试  人工智能  数据库  

人脸识别算法初次了解

这是转载别人的帖子,认为好,大家一块学习http://www.cnblogs.com/guoyiqi/archive/2011/07/28/2129300.html

前言   

    在写此文之前,先扯点东西。我一直在找一个东西,让我思考,让我久久的深陷当中,永久的,不断的思考。现在,我意识到,这个东西即是算法。我一直在找一家合适的公司,能让我的兴趣无比放肆的,自由驰骋。

    ok,由于在一家公司的面试过程中,面试官提到过这个人脸识别算法,由于在此之前,未曾有过了解,所以,特作此番学习与研究。有不论什么问题,欢迎不吝指正。谢谢。

第一部分、人脸识别算法综述

    人脸识别,特指利用分析比較人脸视觉特征信息进行身份鉴别的计算机技术。

概述

    广义的人脸识别实际包含构建人脸识别系统的一系列相关技术,包含人脸图像採集、人脸定位、人脸识别预处理、身份确认以及身份查找等;而狭义的人脸识别特指通过人脸进行身份确认或者身份查找的技术或系统。

    人脸识别是一项热门的计算机技术研究领域,它属于生物特征识别技术,是对生物体(一般特指人)本身的生物特征来区分生物体个体。生物特征识别技术所研究的生物特征包含脸、指纹、手掌纹、虹膜、视网膜、声音(语音)、体形、个人习惯(比如敲击键盘的力度和频率、签字)等,对应的识别技术就有人脸识别、指纹识别、掌纹识别、虹膜识别、视网膜识别、语音识别(用语音识别能够进行身份识别,也能够进行语音内容的识别,仅仅有前者属于生物特征识别技术)、体形识别、键盘敲击识别、签字识别等。

    人脸识别的优势在于其自然性和不被被測个体察觉的特点。

    所谓自然性,是指该识别方式同人类(甚至其它生物)进行个体识别时所利用的生物特征同样。比如人脸识别,人类也是通过观察比較人脸区分和确认身份的,另外具有自然性的识别还有语音识别、体形识别等,而指纹识别、虹膜识别等都不具有自然性,由于人类或者其它生物并不通过此类生物特征差别个体。

    不被察觉的特点对于一种识别方法也非常重要,这会使该识别方法不令人反感,而且由于不easy引起人的注意而不easy被欺骗。人脸识别具有这方面的特点,它全然利用可见光获取人脸图像信息,而不同于指纹识别或者虹膜识别,须要利用电子压力传感器採集指纹,或者利用红外线採集虹膜图像,这些特殊的採集方式非常easy被人察觉,从而更有可能被伪装欺骗。

困难

    尽管人脸识别有非常多其它识别无法比拟的长处,可是它本身也存在很多困难。人脸识别被觉得是生物特征识别领域甚至人工智能领域最困难的研究课题之中的一个。人脸识别的困难主要是人脸作为生物特征的特点所带来的。人脸在视觉上的特点是:

  1. 不同个体之间的差别不大,全部的人脸的结构都相似,甚至人脸器官的结构外形都非常相似。这种特点对于利用人脸进行定位是有利的,可是对于利用人脸区分人类个体是不利的。
  2. 人脸的外形非常不稳定,人能够通过脸部的变化产生非常多表情,而在不同观察角度,人脸的视觉图像也相差非常大,另外,人脸识别还受光照条件(比如白天和夜晚,室内和室外等)、人脸的非常多遮盖物(比如口罩、墨镜、头发、胡须等)、年龄等多方面因素的影响。

    在人脸识别中,第一类的变化是应该放大而作为区分个体的标准的,而第二类的变化应该消除,由于它们能够代表同一个个体。通常称第一类变化为类间变化(inter-class difference),而称第二类变化为类内变化(intra-class difference)。对于人脸,类内变化往往大于类间变化,从而使在受类内变化干扰的情况下利用类间变化区分个体变得异常困难。

技术细节

    一般来说,人脸识别系统包含图像摄取、人脸定位、图像预处理、以及人脸识别(身份确认或者身份查找)。系统输入通常是一张或者一系列含有未确定身份的人脸图像,以及人脸数据库中的若干已知身份的人脸图象或者对应的编码,而其输出则是一系列相似度得分,表明待识别的人脸的身份。

眼下人脸识别的算法能够分类为:

  • 基于人脸特征点的识别算法(Feature-based recognition algorithms)。
  • 基于整幅人脸图像的识别算法(Appearance-based recognition algorithms)。
  • 基于模板的识别算法(Template-based recognition algorithms)。
  • 利用神经网络进行识别的算法(Recognition algorithms using neural network)。

 应用

人脸识别的应用主要有:

  1. 门禁系统:受安全保护的地区能够通过人脸识别辨识试图进入者的身份。
  2. 摄像监视系统:在比如银行、机场、体育场、商场、超级市场等公共场所对人群进行监视,以达到身份识别的目的。比如在机场安装监视系统以防止恐怖分子登机。
  3. 网络应用:利用人脸识别辅助信用卡网络支付,以防止非信用卡的拥有者使用信用卡等。
  4. 学生考勤系统:香港及澳门的中、小学已開始将智能卡配合人脸识别来为学生进行每天的出席点名记录。
  5. 相机:新型的数码相机已内建人脸辨识功能以辅助拍摄人物时对焦。

第二部分、自己主动人脸识别基本原理

   人脸识别经过经过这么多年来的发展,取得了非常大的发展,涌现出了大量的识别算法。这些算法的涉及面非常广泛,包含模式识别、图像处理、计算机视觉、人工智能、统计学习、神经网络、小波分析、子空间理论和流形学习等众多学科。所以非常难用一个统一的标准对这些算法进行分类。依据输入数据形式的不同可分为基于静态图像的人脸识别和基于视频图像的人脸识别。由于基于静态图像的人脸识别算法相同适用于基于视频图像的人脸识别,所以仅仅有那些使用了时间信息的识别算法才属于基于视频图像的人脸识别算法。接下来分别介绍两类人脸识别算法中的一些重要的算法。

特征脸

   特征脸方法利用主分量分析进行降维和提取特征。主分量分析是一种应用十分广泛的数据降维技术,该方法选择与原数据协方差矩阵前几个最大特征值相应的特征向量构成一组基,以达到最佳表征原数据的目的。由于由主分量分析提取的特征向量返回成图像时,看上去仍像人脸,所以这些特征向量被称为“特征脸”。

   在人脸识别中,由一组特征脸基图象张成一个特征脸子空间,不论什么一幅人脸图象(减去平均人脸后)都可投影到该子空间,得到一个权值向量。计算此向量和训练集中每一个人的权值向量之间的欧式距离,取最小距离所相应的人脸图像的身份作为測试人脸图像的身份。

   下图给出了主分量分析的应用样例。图中最左边的为平均脸,其它的为相应 7 个最大特征值的特征向量。

   主分量分析是一种无监督学习方法,主分量是指向数据能量分布最大的轴线方向,因此能够从最小均方误差意义下对数据进行最优的表达。可是就分类任务而言,由主分量分析得到的特征却不能保证能够将各个类别最好地区分开来。

   线性鉴别分析是一种著名的模式识别方法,通过将样本线性变换到一个新的空间,使样本的类内散布程度达到最小,同一时候类间散布程度达到最大,即著名的 Fisher 准则。

标准特征脸
同一个人不同图像之间的的特征脸
不同人的图像之间的特征脸

   Lades 等人针对畸变不变性的物体识别问题提出了一种基于动态连接结构的弹性图匹配方法,并将其应用于人脸识别。全部人脸图像都有相似的拓扑结构。人脸都可表示成图,图中的节点是一些基准点(如眼睛,鼻尖等),图中的边是这些基准点之间的连线。

   每一个节点包括 40 个 Gabor 小波(一种数字信号变换方法)系数,包括相位和幅度,这些系数合起来称为一个 Jet ,这些小波系数是原始图像和一组具有 5 个频率、 8 个方向的 Gabor 小波卷积(一种数字信号处理算子)得到的。这样每幅图就像被贴了标签一样,当中的点被 Jets 标定,边被点之间的距离标定。所以一张人脸的几何形状就被编码为图中的边,而灰度值的分布被编码为图中的节点。例如以下图所看到的:

 

弹性图匹配方法中人脸的弹性束图表示

   为了识别一张新的人脸,须要从该人脸中找到基准点,提取出一个人脸图,这可用弹性图匹配得到。弹性图匹配的目的是在新的人脸中找到基准点,而且提取出一幅图,这幅图和现有的人脸束图之间的相似度最大。经过弹性图匹配后,新的人脸的图就被提取出来了,此图就表征了新的人脸,用它作为特征进行识别。进行识别时,计算測试人脸和现有人脸束图中的全部人脸之间的相似度,相似度最大的人脸的身份即为測试人脸的身份。

   因为该方法利用 Gabor 小波变换来描写叙述面部特征点的局部信息,因此受光照影响较小。此外,在弹性匹配的过程中,网格的形状随着特征点的搜索而不断变化,因此对姿态的变化也具有一定的自适应性。该方法的主要缺点是搜索过程中代价函数优化的计算量巨大,因而造成识别速度较慢,导致该方法的有用性不强。

3D 形态模型

   人脸本质上是 3D 空间中的一个表面,所以原则上用 3D 模型能更好地表征人脸,特别是处理人脸的各种变化,如姿势、光照等。 Blanz 等人提出了一种基于 3D 形态模型的方法,该方法将形状和纹理用模型參数编码,同一时候提出了一个能从单张人脸图像还原模型參数的算法。形状和纹理參数可用来进行人脸的识别。为了处理因为这些參数导致的图像之间差异的极端情形,一般是预先产生一个通用的模型。而进行图像分析时,给定一张新的图像,一般的做法是用通用模型去拟合新的图像,从而依据模型来參数化新的图像。

基于视频图像的识别算法

   一个典型的基于视频图像的人脸识别系统一般都是自己主动检測人脸区域,从视频中提取特征,最后假设人脸存在则识别出人脸的身份。在视频监控、信息安全和出入控制等应用中,基于视频的人脸识别是一个非常重要的问题,也是眼下人脸识别的一个热点和难点。基于视频比基于静态图像更具优越性,由于 Bruce 等人和 Knight 等人已证明,当人脸被求反或倒转时,运动信息有助于(熟悉的)人脸的识别。尽管视频人脸识别是基于静态图像的人脸识别的直接扩展,但一般觉得视频人脸识别算法须要同一时候用到空间和时间信息,这类方法直到近几年才開始受到重视并须要进一步的研究和发展。眼下视频人脸识别还有非常多困难和挑战,详细来说有下面几种:

   视频图像质量比較差:视频图像通常是在户外(或室内,可是採集条件比較差)获取的,通常没实用户的配合,所以视频人脸图像常常会有非常大的光照和姿态变化。另外还可能会有遮挡和伪装。

   人脸图像比較小:相同,因为採集条件比較差,视频人脸图像通常会比基于静态图像的人脸识别系统的预设尺寸小。小尺寸的图像不但会影响识别算法的性能,并且还会影响人脸检測,切割和关键点定位的精度,这必定会导致整个人脸识别系统性能的下降。

   视频人脸识别起源于基于静态图像的人脸识别,即识别系统自己主动的检測和切割出人脸,然后用基于静态图像的识别方法进行识别。对这类方法的一个提高是添�了人脸跟踪。在这类系统中,通过利用姿态和从视频中预计到的深度信息合成一个虚拟的正面人脸。这个阶段的另外一个能提高识别率的方法是利用视频中充裕的帧图像,基于每帧图像的识别结果,使用 ” 投票 ” 机制。投票方法能够是确定的,可是概率投票方法一般来说更好。投票机制的一个缺点是计算结果的代价比較昂贵。

   视频人脸识别的第二个发展阶段是利用多模态信息。由于人类通常会利用多种信息识别人的身份,所以一个多模态系统将比仅仅利用人脸的识别系统性能更好。更重要的是利用多模态信息提供了一种方法,它能全面解决那些仅仅靠人脸无法识别的任务。比如,在一个全然没有配合的环境(比方抢劫),歹徒的脸通常是蒙着的,这时唯一能进行无人脸识别的方法就是分析歹徒躯体的运动特性。除了指纹,人脸和声音是最经常使用于身份识别的信息。它们已经被用于非常多多模态身份识别系统。 1997 年以来,每两年,就会召开一个专门关于基于视频和语音身份识别的国际会议。

   近期几年,视频人脸识别进入第三个发展阶段,这个阶段方法的特点是同一时候採用空间信息(在每帧中)和时间信息(比方人脸特征的运动轨迹)。差别于概率投票方法的一个非常大的不同之处在于,此类方法是在时间和空间的联合空间中描写叙述人脸和识别人脸的。

   视频图像的一个很重要的特性是它的时间连续性,以及由此产生的人脸信息的不确定性。在人脸跟踪和识别中利用时间信息是视频人脸识别算法和基于静态图像的人脸识别算法的最大差别。眼下这类算法大致可分为两类:

  1. 跟踪 - 然后 - 识别,这类方法首先检測出人脸,然后跟踪人脸特征随时间的变化。当捕捉到一帧符合一定标准(大小,姿势)的图像时,用基于静态图像的人脸识别算法进行识别。这类方法中跟踪和识别是单独进行的,时间信息仅仅在跟踪阶段用到。识别还是採用基于静态图像的方法,没用到时间信息。
  2. 跟踪 - 且 - 识别,这类方法中,人脸跟踪和识别是同一时候进行的,时间信息在跟踪阶段和识别阶段都用到。

以上内容整理自下面两个地方

  1. http://zh.wikipedia.org/wiki/%E4%BA%BA%E8%84%B8%E8%AF%86%E5%88%AB。
  2. http://b2museum.cdstm.cn/identification/rlsb-2.htm。

第三部分、人脸识别算法的实现   

    这个东西,因为刚刚接触,还不知怎么实现。只是,倒是,有人做了个人脸检測与特征定位的程序,效果图例如以下:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34006965/article/details/85648351

智能推荐

Eclipse中配置WebMagic(已配置好Maven)_使用eclipse搭建webmagic工程-程序员宅基地

文章浏览阅读364次。1.WebMagicWebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。2.在Eclipse中配置WebMagic1.首先需要下载WebMagic的压缩包官网地址为:WebMagic官网最新版本为:WebMagic-0.7.3,找到对应版本,打开下载界面,注意,下载要选择Source code(zip)版本,随便下载到哪里都可以;2.下载好的压缩包需要解压,此时解压到的位置即为后续新建的Eclipse的project位置,比如我的Ecli_使用eclipse搭建webmagic工程

linux启动mysql_linux如何启动mysql服务_linux启动mysql服务命令是什么-系统城-程序员宅基地

文章浏览阅读1.9k次。mysql数据库是一种开放源代码的关系型数据库管理系统,有很多朋友都在使用。一些在linux系统上安装了mysql数据库的朋友,却不知道该如何对mysql数据库进行配置。那么linux该如何启动mysql服务呢?接下来小编就给大家带来linux启动mysql服务的命令教程。具体步骤如下:1、首先,我们需要修改mysql的配置文件,一般文件存放在/etc下面,文件名为my.cnf。2、对于mysql..._linux中 mysql 启动服务命令

php实现在线oj,详解OJ(Online Judge)中PHP代码的提交方法及要点-程序员宅基地

文章浏览阅读537次。详解OJ(Online Judge)中PHP代码的提交方法及要点Introduction of How to submit PHP code to Online Judge SystemsIntroduction of How to commit submission in PHP to Online Judge Systems在目前常用的在线oj中,codeforces、spoj、uva、zoj..._while(fscanf(stdin, "%d %d", $a, $b) == 2)

java快捷键调字体_设置MyEclipse编码、补全快捷键、字体大小-程序员宅基地

文章浏览阅读534次。一、设置MyEclipse编码(1)修改工作空间的编码方式:Window-->Preferences-->General-->Workspace-->Text file encoding(2)修改一类文件的编码方式:Window-->Preferences-->General-->content Types-->修改default Encoding(..._java修改快捷缩写内容

解析蓝牙原理_蓝牙原理图详解-程序员宅基地

文章浏览阅读1.4w次,点赞19次,收藏76次。1.前言市面上关于Android的技术书籍很多,几乎每本书也都会涉及到蓝牙开发,但均是上层应用级别的,而且篇幅也普遍短小。对于手机行业的开发者,要进行蓝牙模块的维护,就必须从Android系统底层,至少框架层开始,了解蓝牙的结构和代码实现原理。这方面的文档、网上的各个论坛的相关资料却少之又少。分析原因,大概因为虽然蓝牙协议是完整的,但是并没有具体的实现。蓝牙芯片公司只负责提供最底层的API_蓝牙原理图详解

从未在一起更让人遗憾_“从未在一起和最终没有在一起哪个更遗憾”-程序员宅基地

文章浏览阅读7.7k次。图/源于网络文/曲尚菇凉1.今天早上出门去逛街,在那家冰雪融城店里等待冰淇淋的时候,听到旁边两个女生在讨论很久之前的一期《奇葩说》。那期节目主持人给的辩论题是“从未在一起和最终没有在一起哪个更遗憾”,旁边其中一个女生说,她记得当时印象最深的是有个女孩子说了这样一句话。她说:“如果我喜欢一个人呢,我就从第一眼到最后一眼,把这个人爱够,把我的感觉用光,我只希望那些年让我成长的人是他,之后的那些年他喝过..._从未在一起更遗憾

随便推点

Spring Cloud Alibaba 介绍_sprngcloud alba-程序员宅基地

文章浏览阅读175次。Spring Cloud Alibaba 介绍Sping体系Spring 以 Bean(对象) 为中心,提供 IOC、AOP 等功能。Spring Boot 以 Application(应用) 为中心,提供自动配置、监控等功能。Spring Cloud 以 Service(服务) 为中心,提供服务的注册与发现、服务的调用与负载均衡等功能。Sping Cloud介绍官方介绍​ Tools for building common patterns in distributed systems_sprngcloud alba

测试 数据类型的一些测试点和经验_基础字段的测试点-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏21次。我这里是根据之前在测试数据类项目过程中的一些总结经验和掉过个坑,记录一下,可以给其他人做个参考,没什么高深的东西,但是如果不注意这些细节点,后期也许会陷入无尽的扯皮当中。1 需求实现的准确度根据产品需求文档描述发现不明确不详细的或者存在歧义的地方一定要确认,例如数据表中的一些字段,与开发和产品确认一遍,如有第三方相关的,要和第三方确认,数据类项目需要的是细心,哪怕数据库中的一个字段如果没有提前对清楚,后期再重新补充,会投入更大的精力。2 数据的合理性根据业务场景/常识推理,提..._基础字段的测试点

一文看懂:行业分析怎么做?_码工小熊-程序员宅基地

文章浏览阅读491次。大家好,我是爱学习的小xiong熊妹。在工作和面试中,很多小伙伴会遇到“对XX行业进行分析”的要求。一听“行业分析”四个字,好多人会觉得特别高大上,不知道该怎么做。今天给大家一个懒人攻略,小伙伴们可以快速上手哦。一、什么是行业?在做数据分析的时候,“行业”两个字,一般指的是:围绕一个商品,从生产到销售相关的全部企业。以化妆品为例,站在消费者角度,就是简简单单的从商店里买了一支唇膏回去。可站在行业角度,从生产到销售,有相当多的企业在参与工作(如下图)在行业中,每个企业常常扮._码工小熊

LLaMA 简介:一个基础的、650 亿参数的大型语言模型_llma-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏2次。还需要做更多的研究来解决大型语言模型中的偏见、有毒评论和幻觉的风险。我们在数万亿个令牌上训练我们的模型,并表明可以仅使用公开可用的数据集来训练最先进的模型,而无需诉诸专有和不可访问的数据集。在大型语言模型空间中训练像 LLaMA 这样的小型基础模型是可取的,因为它需要更少的计算能力和资源来测试新方法、验证他人的工作和探索新的用例。作为 Meta 对开放科学承诺的一部分,今天我们公开发布 LLaMA(大型语言模型元 AI),这是一种最先进的基础大型语言模型,旨在帮助研究人员推进他们在 AI 子领域的工作。_llma

强化学习在制造业领域的应用:智能制造的未来-程序员宅基地

文章浏览阅读223次,点赞3次,收藏5次。1.背景介绍制造业是国家经济发展的重要引擎,其产能和质量对于国家经济的稳定和发展具有重要意义。随着工业技术的不断发展,制造业的生产方式也不断发生变化。传统的制造业通常依赖于人工操作和手工艺,这种方式的缺点是低效率、低产量和不稳定的质量。随着信息化、智能化和网络化等新技术的出现,制造业开始向智能制造迈出了第一步。智能制造的核心是通过大数据、人工智能、计算机视觉等技术,实现制造过程的智能化、自动化...

ansible--安装与使用_pip安装ansible-程序员宅基地

文章浏览阅读938次。系列文章目录文章目录系列文章目录 前言 一、ansible是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言菜鸟一只,刚开始使用,仅作以后参考使用。边学习,边记录,介绍一下最基础的使用,可能会有理解不到位的地方,可以共同交流,废话不多说,走起。一、ansible 简介?ansible是自动化运维工具的一种,基于Python开发,可以实现批量系统配置,批量程序部署,批量运行命令,ansible是基于模块工作的,它本身没有批量部署的能力,真正.._pip安装ansible

推荐文章

热门文章

相关标签