1
votes

I'm trying to do object recognition in an embedded environment, and for this I'm using Raspberry Pi (Specifically version 2).

I'm using OpenCV Library and as of now I'm using feature detection algorithms contained in OpenCV.

So far I've tried different approaches:

  • I tried different keypoint extraction and description algorithms: SIFT, SURF, ORB. SIFT and SURF are too heavy and ORB is not so good.
  • Then I tried using different algorithms for keypoint extraction and then description. The first approach was to use FAST algorithm to extract key points and then ORB or SURF for description, the results were not good and not rotation invariant, then i tried mixing the others.

I now am to the point where I get the best results time permitting using ORB for keypoint extraction and SURF for description. But it is still really slow.

So do you have any suggestions or new ideas to obtain better results? Am I missing something?

As additional information, I'm using Python 3.5 with OpenCV 3.1

1
Define what's your perception of "really slow" and what concrete expectation you've got. (As in right now this takes X seconds, but i expect it to take only Y seconds.) Show your current code and some sample input. - Dan Mašek
Right now it is being used to match the object image (400x200) with frames captured from webcam. My definition of too slow is 2fps with 640x400 frame resolution. I wanted to take it to at least 5-6 fps per second, to obtain a more fluent video stream. - user6942433
Do you have a large labeled data set of the object that you want to recognize? If you do, maybe try to use viola jons for the object detection. - Amitay Nachmani
@AmitayNachmani I don't quite understand what you mean by labeled, but it might be interesting. I did some research on Viola–Jones. Can you elaborate a little, Thankyou! - user6942433
You need to read about basic machine learning to understand the terms but in general you need a set of images that contain the object you are looking for, that will be labeled 1, and a set of images that doesn't contain the object you are looking that will be labeled as 0. Then you run your machine learning algorithm, In your case viola jones, that will learn a representation of the object in the images using the viola jones descriptors. - Amitay Nachmani

1 Answers

0
votes

I have done similar project in my Masters Degree.

I had used Raspberry Pi 3 because it is faster than Pi 2 and has more resources for image processing.

I had used KNN algorithm in OpenCV for Number Detection. It was fast and had good efficiency.

The main advantage of KNN algorithm is it is very light weight.