77范文网 - 专业文章范例文档资料分享平台

浅析人脸检测之Haar分类器方法(4)

来源:网络收集 时间:2019-06-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

很高,一般情况下,高检测率会导致高误识率,这是强分类阈值的划分导致的,要提高强分类器的检测率既要降低阈值,要降低强分类器的误识率就要提高阈值,这是个矛盾的事情。据参考论文的实验结果,增加分类器个数可以在提高强分类器检测率的同时降低误识率,所以级联分类器在训练时要考虑如下平衡,一是弱分类器的个数和计算时间的平衡,二是强分类器检测率和误识率之间的平衡。具体训练方法如下,我用伪码的形式给出:

1)设定每层最小要达到的检测率d,最大误识率f,最终级联分类器的误识率Ft;

2)P=人脸训练样本,N=非人脸训练样本,D0=1.0,F0=1.0; 3)i=0; 4)for : Fi>Ft ??++i; ?ni=0;Fi=Fi-1; ??for : Fi>f*Fi-1 ??++ni;

??利用AdaBoost算法在P和N上训练具有ni个弱分类器的强分类器;

??衡量当前级联分类器的检测率Di和误识率Fi; ??for : di

??降低第i层的强分类器阈值;

??衡量当前级联分类器的检测率Di和误识率Fi; ??N = Φ;

??利用当前的级联分类器检测非人脸图像,将误识的图像放入N; 2.4 积分图是一个加速器

之所以放到最后讲积分图(Integral image),不是因为它不重要,正相反,它是Haar分类器能够实时检测人脸的保证。当我把Haar分类器的主脉络都介绍完后,其实在这里引出积分图的概念恰到好处。

在前面的章节中,我们熟悉了Haar-like分类器的训练和检测过程,你会看到无论是训练还是检测,每遇到一个图片样本,每遇到一个子窗口图像,我们都面临着如何计算当前子图像特征值的问题,一个Haar-like特征在一个窗口中怎样排列能够更好的体现人脸的特征,这是未知的,所以才要训练,而训练之前我们只能通过排列组合穷举所有这样的特征,仅以Viola牛提出的最基本四个特征为例,在一个24×24size的窗口中任意排列至少可以产生数以10万计的特征,对这些特征求值的计算量是非常大的。

而积分图就是只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。

我们来看看它是怎么做到的。

积分图是一种能够描述全局信息的矩阵表示方法。积分图的构造方式是位置(i,j)处的值ii(i,j)是原图像(i,j)左上角方向所有像素的和:

积分图构建算法:

1)用s(i,j)表示行方向的累加和,初始化s(i,-1)=0; 2)用ii(i,j)表示一个积分图像,初始化ii(-1,i)=0;

3)逐行扫描图像,递归计算每个像素(i,j)行方向的累加和s(i,j)和积分图像ii(i,j)的值

s(i,j)=s(i,j-1)+f(i,j) ii(i,j)=ii(i-1,j)+s(i,j)

4)扫描图像一遍,当到达图像右下角像素时,积分图像ii就构造好了。 积分图构造好之后,图像中任何矩阵区域的像素累加和都可以通过简

单运算得到如图所示。

设D的四个顶点分别为α、β、γ、δ,则D的像素和可以表示为 Dsum = ii( α )+ii( β)-(ii( γ)+ii( δ ));

而Haar-like特征值无非就是两个矩阵像素和的差,同样可以在常数时间内完成。

三、Haar分类器你敢更快点吗?!

这一章我简略的探讨下Haar分类器的检测效率。 我尝试过的几种方法:

1)尝试检测算法与跟踪算法相结合,原本以为Camshift是个轻量级的算法,但是正如我后来看到的,建立反向投影图的效率实在不高,在PC上效果不错,但是在ios上速度很慢,这个我后来发现可能是因为ios浮点运算效率不高的原因。但是即便速度能上去,靠Camshift跟踪算法太依赖肤色了,导致脖子,或是手什么的干扰很严重,这个调起来很费神,也不一定能调好。

2)修改OpenCV中Haar检测函数的参数,效果非常明显,得出的结论是,搜索窗口的搜索区域是提高效率的关键。

