Ask Your Question
1

Speeding up a sliding window approach!

asked 2017-06-12 15:22:18 -0500

ThorbjornSomod gravatar image

Hi!

I'm currently implementing a system for multi-class detection in an underwater environment. I have chosen to use the LBP-HF features found here to deal with rotation and illumination invariance. For the actual detection I have trained classifiers using libSVM, and I have successfully detected objects in my input images (1920 x 1080) by the use of a sliding window to achieve location invariance and a image scale pyramid for scale invariance. The problem with this approach is that it is very slow on my large input images, so I am trying to find ways of speeding it up. I have read a bit about efficient subwindow search (ESS), but to me it seems that this technique requires confidence scores for each prediction to be used. Is this true? Are there any other ways I could speed up my detection scheme? Any help would be appreciated!

PS: The reason why this is posted here is because the code is written for a framework using OpenCV.

edit retag flag offensive close merge delete

Comments

1

just curious, how far did you get with the ESS idea ? is there anything to see (code) ?

(reading the paper, it looks like it would offer a nice speedup for e.g. the HOGDescriptor )

berak gravatar imageberak ( 2017-06-16 02:27:34 -0500 )edit

1 answer

Sort by ยป oldest newest most voted
1

answered 2017-06-14 06:56:14 -0500

This is the same issue people have when doing deep learning classification on image patches. Something people have been doing there is using region proposal techniques. For example, the edgeboxes algorithm is awaiting merge into opencv_contrib and is just the right thing for this.

Also, if you have built your own pyramid implementation, keep in mind that OpenCV has a very efficient implementation which is heavily multithreaded.

edit flag offensive delete link more

Comments

Thank you for you answer!

I have actually considered OpenCV's implementation of the work presented here from the ximgproc module of the opencv_contrib package as a possible solution. With the selective search I could then isolate regions of interest and run my sliding window approach on those. Would the edgeboxes algorithm be faster? The selective search implementation uses multiple seconds on my 1920x1080 images. Also, when would the edgebox algorithm be merged into opencv_contrib?

Also, I have indeed implemented my own pyramid scheme. Currently it is based on OpenCVs resize() function and does not involve blurring. Would OpenCVs pyramid implementation be better? Would I run the risk of loosing information with blurring?

ThorbjornSomod gravatar imageThorbjornSomod ( 2017-06-14 13:17:49 -0500 )edit

I have no answers to everything but let me wrap up

  1. I am unsure what implementation is faster. But it might be a good idea to compare them.
  2. Integration is pending, but you can already pull the pr yourself and add it to OpenCV in your local build.
  3. Yes I am pretty sure the internal pyramid is faster. Its heavily optimized with intrinsics and multicore/parallel implementations
  4. Blurring should not interfere that much with general feature extraction.
StevenPuttemans gravatar imageStevenPuttemans ( 2017-06-15 04:14:55 -0500 )edit
1

Alright thank you for the wrap up, marking this as answered :)

EDIT: I can also confirm that the edgebox implementation is indeed faster than the selective search implementation. albeit not as good at finding regions for my data.

ThorbjornSomod gravatar imageThorbjornSomod ( 2017-06-15 04:39:01 -0500 )edit
Login/Signup to Answer

Question Tools

1 follower

Stats

Asked: 2017-06-12 15:22:18 -0500

Seen: 1,566 times

Last updated: Jun 12 '17