您的位置:首页 > 运维架构

Opencv中Adaboost的具体实现及使用资料总结

2017-07-20 10:24 253 查看
1.opencv级联分类器训练

opencv官方指南

opencv级联分类器训练

Tips:

1.opencv_createsamples可以根据需要通过图像处理生成更多正样本。

2.在利用opencv_traincascade进行训练时可适当提高precalcIdxBufSize和precalcValBufSize缓存大小,缓存越大,训练时间越短。

3.weightTrimRate:Specifies whether trimming should be used and its weight. 一个还不错的数值是0.95。影响参与训练的样本,不管是正样本还是负样本,当更新完样本权重之后,将样本权重按照从小到大的顺序排列,当从后累加样本权重不小于weightTrimWeight时前面的样本就不参与后面的训练了,这里有一个优化是等于该阈值的样本还是参与训练的,这样可以在保证训练精度的基础上缩短检测时间,因为我们认为是样本权重很小的时候表示该样本被正确分类了,而忽略了样本很多的时候,尽管样本没有被正确分类,也可能被排除在外了。还有一种情况就是正样本比例悬殊的时候,例如1:20,当正样本完全分类正确了,那么正样本比例总和仅占4.8%,后续参与训练的正样本可能就没有了

2.1 Haar特征详细介绍

Haar特征详细介绍

Tips:

1..在保存分类器的OpenCV XML文件中,每一个Haar特征都被保存在2~3个形如的标签中。

2.计算完相应的特征值后,还会检测窗口的灰度值及灰度值平方进行压缩特征值范围。

2.2 积分图和45°旋转积分图

积分图和45°旋转积分图

Tips:

Opencv对原积分图进行了“扩边”,积分图中第0行和第0列的值都为0。

2.3 级联分类器结构与XML文件含义

级联分类器结构与XML文件含义

Tips:

1.一个完整的弱分类器包括:

a.若干个Haar特征 + 和Haar特征数量相等的弱分类器阈值

b. 若干个leftValue

c. 若干个rightValue

2.弱分类器中的idx用法很精妙,注意体会!

3.一般来说,如果用用硬件实现则缩小图像更快,用软件实现算法则放大检测窗口更快?

2.4 利用并查集合并检测窗口(NMS)

利用并查集合并检测窗口(NMS)

Tips:

1.在partition函数中,体会nodes[root2][RANK] += rank == rank2(Line57)以及nodes[root][RANK] = ~nclasses++;(Line93)

思考:

使用并查集可以明显看出其算法复杂程度为o(n2),在实际应用中可以发现,其实有大量的检测框是重复的,即实际人脸数K《 检测框N!我们是否考虑在第二次循环时仅与每个集合的平均检测框进行匹配,匹配成功则更新这个集合的平均检测框数值,否则增加为新的集合,这样算法复杂度就为0(k*n).

2.5 AdaBoost之DAB与GAB

AdaBoost之DAB与GAB

Tips:

GAB和DAB有2处不同,解释如下:

1. DAB和GAB使用的分类器权重误差不一样,GAB是“weighted least-squares”,也就是上面的WSE。应该比较好理解。

2. DAB和GAB的弱分类器对样本xi的f(xi)不一样。DAB的f(xi)不是+1就是-1;而GAB的f(xi)输出的是一种类似于概率的值。

2.6 minHitRate与maxFalseAlarm

minHitRate与maxFalseAlarm

Tips:

1. 由于串联的stage数量很多,minHitRate必须非常接近1,才能保证最终检测器有较好的recall;

2. falseAlarmRate相当于对检测器的precision作了约束;

3. 相对于maxFalseAlarmRate,minHitRate更加敏感。

2.7 分类器训练过程

分类器训练过程

Tips:

整个分类器的训练过程可以分为以下几个步骤:

1. 寻找TP和FP作为训练样本

2. 计算每个Haar特征在当前权重下的Best split threshold+leftvalue+rightvalue,组成了一个个弱分类器

3. 通过WSE寻找最优的弱分类器

4. 更新权重

5. 按照minHitRate估计stageThreshold

6. 重复上述1-5步骤,直到falseAlarmRate到达要求,或弱分类器数量足够。停止循环,输出stage。

7. 进入下一个stage训练

2.8 代码分析

Opencv2.4.9源码分析——Cascade Classification(二)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图像处理 opencv