顔検出で使用されるさまざまな手法をすべて知っている人はいますか? ニューラル ネットワーク、サポート ベクター マシン、固有顔などの手法。
他にどんな人がいますか?
顔検出で使用されるさまざまな手法をすべて知っている人はいますか? ニューラル ネットワーク、サポート ベクター マシン、固有顔などの手法。
他にどんな人がいますか?
これからお話しする手法は、より機械学習指向のアプローチです。私の意見では、最近ではありませんが、非常に魅力的です。これは、Viola と Jones による記事「Robust Real-Time Face Detection」で説明されています。大学のプロジェクトで OpenCV の実装を使用しました。
これは、画像の長方形領域内のピクセル強度の加算と減算で構成される haar のような機能に基づいています。これは、インテグラル イメージと呼ばれる手順を使用して非常に高速に実行できます。GPGPU の実装も存在します (「プレフィックス スキャン」と呼ばれることもあります)。積分画像を線形時間で計算した後、ハールのような特徴を一定時間で評価できます。特徴は基本的に、画像 S の 24x24 サブウィンドウを取り、値特徴 (S) を計算する関数です。トリプレット (機能、しきい値、極性) は弱分類器と呼ばれます。
極性 * 機能 (S) < 極性 * しきい値
特定の画像では真であり、他の画像では偽です。弱い分類器は、ランダムな推測よりもわずかに優れたパフォーマンスが期待されます (たとえば、少なくとも 51 ~ 52% の精度が必要です)。
極性は -1 または +1 です。
特徴空間は大きい (~160,000 特徴) ですが、有限です。
しきい値は原則として任意の数である可能性がありますが、トレーニング セットに関する簡単な考慮事項から、N 個の例がある場合、保持するものを見つけるために各極性および各特徴について N + 1 個のしきい値のみを調べる必要があることがわかります。最高の精度。したがって、最適な弱分類器は、トリプレット空間を徹底的に検索することによって見つけることができます。
基本的に、強い分類器は、「適応ブースティング」または AdaBoost と呼ばれるアルゴリズムを使用して、可能な限り最適な弱い分類器を繰り返し選択することによって組み立てることができます。各反復で、前の反復で誤分類された例がより重み付けされます。強力な分類子は、AdaBoost によって計算された独自のグローバルしきい値によって特徴付けられます。
いくつかの強力な分類子は、注意カスケードの段階として結合されます。注意カスケードの背後にある考え方は、明らかに顔ではない 24x24 のサブウィンドウが最初の段階で破棄されるというものです。通常、強い分類器には少数の弱い分類器 (30 または 40 など) しか含まれていないため、計算が非常に高速です。各ステージの再現率は非常に高くなりますが、偽陽性率はそれほど重要ではありません。それぞれ 0.99 の再現率と 0.3 の偽陽性率を持つ 10 段階がある場合、最終的なカスケードは 0.9 の再現率と非常に低い偽陽性率になります。このため、強い分類器は通常、再現率と偽陽性率を高めるために調整されます。チューニングには、基本的に、AdaBoost によって計算されたグローバルしきい値を下げることが含まれます。
カスケードの終わりに到達するサブウィンドウは、面と見なされます。
最初の画像のいくつかのサブウィンドウは、最終的に重なり合い、最終的には画像の再スケーリング後にテストする必要があります。
顔検出を含む幅広いクラスの視覚問題に対する新しい、しかしかなり効果的なアプローチは、Numentaによって開発された概念/技術であるHierarchical Temporal Memory (HTM)の使用です。
非常に大まかに言えば、これはニューラルネットワークのようなアプローチです。このタイプのネットワークは、各レベルでノード数が大幅に減少するツリー形状をしています。HTM は、新皮質の構造的およびアルゴリズム的特性の一部をモデル化します。大脳新皮質との[可能性のある]逸脱では、各ノードのレベルで実装される分類アルゴリズムは、ベイジアン アルゴリズムを使用します。HTM モデルは、脳機能の記憶予測理論に基づいており、入力の時間的性質に大きく依存しています。これは、視覚の問題に対処する能力を説明している可能性があります。これらは通常一時的なものであり(またはそうすることができます)、ノイズと「あいまいさ」に対する耐性も必要とするためです。
Numemta はしばらく前からビジョン キットとデモ アプリケーションを作成してきましたが、ビタミン Dは最近 (私が思うに)、少なくともビジョン アプリケーションの分野で HTM テクノロジの最初の商用アプリケーションを作成しました。
理論的なものだけでなく、本当に顔検出を行いたい場合は、既に実装されているソリューションを見つけることをお勧めします。
さまざまな言語用にテスト済みのライブラリが多数あり、この目的で広く使用されています。詳細については、この SO スレッドを参照してください:顔認識ライブラリ。