views:

1139

answers:

18

My friend works for a non-profit organization working to stop the illegal exploitation of minors over sites such as craigslist.org, which is one of the more popular mediums. The question is whether or not it is possible, now or in the near future, to develop an algorithm to analyze a photo of a person and return a prediction of their relative age.

It sounds like a mammoth task. My only thought was some sort of Bayesian probability system. I know even people often have trouble judging someone's age but Bayesian spam filters are advertised as being "10 times as accurate as a human" so maybe it's possible?

I am pretty inexperienced though. I would appreciate it if someone else could suggest whether or not this is feasible and if so how and when?

EDIT: Thank you everyone for the responses. Smoore that study was very helpful but I think Hal's solution is the most practical for the time being.

+3  A: 

In some theoretical sense it is probably possible. For all practical purposes though, it is currently impossible.

recursive
+13  A: 

I expect it would be pretty hard to get right. Consider this set of photos where the same model is made up to look very different ages.

system PAUSE
yeah but those pictures were INTENTIONALLY designed to change the woman's appearance, so of course she looks different in each picture. I don' thin this says much except that the algorhythm won't be bale to tell the real age, but that it may be able to tell what age the person looks like.
Alex Baranosky
It is worth noting the people take steps to disguise their age all the time. That is what the whole [makeup|hair coloring|botox|...] industry is about, after all. The photoset is just an extreme case. This may be particularly the case in your use case.
dmckee
@GordonG The use case is catching exploitation of minors, so I don't think there's much of a problem with minors looking older (pedophiles want their kids to look like kids). There might be some false positives, but these could be screened out by humans much like scanning words for older books is sometimes done.
Imagist
kloucks
+2  A: 

Mammoth is an understatement I think. "Giant glacier" or "moon" might be more appropriate.

This isn't to say it wouldn't be worth looking into but I have a feeling you'd be in for a lot of man hours before you came up with something remotely useful.

Spencer Ruport
Not necessarily true. If you have access to facial recognition software, it would probably be not-too-difficult to modify the metric points to be age markers instead of identity markers.
Imagist
I disagree. Facial geometry doesn't change in a strongly quantifiable way across ages unless you have access to pre and post-change data.
Paul McMillan
+2  A: 

A neural net is a reasonable approach, you would need a training set of pictures of people with known ages and a bit of image processing to remove hats etc.

edit: Question changed? You might be ale to classify someone as 20-30 or 40-50 on a CCTV but you aren't going to be ale to tell if a model is 17 or 18 in a posed photo.

Martin Beckett
+25  A: 

Here's a possible (left-field) solution. Perhaps, you could tie it into some type of a captcha solution for the site itself. Prompt new users with images of other new users with the question: "Is this person over 18?". It's true that a 50% success rate is not a very effective captcha system, but it's a start.

Coupled with some other checks or repetitive checks and it could work. You could display the image to a number of new users, and base the result on a certain threshold. If, 8 out of 10 people flagged a certain image as not a minor, than it's probably pretty safe they are of age.

But, this whole system can be circumvented by simply uploading someone else's image so I'm not sure how effective any of this really is. :)

Hal
+1: Best idea yet.
RBarryYoung
+1 Yeah I think this is the best way to go.
Spencer Ruport
I would have concerns if those pictures might contain nudity but I must admit I don't know craigslist (not popular in europe) and the original question is not really clear about it. To circumvent this you could do a face detection step and only display the face in the captcha.
sebastiangeiger
this reminds me of the works behind reCaptcha: http://recaptcha.net/learnmore.html
Not sure what ever happened to hotcaptcha.com. This would be a similar idea. Show two sets of photos, one control and one test. Ask the user who is older in each set.
brianegge
+5  A: 

There are algorithm to reliably determine the attractiveness of a face. See acm.org and uni-regensburg.de. It wouldn't be too much of a stretch to imagine an algorithm which could predict age.

Characteristics such as smoothness would probably have a strong correlation with age. It would probably take a great deal of effort to be more reliable than your average carney though.

brianegge
+6  A: 

I think you would need some input from a forensic anthropoligist ( or at least an anatomist).

Differnet parts of the body grow at different rates so it might be possible to do something like size of head vs. shoulder width, arm length vs. body width.

Unfortunately it sounds like he is trying to differentiate between say a 14 year olds and 18 year olds. Which is only a four year difference, variations in genetic makeup and nutitrition would probaly give any system an accuracy of +/- 20% which would equate to three years for this age group.

