久しぶりの更新。
今回は某AK○な集合写真を使って、OpenCVのフツーのライブラリとGPGPUなライブラリを使って、顔を検出した時間を比較してみる。
前回まではOpenCVのIplImage構造体だったが、GPGPUなライブラリを使うため、cv:Matクラスとcv:GpuMatクラスで統一した。
動作環境は、AWSのHPCインスタンスとGPUインスタンスを使い、その上でそれぞれに最適化した(つもりの)コードを書いて走らせてみた。
使ったライブラリはOpenCV 2.3, TBB 2.2, CUDA 4.0、一応HPCインスタンスの方はTBBでマルチスレッド化。
結果はこの通り。

ここで純粋な演算に要する時間(赤の部分)はGPGPUが速いけど、その他の処理が見事に足を引っ張っているのがよくわかる。
今回の実験では、Classifier Cascadeファイルのアップロードコストが大きいようだ。
もう少し、アレコレ検討する必要がありそう。
また、TBBによる並列化具合も良い感じで、今後に期待が持てるかも。
結論:次のステップが見えてきた(気がする)。