关于【人工智能如何实现人脸识别】,你不知道的奥秘,今天向乾小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
内容导航:1、人脸识别是如何实现的?维识教育科技帮你解答2、人工智能如何实现人脸识别,你不知道的奥秘1、人脸识别是如何实现的?维识教育科技帮你解答近日,维识科技智能工程教育中心开展了一场别开生面的人脸识别技术知识公开课。
本次公开课主讲人为维识教育科技金牌讲师揭李迪。
揭sir简介:本科毕业于谷歌首席科学家Geoffrey Hinton(图灵奖获得者,被称为“神经网络之父”、“深度学习鼻祖”)的母校爱丁堡大学(Edinburgh University)。研究生师从香港浸会大学(HKBU)国际电子电气工程协会(IEEE)院士刘继明(jiming LIU)。曾经担任融链科技项目总监、金力软件项目经理。参与了公安部旗下与商汤竞标的闭路摄像头人脸检测项目。精通物体检测语义分割NLP自然语言处理与AI项目全栈落地WANN无权重机器人等国内外领先技术。
人脸识别其实是对人脸特征进行分析计算并进行身份识别的一种生物识别技术,即用摄像机或摄像头采集含有人脸的照片或视频对其中的人脸进行检测和跟踪进而达到识别、辨认人脸的目的。
人脸识别技术发展到今天,主要有两种用途:
①人脸验证:人脸验证做的是1:1的比对。也就是说我们先告诉人脸识别系统,我是张三,然后用来验证站在机器面前的“我”到底是不是张三。
②人脸识别:人脸识别做的是1:N的比对。也就是说系统采集了我的一张照片之后,从数万人或者数百万人的库里自动找出“我是谁”。
而“刷脸”只是人脸识别中比较具体可感的一部分,事实上人脸识别能够给大家带来的远远不仅是“刷脸”付款这么简单。
目前,人脸识别技术在金融、安防、交通、电子商务、娱乐等领域均有着广泛应用。
了解了什么是人脸识别之后,那么问题来了——它是怎么实现的呢?
关于人脸识别目前有很多经典的算法:基于几何特征法、局部特征分析法、基于弹性模型法、特征脸法及神经网络法等
神经网络方法在人脸识别上的应用比起前述几类方法来有一定的优势,因为对人脸识别的许多规律或规则进行显性的描述是相当困难的,而神经网络方法则可以通过学习的过程获得对这些规律和规则的隐性表达,它的适应性更强,一般也比较容易实现。
卷积神经网络(CNN)的前级包含了卷积和池化操作,可以实现图片的特征提取和降维,最近几年由于计算机算力的提升,很多人都开始转向这个方向。
所以,本次公开课,揭sir以CNN为技术背景,介绍了人脸识别的基本思路
先用人脸检测方法检测出人脸位置,然后根据返回的坐标、尺寸把脸用数组切片的方法截取下来,然后把截取的小图片送进训练好的卷积神经网络模型,得出人脸的分类结果,最后在原图片上打上包围框并且把结果写在包围框的上端。
当然,实现以上步骤的前提是有一个训练好的可以做人脸识别的模型。因为训练的好坏直接影响识别的准确度。
所以,本次课程的重点放在了训练上,揭sir简述了从LeNet到VGG-Nets的网络架构演进。
LeNet
亮点:定义了CNN的基本架构;卷积层、池化层、全连接层;是CNN的鼻祖。
AlexNet
亮点:更深的网络;数据增广;ReLU;dropout;LRN。
ZF-Net
亮点:网络结构没什么改进,只是调了调参,性能较AlexNet提升了不少。
VGG-16
亮点:卷积层使用更小的filter尺寸和间隔。与AlexNet相比,可以看出VGG-Nets的卷积核尺寸还是很小的,比如AlexNet第一层的卷积层用到的卷积核尺寸就是11*11,这是一个很大卷积核了。而反观VGG-Nets,用到的卷积核的尺寸无非都是1×1和3×3的小卷积核,可以替代大的filter尺寸。
他指出:CNN从90年代的LeNet开始,21世纪初沉寂了10年,直到12年AlexNet开始又再焕发第二春,从ZF-Net到VGG-Nets,网络越来越深,架构越来越复杂,解决反向传播时梯度消失的方法也越来越巧妙。但万变不离其宗的是CNN基本架构为:卷积层、池化层与全连接层。层数发生变化,但CNN的流程并没有变化。因此,充分理解了卷积层、池化层与全连接层,就可以找到入门CNN的诀窍了。
卷积层(Convolution)关于卷积层我们先来看什么叫“卷积操作”。
上图较大网格表示一幅图片,有颜色填充的网格表示一个卷积核,卷积核的大小为3*3。假设我们做步长为1的卷积操作,表示卷积核每次向右移动一个像素(当移动到边界时回到最左端并向下移动一个单位)。卷积核每个单元内有权重,上图的卷积核内有9个权重。在卷积核移动的过程中将图片上的像素和卷积核的对应权重相乘,最后将所有乘积相加得到一个输出。上图经过卷积后形成一个6*4的图。
在了解了卷积操作后,我们来看下卷积层的特点。
局部感知
在传统神经网络中每个神经元都要与图片上每个像素相连接,这样的话就会造成权重的数量巨大造成网络难以训练。而在含有卷积层的的神经网络中每个神经元的权重个数都时卷积核的大小,这样就相当于没有神经元只与对应图片部分的像素相连接。这样就极大的减少了权重的数量。同时我们可以设置卷积操作的步长,假设将上图卷积操作的步长设置为3时每次卷积都不会有重叠区域(在超出边界的部分补自定义的值)。
局部感知的直观感受如下图:
ps:使用局部感知的原因是一般人们认为图片中距离相近的部分相关性较大,而距离比较远的部分相关性较小。在卷积操作中步长的设置就对应着距离的远近。但是步长的设置并无定值需要使用者尝试。
参数共享
在介绍参数共享前我们应该知道卷积核的权重是经过学习得到的,并且在卷积过程中卷积核的权重是不会改变的,这就是参数共享的思想。这说明我们通过一个卷积核的操作提取了原图的不同位置的同样特征。简单来说就是在一幅图片中的不同位置的相同目标,它们的特征是基本相同的。
其过程如下图:
多核卷积
如权值共享的部分所说我们用一个卷积核操作只能得到一部分特征可能获取不到全部特征,这么一来我们就引入了多核卷积。用每个卷积核来学习不同的特征(每个卷积核学习到不同的权重)来提取原图特征。
上图的图片经过三个卷积核的卷积操作得到三个特征图。需要注意的是,在多核卷积的过程中每个卷积核的大小应该是相同的。
池化层(Pooling)池化层降低了各个特征图的维度,但可以保持大分重要的信息。
池化层夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合,池化层并没有参数,它只不过是把上层给它的结果做了一个降采样(数据压缩)。
降采样有两种常用的方式
①Max pooling:选取最大的,我们定义一个空间邻域,并从窗口内的修正特征图中取出最大的元素,最大池化被证明效果更好一些。
②Average pooling:平均的,我们定义一个空间邻域,并从窗口内的修正特征图算出平均值。
无论是max pool,还是average pool,都有分信息被舍弃,那么部分信息被舍弃后会损坏识别结果吗?因为卷积后的Feature Map中有对于识别物体不必要的冗余信息。我们降采样就是为了去掉这些冗余信息,所以并不会损坏识别结果。
全连接层(Fully connected)在全连接层中所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类为四分类问题,所以卷积神经网络的输出层就会有四个神经元。
四分类问题
我们从卷积神经网络的卷积层、池化层以及全连接层来讲解卷积神经网络,我们可以认为全连接层之间的在做特征提取,而全连接层在做分类,这就是卷积神经网络的核心。
而三者与卷积神经网络的关系,可以这么理解:
卷积神经网络在形式上有一点点像咱们的“人民代表大会制度”,卷积核的个数相当于候选人,图像中不同的特征会激活不同的“候选人”(卷积核)。池化层(仅指最大池化)起着类似于“合票”的作用,不同特征在对不同的“候选人”有着各自的喜好。全连接相当于是“代表普选”,所有被各个区域选出的代表对最终结果进行“投票”,全连接保证了receiptive field是整个图像,既图像中各个部分(所谓所有代表)都有对最终结果影响的权利。
举个栗子:以VGG-16为例,对224x224x3的输入最后一层卷积可得输出为7x7x512,如后层是一层含4096个神经元的FC,则可用卷积核为7x7x512x4096的全局卷积,来实现这一全连接运算过程。它把特征representation整合到一起,输出为一个值,这样做有一个什么好处就是大大减少特征位置对分类带来的影响。
再举个简单的栗子:
从上图我们可以看出
猫在不同的位置
输出的feature值相同
但是位置不同
对于电脑来说
特征值相同
但是特征值位置不同
那分类结果也可能不一样
这时
全连接层filter的作用就相当于
猫在哪我不管
我只要猫
于是我让filter去把这个猫找到
实际就是把feature map
整合成一个值
这个值大,有猫
这个值小,那就可能没猫
和这个猫在哪关系不大了
鲁棒性有大大增强
因为空间结构特性被忽略了
所以全连接层不适合用于
在方位上找Pattern的任务
比如segmentation
全连接层中一层的一个神经元
就可以看成一个多项式
我们用许多神经元去拟合数据分布
但是只用一层fully connected layer
有时候没法解决非线性问题
而如果有两层
或以上fully connected layer
就可以很好地解决非线性问题了
我们都知道
全连接层之前的作用是提取特征
全理解层的作用是分类
我们现在的任务是去区别一图片是不是猫
假设这个神经网络模型已经训练完了
全连接层已经知道
当我们得到以上特征
我就可以判断这个东东是猫了
因为全连接层的作用主要就是实现分类
从下图
我们可以看出
红色的神经元表示这个特征被找到了(激活了)
同一层的其他神经元,
要么猫的特征不明显
要么没找到
当我们把这些找到的特征组合在一起
发现最符合要求的是猫
OK
我认为这是猫了
猫头有这么些个特征
于是我们下一步的任务
就是把猫头的这么些子特征找到
比如眼睛、耳朵
道理和区别猫一样
当我们找到这些特征
神经元就被激活了(上图红色圆圈)
这细节特征又是怎么来的
就是从前面的卷积层,池化层来的
全连接层参数特多
(可占整个网络参数80%左右)
ps:至于VGG-Nets之后GoogLeNet引入Inception结构代替单纯卷积+激活的传统操作,中间层的辅助LOSS单元,后面的全连接层全部替换为简单的全局平均pooling;ResNet在网络结构上做了较大创新等发展,本次公开课并未做过多阐述,有兴趣的童鞋可自行查阅相关资料了解。
最后,揭sir以Facenet与Face Recognition为训练模型,让童鞋们实操了一把人脸识别的全过程。
Face Recognition的Github网址:https://github.com/ageitgey/face_recognition
Facenet的Github网址:https://github.com/davidsandberg/facenet
2、人工智能如何实现人脸识别,你不知道的奥秘在人工智能领域,人脸识别技术是核心发展技术,也是最近几年人工智能应用最广泛的技术,目前支付宝已经实现了刷脸登陆账户,未来几年支付软件还会实现刷脸支付等技术。
今天给大家分享一些人脸识别技术的基本概念
1. 人脸检测
“人脸检测(Face Detection)”是检测出图像中人脸所在位置的一项技术。
人脸检测算法的输入是一张图片,输出是人脸框坐标序列(0个人脸框或1个人脸框或多个人脸框)。一般情况下,输出的人脸坐标框为一个正朝上的正方形,但也有一些人脸检测技术输出的是正朝上的矩形,或者是带旋转方向的矩形。
常见的人脸检测算法基本是一个“扫描”加“判别”的过程,即算法在图像范围内扫描,再逐个判定候选区域是否是人脸的过程。因此人脸检测算法的计算速度会跟图像尺寸、图像内容相关。开发过程中,我们可以通过设置“输入图像尺寸”、或“最小脸尺寸限制”、或“人脸数量上限”的方式来加速算法。
人脸检测结果举例(绿色框为人脸检测结果)
2. 人脸配准
“人脸配准(Face Alignment)”是定位出人脸上五官关键点坐标的一项技术。
人脸配准算法的输入是“一张人脸图片”加“人脸坐标框”,输出五官关键点的坐标序列。五官关键点的数量是预先设定好的一个固定数值,可以根据不同的语义来定义(常见的有5点、68点、90点等等)。
当前效果的较好的一些人脸配准技术,基本通过深度学习框架实现,这些方法都是基于人脸检测的坐标框,按某种事先设定规则将人脸区域扣取出来,缩放的固定尺寸,然后进行关键点位置的计算。因此,若不计入图像缩放过程的耗时,人脸配准算法是可以计算量固定的过程。另外,相对于人脸检测,或者是后面将提到的人脸提特征过程,人脸配准算法的计算耗时都要少很多。
人脸配准结果举例(右图中的绿色点位人脸配准结果)
3. 人脸属性识别
“人脸属性识别(Face Attribute)”是识别出人脸的性别、年龄、姿态、表情等属性值的一项技术。
一般的人脸属性识别算法的输入是“一张人脸图”和“人脸五官关键点坐标”,输出是人脸相应的属性值。人脸属性识别算法一般会根据人脸五官关键点坐标将人脸对齐(旋转、缩放、扣取等操作后,将人脸调整到预定的大小和形态),然后进行属性分析。
常规的人脸属性识别算法识别每一个人脸属性时都是一个独立的过程,即人脸属性识别只是对一类算法的统称,性别识别、年龄估计、姿态估计、表情识别都是相互独立的算法。但最新的一些基于深度学习的人脸属性识别也具有一个算法同时输入性别、年龄、姿态等属性值的能力。
人脸属性识别过程(最右侧文字为属性识别结果)
4. 人脸提特征
“人脸提特征(Face Feature Extraction)”是将一张人脸图像转化为一串固定长度的数值的过程。这个数值串被称为“人脸特征(Face Feature)”,具有表征这个人脸特点的能力。
人脸提特征过程的输入也是 “一张人脸图”和“人脸五官关键点坐标”,输出是人脸相应的一个数值串(特征)。人脸提特征算法都会根据人脸五官关键点坐标将人脸对齐预定模式,然后计算特征。
近几年来,深度学习方法基本统治了人脸提特征算法,这些算法都是固定时长的算法。早前的人脸提特征模型都较大,速度慢,仅使用于后台服务。但最新的一些研究,可以在基本保证算法效果的前提下,将模型大小和运算速度优化到移动端可用的状态。
人脸提特征过程(最右侧数值串为“人脸特征”)
5. 人脸比对(人脸验证、人脸识别、人脸检索、人脸聚类)
“人脸比对(Face Compare)”是衡量两个人脸之间相似度的算法
人脸比对算法的输入是两个人脸特征(注:人脸特征由前面的人脸提特征算法获得),输出是两个特征之间的相似度。人脸验证、人脸识别、人脸检索都是在人脸比对的基础上加一些策略来实现。相对人脸提特征过程,单次的人脸比对耗时极短,几乎可以忽略。
基于人脸比对可衍生出人脸验证(Face Verification)、人脸识别(Face Recognition)、人脸检索(Face Retrieval)、人脸聚类(Face Cluster)等算法。
人脸对比过程(右侧的相似度为人脸比对输出的结果)
6. 人脸验证
“人脸验证(Face Verification)”是判定两个人脸图是否为同一人的算法。
它的输入是两个人脸特征,通过人脸比对获得两个人脸特征的相似度,通过与预设的阈值比较来验证这两个人脸特征是否属于同一人(即相似度大于阈值,为同一人;小于阈值为不同)。
人脸验证过程说明(最右侧“是同一人”为人脸验证的输出)
7. 人脸识别
“人脸识别(Face Recognition)”是识别出输入人脸图对应身份的算法。
它的输入一个人脸特征,通过和注册在库中N个身份对应的特征进行逐个比对,找出“一个”与输入特征相似度最高的特征。将这个最高相似度值和预设的阈值相比较,如果大于阈值,则返回该特征对应的身份,否则返回“不在库中”。
人脸识别过程(右侧身份“jason”为人脸识别结果)
8. 人脸检索
“人脸检索”是查找和输入人脸相似的人脸序列的算法。
人脸检索通过将输入的人脸和一个集合中的说有人脸进行比对,根据比对后的相似度对集合中的人脸进行排序。根据相似度从高到低排序的人脸序列即使人脸检索的结果。
人脸检索过程(右侧绿框内排序序列为检索结果)
9. 人脸聚类
“人脸聚类(Face Cluster)”是将一个集合内的人脸根据身份进行分组的算法。
人脸聚类也通过将集合内所有的人脸两两之间做人脸比对,再根据这些相似度值进行分析,将属于同一个身份的人划分到一个组里。
在没有进行人工身份标注前,只知道分到一个组的人脸是属于同一个身份,但不知道确切身份。另外假设集合中有N个人脸,那么人脸聚类的算法复杂度为O(N2)
人脸聚类过程(右侧绿框内按身份的分组结果为聚类结果)
10. 人脸活体
“人脸活体(FaceLiveness)”是判断人脸图像是来自真人还是来自攻击假体(照片、视频等)的方法。
和前面所提到的人脸技术相比,人脸活体不是一个单纯算法,而是一个问题的解法。这个解法将用户交互和算法紧密结合,不同的交互方式对应于完全不同的算法。鉴于方法的种类过于繁多,这里只介绍“人脸活体”的概念,不再展开。
本文关键词:人脸识别人工智能应用,人工智能的应用人脸识别,人工智能和人脸识别,人脸识别人工智能介绍,人脸识别 人工智能。这就是关于《人工智能如何实现人脸识别,你不知道的奥秘(人脸识别是如何实现的)》的所有内容,希望对您能有所帮助!更多的知识请继续关注《八宝盒百科》百科知识网站:http://tj.jiuquan.cc!