由于要做基于android平台的人脸检测毕业设计,所以开始学习了adaboost算法,看了很多篇文章,收获最多的是北京大学,赵楠的毕业论文。但是对于初学者很多概念容易混淆,很多细节大家都没有讲。我先把整个算法的流程用自己的语言写下来,然后再分析我遇到的问题及我对于问题的理解。请大家先看赵楠的论文http://www.doc88.com/p-300948713694.html再看我的文章。
一,特征模板可以在子窗口以任意的尺寸(但要遵循比例),任意的位置放置,每种形态成为一个特征。24*24的图片有16000+个特征。
二,对于每个特征(注意不是特征模板,对于24*24有16000+个特征),对应所有人脸样本和非人脸样本求特征值。
三,把特征值从小到大排列,比如1,3,4,5,6,8,9······第一次选择1和3之间的2作为人脸和非人脸的阀值,计算,第二次选择3和4之间的3.5做为阀值,再计算上面的误差,依次进行下去,选择使误差最小的作为阀值,得到如下公式,也就是我们所说的最佳弱分类器:
四,调整权重,把分错类的样本权重调大,把分对类的样本权重变小。
五,由16000个(一般不取这么大)最佳弱分类器,按照下面的公式组成强分类器:
问题一,24*24的图片有16000+个特征?
答:注意特征矩形可以重叠放置,所以才有这么多,最初我理解画了这个特征矩形就不能画其他的了,这是错误的。
问题二,每一个特征对应所有人脸样本和非人脸样本求特征值,为什么特征值不同?
答:因为图片不同,像素值就不同,简单的说就是深浅不同,像素值也不同。
问题三,为什么特征模板是那几种形式?
答:因为如果是人脸,那么眼镜比脸颊的颜色要深,如下图,那么此特征在人脸上的特征值就和与非人脸上的特征值有显著差异,方便我们确定阀值。
问题四,为什么?
设想极端情况,我们的选取的阀值恰好分开了所有的人脸与非人脸,那么此时e是不是为0呢。
问题五,为什么要调整权值?注意权值是对于人脸和非人脸样本来言的?
让上次分类错误的样本不要再分错了,因为
问题六,组成强分类器是什么意思?
是最佳弱分类器的权重,
与误差有关,误差越小,
所在的权重越大。