私はAdaBoostアルゴリズムを理解しようとしてきましたが、あまり成功していません。例として、顔検出に関するViolaJonesの論文を理解するのに苦労しています。
AdaBoostを素人の言葉で説明し、それがいつ使用されたかの良い例を示していただけますか?
私はAdaBoostアルゴリズムを理解しようとしてきましたが、あまり成功していません。例として、顔検出に関するViolaJonesの論文を理解するのに苦労しています。
AdaBoostを素人の言葉で説明し、それがいつ使用されたかの良い例を示していただけますか?
Adaboostは、パフォーマンスの低い分類器、つまり弱い学習者を、パフォーマンスの高いより大きな分類器に結合するアルゴリズムです。
それはどのように機能しますか?非常に単純化された方法で:
舞台裏には広範で詳細な理論がありますが、直感はそれだけです。各「ダム」分類器に、前の分類器では修正できなかった間違いに焦点を当てさせます。
AdaBoostは、機械学習コミュニティで最も使用されているアルゴリズムの1つです。特に、単純な分類子(おそらく、さまざまな機能を使用して、さまざまな分類子を作成する方法)を知っていて、それらを最適な方法で組み合わせたい場合に役立ちます。
ViolaとJonesでは、それぞれの異なるタイプの弱学習者が、持つことができる4つまたは5つの異なるHaar機能の1つに関連付けられています。
AdaBoostは、いくつかのトレーニングサンプル画像(顔など)を使用して、いくつかの優れた「機能」/「分類子」を選択します。顔認識の場合、分類子は通常、特定の平均色値と相対サイズを持つピクセルの長方形です。AdaBoostはいくつかの分類子を調べ、サンプル画像に基づいてどれが顔の最良の予測子であるかを見つけます。最適な分類器を選択した後、あるしきい値に達するまで別の分類器を見つけ続け、それらの分類器を組み合わせて最終結果を提供します。
この部分は、技術者以外の人と共有したくないかもしれません:)とにかく、興味深いものです。画像のすべてのカラー値を合計して2次元配列に格納し、任意の位置の値がすべてのピクセルの合計になるようにする機能など、AdaBoostの顔認識を高速化するいくつかの数学的トリックがあります。そしてその位置の左側に。この配列を使用すると、右下隅にある値から左上隅にある値を減算し、長方形内のピクセル数で割ることにより、画像内の任意の長方形の平均カラー値を非常にすばやく計算できます。このトリックを使用すると、画像全体をすばやくスキャンして、特定の色に一致するか、それに近いさまざまな相対サイズの長方形を探すことができます。
お役に立てれば。
これは理解できます。インターネットで見つけることができるほとんどの論文は、OpenCVで顔認識に適用されたAdaBoostの基礎であるViola-JonesおよびFreund-Shapireの論文を再販しています。そして、それらは主に、いくつかの数学分野を組み合わせた難しい数式とアルゴリズムで構成されています。これがあなたを助けることができるものです(十分に短いです)-
1-オブジェクトで使用され、ほとんどの場合、顔検出で使用されます。最も人気があり、非常に優れたC ++ライブラリは、元々IntelのOpenCVです。例として、OpenCVでの顔検出の一部を取り上げます。
2-最初に、サンプルの長方形(「特徴」)を操作するブーストされた分類器のカスケードが、顔のある画像(ポジティブと呼ばれる)と顔のない画像(ネガティブ)のサンプルでトレーニングされます。
いくつかのGoogleの論文から:
"・ブーストとは、大まかな経験則と適度に不正確な経験則を組み合わせることにより、非常に正確な分類器を作成する一般的で証明可能な効果的な方法を指します。
・これは、多くの大まかな経験則を見つけることは、単一の非常に正確な分類器を見つけるよりもはるかに簡単であるという観察に基づいています。
・最初に、経験則を見つけるためのアルゴリズムを定義します。これを弱い学習者と呼びます。
・ブースティングアルゴリズムは、この弱い学習者を繰り返し呼び出し、そのたびにトレーニングデータ(AdaBoost内)に異なる分布を供給します。
・呼び出しごとに弱い分類子が生成されるため、これらすべてを1つの分類子に結合する必要があります。これは、どのルールよりもはるかに正確であることが望まれます。」
このプロセス中に、画像がスキャンされ、すべての顔の特定の部分に対応する特徴的な領域が決定されます。複雑な計算仮説ベースのアルゴリズムが適用されます(主なアイデアを理解したら、理解するのはそれほど難しくありません)。
これには1週間かかる場合があり、出力はXMLファイルであり、たとえば、任意の画像の正面位置(他の場合は任意のオブジェクト)で人間の顔をすばやく検出する方法に関する学習情報が含まれています。
3-その後、このファイルをOpenCV顔検出プログラムに提供します。このプログラムは、最大99%の正の率で非常に高速に実行されます(条件によって異なります)。ここで述べたように、「積分画像」と呼ばれる手法を使用すると、スキャン速度を大幅に上げることができます。
そして最後に、これらは役立つ情報源です。OpenCVで のオブジェクト検出と、カリフォルニア大学のAdaBoostを使用した一般的なオブジェクト検出(2008年)。