我正在进行多视图人脸检测。我在开发面部检测方面有两个步骤,
(1)决策树决定运行哪个分类器
(2)运行选定的分类器以检测面部的特定方向。
我有9个使用Ada-boost算法训练的分类器,用于9个面部视图。
现在我的问题是使用MB-LBP(多尺度块局部二进制模式)功能训练决策树。 我为不同的x,y位置和不同的矩形大小选择了100个矩形。 我喜欢使用这些矩形来使用MB-LBP提取特征。 据我所知,如果我们使用MB-LBP概念,我们可以为矩形标记0-255。在OpenCV中,它实现为(在第217行,cascadedetect.hpp)
inline int Feature :: calc( int _offset ) const
{
int cval = CALC_SUM_(p[5], p[6], p[9], p[10], _offset);
return (CALC_SUM_( p[0], p[1], p[4], p[5], _offset ) >= cval ? 128 : 0) | // 0
(CALC_SUM_( p[1], p[2], p[5], p[6], _offset ) >= cval ? 64 : 0) | // 1
(CALC_SUM_( p[2], p[3], p[6], p[7], _offset ) >= cval ? 32 : 0) | // 2
(CALC_SUM_( p[6], p[7], p[10], p[11], _offset ) >= cval ? 16 : 0) | // 5
(CALC_SUM_( p[10], p[11], p[14], p[15], _offset ) >= cval ? 8 : 0)| // 8
(CALC_SUM_( p[9], p[10], p[13], p[14], _offset ) >= cval ? 4 : 0)| // 7
(CALC_SUM_( p[8], p[9], p[12], p[13], _offset ) >= cval ? 2 : 0)| // 6
(CALC_SUM_( p[4], p[5], p[8], p[9], _offset ) >= cval ? 1 : 0);
}
此代码可以提取标签。从那里,我无法弄清楚如何为每个矩形获得有意义的功能。 我在CascadeTraining检查了OpenCV的代码。这真的很复杂。我是否有线索如何使用MB-LBP产生有用的功能? 感谢
答案 0 :(得分:0)
阅读this paper和this paper后,了解我可以直接使用MB-LBP功能。如果我们使用MB-LBP功能,对于每个矩形,我们可以具有0到255之间的值。这些值是功能,可用于识别图像。在级联分类器中,强分类器的每一步都是弱分类器的总和。每个弱分类器都是从这些MB-LBP特征及其派生方式得出的,我们可以从this paper中学习。 感谢