【问题标题】:OpenCV GPU HOG detectionOpenCV GPU HOG 检测
【发布时间】:2012-10-18 18:09:12
【问题描述】:

我使用的是 Windows 7 64 位、visual studio 2010、opencv 2.4.2。

我正在尝试使用 GPU hog 检测器。

现在我可以使用我自己的 CPU hog 检测器(我训练过的版本)。

我的猪的细胞大小为Size(4,4)

但是,在 opencv/modules/gpu/src/cuda/hog.cu 中,它指出

 // Other values are not supported
  #define CELL_WIDTH 8
  #define CELL_HEIGHT 8 

或者,在 opencv/modules/gpu/src/hog.cpp 中,在

cv::gpu::HOGDescriptor::HOGDescriptor( ... ) { ... CV_Assert(cell_size == Size(8, 8)); ... }

我认为这就是我的程序崩溃的原因。但是我不想使用单元格大小 8。如何将其更改为 4?

【问题讨论】:

    标签: c++ opencv cuda gpu


    【解决方案1】:

    你有几个选择...

    • 打开 OpenCV HOG code 并绕过 8x8 约束。将 #define 语句从 8x8 更改为 4x4,并去掉 assert 语句。重新编译 OpenCV 代码,然后运行您的应用程序。看看会发生什么......也许它会起作用。

    • 如果 OpenCV 代码中的快速破解不起作用,还有其他开源 GPU HOG 实现,例如:fastHOGGroundHOG

    • 如果以上想法都不起作用,您可以在 CUDA 或 OpenCL 中编写自己的 GPU HOG 代码。手写的 HOG 实现可以相当简洁,特别是如果您针对特定情况对单元格大小和其他维度进行硬编码。但是,如果您不熟悉 GPU 编程,可能需要一些时间来学习。

    另外,我应该确保 - 如果您使用 8x8 单元运行,OpenCV HOG 可以正常运行,对吗?

    【讨论】:

      【解决方案2】:

      您实际上不应该更改单元格大小。单元格大小为 8,因为这是“足够的像素来执行渐变”,但“不会太多以执行不必要的工作”。如果您的单元格大小为 4,那么对于梯度强度和精度来说,这可能还不够有用吗?与其将单元格大小减小到 4,不如将图像大小在两个方向上减小 2?

      【讨论】:

        猜你喜欢
        • 2015-09-15
        • 2011-11-30
        • 1970-01-01
        • 2016-05-01
        • 2017-12-07
        • 1970-01-01
        • 2013-09-14
        • 2014-12-23
        • 2018-10-07
        相关资源
        最近更新 更多