3

opencv_trainedcascade.exe を使用して顔をトレーニングしました。さまざまな段階の一連の xml ファイルがあります。各xmlファイルには内部ノードとleafVlauesがあり、そのうちの1つを以下に示します。

<?xml version="1.0"?>
<opencv_storage>
<stage0>
  <maxWeakCount>3</maxWeakCount>
  <stageThreshold>-1.3019366264343262e+000</stageThreshold>
  <weakClassifiers>
    <_>
      <internalNodes>
        0 -1 2711 -2099201 -2623493 -774797061 -2162625 -827343685
        -5535541 -1163949377 -21761</internalNodes>
      <leafValues>
        -9.2679738998413086e-001 6.0445684194564819e-001</leafValues></_>
    <_>
      <internalNodes>
        0 -1 1533 -252379683 -203697739 1410462197 1435881947 -74449473
        -1147414357 1510080511 -1</internalNodes>
      <leafValues>
        -9.1606438159942627e-001 6.2200444936752319e-001</leafValues></_>
    <_>
      <internalNodes>
        0 -1 917 -42468780 -11479728 -745548289 -2371181 -23070497
        -552607093 -74777633 -536871937</internalNodes>
      <leafValues>
        -9.2716777324676514e-001 5.4092508554458618e-001</leafValues></_></weakClassifiers></stage0>
</opencv_storage>

私のクエリは (1) stageThreshold、internalNodes、leafValues とはどういう意味ですか? (2)実際の顔検出では、カスケード分類器でどのように使用されているか、Adaboost アルゴリズムに関するいくつかの論文を読みました。でもよくわかりません。ありがとう

4

1 に答える 1

5

detection_based_tracker.cpp を掘り下げた後、internalNodes、leafValues、stagethreshold とは何か、そしてそれらがどのように使用されるかを理解しました。lbpcascade_frontalface.xml を見ると、長方形のリストが表示されます。これらは、トレーニングされた顔画像の長方形です (つまり、これらの領域には明確な特徴があり、顔と顔以外の画像を区別するために使用できます)。lbpcascade_frontalface.xml には 139 個の長方形があります。各四角形の x、y ポイントに定数を掛けて、さらに 3 つの四角形を作成するため、1 つの四角形は実際には 4 つの四角形を表します。

それでは、internalNode とは何かを説明します。

<internalNodes>
            0 -1 13 -163512766 -769593758 -10027009 -262145 -514457854
            -193593353 -524289 -1</internalNodes>

最初の 2 つの数字 0 -1 は左右を表します。それらは左のleafValueと右のleafValueを表していると思います。3 つ目は機能インデックスです。これらの 139 個の長方形を配列に入れると、その特徴インデックスは配列インデックスを参照します。つまり、どの長方形を表すかということです。最後の 8 つの数字は、4 つの四角形からのコーナー ポイントの減算を表します。これらはインテグラル イメージから計算されるため、数値はかなり大きくなります。

しかし、leafValues がどのように計算されるかはよくわかりませんが、これらの leafValues の合計が stageThreshold と比較されて、顔か非顔かが決定されます。

それは、コードのデバッグから理解したものです。誰かが leafValues の計算方法を説明すれば、それが私のクエリの完全な解決策になります。ありがとう

于 2014-09-19T14:05:56.283 に答える