我请您参考我过去的答案,该答案略微涉及到该主题,但是没有解释XML级联格式。
让我们看一个为 简化 而修改的 伪造 示例,该示例仅具有一个阶段和三个功能的级联。 __
<!-- stage 0 --><_> <maxWeakCount>3</maxWeakCount> <stageThreshold>-0.75</stageThreshold> <weakClassifiers> <!-- tree 0 --> <_> <internalNodes> 0 -1 3 -67130709 -21569 -1426120013 -1275125205 -21585 -16385 587145899 -24005</internalNodes> <leafValues> -0.65 0.88</leafValues></_> <!-- tree 1 --> <_> <internalNodes> 0 -1 0 -163512766 -769593758 -10027009 -262145 -514457854 -193593353 -524289 -1</internalNodes> <leafValues> -0.77 0.72</leafValues></_> <!-- tree 2 --> <_> <internalNodes> 0 -1 2 -363936790 -893203669 -1337948010 -136907894 1088782736 -134217726 -741544961 -1590337</internalNodes> <leafValues> -0.71 0.68</leafValues></_></weakClassifiers></_>
稍后……
<features> <_> <rect> 0 0 3 5</rect></_> <_> <rect> 0 0 4 2</rect></_> <_> <rect> 0 0 6 3</rect></_> <_> <rect> 0 1 4 3</rect></_> <_> <rect> 0 1 3 3</rect></_>
…
让我们首先来看一个阶段的标签:
- 在
maxWeakCount
一个阶段是在阶段弱分类,什么是所谓的评论的数量<!-- tree -->
,我叫LBP特征是什么。- 在此示例中,阶段0的LBP特征数量为
3
。
- 在此示例中,阶段0的LBP特征数量为
- 该
stageThreshold
是什么样的特征的权重相加之和必须 至少 为舞台传递。- 在此示例中,阶段阈值为
-0.75
。
- 在此示例中,阶段阈值为
转到描述LBP功能的标签:
- 的
internalNodes
是11位的整数的数组。对于LBP级联,前两个没有意义。第三个是XML文件末尾s<features>
表的索引<rect>
(A<rect>
描述了特征的几何形状)。最后的8个值是8个32位值,它们共同构成了我在较早答案中提到的256位LUT。这个LUT是由训练过程计算出来的,我对此并不完全了解。- 在此示例中,阶段的第一个特征引用了矩形
3
, 该 矩形 由四个整数描述0 1 4 3
。
- 在此示例中,阶段的第一个特征引用了矩形
- 的
leafValues
是与特征相关联的两个权重(通过/失败)。根据从internalNodes
特征评估期间选择的位,将这两个权重之一加到总计中。将该总数与该阶段的进行比较<stageThreshold>
。然后,bool stagePassed = (sum >= stageThreshold - EPS);
在EPS
1e-5处,确定阶段是否已通过或失败。权重也由训练过程确定。- 在此示例中,第一个特征的失败权重为
-0.65
,通过权重为0.88
。
- 在此示例中,第一个特征的失败权重为
最后是
<feature>标签。它由
<rect>标签数组组成,其中包含4个描述要素几何的整数。给定一个处理窗口(在您的情况下为24x24),前两个整数描述其在处理窗口内的
偏移量
x和
y整数像素 偏移量, 后两个整数描述LBP功能所需的9个子矩形中一个子矩形的 宽度 和 高度 。待评估。
在本质上,然后,标签
<rect> ft.x ft.y ft.width ft.height </rect>位于一个处理窗口内
pW.widthX
pW.height检查面是否存在于
pW.xX
pW.y对应于…
为了评估LBP,就足以读取点处的积分图像
p[0..15]并用于
p[BR]+p[TL]-p[TR]-p[BL]计算九个子矩形的积分。比较 中心子
矩形R4和其他八个子矩形,从R0开始顺时针旋转,以产生8位LBP(这些位打包[msb 01258763 lsb])。
然后,将此8位LBP用作功能的(2 ^ 8 =
256)位LUT(
<internalNodes>)的索引,选择一个位。如果该位为1,则特征与面部不一致;否则,该特征与面部不一致。如果为0,则与脸部一致。
<leafNode>然后返回适当的权重()并与所有其他特征的权重相加,以产生总体阶段总和。然后将其
<stageThreshold>进行比较以确定阶段是通过还是失败。
如果还有其他问题,我还不能解释清楚。