On the other hand if you had a large sample of photos then you could account for the variance statisticaly and get a pretty good idea whether a site was likely to be exploiting minors systematicaly.

James Anderson
Noses get bigger as you get older.
Nosredna
+4  A: 

Use mechanical turk

flybywire
From the question, sounded like he wanted to do better than human judgement. I'm thinking that's unlikely, though.
Nosredna
+4  A: 

The direct answer to your question is that no, no such algorithm will exist in the near future, and is probably impossible to achieve with any accuracy without strong AI.

That said, a practical solution to your problem is probably the amazon mechanical turk:

http://mturk.com

There, you can pay a small fee to have real people complete a task for you. I'd probably set your task up so that you paid $0.02 to have a person estimate the age of maybe 5 faces at a time. You could double or triple check your results with other workers, particularly for those faces who seemed close to your age limit. This is probably your only practical solution other than hiring minimum wage interns to manually review all submissions.

Paul McMillan
+1  A: 

I don't think it's something that a computer could do with any degree of accuracy. It's even really hard for people to do. I mean, have you been the the liquor store lately, they are supposed to ask for ID from anybody who looks under 25 (drinking age is 19 here). Apparently some 40 year olds don't look old enough. Telling somebody's age just by looking at them is a very hard thing to do. Especially when you get into to erotic picture arena, where they are trying to make models seem younger than they really are.

Kibbee
+1  A: 

I think you will also have difficulties with different composited pictures. For instance angles on a face, different lighting, as well as context and probably most of all... image quality/resolution. It's a lot easier to work with a 800x600 pic then it is to work with a 320x240. The algorithm is only as good as the subject.

I cannot see this approach (a software solution to measuring age) being very effective. I like the idea of users flagging images - a human being can discern age many times more effectively then any algorithm.

Dominic Bou-Samra
+1  A: 

Practical approach aside, I'd advice against trying to develop anything in that direction for now.
Few reasons:
1. guessing someone's age is not a grateful task
2. "biological" age and "calendar" age of people vary greatly - I know people who are 30 and are still asked for an ID when buying liquor, and some who are barely 18 and already look over 30
3. some people's looks don't change over time - they just have that kind of looks
4. nowadays, everyone's working to look as young as they can - so basically, you've got the whole industry working against you :(

Anyways, to cut long story short, I don't think it's feasible for now.

ldigas
+2  A: 

In this study they tried it by analysing facial geometry and wrinkle features. Problem is this would be affected by shot angle, lighting, etc.

smoore
A: 

As of now, this is possible with 90% accuracy. Yes. please refer the following link..

http://www.omron.com/r%5Fd/coretech/vision/okao.html

Alphaneo
If you believe that, I've got a bridge to sell you...
las3rjock
@las3rojck- In Japan, where this is sold, they use it for Adult detection during selling cigarettes and Alcohol. And I will definitely buy a bridge if you have one ;-)
Alphaneo
A: 

Just like nearly all advanced tasks in image classification this topic is still in research. Judging from this paper it is possible to do it but non-trivial, also you have to have a lot of (manually) annotated training data. Without any knowledge of this field and no experience in image processing this task is going to take you several months.

sebastiangeiger
A: 

Develop a classification algorithm that bases a heuristic on many values of the pictures, amount of pixels that are dark within the face area (possibly wrinkles), and the color of the hair. These values should fall within a general area of any profile-esque picture, if you want to be fancy, carry weights with these values and develop a type of game tree that would be able to search hundreds of thousands of images quickly, finding where this image "falls" in the tree within an age-specific set of values.

mduvall
A: 

Some Japanese cigarette vending machines do this. Not terribly well by all accounts, but then it probably doesn't matter since, as Hal mentioned, the easiest hack is just to use someone else's image...

bobince
A: 

Impossible is nothing, Only amount of efforts changes :

I think it would be near impossible if you target one particular feature of face.

you have to consider multiple factor, So decision will be lying in a matrix and you have to feed multiple things and you will get your answer i would enlist some feature :

1) Beard (Detect face , Now detect beard on face , Help full in distinguish male/female /childern )

2) Hair

3) Wrinkles

4) Size of face

5) Ration between height and breadth of face

It would be a tough assignment but algorithm can be developed.

sat