问题
多核 CPU 最快的开源 HOG 提取代码是什么?
动机
我正在开发一个实时对象检测应用程序。具体来说,我开发了可变形零件模型级联的变体,针对 30fps 对象检测。我已经达到了提取HOG 特征比我的管道的其余部分更昂贵的地步,加起来。我正在使用 [ Felzenzwalb, Girshick, et al ] 参数进行 HOG 提取。也就是说,HOG 描述符的多分辨率金字塔,每个描述符总共有 32 个用于定向和一些其他线索的 bin。
目标
我想在多核 CPU 上以60fps (16ms)的速度对 640x480 图像进行多尺度 HOG 特征提取。
相关工作
我在 6 核 Intel 3930k CPU 上对一些现成的多尺度 HOG 实现进行了基准测试。对于 640x480 图像,我观察到以下性能数据:
- Dubout的FFLD DPM代码中的 HOG:19fps (52ms) -- 使用 OpenMP 的 C++,但没有矢量化
- voc-release5 DPM代码中的 HOG : 2.4fps (410ms) -- 单线程 C++,外加一个 Matlab 包装器
我还尝试了OpenCV HOG 提取代码。OpenCV 版本有效,但它似乎是针对 Dalal-Triggs 的 HOG 设置进行硬编码的,而且 OpenCV 似乎不允许我使用与 [Felzenzwalb, Girshick 等人]。OpenCV 版本本身也不支持多尺度 HOG,尽管您可以自己进行下采样并为每个尺度调用 OpenCV HOG。我不记得 OpenCV HOG 的表现是什么样的。
最后的想法