introlab / find-object

Find-Object project
http://introlab.github.io/find-object/
BSD 3-Clause "New" or "Revised" License
448 stars 189 forks source link

Improve find object - SIFT runtime by using CUDA #68

Open nhudinh2103 opened 6 years ago

nhudinh2103 commented 6 years ago

Hi matlabe,

Currently your find_object with SIFT don't support with CUDA and my laptop use GTX 1060 When I load image with big resolution, extract descriptor seem slowly (~ 1.5s) with this image (2016x1134)

20180720_004

A work around for this is scale down image, but this will decrease accuracy for detect object from this image (I have tested this).

I heard somebody have try to implement this https://github.com/Celebrandil/CudaSift

It would be great if you can add it as an option for improve running time for this.

matlabbe commented 6 years ago

It could be indeed nice to have, but I would like to use it more like a library to be less difficult to maintain. The project doesn't export the functions in a library. If it could do so, I may take some time to integrate it. You may check with the authors if they could provide a library, otherwise we would have to copy/paste their code inside find-object repository (the downside is that on updates on their side, we will have to manually update the code on this repository).

For now, if you build OpenCV with CUDA and non free module, you can use SURF GPU. On my computer with this image and setting hessian threshold to extract around 22k features, it took 470 ms for SURF CPU and 33 ms for SURF GPU.

If you are interesting to integrate yourself CudaSIFT, the best would be to make CudaSIFT class implementing Feature2D class (similar to GPUSURF class), so that the we could instantiate it like GPUSURF here.

nhudinh2103 commented 6 years ago

Thanks matlabe, I will try it