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
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.
Feature detection for embedded platform OpenCV