c++ - cuda::SURF_cuda 比 cv::xfeatures2d::SURF 快吗?

标签 c++ opencv cuda computer-vision surf

我正在尝试构建支持 CUDA 的 opencv,以将 cuda::SURF_CUDAcv::xfeatures2d::SURF 进行比较,but it's challenging .

但是,假设我想为一个高性能的实时应用程序获取 SURF 描述符。是的是的,我知道 FAST 或 ORB 是更合适的描述符,但它们是二进制文件,我需要欧几里德描述符。

无论如何,关键是我想知道这两个实现中哪个更快只给定一个(查询)图像。我认为这很重要,因为有人告诉我只有在必须处理大量图像时才使用 CUDA 是合理的,因为与计算描述符的时间相比,将它们加载到 GPU 内存中的时间变小了,但我不这么认为知道这是不是真的。

我发这篇文章的另一个原因是我只有一个 NVIDIA GT755m,它不是高级 GPU,因此我的结果可能不是很好。另一方面,我正在尝试改进 cv::xfeatures2d::SURF 的并行部分(并在具有 64 个内核的 Xeon Phi 上对其进行测试)。

最佳答案

"the time to load them in the GPU memory becomes small compared to the time for computing descriptors" - OP

是的,你是对的。参见 herehere有关为什么 CUDA 内核在第一次运行时似乎很慢的解释。

对于您的应用程序,这将完全取决于您运行代码的 CPU 和 GPU 以及 CPU 和 GPU 代码的编写质量。正如@NAMorim 所说,这将取决于您的代码产生了多少开销以及它能够利用多少并行性。

请注意,它还可能取决于您正在处理的特征数量,因为这会影响 CPU/GPU 计算时间以及大部分 GPU 开销(考虑将描述符上传/下载到 GPU)。

关于c++ - cuda::SURF_cuda 比 cv::xfeatures2d::SURF 快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270241/

相关文章:

C++ 惯用类型特征

c++ - 此代码似乎在分配范围之外附加字符

c++ - 为支持 OpenSSL 的 Windows Phone 8.1 编译 Qt 5.5 的问题

cuda - tex 对象访问总是返回零——有什么想法吗?

cuda - 如何验证 CuDNN 安装?

python - 如何在 Cython 中定义 C++ 模板函数类型?

c++ - OPENCV3 detectAndCompute 中的调试断言失败

c++ - 将cv::Mat转换为std::vector的泛型函数

python - Blob 的稳健跟踪

cuda - 设备带宽的含义