1

Viola Jones アルゴリズムの trainingsphase を理解するのに問題があります。

私が理解している限り、アルゴリズムを疑似コードで示します。

# learning phase of Viola Jones
foreach feature # these are the pattern, see figure 1, page 139
    # these features are moved over the entire 24x24 sample pictures
    foreach (x,y) so that the feature still matches the 24x24 sample picture
        # the features are scaled over the window from [(x,y) - (24,24)]
        foreach scaling of the feature
            # calc the best threshold for a single, scaled feature
            # for this, the feature is put over each sample image (all 24x24 in the paper)
            foreach positive_image
                thresh_pos[this positive image] := HaarFeatureCalc(position of the window, scaling, feature)
            foreach negative_image
                thresh_neg[this negative image] := HaarFeatureCalc(position of the window, scaling, feature)
            #### what's next?
            #### how do I use the thresholds (pos / neg)?

これは、この SO の質問のようなフレームです: Viola-Jones の顔検出は 180k の特徴を主張します

このアルゴリズムは、私が理解したと思う HaarFeatureCalc 関数を呼び出します。

function: HaarFeatureCalc
    threshold := (sum of the pixel in the sample picture that are white in the feature pattern) -
        (sum of the pixel in the sample picture that are grey in the feature pattern)
    # this is calculated with the integral image, described in 2.1 of the paper
    return the threshold

今までの間違い?

Viola Jones の学習フェーズでは、基本的にどの機能/検出器が最も決定的であるかを検出します。論文に記載されている AdaBoost の仕組みがわかりません。

質問: この論文の AdaBoost は疑似コードでどのように見えるでしょうか?

4

1 に答える 1

0

ヴィオラ・ジョーンズ:

  • 最初に、180k の分類器 (機能) をハードコーディングします。
  • そして、最初はすべてのトレーニング データの重みが同じになります。
  • これで、各分類子 (機能) がすべてのトレーニング データに適用されます。
  • 各機能は、トレーニング データを顔であるか顔ではないかのいずれかに分類します
  • すべての機能のこの分類に基づいて、エラーを計算します
  • 各フィーチャのエラーを計算した後、50% から最も離れたエラーのあるフィーチャを選択します。つまり、1 つのフィーチャに 90% のエラーがあり、別のフィーチャに 20% のエラーがある場合、90% のフィーチャを選択します。 % error とそれを強い分類子に追加します
  • 各トレーニング データの重みを更新します。
  • 構築した強力な分類器を使用して検証データの精度が高くなるまで、このプロセスを繰り返します。
  • AdaBoost は、弱分類器から強分類器を作成する手法です。
于 2017-12-25T06:13:27.267 に答える