Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Hi I have a programming problem that I would like to solve using some artificial intelligence technique. I really dont know where to start. I would like some guidance as to what methodology to pursue.

Lets say I have 10,000 images of random people, and I need to detect elderly people in images. I might have algorithms like wrinkle detector, glasses detector, walking cane detector, missing teeth detector, skateboard detector, Playstation detector, etc. Each algorithm does a scan independently and outputs a number from 0 to 10 on the likelihood it thinks the image contains that item. Lets assume that works. There might be 100 different algorithms.

My set of 10,000 images would be divided by a human into two groups, those that contain an elderly person, and those that do not.

Now I need to develop a system that takes the series of values from the algorithm modules, when given an image to analyze, and calculates a single value that represents the likelihood that an image has elderly people in it or not.

During training I would like it to be able to automatically build rules by analyzing all the algorithms' outputs. For example:

  • If wrinkle detector, glasses detector, walking cane detector and missing teeth detector all output a high number, then output a high number.

  • If wrinkle, glasses, cane and teeth detectors are high, but playstation and skateboard detectors are also high, then output is neither low nor high.

  • hands detector and clothes detector should be essentially ignored as old and young people both have those (hopefully)

What type of technology should I be implementing for the automated rule building system? Is this better solved by a neural network system? A fuzzy logic system? Something else?

Thanks for any advice.

share|improve this question
2  
How much time do you have to compute the results? Also, you may not need all those detectors. You may just need a suitably large sample size to train your net. –  Robert Harvey Oct 6 '13 at 1:56
    
@RobertHarvey I would guess 1/2 second analysis time might be acceptable. If the 'Highest Accuracy' option is checked, maybe seconds? –  TripleAntigen Oct 6 '13 at 2:38
    
@RobertHarvey In terms of detectors, I am hoping that the rule building process will reveal which of the detectors can be culled from the analysis pass, because they are not contributing to accuracy. If however accuracy is improved significantly by having specialized detectors then I would want the option of using them. –  TripleAntigen Oct 6 '13 at 2:44
1  
Sounds like a classic Bayes problem. –  Don Reba Oct 6 '13 at 3:01

2 Answers 2

up vote 2 down vote accepted

Have a Look in ada boost (adaptative booster). The idea is to use independent weak classifier (your detectors) and combine them in a clever way. It roughly goes like this:

  • It first tries to evaluate the different detectors to detect and use an optimal linear combination of them to classify the data.
  • It then tries to find another combination able to provide a better discrimination on the first pass' failure cases
  • It goes on like this for any number of passes you want

You then have n combination applied in cascade, which gives you a "boosted" version of your detectors. Each pass will be expressed as 0.25 * wrinkle - 0.1 * playstation + .... Now I think you need a lot of detectors for this method to shine.

See here for an example of face detection using adaboost.

share|improve this answer

It sounds like this would be suitable for a neural network, probably a standard feedforward type.

I'm not sure how much you know about neural networks, but FYI the 'rules' it discovers won't be in a human-readable format. So if you want to run images through it and sort them, it'll do that; but if you're aiming to get a list of rules that you can see, you're probably better off choosing a different algorithm.

You mention in a comment you'd like to see which detectors are not contributing much. After the network is trained, you can look at the weights and see which inputs aren't doing much. Alternatively I believe there are some variations of neural networks that can automatically prune inputs; not my area of knowledge but worth looking into.

I should mention that neural networks can be fiddly, there's always a chance that they won't do what you expect, but from what I can see in this case it's very likely to work.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.