私がhaarカスケードxmlファイルを持っていると仮定します。ファイルを画像にレンダリングして「完璧な標本」を作成する方法はありますか?
それで、xmlが顔検出用だった場合、最高のスコアを取得する顔の画像が表示されますか?
不可能な場合、「主成分」を画像化する方法はありますか?
ところで、私はPythonバージョンのopenCVを使用しています。
私の知る限り、これは難しいでしょう。分類スキームは複雑であり、それを「反転」したり、「完璧な標本」や主成分のようなものを取得したりする簡単な方法はないと思います。(以下の主成分について詳しく説明します。)分類がどのように行われるかを簡単に説明して、これらが難しい理由を明確にします。次に、他に試すことができるいくつかのアプローチについて説明します。
カスケードの考え方は、できるだけ多くの非顔を拒否することにより、分類を高速化することです。(画像内のほとんどのものは顔ではないため、これは重要です。)これを行うには、分類子のカスケードを使用します。最初の分類器は、たとえば、顔ではないものの90%を拒否するようにトレーニングされていますが、顔の少なくとも99.99%を保持しています。これはまだパフォーマンスが悪いです。この分類子を使用するだけでは、大量の誤検知が発生します。ただし、この分類は非常に迅速に実行できるため、多くの非顔をすばやく取り除くことができます。
では、これらの分類子の1つには何が含まれていますか?さて、各分類器は弱い分類器のブーストされたセットです。つまり、分類器に渡すすべての画像について、それはN個の非常に単純な分類器のそれぞれに渡され、単純な分類器のそれぞれが「true」または「false」に投票します。単純な(弱い)分類子はそれぞれ重み付けされているため、重み付けされた投票により、強い分類子の答えが得られます。
OK —では、弱い分類子とは何ですか?OpenCVでは、弱い分類子は高さ2の決定木だと思います(OpenCVのドキュメント、開始ページ〜368を参照)。したがって、各弱い分類器は、入力画像を単純なパターンと比較します。画像がパターンに十分に類似している場合、別のパターンと比較するために渡されます。そして、それが十分に類似していない場合は、3番目のパターンと比較するために渡されます。
おそらくお分かりのように、決定プロセスには多くの非線形性があるため、「完全な標本」を作成することは実際には不可能です。弱い分類子の1つの「完全な標本」は、他のほとんどの分類子にとってひどい標本である可能性があります。 、つまり、全体として、良い顔にはならないということです。重要なコンポーネントのマッピングに関する同じ問題ですが、最初の(または最後の)段階で最も重要な(つまり、最も重みの高い)弱い分類子を選択し、それらによって使用されるフィルターをプロットすることで、どこかに到達できる可能性がありますステージ。
あなたが試すことができるもう一つのアプローチは、私がアートプロジェクトで見たものですが、悲しいことに、へのリンクを見つけることができません。アーティストは、形状のランダムな組み合わせを生成し、それらが顔検出器をどれだけうまくトリガーするかを見ました。彼はランダムにさらに形状を追加し、顔検出をトリガーするより良い仕事をした形状の構成を維持しました。この山登り戦略を通じて、彼はアルゴリズムの顔のように見える画像を生成することができました。このアプローチのより微妙なバージョン(顔として分類されているものを刺激空間で検索する)は、いわば「完璧な標本」を見つけるのに役立つ可能性があります。
これがお役に立てば幸いです…頑張ってください!