人脸识别(一)——从零说起

简介: 人脸识别的英文名称是 Face Recognition,前段时间查找资料学的时候发现,不少人将人脸识别和人脸检测(Face Detection)混为一谈,很大程度上增加了查询学习资料的难度,这里在参照一些前辈的基础上,自己动手敲写代码,整理出了一个完整的版本。

 这是关于人脸的第①篇原创!(源码在第三篇)

人脸识别的英文名称是 Face Recognition,前段时间查找资料学的时候发现,不少人将人脸识别和人脸检测(Face Detection)混为一谈,很大程度上增加了查询学习资料的难度,这里在参照一些前辈的基础上,自己动手敲写代码,整理出了一个完整的版本。

   

此系列文章将从理论到实践进行整合:分三篇进行叙述,第一篇从零说人脸识别,保证大多数朋友能通过这篇文章了解到人脸识别的概念,并且能够形成一个基本的框架。第二篇将进行初步的实践,包括人脸图像的采集,和如何利用opencv已有的模型根据人脸图像进行训练,得到需要的分类器。第三篇则是综合篇,将程序以模块化进行展示,以文档形式实现人脸识别和建立MFC程序实现人脸识别。

7.gif


一、人脸检测和人脸识别

首先需要介绍下人脸识别和人脸检测的不同。人脸检测指的是对一幅图片进行检测,检测图片中是否包含有人脸;而人脸识别则是在人脸检测的基础上,不仅要检测出是否该图片中存在人脸,更要进一步将检测出的人脸图像与已有人脸库中的进行对比,识别出该人脸图像对应库中的哪一个。人脸检测的相关知识可以参照微信公众号里(Mr_cplus)的相关历史文章。


二、人脸识别的大概流程

人脸识别大体上分为四步:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取、匹配与识别。


(1)人脸图像采集及检测

人脸图像的采集指的是按照所研究的目标(比如研究不同姿态下的人脸识别),采集一定数量的图像数据整理成库。当前学术界已有许多现成的人脸库,满足基本的研究需求,当然也可以在这些数据库的基础上进行添加(比如将自己的人脸添加进某数据库)。当前较为常用的人脸图像数据库有:

1. FERET人脸数据库
由FERET项目创建,包含14,051张多姿态,光照的灰度人脸图像,是人脸识别领域应用最广泛的人脸数据库之一.其中的多数人是西方人,每个人所包含的人脸图像的变化比较单一.
2. MIT人脸数据库
由麻省理工大学媒体实验室创建,包含16位志愿者的2,592张不同姿态,光照和大小的面部图像.
3. Yale人脸数据库
由耶鲁大学计算视觉与控制中心创建,包含15位志愿者的165张图片,包含光照,表情和姿态的变化.
4. Yale人脸数据库B
包含了10个人的5,850幅多姿态,多光照的图像.其中的姿态和光照变化的图像都是在严格控制的条件下采集的,主要用于光照和姿态问题的建模与分析.由于采集人数较少,该数据库的进一步应用受到了比较大的限制.
5. PIE人脸数据库
由美国卡耐基梅隆大学创建,包含68位志愿者的41,368张多姿态,光照和表情的面部图像.其中的姿态和光照变化图像也是在严格控制的条件下采集的,目前已经逐渐成为人脸识别领域的一个重要的测试集合.
6. ORL人脸数据库
由剑桥大学AT&T实验室创建,包含40人共400张面部图像,部分志愿者的图像包括了姿态, 表情和面部饰物的变化.该人脸库在人脸识别研究的早期经常被人们采用,但由于变化模式较少,多数系统的识别率均可以达到90%以上,因此进一步利用的价值已经不大.
……


(2)人脸图像预处理

此处主要指两方面:一个是如何将获取的人脸图像进行一些处理,使之和待放入的人脸库内图片数据有相同的尺寸,格式等;另一个是指将整体库内图片进行处理,使之满足后面图像特征提取以及识别中的要求。


(3)人脸图像特征提取

人脸图像特征提取是指按照一定的算法,将人脸图像进行处理,提取出特征信息,形成特征矩阵等,之后用于分类器的训练。特征提取的算法往往决定着识别效果的好与坏。


