毕业设计阶段性报告04·PCA+LBP系统的调试与思路重整
完成时间:2015/04/13 总结时间:2015/04/18
内容提要:
对于上一篇文章中实现的系统:
1. 子空间维数k的选择
2. 近邻分类器阶数k
3. 观察误判图像,尝试分析原因
4. 后续计划
一、系统性能的研究与调试:
(研究系统参数时应遵循“控制变量法”,在调整某个参数时,保持其它条件不变。)
1. 子空间维数k:
(图中:k的取值范围0~200,只截取了0~100就足以反映变化趋势;LBP特征提取时的分块方式是7x7;近邻阶数k=1)
可以观察到,随着k的上升,准确率先是迅速上升,大约在k = 20处开始逐渐趋于饱和,稳定在76%附近。相比于之前的简单PCA系统,饱和点更靠后,而且识别率反而稍低。本阶段阅读的参考文献中,对比了灰度值作为输入特征、LBP作为输入特征,后者应比前者更优。这里识别率反而更低,猜测有两个原因:一是因为文献中提取特征的方式与这里稍有不同,得到的特征维数本身就足够低,没有进行降维,所以信息的损失很少;二是这里使用的分类器(欧氏距离近邻分类器)与LBP输入特征并不是很匹配(文献中用的是卡方距离等)。所以后续还会再脱离PCA,单独研究LBP。
2. 分类器阶数k:
(图中:k的取值范围0~200,只截取了0~100就足以反映变化趋势;LBP特征提取时的分块方式是7x7;子空间维数k=40)
可以观察到,随着k的上升,识别率还是反而下降了。(依然并不是很理解原因。阶数越高,代表分类器作判决的时候越“谨慎”,也许过于谨慎反而更容易误判)
3. 尝试过直接在上述系统(的代码)中,将分类器的“欧氏距离”计算公式改为“卡方距离”,认为卡方距离最小的就属于同类。(卡方距离是检验两个变量独立性的参数)但是!识别率从76% 华丽丽的降到了1.5%,不知道是代码写错了还是别的原因。这里暂时不研究。
4. 误判图像观察:
取子空间维数k=80,分块方式7x7,近邻阶数=1,识别率76%,误判图像48张全部输出,选取有代表性的几组图片如下:
(1)会判成这样,说明图片中的整体肤色、整体亮度以及大色块的灰度特征(比如头发)已经不是判别的依据,是好事情~
(2)这两组和上面的两组都具有相近的表情和姿态,这个老问题还是没得到解决。
(3)看到下面这两组误判还是非常开心的,因为他们确实有相似的面部特征啊。说明LBP特征开始能够抓住重点了。
5. 一些猜测和思考:
由于表情、姿态的变化,提取图像LBP信息时,分块的位置所对准的面部器官差异很大。对于同一个人,眼、鼻、口的集中区域不同,那么对应的统计直方图就会很不同(见下图)。在分类器判别类别标签时,更倾向于去找寻“表情更相近的人”而不是去找“长得最像的人”
如果能对图像进行一定的预处理(比如人脸检测与校正,见上图),并引入各个分块的权重,可能可以提升识别率。(但是据说再做人脸检测与校正工作量就很大了所以这个问题暂时放在这吧)
6. 一个调试的心得:
举个栗子,如果系统分为A、B两个模块,可调的参数位于B,而A的运行需要很长时间,可以在命令窗口中先单独运行A,这样后续模块所需的变量都已经在工作空间中准备好,这时再用循环变量控制系统参数的遍历,跑后半部分程序(B模块),即:A→B; B; B; B……而不是每次都AB; AB; AB; AB……,这样可以节省很多时间~
二、改进方向与后续计划:
1. 继续研究LBP本身:
实现一个独立于PCA的人脸识别系统,只用LBP,重新检验其性能
(1)能否提升速度?(现在每跑一遍要80秒啊真要命)
(2)研究分块方式对识别率的影响? 7x7, 5x5, 3x3……
(3)尝试引入分块的权重?
(4)同样研究子空间维数与分类器阶数对识别率的影响
(5)误判图像再次观察
(6)分类器是否要改一下?(卡方距离更匹配?)
*(7)预处理:人脸检测与校正(目测这一块做不成)
2. 整个毕设的方向修正:
4月14日去找导师沟通,发现之前误解了一个关键问题。以前误以为PCA/LDA是必要的核心模块,更换输入特征和分类器是为了让整个系统运作更好。但实际上其它的输入特征(比如LBP)是可能独立于PCA而单独运行的,只要它们提取出的描述子维数不太大(几百或几千维),都是可以不经过降维,直接放入分类器进行判定的。
所以PCA/LDA只是一个必要的时候拿来用的“降维工具”。
并且,可能是因为提取的LBP特征,经过PCA降维,反而损失了一部分重要信息,而分类器的“距离”选择了欧氏距离,而不是与直方图特征更匹配的“卡方距离”,导致上述PCA+LBP系统的识别率并没有达到文献中所提到的效果。
于是后续工作计划:
(1)单独研究LBP特征
(2)研究HOG特征,并根据实际情况决定是否需要降维
(3)分类器:支持向量机、Adaboost
(4)由ORL数据库→Yale数据库,对比综合分析:
①Yale VS ORL
②三种输入特征:灰度,LBP,HOG
③三种分类器:近邻,支持向量机,Adaboost
(5)目前还是用的脚本文件,早日改成函数文件~
(6)研究PCA和LDA