Я отсылаю вас к моему собственному ответу из прошлого который слегка затрагивает тему, но не объясняет каскадный формат 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></_>
...
Давайте сначала посмотрим на теги этапа:
- The
maxWeakCount
for a stage is the number of weak classifiers in the stage, what is called in the comments a <!-- tree -->
and what I call an LBP feature.
- In this example, the number of LBP features in stage 0 is
3
.
- The
stageThreshold
is what the weights of the features must add up to at least for the stage to pass.
- In this example the stage threshold is
-0.75
.
Переходя к тегам, описывающим функцию LBP:
- The
internalNodes
are an array of 11 integers. The first two are meaningless for LBP cascades. The third is the index into the <features>
table of <rect>
s at the end of the XML file (A <rect>
describes the geometry of the feature). The last 8 values are eight 32-bit values which together constitute the 256-bit LUT I spoke of in my earlier answer. This LUT is computed by the training process, which I don't fully understand myself.
- In this example, the first feature of the stage references rectangle
3
, which is described by the four integers 0 1 4 3
.
- The
leafValues
are the two weights (pass/fail) associated with a feature. Depending on the bit selected from the internalNodes
during feature evaluation, one of those two weights is added to a total. This total is compared to the stage's <stageThreshold>
. Then, bool stagePassed = (sum >= stageThreshold - EPS);
, where EPS
is 1e-5, determines whether the stage has passed or failed. The weights are also determined by the training process.
- In this example the first feature's fail weight is
-0.65
and the pass weight is 0.88
.
Наконец, тег <feature>
. Он состоит из массива <rect>
тегов, содержащих 4 целых числа, описывающих геометрию объекта. Для окна обработки (в вашем случае 24 x 24) первые два целых числа описывают его x
и y
целых пикселей смещение в пределах окна обработки, а следующие два целых числа описывают ширину. и высота одного подпрямоугольника из 9, необходимых для оценки функции LBP.
По сути, тег <rect> ft.x ft.y ft.width ft.height </rect>
, расположенный в окне обработки pW.width
xpW.height
, проверяющий, присутствует ли лицо в pW.x
xpW.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>
, чтобы определить, пройден ли этап или нет.
Если есть что-то еще, что я не объяснил достаточно хорошо, я могу уточнить.
person
Iwillnotexist Idonotexist
schedule
21.03.2014