0

我是 GPU 编程的新手,我首先将 haarcascade_frontalface_alt.xml 和一个视频文件传递给这个编译的示例:

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

将视频加载到 GPU 中似乎需要大约 3 秒,然后再花 2 秒来搜索人脸。这很好用,但视频可以在任何方向录制,所以如果找不到人脸,我将视频旋转 90 度并重试。问题是这种方法至少需要 20 秒才能确定是否在所有 4 个方向上都找到了任何人脸,从而确定视频的正确方向。

是否可以执行旋转不变级联分类器来确定视频的方向?或者是否可以在 GPU 中转置视频而无需重新加载旋转版本?或者可以应用级联分类器的旋转版本?如何在所有 4 个方向上搜索人脸,而无需将 4 个版本的视频加载到 GPU 中?

4

1 回答 1

1

在计算机视觉的世界里,很多事情都是可能的,但很少有是健壮/可靠的:)。旋转不变性不是要走的路(因为实际上旋转不变性意味着旋转信息会以某种方式被丢弃)。

  1. 最简单的方法:GPU 上的图像旋转非常快,因此您可以在将每个图像上传到设备后尝试使用 gpu::rotate 旋转它。
  2. 更快的方法:典型的方法是学习四种不同的检测器并应用它们。随着最近的一些进展,检测器的数量可以很好地扩展。

但我仍然不确定你想要实现什么。如果您不想找到所有面孔,而是估计视频的方向(从您的部分问题中听起来),您只需要处理所有帧的子样本并从中推断(因为头部旋转不倾向于一定要随机分布:))

于 2013-07-09T22:13:01.753 回答