3

I started learning Image Recognition a few days back and I would like to do a project in which it need to identify different brand logos in Android.

For Ex: If I take a picture of Nike logo in an Android device then it needs to display "Nike".

  • Low computational time would be the main criteria for me.

For this, I have done some work and started learning OpenCV sample examples.

What would be the best Image Recognition that would be used for me.

1) I came to know from Template Matching that their applicability is limited mostly by the available computational power, as identification of big and complex templates can be time consuming. (and so I don't want to use it)

2) Feature Based detectors like SIFT/SURF/STAR (As per my knowledge this would be a better option for me)

3) How about Deep Learning and Pattern recognition concepts? (I was digging on this and don't know whether it would be an option for me). Can any of you let me know whether I can use this and why it would be an better choice for me when compared with 1 and 2.

4) Haar caascade classifiers (From one of the posts in SO, I came to know that by using Haar it doesn't work in Rotation and Scale invariant and so I haven't concentrated much on this). Does this been a better Option for me If I focus up on.

John
  • 565
  • 8
  • 23
  • glad I should this question. I managed to use Feature Based detector method (SURF) but now I am working on scaling it to handle large number of images. I was thinking whether Deep Learning (CNN) would be a better fit ,but after some research I realised that I should go with the former solution. – Ashika Umanga Umagiliya Dec 28 '16 at 01:17

2 Answers2

1

I’m now running one of my pet projects and it's required face recognition – detecting the area with face on the photo, if it exists with Raspberry pi, so I’ve done some analysis about that task

And I found this approach. The key idea is in avoiding scanning entire picture to help by scanning windows of different sizes like it was in OpenCV, but by dividing an entire photo into 49 (7x7) squares and train the model not only for detecting of presenting one of classes inside each square, but also for determining the location and size of detecting object

It’s only 49 runs of trained model, so I think it's possible to execute this in less than in a second even on non state-of-the-art smartphones. Anyway, it will be a trade-off between accuracy and performance About the model

I will use vgg –like model, probably a bit simpler than even vgg11A.

In my case ready dataset already exists. So I can train convolutional network with it

Why deep learning approach is better than 1-3 you mentioned? Because of its higher accuracy for such kind of tasks. It’s practically proven. You could check it in kaggle. Majority of the top models for classification competitions are based on convolutional networks

The only disadvantage for you – probably it would be necessary create your own dataset to train the model

Stepan Novikov
  • 1,402
  • 12
  • 22
0

Here is a post that I think can be useful for you: Image Processing: Algorithm Improvement for 'Coca-Cola Can' Recognition. Another one: Logo recognition in images.

2) Feature Based detectors like SIFT/SURF/STAR (As per my knowledge this would be a better option for me)

Just remember that SIFT and SURF are both patented so you will need a license for any commercial use (free for non-commercial use).

4) Haar caascade classifiers (From one of the posts in SO, I came to know that by using Haar it doesn't work in Rotation and Scale invariant and so I haven't concentrated much on this). Does this been a better Option for me If I focus up on.

It works (if I understand your question right), much of this depends of how you trained your classifier. You could train it to detect all kind of rotations and scales. Anyways, I would discourage you to go for this option as I think the other possible solutions are better meant for the case.

Community
  • 1
  • 1
D.U
  • 126
  • 4