(4)匹配与识别

人脸图像经过特征提取形成了一定的特征矩阵,之后将待识别的人脸图片(或者视频中的某些帧)当作输入,按照同样的特征提取算法,形成其人脸图的矩阵,之后与利用分类器进行分类,识别其属于库内的哪一个类别。


三、人脸识别的常用方法

人脸识别方法有很多,当前大体可以分为四类:

  1. 基于人脸特征点的识别算法(Feature-based recognition algorithms)。

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

四、部分结果的提前展示

此次动手实践利用的人脸数据库是ORL人脸数据库,并且为了识别自己的人脸写了一个拍照程序自拍,将采集到的自己的图片信息加入该数据库,形成一个新的包含有自己人脸信息的数据库。


1、以文档程序为例进行展示,当摄像头检测到的人脸是自己时,会“夸"自己是“ 大帅比”,检测结果不是自己时会显示“大丑逼”。哈哈哈,我长的帅已经不是秘密了!(41是指识别判断的结果,41对应我自己,ORL中原有40个人)

43.jpg


2、以MFC程序为例进行展示。同样,当摄像头检测到的人脸是自己时,会“夸"自己是“ 大帅比”,检测结果不是自己时会显示“大丑逼”。而且可以设定当检测结果为数据库中的某一个时,可以在另一个图片控件(picture control)中显示对应一张人脸库中的图像。(各种BUTTON表示不同功能,在接下来的两篇中将进行介绍。)

44.jpg

相关文章
|
机器学习/深度学习 监控 算法
人脸识别之三
人脸识别之三
72 1
|
机器学习/深度学习 存储 算法
人脸识别之二
人脸识别之二
94 1
|
6月前
|
算法 安全 搜索推荐
深入浅出:使用Python实现人脸识别系统
在当今数字化时代,人脸识别技术已成为安全验证、个性化服务等领域的关键技术。本文将引导读者从零开始,逐步探索如何利用Python和开源库OpenCV来构建一个基础的人脸识别系统。本文不仅会详细介绍环境搭建、关键算法理解,还会提供完整的代码示例,帮助读者理解人脸识别的工作原理,并在实际项目中快速应用。通过本文,您将能够掌握人脸识别的基本概念、关键技术和实现方法,为进一步深入学习和研究打下坚实的基础。
|
机器学习/深度学习 JavaScript 算法
AIGC背后的技术分析 | 人脸识别和人脸检测
机器学习案例:人脸识别和人脸检测
310 0
AIGC背后的技术分析 | 人脸识别和人脸检测
|
机器学习/深度学习 自然语言处理 固态存储
【OpenCV图像处理15】人脸识别项目
【OpenCV图像处理15】人脸识别项目
192 0
|
存储 数据库 计算机视觉
人脸识别的案例实现 | 学习笔记
快速学习人脸识别的案例实现
人脸识别的案例实现 | 学习笔记
|
计算机视觉
人脸识别(三)——源码放送
人脸识别相关的基本原理和流程,以及各个步骤的介绍和代码前两篇都有介绍,其实可以通过前两篇自行整合出完整的人脸识别源码,并且适当修改可以实现MFC程序实现。这里为方便像我这样刚入门的新手学习,进行整合并将项目源码给出(包括ORL人脸库,40*10,需要自己添加进自己的人脸数据)
222 0
人脸识别(三)——源码放送
|
机器学习/深度学习 存储 人工智能
人脸识别技术介绍和表情识别最新研究
人脸识别作为一种生物特征识别技术,具有非侵扰性、非接触性、友好性和便捷性等优点。早在二十世纪初期,人脸识别已经出现,于二十世纪中期,发展成为独立的学科。人脸识别真正进入应用阶段是在90年代后期。人脸识别属于人脸匹配的领域,人脸匹配的方法主要包括特征表示和相似性度量。
人脸识别技术介绍和表情识别最新研究
|
安全 Java API
阿里云人脸识别综述
本文主要对阿里云人脸识别功能及开发语言的实现做一个概述,为用户使用提供参考。
|
计算机视觉
阿里云人脸识别典型问题处理
阿里云产品人脸识别常见问题