cuda::SURF_cuda 比 cv::xfeatures2d::SURF 快吗?
Is cuda::SURF_cuda faster than cv::xfeatures2d::SURF?
我正在尝试构建支持 CUDA 的 opencv,以将 cuda::SURF_CUDA
与 cv::xfeatures2d::SURF
、but it's challenging 进行比较。
但是,假设我想为一个高性能的实时应用程序获取 SURF 描述符。是的是的,我知道 FAST 或 ORB 是更合适的描述符,但它们是二进制文件,我需要欧氏描述符。
无论如何,关键是我想知道这两个实现中哪一个更快只给定一个(查询)图像。我认为这很重要,因为有人告诉我只有在必须处理大量图像时才使用 CUDA 是合理的,因为与计算描述符的时间相比,将它们加载到 GPU 内存中的时间变小了,但我不这么认为知道这是不是真的。
还有一个原因,因为我post这是我只有一个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
是的,你是对的。请参阅 and here 了解为什么 CUDA 内核在第一次运行时似乎很慢。
对于您的应用程序,这将完全取决于您 运行 代码所在的 CPU 和 GPU,以及 CPU 和 GPU 代码的编写程度。正如@NAMorim 所说,这将取决于您的代码产生了多少开销以及它能够利用多少并行性。
请注意,它还可能取决于您正在处理的特征数量,因为这会影响 CPU/GPU 计算时间以及大部分 GPU 开销(想想 uploading/downloading GPU 的描述符).
我正在尝试构建支持 CUDA 的 opencv,以将 cuda::SURF_CUDA
与 cv::xfeatures2d::SURF
、but it's challenging 进行比较。
但是,假设我想为一个高性能的实时应用程序获取 SURF 描述符。是的是的,我知道 FAST 或 ORB 是更合适的描述符,但它们是二进制文件,我需要欧氏描述符。
无论如何,关键是我想知道这两个实现中哪一个更快只给定一个(查询)图像。我认为这很重要,因为有人告诉我只有在必须处理大量图像时才使用 CUDA 是合理的,因为与计算描述符的时间相比,将它们加载到 GPU 内存中的时间变小了,但我不这么认为知道这是不是真的。
还有一个原因,因为我post这是我只有一个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
是的,你是对的。请参阅
对于您的应用程序,这将完全取决于您 运行 代码所在的 CPU 和 GPU,以及 CPU 和 GPU 代码的编写程度。正如@NAMorim 所说,这将取决于您的代码产生了多少开销以及它能够利用多少并行性。
请注意,它还可能取决于您正在处理的特征数量,因为这会影响 CPU/GPU 计算时间以及大部分 GPU 开销(想想 uploading/downloading GPU 的描述符).