6

I have created a small SIFT application that grabs the keypoints and saves it out to a text file. I am using this to grab information from a logo (say AT&T) and use that to compare against other images with that logo. The problem is many of my images have variations of the logo that, due to the scaling, rotation, or lighting it does not pick it up. I was wondering if it was possible to get a set of images, grab it's keypoints, and run it through some sort of training algorithm to enhance the detection.

I've searched online for ways of training the SIFT keypoints, but they are all in some sort of phd paper that goes into all this mathematical algorithms which, to be honest, throws me off as I haven't taken any math class for awhile.

If anyone has any advice or links to be able to understand how training works or what needs to be done to implement one please let me know. Or if anyone has a simpler means of doing this without SIFT then I would greatly appreciate other forms of detection. Below is a list of what I've tried:

  • SURF
    • Failed as it was returning invalid results
  • Haar characteristics with Adaboosting
    • Failed as I started training 100 positive models with 100 negative images on 7/11/2011 and it is still running as of 7/19/2011
  • Template Matching with various transforms of the same logo with and without thresholding
    • Failed as I would have to exponentially need to create logos based from the number of times it wasn't able to detect any in the image

Thanks in advance

Jacob
  • 34,255
  • 14
  • 110
  • 165
Seb
  • 3,414
  • 10
  • 73
  • 106

2 Answers2

3

A simple starting point would be to collect SIFT/SURF descriptors of several AT&T logos, and use FLANN on them. Then, take a test image, compute the descriptors and do a range search and determine the nearest-neighbor distance, etc. and try to figure out a metric of "closeness".

Jacob
  • 34,255
  • 14
  • 110
  • 165
  • Thanks for the advice, but I do have another question on top of this. The link doesn't say anything about a FLANN tree, but to my knowledge would I have to run 'n' amount of logos through the SIFT/SURF algorithm to extract all the keypoints and descriptors. Then I would have to do a knnsearch on all the keypoints and descriptors and save out the best ones. Once all that is done I can load in a test image and iterate through the tree to find the closest match? – Seb Jul 19 '11 at 17:04
  • You're correct, it's just FLANN. Also, yes that's what I meant in my answer. – Jacob Jul 19 '11 at 17:08
0

You can use PCA to reduce number of dimensions and then you can train some kind of classifier like SVM on set of vector features extracted from logos. also you can use BoW (bag of words\features). also you can google on "logo recognition" a lot of material availible.

mrgloom
  • 20,061
  • 36
  • 171
  • 301
  • I always thought you didn't need PCA with SVMs? – Niki Dec 07 '12 at 07:33
  • I'm not sure but http://en.wikipedia.org/wiki/Curse_of_dimensionality at least if you have high dimensional vector you must have more examples for SVM. – mrgloom Dec 07 '12 at 07:46
  • True, but who says you need fewer examples when you're using PCA? All PCA does is reduce the feature vector length while keeping the distances between the vectors as similar to the original as possible (in a least-squares sense). Since SVM (at least with a Gaussian kernel) only uses distances between samples, PCA shouldn't make much difference. – Niki Dec 07 '12 at 08:23