[face detection]人脸检测_概率推理作业总结

来源:互联网 发布:串口网络调试工具 编辑:程序博客网 时间:2024/05/19 21:40

final exam终于结束了,学期也结束了!probability inference这门课很有用,不过一学期上下来还是好心塞,非常感谢教授最后给我打了A+,值了~face detection 大作业,教授要求仅用课上所学的概率模型进行脸检测。

face detection问题 人脸检测是确定输入图像中脸的位置和大小的一类问题。由于人脸的遮挡,比如眼镜、帽子、刘海等,表情的变化,肤色的不同,正脸和侧脸的差异,外界物理因素,拍摄图像时光照强度的变化,阴影,图像噪声等等。诸多影响因素,使得face detection面临很多难点。

data preprocessing

  1. 数据集论文链接:
    FDDB:A Benchmark for Face Detection in Unconstrained Settings
    http://vis-www.cs.umass.edu/fddb/fddb.pdf
    下载数据集:
    http://vis-www.cs.umass.edu/fddb/

  2. 准备脸和非脸数据集:
    在FDDB中已经有ground true,直接从原图中crop人脸出来组成人脸数据集即可。这里有些处理的细节:
    at first,FDDB的txt文件中,有一些无用的信息,第一行是原图的编号信息,第二行是人脸的个数,接下来是每个脸对应的位置信息, 这里后面隔两个空格还有个1,这个是概率得分,这个对于crop脸是无用的信息,要将其移除;
    second,读取原始图片的时候,存原始图片的文件夹的命名最好是用英文,并且不要用空格,要不然vs很容易报错,调试的时候记得选release, x64;
    and then, 编写读取路径时,win10系统要采用左斜线//这样;
    finally,将crop的人脸存入文件夹时,存入的文件夹要保持关闭状态,要不然vs会报错。 接下来就是data preprocessing了,预处理做得比较简单resize之后灰度化和直方图均衡。我是把样本resize成20*20的,后续用的是混合高斯模型,这个模型比较坑,有个要求是数据矩阵的行数要比列数多,但是扩大训练集会出现ill-condition问题,或者直接协方差就奇异了,协方差矩阵不存在没法用贝叶斯计算!!!

建模原理

  1. w=0代表非人脸,w=1代表人脸。分别用人脸和非人脸的训练样本去拟合标准脸的混合高斯曲线,得到标准脸和标准非人脸的均值跟协方差矩阵;
    这里写图片描述
  2. 假设没有先验知识的影响
    这里写图片描述
  3. 用贝叶斯公式判断人脸的位置
    这里写图片描述

调试细节

  1. 前面提到过,在Matlab中建MoG模型,调试提示错误:行数必须要比列数多。所以在resize训练样本的时候,resize成尽量小的patch,20*20
    其实个人认为,因为脸不是标准的正方形,而是矩形的,观测FDDB中txt文件x与y的值,近似成1.7的比例,resize成60*34,这样避免人脸被压缩;
  2. 用Matlab中,调用的是gmdistribute的指令,先要将输入矩阵变成double,而且必须要默认协方差是对角型或者加上指定正则化项;
  3. ill-condition的问题,在这个MoG建模中,这个问题纠结了很久,具体这个问题怎么产生怎么解决仍然不是特别明白,虽然后来调试成功了
    这里有些博文和资料专门讲MoG调试的:
    1.http://www.cnblogs.com/tadoo/archive/2011/06/01/2065244.html
    2.http://bbs.pinggu.org/thread-1333774-1-1.html
    3.http://freemind.pluskid.org/machine-learning/regularized-gaussian-covariance-estimation/
  4. ill-condition总算过了,总以为可以进入测试阶段~呵~又掉另一个坑里了。MoG中系统自带的使用EM算法来迭代更新mvncdf,pdf算出来的概率全是零,这是咋回事?码了很久才发现,原来是没有数据归一化,在最初的时候double输入矩阵之后,就应该对矩阵进行归一化处理mapminmax(X,0,1)

结果图
终于调试成功了,附上几张结果图,虽然效果很差~毕竟是直接用像素做的,而且只用MoG建模比较粗糙,精度低是情理之中的事情,教授主要是要求我们把人脸检测的建模步骤跑一边,此外熟悉下概率论的内容。起初选MoG模型就是掉坑里了,实验室partner用的logistic regression模型,训练得到的分类器比MoG效果好很多~
这里写图片描述

这里写图片描述

这里写图片描述

0 0
原创粉丝点击