前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸识别(一)——从零说起

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

作者头像
小小詹同学
发布2018-04-13 16:59:59
1.6K0
发布2018-04-13 16:59:59
举报
文章被收录于专栏:小詹同学小詹同学

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

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

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

一、人脸检测和人脸识别

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

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

【往期推荐】

老司机带你用python来爬取妹子图

千元资料免费送——人工智能相关(100G+)

资源福利第三弹——Python等教程(包括部分爬虫入门教程)

程序员面试必备之排序算法汇总(上)

程序员面试必备之排序算法汇总(下)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小詹同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档