0

GPU プログラミングは初めてで、haarcascade_frontalface_alt.xml とビデオ ファイルをこのコンパイル済みの例に渡すことから始めました。

https://github.com/Itseez/opencv/blob/master/samples/gpu/cascadeclassifier.cpp

ビデオを GPU にロードするのに約 3 秒かかり、顔の検索にさらに 2 秒かかるようです。これはうまく機能しますが、ビデオはどの向きでも記録できた可能性があるため、顔が見つからない場合は、ビデオを 90 度回転させて再試行します。問題は、このアプローチでは、4 つの方向すべてで顔が見つかったかどうかを判断するのに少なくとも 20 秒かかるため、ビデオの向きが正しいことです。

ビデオの向きを決定するために回転不変カスケード分類器を実行することは可能ですか? または、回転したバージョンをリロードせずに GPU でビデオを転置することは可能ですか? または、カスケード分類器の回転バージョンを適用することは可能ですか? ビデオの 4 つのバージョンを GPU にロードせずに、4 つの方向すべてで顔を検索するにはどうすればよいですか?

4

1 に答える 1

1

コンピュータビジョンの世界では多くのことが可能ですが、堅牢で信頼できるものはほとんどありません:)。回転の不変性は進むべき道ではありません (効果的に回転の不変性は回転情報が何らかの形で失われることを意味するため)。

  1. 最も簡単な方法: GPU での画像の回転は非常に高速であるため、gpu::rotate を使用して、デバイスにアップロードした後に各画像を回転させることができます。
  2. より速いアプローチ: 典型的なアプローチは、4 つの異なる検出器を学習し、それらすべてを適用することです。検出は、最近のいくつかの進歩により、検出器の数で非常にうまくスケーリングされます。

しかし、私はあなたが何を達成したいのかまだわかりません。すべての顔を見つけたいのではなく、ビデオの向きを推定したい場合 (質問の一部から聞こえるように)、すべてのフレームのサブサンプルを処理し、それらから推測するだけで済みます (頭の回転は傾向がないため)。ランダムに配布してください:))

于 2013-07-09T22:13:01.753 に答える