Face Detection using Haar Cascades

来源:互联网 发布:网络销售聊天技巧 编辑:程序博客网 时间:2024/05/22 00:24

本翻译有点拗口,有很多地方翻译不对。


haar 级联分类器 是一个有效的目标检测方法,2001年Paul Viola 和 Michael Jones 提出。也是基于机器学习的方法,由大量正反图片训练的级联方法。


这里我们用来人脸检测。该方法需要大量的正图(有人脸)和负图(没有人脸)来训练分类。然后从中提取特征,因此haar特征被使用,特征如下:




它们就像卷积核。每个特征是从白色区域所有像素和减去黑色区域所有像素和获得的。

每个卷积核的所有可能的大小位置都用来计算丰富的特征(想象一下,需要计算多少?每张24*24有160000特征以上),每次特征计算需要计算所有白色区和黑色区的像素和。为解决这个问题,提出积分图像。简化了大量像素时的计算,如此一个操作只要涉及4个像素。


所有这些特征的计算,大部分是无关紧要的。比如下面这张图:

上面一行显示了两个不错的特征,眼睛部位通常比鼻子脸颊要暗,这是第一个特征聚焦的地方。第二张特征依赖于眼睛部位比鼻梁要暗。同样的数据用在脸颊上是无效的,所以我们如果在160000+的特征中找到最好的?这要通过演算法来实现。


我们将逐一应用到每个训练特征上,对每个特征找到最佳阀值,可以将人脸分类为正和负。明显这将导致错误或错误的分类,我们选择出错概率最小的特征,这以为着最好的特征分类就是有脸和无脸。(这个过程并不简单。每张图片开始有一样的权重,之后分类增加,错误分类的比重也增加,循环操作,计算错误概率,还有新的权重,当要求的准确度或者错误概率或者找到匹配时处理停止。)


最终分类器时所用弱分类的权重之和。叫弱分类是因为它是单独的无法分类的图像,但是和其他的结合起来就是强分类。论文说200个特征点的准确率有95%,最后安装的有6000个特征(图像从160000减少到6000,这是一个很大的目标)。


现在用一张24*24的图像,应用6000特征值,检测是否有脸?


解释了聚合分类概念,每个窗口采用6000特征,并把特征逐一分到不同阶段的分类。(通常少许阶段含有少量的特征)。如果在第一阶段失败就放弃,就不再考虑剩下的特征,不在考虑余下的特征,如果通过,进入第二阶段的处理,通过所有阶段的窗口就是有脸的区域。


角色特征有6000多个特征,38个阶段,前5个阶段特征个数1,10,25,25,50(上图中的两个特征是演义出来最好的特征),按照作者的意思,平均每个子窗口有10个特征6000多个特征。


如此,Viola-Jones 的人脸检测如何工作就简单明确的解释。


2,Haar-cascade Detection in OpenCV


OpenCV 附带了一个训练器也是探测器。如果你想训练一喜欢的对象比如汽车,飞机等等,你可以使用opencv创建一个。

这里处理检测。opencv 已经有许多的处理分类如人脸,眼睛,笑脸等等。这些xml分类在 opencv/data/haarcascades/ 文件夹里面,让我们来创建一个人脸,眼睛检测。

然后加载XMl分类文件,输入图形或者视频,转为灰度图。


import numpy as npimport cv2face_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)


现在从图像查找人脸。如果找到人脸,将返回检测到的矩形位置。一旦得到这些位置就可以创建人脸ROI和眼睛的ROI。


faces = face_cascade.detectMultiScale(gray, 1.3, 5)for (x,y,w,h) in faces:    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)    roi_gray = gray[y:y+h, x:x+w]    roi_color = img[y:y+h, x:x+w]    eyes = eye_cascade.detectMultiScale(roi_gray)    for (ex,ey,ew,eh) in eyes:        cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)cv2.imshow('img',img)cv2.waitKey(0)










0 0
原创粉丝点击