質問

私に、ヴィオラ・ジョーンズの顔の検出方法がどのように機能するかを私に説明してください。

役に立ちましたか?

解決

Viola-Jones検出器は強力です、 バイナリ分類器 いくつかのビルド 弱い検出器

Each weak detector is an extremely simple binary classifier

学習段階では、アダボストを使用してオブジェクトを検出するために希望のヒットレート /ミスレート(または精度 /リコール)を獲得するために、弱い検出器のカスケードがトレーニングされます。元の画像は、それぞれが提出されます。カスケードに

長方形の画像パッチがすべてのカスケードステージを通過する場合、それは「ポジティブ」として分類されます。プロセスは異なるスケールで繰り返されます

enter image description here

実際、低レベルでは、オブジェクト検出器の基本的なコンポーネントは、元の画像の特定のサブ領域に関心のあるオブジェクトのイセントが含まれているかどうかを言う必要があるものです。それがバイナリ分類子が行うことです。

基本的で弱い分類器は、非常にシンプルな視覚機能に基づいています(これらの種類の機能は、しばしば「haarのような機能」と呼ばれます)
enter image description here

haarのような特徴はaで構成されています 機能の残りの領域の合計から機能のサブ地域の合計を差し引くことによって計算されるローカル機能のクラス.

enter image description here
これらの機能は、計算が容易であり、積分画像を使用して計算するのが非常に効率的であるという事実によって特徴付けられます。

Lienhartは、ねじれたHaarのような機能の拡張セットを導入しました(画像を参照)

enter image description here
これらは、45度ずつねじれている標準的なHaarのような機能です。 Lienhartは、Twitsed Checker Board Haarのような機能(x2y2)を元々使用していませんでした。これは、ツイスト機能を使用して単純に表すことができるため、この機能のツイストバージョンを実装および使用できることは明らかです。 。

これらのねじれたHaarのような特徴は、45度ツイストされた積分画像を使用して高速で効率的に計算することもできます。唯一の実装の問題は、ツイスト機能を整数値に丸めて、ピクセル境界に合わせて整列する必要があることです。このプロセスは、より大きなウィンドウまたは小さなウィンドウのHAARのような機能をスケーリングするときに使用される丸めに似ていますが、1つの違いは、45度のねじれた特徴の場合、特徴の高さと幅に使用される整数数のピクセル数は、ピクセルの斜めの座標は、常に同じ斜めのピクセルのセットにあります

enter image description here
これは、利用可能なさまざまなサイズの45度のツイスト機能の数が、垂直方向および水平方向に整列した機能と比較して大幅に減少することを意味します。

だから私たちは次のようなものを持っています:enter image description here

式については、積分画像を使用したHAARのような機能の高速計算は次のように見えます。

enter image description here

ついに、 これがC ++の実装です 使用します Violajones.H Ivan Kusalicによる

完全なC ++を見るには プロジェクトはこちらをご覧ください

他のヒント

Viola-Jones検出器はaです 強力なバイナリ分類器 いくつかの弱い検出器のビルド。各弱い検出器は、非常に単純なバイナリ分類器です

検出は、以下の部分で構成されています。

Haar Filter: :画像からcalssifyに特徴を抽出します(特徴行為がアドホックドメインの知識をエンコードします)

Integral Image: :非常に高速な機能評価を可能にします

Cascade Classifier: :カスケード分類器は、フィルターの複数の段階で構成されており、画像(画像のスライドウィンドウ)を分類するには顔です。

以下は、画像内の顔を検出する方法の概要です。

enter image description here

画像抽出機能全体の周りに検出ウィンドウがシフトします( haar filter によって計算された Integral Image 次に、抽出された機能をに送信します Cascade Classifier それが顔であるかどうかを分類します)。スライディングウィンドウはピクセルごとにシフトします。ウィンドウがシフトするたびに、ウィンドウ内の画像領域はカスケード分類器を通過します。

Haar Filter: :あなたは、フィルターがのような機能を抽出できることを理解できます eyes, bridge of the nose 等々。

enter image description here

Integral Image: :非常に高速な機能評価を可能にします

enter image description here

Cascade Classifier:

カスケード分類器は、下の図に示すように、複数のフィルターの段階で構成されています。スライディングウィンドウがシフトするたびに、スライディングウィンドウ内の新しい領域は、ステージごとのカスケード分類器を通過します。入力領域がステージのしきい値を通過できない場合、カスケード分類器はすぐに領域を顔として拒否します。地域がすべての段階を正常に通過すると、顔の候補として分類され、さらに処理することで洗練される場合があります。

enter image description here

詳細については:

まず、ソースペーパーを読むことをお勧めします シンプルな機能のブーストされたカスケードを使用した迅速なオブジェクト検出 メソッドの概要の理解があります。

あなたがそれをはっきりと理解できないなら、あなたは見ることができます Viola-Jonesの顔の検出 また Viola-Jones Face検出アルゴリズムの実装 また Viola-Jonesのリアルタイムフェイス検出器の研究 詳細については。

これがPythonコードです Paul ViolaとMichael J. Jonesによる顔検出アルゴリズムのPython実装.

MATLABコード ここ .

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top