【发布时间】:2013-08-22 02:46:12
【问题描述】:
我目前正在从事人员检测和计数项目。它基本上通过 USB 网络摄像头检测场景中的任何人,然后计算经过的人。目前,我的设置是:
- OpenCV 2.4.6,使用 Haar 方法检测人头(浮点处理)
- 带有 ARM A9 四核和 Mali 四核 GPU 的 ARM 板
不幸的是,处理时间不够快,每帧 70 - 100 毫秒 (14 - 10 fps),因此以正常速度或更快的速度行走的人不计算在内。瓶颈在于 OpenCV HaarDetection 方法,基本上每帧 90% 的处理时间都被进程消耗了。
我尝试使用除 Haar 之外的另一个模型,即基于整数处理的 LBP 模型,但到目前为止,我的 LBP 模型并不令人满意,我仍在努力创建新模型。另外,我尝试将 TBB 与 OpenCV 一起使用(在 OpenCV 中原生实现多线程),但不知何故导致 Odroid 崩溃,如果我不使用 TBB,应用程序可以稳定运行。
我能想到的唯一优化是利用板上的 Mali GPU,使用修改后的 HaarDetection 重新编译 OpenCV 以利用一些 GPU 处理能力。我的问题是,这是否可以使用 OpenGL 库?我看到大多数OpenGL的例子是渲染图形,而不是处理图像。
【问题讨论】:
-
目前市面上的大多数 Mali 四核是 Mali-400 MP,它只支持 OpenGL ES 2.0,没有 GPGPU api 可言。你可以用大量的意志力和时间可能使用顶点/片段着色器一起破解一些东西,但这似乎不值得(你不仅要重写算法,而且要以非常尴尬的分区方式重写它)。向它扔硬件或调整你的算法/改变你的方法。
-
你可以尝试使用latentsvm检测器,但这意味着为人们训练一个新模型并不简单。如果您有兴趣,请告诉我,我会提供更多详细信息。
-
没关系,有训练有素的模范人。
标签: opengl opencv image-processing gpgpu mali