Is cuda::SURF_cuda faster than cv::xfeatures2d::SURF? [closed]
I'm trying to build opencv with CUDA support to compare cuda::SURF_CUDA
with cv::xfeatures2d::SURF
, but it's challenging.
However, suppose that I want to get SURF descriptors for an high performance, real time application. Yeah yeah, I know that FAST, or ORB are more suitable descriptors, but they're binaries and I need euclidean descriptors.
Anyway, the point is that I want to know which of these two implementations is faster given only one (query) image. I think it's important because someone told me that CUDA is reasonable to use only when a lot of images has to be processed, since the time to load them in the GPU memory becomes small compared to the time for computing descriptors, but I don't know if this is true.
Another reason because I post this is that I have only one NVIDIA GT755m, which is not an high-level GPU, and so my results could be not so good for this reason. On the other hand, I'm trying to improve the parallel section of cv::xfeatures2d::SURF
(and test it on a Xeon Phi with 64 cores).
if you have a 64 core machine, then skip the CUDA part. I did some tests in object detection, where my 32 core system easily beats a GPU with 1GB of onboard memory for processing... TBB for example will better divide your data then indeed crossing that CPU-GPU bottleneck each time.
@StevenPuttemans thanks for your comment. Are you telling me that the plain
cv::xfeatures2d::SURF
using TBB beatscv::cuda::SURF_CUDA
in your case?Yes it does, but again it depends from function to function. There is a lot of internal optimizations around, just be sure to built OpenCV and activate it.