人脸识别中的 MATLAB 应用:代码、描述和语法

已发表: 2020-06-23

每次您用面部解锁手机或通过高科技办公室监控系统时,都会在后台运行复杂的面部识别技术。 那么什么是人脸识别,如何使用MATLAB进行人脸识别呢?

面部识别是通过技术识别人脸的过程。 面部识别系统使用计算机视觉和机器学习技术对从图像和视频中提取的面部特征进行建模和分类。 面部识别算法提取和映射面部特征,并将它们与已知面部的数据库进行比较以找到最佳匹配。

资源

目录

人脸识别中的 MATLAB

使用MATLAB代码可以实现人脸识别。 MATLAB 内置的类和函数可用于检测人脸、眼睛、鼻子和嘴巴。 计算机视觉系统工具箱的object vision.CascadeObjectDetector System基于Viola-Jones人脸检测算法识别物体。

MATLAB 对象检测器的描述

vision.CascadeObjectDetector 使用 Viola-Jones 算法来识别面部、眼睛、嘴巴、鼻子或上身。 自定义分类器可以使用 MATLAB 的 Image Labeler 进行训练,并与 System object 一起使用。 那么如何在图像中检测面部特征或上半身呢? 以下是步骤:

  1. 第一步涉及创建 vision.CascadeObjectDetector 对象并设置其属性。
  2. 在这一步中,使用参数调用对象(就好像它表现得像一个函数)。

阅读: 15 个适合初学者的有趣 MATLAB 项目创意和主题

创建对象检测器的语法

用于创建对象检测器的语法如下:

  • 检测器 = vision.CascadeObjectDetector
  • 检测器 = vision.CascadeObjectDetector(mode1)
  • 检测器 = vision.CascadeObjectDetector(Name,Value)
  • 检测器 = vision.CascadeObjectDetector(XMLFILE)

语法说明

  • detector = vision.CascadeObjectDetector:此语法用于创建使用 Viola-Jones 算法检测对象的检测器。
  • detector = vision.CascadeObjectDetector(mode1):此语法用于创建检测器,该检测器配置为检测由输入向量定义的对象 - mode1。
  • detector = vision.CascadeObjectDetector(Name,Value):此语法用于通过使用一个或多个名称-值对来设置属性,其中每个属性名称都包含在引号内。 例如:detector = vision.CascadeObjectDetector('ClassificationModel','UpperBody')

查看:机器学习项目创意

特性

除非另有说明,否则级联对象检测器的功能是不可调整的,这意味着在调用对象后,它们的值不能更改。 对象在被调用时被锁定,并且它们的解锁由“释放”函数完成。

另一方面,可调属性意味着它的值可以随时更改。 所以,在我们了解使用 MATLAB代码进行人脸识别之前,让我们先看看一些特征

  • ClassificationModel:定义为字符向量,该属性负责控制要检测的对象的类型。 检测器的默认配置检测人脸。
  • MinSize:最小可识别物体的大小表示为二元素向量[高度宽度]。 除非指定属性值,否则检测器会将其设置为用于训练分类模型的图像大小。
  • MaxSize:最小可识别对象的大小表示为二元素向量[height width] 除非指定属性值,否则检测器会将其设置为大小 (I)。
  • ScaleFactor:它有一个高于 1.0001 的指定值。 此属性用于在 MinSize 和 MaxSize 之间增量缩放检测分辨率。
  • MergeThreshold:它有一个指定的整数值,等于4。如果目标对象周围有多个检测,阈值定义了最终的检测标准。
  • UseROI:指定为false,该属性可以设置为true,用于检测输入图像中矩形感兴趣区域内的物体。

使用对象检测器的语法

  • bbox = 检测器(I)
  • bbox = 检测器(I,roi)

语法说明

  • bbox =detector(I) 返回 bbox,一个M × 4 矩阵,定义包含检测到的对象的M ”个边界框。
  • bbox =detector(I,roi) 用于检测由 roi 指定的矩形感兴趣区域内的对象。

输入参数

  • I — 输入图像:指定为真彩色或灰度 (RGB)。
  • model - 分类模型:它被指定为一个字符向量并描述要检测的对象类型。
  • XMLFILE — 自定义分类模型:指定为 XML 文件,可以使用 OpenCV 训练功能或 trainCascadeObjectDetector 函数创建。
  • roi - 矩形感兴趣区域:一个四元素向量 [ x y width height ] 用于指定此输入参数。

输出参数

bbox - 检测:检测作为M × 4 元素矩阵返回,其中每一行包含四元素向量 [ x y width height ]。

所有系统对象共有的对象函数

  • 步骤:用于运行系统对象算法
  • release:用于释放系统资源
  • reset:用于重置系统对象的内部状态。

人脸识别MATLAB代码

在本节中,我们将看到一个使用 MATLAB 代码进行人脸识别的示例。

人脸检测

资源

资源

step(Detector,I) 将返回包含被检测对象的 [x,y,Height,Width] 的边界框值:

资源

鼻子检测

资源

资源

描述:

  • 参数“鼻子”的传递表示感兴趣的对象是鼻子。
  • 默认的鼻子检测语法是 vision.CascadeObjectDetector('Nose')
  • 可以根据输入图像修改传递给 vision.CascadeObjectDetector 的默认参数值。
  • 可以覆盖“MergeThreshold”值以避免在目标对象周围进行多次检测(如上图所示)。

眼睛检测

资源

资源

检测

资源

资源

另请阅读: MATLAB 中的 While 循环:您需要知道的一切

包起来

虽然人脸识别技术有利于验证个人身份,但它确实会引发隐私问题。 由于该技术使用个人的面部指纹,因此通常被认为是对个人隐私、安全和安保的侵犯。 使用MATLAB进行人脸识别可用于安全性至关重要的多种情况。 从机场和办公室到智能手机,面部识别已成为许多系统和组织不可或缺的组成部分。

如果您有兴趣了解有关机器学习的更多信息,请查看 IIIT-B 和 upGrad 的机器学习和人工智能 PG 文凭,该文凭专为工作专业人士设计,提供 450 多个小时的严格培训、30 多个案例研究和作业、IIIT- B 校友身份、5 个以上实用的实践顶点项目和顶级公司的工作协助。

什么是人脸识别?

人脸识别可用于防止身份盗用,以及通过姓名识别个人。 然而,鉴于人脸识别技术相对较新,并且还在不断发展,因此了解人脸识别的基础知识以有效地使用它非常重要。 人脸识别是指确定人脸图像是否属于已知人的过程。 人脸识别问题可以分为两个任务:1)人脸检测——在图像中定位人脸,2)人脸识别——识别人脸。

什么是matlab?

Matlab 是一种用于数值计算的编程语言。 基本上,它是一种矩阵编程语言。 它在科学和工程计算中被大量使用。 与其他编程语言不同,MATLAB 被设计为一种矩阵语言,适用于矩阵计算。 矩阵用于许多不同的方程,特别是在科学和工程计算中。 Matlab 是一种具有大量功能的高级编程语言。 它用于解决数学问题、分析数据和创建图表。

Matlab 中的 Viola Jones 是什么?

Viola Jones 算法用于人脸检测和面部表情识别。 Viola Jones 算法基于 Paul Viola 和 Michael Jones 于 2001 年首次引入的定向梯度直方图 (HOG)。它用于计算机视觉、机器学习和图像处理。 Viola Jones 算法提供了一个完整的物体检测系统,可用于行人检测、物体检测或人体检测。 Viola Jones 算法由特征提取步骤、聚类步骤和对象分类步骤组成。