3)根据2)的启发,我打算利用YCbCr颜色空间,粗估肤色区域,以减少人脸的搜索面积,但是后来苦于没能高效率的区分出肤色区域,放弃了该方法。

4)换了策略,考虑到视频中人脸检测的特殊性,上一帧人脸的位置信息对下一帧的检测有很高的指导价值,所以采有帧间约束的方法,减少了

人脸搜索的区域,并且动态调整Haar检测函数的参数,得到了较高的效率。

5)其他关于算法之外的优化需要根据不同的处理器做具体的优化。 四、总结

之前没怎么接触到计算机视觉领域,这次reseach对我来说是一个不小的挑战,发现其中涉及大量的数学知识,线代,统计学,数学分析等等,虽然感到困难重重,但我感到莫大的兴趣,尤其是机器学习领域,在我眼前展开的是一幅美妙的画面,大牛们神乎其技各显神通,复杂的数学公式背后蕴含着简单的哲理和思想。

人类的发展来源于对自然背后神秘力量的好奇和膜拜,简单的结构往往构建出让人难以想象的伟大,0和1构成了庞大的电子信息世界,DNA构成了自己都无法完全了解自己的生命体,夸克或是比夸克还小的粒子构成了这个令人着迷的宇宙,在这些简单的结构背后,是什么在注视着我们,狭义的编程只是在计算机的硬件躯壳内构建可执行的程序,而广义的编程在我看来是创造世界的一种手段。

现在,我给你一个创造世界的机会,你是用Vim还是Emacs,也许你会调侃的跟我说:

“恩,我用E = mc^2”。 附录: 论文列表: 【

1

《Rapid Object Detection using a Boosted Cascade of Simple Features》

【2】《Robust Real-Time Face Detection》

【3】《An Extended Set of Haar-like Features for Rapid Object Detection》

【4】《Crytographic Limitations on Learning Boolean Formulae and Finite Automata》

【5】《A Theory of the Learnable》

【6】《The Computational Complexity of Machine Learning》 【7】《The Strength of Weak Learnability》 【8】《Boosting a weak learning algorithm》

【9】《A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting》

下面是我训练Haar分类器使用的python脚本,仅供参考,

1 import sys,os

2 face_dir_list = os.listdir('testtrain/face') 3 face_dir = 'testtrain/face/' 4 face_file = file('face.dat','w') 5 for i in range(0,len(face_dir_list)):

6 face_dir_list[i] = face_dir + face_dir_list[i] 7 face_dir_list[i] += ' 1 0 0 19 19\\n' 8 if len(face_dir_list) - 1 == i:

9 face_dir_list[i] = face_dir_list[i].strip('\\n') 10 face_file.write(face_dir_list[i]) 11 face_file.close() 12

13 cs_command = 'CreateSamples.exe -info face.dat -vec face.vec -num ' 14 cs_command += '%d'%len(face_dir_list)

15 cs_command += ' -w 19 -h 19' 16 print cs_command 17 os.system(cs_command) 18

19 nonface_dir_list = os.listdir('testtrain/non-face') 20 nonface_dir = 'testtrain/non-face/' 21 nonface_file = file('nonface.idx','w') 22 for i in range(0,len(nonface_dir_list)):

23 nonface_dir_list[i] = nonface_dir + nonface_dir_list[i] 24 if len(nonface_dir_list) - 1 != i: 25 nonface_dir_list[i] += '\\n'

26 nonface_file.write(nonface_dir_list[i]) 27 nonface_file.close() 28

29 ht_command = 'Haartrain.exe -data my_face_classifier -vec face.vec -w 19 -h 19 -bg nonface.idx -nstages 5 -nsplits 3 -minhitrate 0.999 -maxfalsealarm 0.5 -mem 2000 -eqw 1 -mode ALL -bt GAB -npos ' 30 ht_command += '%d'%len(face_dir_list) 31 ht_command += ' -nneg '

32 ht_command += '%d'%len(nonface_dir_list) 33 print ht_command 34 os.system(ht_command)

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库浅析人脸检测之Haar分类器方法(4)在线全文阅读。

浅析人脸检测之Haar分类器方法(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/651029.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: