PCA+LDA人脸判断性别
来源:互联网 发布:淘宝衣服尺寸怎么选 编辑:程序博客网 时间:2024/06/12 21:54
转自:http://blog.csdn.net/kklots/article/details/8247738
最近由于课程需要,一直在研究通过人脸来判断性别,在OpenCV的contrib中提供了两种可以用来识别性别的方法:EigenFace和FisherFace,EigenFace主要是使用PCA(主成分分析),通过消除数据中的相关性,将高维图像降低到低维空间,训练集中的样本被映射成低维空间中的一点,需要判断测试图片性别时,先将测试图片映射到低维空间中,然后计算离测试图片最近样本点是哪一个,将最近样本点的性别赋值给测试图片;FisherFace主要利用LDA(线性投影分析)的思想,将样本空间中的男女样本投影到过原点的一条直线上,并确保样本在该线上的投影类内距离最小,类间距离最大,从而分离出识别男女的分界线。
对于人脸判断性别而言,LDA方法(即FisherFace)更为适合,因为PCA考虑的是所有不同种类样本在哪些方向上分布最广,没有考虑不同类之间的关系,而LDA则考虑了如何使不同类样本尽量分得最开。
在FisherFace的介绍文档中,作者宣称其在交叉测试中获得了98%左右的性别识别率,但我在实际使用过程中,发现FisherFace并没有作者说得那么好,仅仅不到60%,只比随机猜测略好一些,好悲催 -_-!。
通过实验观察,本人认为主要原因有以下几点:1.作者在实验时对样本进行了眼睛位置的严格标定,所有样本眼睛的位置都严格重合,因此FisherFace可以找到更稳定的区别信息,但在实际中,前期面部识别工作是由Viola_Jones分类器完成的,由于Viola_Jones分类器无法做到眼睛精确定位,因此测试图片与样本无法较好重合;2.原始样本采用了200*200大小的图片,形成了40000维的特征矢量,其中包含了大量冗余信息和噪声,导致了LDA方法的不准确。
这里本人通过一种简单方法,克服了FisherFace存在的缺点:首先对原始样本图像进行PCA降维,而后再使用LDA进行分类训练;在进行测试时,也先对原始图像进行PCA降维,再利用LDA进行识别,这样可以有效消除冗余信息和噪声的干扰,压缩后的信息对脸部位置也变得不敏感。通过随机下载一些网络图片进行测试,发现在训练样本库固定不变的情况下,优化过的FisherFace够正确识别约90%左右的人物性别,相比原始的方法提升了约30%左右。
这里是人脸分类的可执行文件:click here(2012/12/14最新上传,bug已经修改,没有安装cuda环境的电脑也能执行了),需要的童鞋请点击下载。
给几张效果图:
- PCA+LDA人脸判断性别
- 人脸识别方法-pca/lda
- 人脸识别之PCA 和 LDA
- 人脸识别PCA LDA等方法的一些讨论
- 利用Multi-LBP和PCA、LDA进行人脸识别
- PCA&LDA
- LDA PCA
- LDA & PCA
- LDA & PCA
- pca+lda
- LDA PCA
- PCA、LDA
- LDA PCA
- 通过人脸判断性别
- 通过人脸判断性别
- 通过人脸判断性别
- 基于LBP和PCA的人脸性别识别方法
- 采用PCA(主成分分析)或LDA(线性判别分析)的人脸识别
- Struts2的声明式异常处理
- Android美化之“点九”
- mac 屏幕录制专家
- oracle与JAVA中的一些小技巧
- 新浪微博页面向下pull实现
- PCA+LDA人脸判断性别
- [HTML5] 关于HTML5(WebGL)的那点事
- oracle序列号
- 两分钟彻底让你明白Android Activity生命周期(图文)!
- mysql declare和set有什么区别啊?
- connect by prior 的简单理解
- Html5饼图绘制(统计图)
- 百度人脸识别搜索是怎么实现的?
- ARPA的n-gram语言模型格式