Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I detect if a photo is a poster (not realistic)?

I have a number of .jpeg from the websites of musicians. These images are comprised of posters for upcoming shows and band photos (photos of the band in real life).

Here is an example poster:

enter image description here

I am not well-versed in any modern techniques or algorithms (if they exist?), but this is what I thought I might look for:

  • Text in the image is usually a dead giveaway of a poster.
  • Maybe realistic photos (ie. non-posters) follow a different color distribution?
  • Posters are probably less likely to have faces in them - but that's a pretty weak assertion.

Is there any classification algorithm that can detect if an image is a poster?

like image 563
sdasdadas Avatar asked Aug 20 '13 11:08

sdasdadas


1 Answers

Your question is very broad. Poster or photo is not well defined object. What is a poster? In real life, posters are often photos, or combination of photos, or a bit corrected photos.

If we narrow down to refered in the first part of your question - band photos vs upcoming shows posters, then the answer is - probably yes (even though I never seen anyone doing it). As you are looking for a binary classifier I would suggest taking some machine learning model (Naive Bayes should be sufficient, but if you want to use more complex features then try out SVM, ELM, or some Random Forests/Decision Tree) and apply it to the data encoded in vectors containing:

Binary features:

  • "is there any word on the image?" - you will need external text detection algorithm
  • "is there a number on the image" - events should have dates
  • "is there a date on the image"
  • "is there any face on the image"

Using Naive Bayes would build conditional propabilities P(poster|there is a word),P(poster|there is a number) etc. which will not only give you a classifier, but also some insights of how important are your featuers (probability close to 0.5 are a suggestion, that a particular feature is useless).

I would not use histograms etc. due to the wide range of possible photos, photo session styles etc. unless you are willing to create really big training set.

If this is not enough, you could change these to more complex features and use more powerfull classifier then Naive Bayes.

Complex features:

  • How many words are there on the image?
  • How many numbers are there on the image?
  • How many dates are there on the image?
  • How many faces are there on the image?
  • Image histogram

And one last option, if everything fails, you could try to train some modern model, like Deep Belief Network on the raw images. It would require serious computetional power, but results would be very valuable also for the scientific community.

like image 127
lejlot Avatar answered Sep 28 '22 01:09

lejlot