Opencvを使用して顔を検出しようとしています。顔は正面ではなく、カメラが顔を横からキャプチャしたため、片方の目と口の一部だけが表示されます。メリットを得ることなく、複数の構成でHaarDetectObjectsを試しました。カスケードを変更してテストしました:haarcascade_frontalface_default.xml、haarcascade_frontalface_alt.xml、haarcascade_profileface.xml、非常に悪い結果になりました。他にもっと良いカスケードはありますか?他に提案はありますか?
ありがとう
これで、OpenCVに、VadimPisarevskyによって作成されたプロファイル面の新しいLBPカスケードができました。
https://github.com/Itseez/opencv/blob/master/data/lbpcascades/lbpcascade_profileface.xml
どうやら、それは正しいプロファイル面のみを検出するので、すべてのプロファイル面を検出するには、画像を反転させて2番目のステップを実行する必要があります。
参照したカスケードファイル(例:aarcascade_frontalface_default.xml、haarcascade_frontalface_alt.xml、haarcascade_profileface.xml)は、完全な正面面を使用してdetect完全な正面面を使用して作成されます。そのため、顔の半分は、コンピューターにとって正しい形状として正しく認識されないことは明らかです。
この状況で行う必要があるのは、「この場合はface_の半分」である関心のあるオブジェクトを認識するようにOpenCVをトレーニングすることです。OpenCVの専門用語では、-' HaarTraining 'として知られています。 this 、 this および this トレーニングを開始するための開始点としての記事。
データ(顔の半分のさまざまな画像など)を使用してOpenCVをトレーニングすると、XMLカスケードファイルが準備でき、独自のコードにプラグインして顔の半分を検出できます。
幸運を!
私は前頭葉以外の画像の顔検出の同じ問題に取り組んできました。マルチタスクCNNを使用してみてください。これは、顔の検出と位置合わせに最適なソリューションです。さまざまなポーズ、照明、オクルージョンなどの問題に対処できます。
論文は リンク で入手できます。コードはGitHubの Link で入手できます。 python実装を使用したところ、結果は素晴らしいです。ただし、画像に顔がたくさんある場合、コードは少し遅くなります。
OpenCVに固執したい場合でも、顔検出用の新しいディープラーニングモデルがOpenCVに追加されました。結果はマルチタスクCNNほど良くありません。 pyimagesearchに顔検出用のOpenCVディープラーニングモデルの実装があります リンク