使用Haar Cascade 进行人脸识别 | 您所在的位置:网站首页 › 人脸级联分类器 › 使用Haar Cascade 进行人脸识别 |
前言
学完了deeplearnning.ai 的卷积神经网络课程之后,为了更直观的理解人脸识别,我想使用openCV来实现人脸识别。(以下为译文) 目的 我们将学习基于Haar特征的人脸识别分类器的一些基础知识我们还会将人脸识别扩展到人眼识别等 基础基于Haar特征的cascade分类器(classifiers) 是Paul Viola和 Michael Jone在2001年,论文”Rapid Object Detection using a Boosted Cascade of Simple Features”中提出的一种有效的物品检测(object detect)方法。它是一种机器学习方法,通过许多正负样例中训练得到cascade方程,然后将其应用于其他图片。 现在让我们来看以下人脸识别是如何工作的。首先,算法需要许多正样例(包含人脸的图片)和负样例(不包含人脸的图片)来训练分类器。然后我们要从这些图片中获取特征(extract features)。如下所示为Haar 特征获取的方式。和卷积核(conventional kernel)类似,每个特征由白方块下的像素和减去黑方块的像素和来得到。 OpenCV 既可以作为检测器也可以进行训练。如果你打算训练自己的分类器识别任意的物品,比如车,飞机等。你可以用OpenCV 创造一个。完整的细节在:Cascade Classifier Training¶中。 这里我们只说如何使用它的检测器功能。OpenCV已经包含许多训练好的分类器,比如脸、眼、微笑等。这些XML文件存储在opencv/data/haarcascades/文件夹中。让我们用OpenCV创建一个脸部和眼部检测器吧! 首先我们需要加载需要的XML分类器。然后在灰度模式下加载我们的输入文件。 import numpy as np import cv2 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') img = cv2.imread('sachin.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)现在我们就能从图片中找到人脸了。如果识别出人脸,会以Rect(x,y,w,h)的形式返回脸部的位置,然后我们可以用一个矩形网格标识人脸,然后在这个矩形网格之间应用眼部识别(因为眼睛一定在脸上!) 结果如下图所示。(译注:使用OpenCV自带的人脸识别时,当人脸角度有些倾斜时很难识别到人脸,以后有机会希望可以研究并解决这个问题) |
CopyRight 2018-2019 实验室设备网 版权所有 |