文档章节

基于AdaBoost的人脸检测

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:45
字数 705
阅读 33
收藏 1

人脸检测和人脸识别都是属于典型的机器学习的方法,但是他们使用的方法却相差很大。

对于人脸检测而言,目前最有效的方法仍然是基于Adaboost的方法。在网上可以找到很多关于Adaboost方法的资料,但基本上是千篇一律,没有任何新意。给初学者带了很多不便。建议初学者只需要认真阅读:北京大学 赵楠 的本科毕业论文 :基于 AdaBoost算法的人脸检测 这篇毕业论文就够了。作者详细分析了Adaboost算法在人脸检测中的具体执行过程,尤其是关于弱分类器的Haar特征选取过程,描述的相当清晰。

 

至于人脸检测的代码,网上基本上是关于如何用openCV去做人脸检测的代码。如果不需要对性能做更高的要求的话,直接用openCV就可以了。

根据对openCV代码的理解,我重新提取了openCV人脸检测的代码,采用纯C语言实现了人脸检测,与openCV的代码项目相比,有一下几点不同:

1. 使用内存少。

    1.1 原始openCV在检测初始化的时候分配一个很大的buffer,在人脸检测当中使用这个buffer,这个是由openCV的内存管理机制决定的。但在很多时候,图像大小一般都没有想象的那么大,这个大buffer只使用了其中的一小部分,内存空闲很大。在我的人脸检测中,根据图像大小分配2张图片大小内存,分别存放积分图和平方积分图。其它的内存是结构体占用的内存,一般比较小。

   1.2 原始openCv分类器文件是XML文本文件,而在我的人脸检测之中是二进制文件。所以分类器文件比openCV小至少5倍以上。

2.   运行效率高

      删除了Canny边缘检测的代码,针对具体的应用重新修改了算法执行中的部分参数。由于分类器是基于openCv改的,所以对人脸检测的准确率没有任何下降。

目前算法的代码虽然是纯C语言,但还没有做定点优化。目前的性能在iPod4上面,对于640x480的图片,检测单张人脸的时间是60ms左右。

如果对adaBoost算法本身感兴趣,除了可以阅读openCv中的代码之外,还有一个官方的代码,实现了各种AdaBoost算法。

 

部分人脸检测图片的结果如下:

 

 

另外一张图片:

 

测试图片来自网络,如涉及到版权问题,请告知!

本文转载自:http://www.cnblogs.com/celerychen/archive/2013/03/19/2969194.html

上一篇: SSE3指令集系列
abcijkxyz
粉丝 63
博文 6421
码字总数 1876
作品 0
深圳
项目经理
私信 提问
Adaboost算法简介

Adaboost算法 Adaboost算法是一种有监督的学习方法,是基于Adaboost算法的分类器把若干个分类器组合成一个分类器的方法,若干个分类器为不同的分类器(弱分类器),因此Adaboost也是一种组合算...

我是吸血鬼
2017/11/26
0
0
基于Android平台实现人脸识别

前言 在深度学习出现后,人脸识别技术才真正有了可用性。这是因为之前的机器学习技术中,难以从图片中取出合适的特征值。轮廓?颜色?眼睛?如此多的面孔,且随着年纪、光线、拍摄角度、气色...

android飞鱼
01/25
0
0
一文综述人脸检测算法(附资源)

人脸检测是目前所有目标检测子方向中被研究的最充分的问题之一,它在安防监控,人证比对,人机交互,社交和娱乐等方面有很强的应用价值,也是整个人脸识别算法的第一步。 问题描述 人脸检测的...

技术小能手
2018/05/09
0
0
py3+tensorflow+opencv基于深度学习制作人脸识别系统学习历程(持续更新)

3.15 开始项目学习历程 。 有面向对象和面向过程编程的基础开始了人工智能的学习,以后每天都会报告工作任务和好的资源分享以及学习体会 1. 关于人脸识别系统 https://www.cnblogs.com/gbin...

qq_34465787
2018/03/15
0
0
Python+OpenCV实现猫脸检测

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏 导语 利用Python+OpenCV实现猫脸检测。 使用的是OpenCV内置的Viola-Jones目标检测框架来实现猫脸检测,感觉挺有意思的。 让我们愉快地开...

W3Cschool小编
2018/08/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

所以说这才是Redis进化史吗?看Redis是如何变成最强缓存的

写在前面:笔者翻阅了很多资料,只能找到Redis2.2及以后的主要版本的发布日志。所以,让我们从2.2开始一步一步深入了解Redis。 2.2 redis-cli命令非常大的改进: Tab补全,支持help(例如help ...

Java干货分享
44分钟前
2
0
manjaro抽风,/usr/lib/modules目录丢失

现象 2019年6月16日这周,突然发现manjaro抽风: 先是启动时无法加载一些内核模块,导致启动失败 然后用启动盘重新pacman -S linux,第一次启动是好的,再启动就有问题了 原因 翻来覆去搞不定...

chuqq
49分钟前
5
0
MyClouds-2.0-RC 发布,企业级微服务平台

MyClouds企业级微服务平台 MyClouds-V2.0-RC 已发布。 更新如下 [优化] 重构了系统架构。(移除myclouds-admin-webserver工程,停用后端thymeleaf模版引擎,前后端彻底分离;移除了myclouds-...

xiongchun
50分钟前
1
0
Wine-Staging 4.9 发布,增添一些新补丁

Wine-Staging的工作还在继续,到4.9版为止,在上游Wine代码库上有超过830个补丁。 在上周五的Wine 4.9发布之后,Wine-Staging 4.9已经发布了,之前的一些暂存工作现在围绕Windows编解码器和D...

linuxCool
55分钟前
1
0
JAVA8新特性(吐血整理)

一、Java 8 Lambda 表达式 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。 Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用Lambda 表达式可以...

天王盖地虎626
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部