Smile detector

Hi everybody,
For the purpose of a show, I try to develop a system for detecting smiles.
Let me explain: I would like, through a camera placed at the edge of stage, film viewers and display a graph showing the number of people who laugh a function of time.
I am sure it is possible to achieve this with Arduino. I thought also use OpenCV for face detection. Only I'm a little stuck.
In your opinion, what (hardware and software) do I need to do this? I need your help !
If you have any example or similar projects, let me know.

Thanks in advance.

I'm sorry but I think it is not possible with Arduino,

you need to have

  1. face detection,
  2. extract the mouth area,
  3. extract the main features of the mouth,
  4. compare these with "laughing" features
  5. if smile => count++

imho:
Step 4 and 5 are possible with an Arduino;
Step 1 and 2 and 3 needs more processing power than an UNO/MEGA can deliver.

An R-PI might be the way to go for this

Thank you for your reply! I will look first on facial recognition before I tackle the Arduino programming. The way may be longer than expected but much more interesting.

Thank you for your help.

welcome

why not do this with sound recognition? a laugh has a distinct spectral pattern.

If you will do this we are helped other guys. So please try again on making a Face detection program.

It can be done with a Raspberry Pi, I've seen it somewhere.
All I can find at the moment is this :

But I am sure there was an open source solution too on the Rasp...

Hi Artishow,

First of all, i'm sorry my english can be pretty bad as i'm french and lazy. Too lazy to check my english grammar mistakes.

1. Smile detection

If smile detection a real need. I suggest using Processing. If you really need to make the project pocke sized, then yeah you should probably use a Raspberry instead of an Arduino. Depending on the size / brightness / positions of your attendees, you might have a hardtime to achieve this right.

Here's a smile detection library for Processing : Smile detection library (Processing). Read the comments for proper configuration.

2. My suggestion / alternative

If you're planning to do this in a movie theater or during a one man show. I think you should investigate on decibel measurement. 40 people laughting are way louder than 2, especially in a large room.

It is way simpler to achieve than smile detection with a large number of attendees and it's a good alternative for whaty ou want to achieve.

For proof of concept, you can check out this Adafruit tutorial on measuring sound levels : Adafruit Sound Levels

If you need a large display with specific artwork when you reach an exact decibel value, you can couple Arduino with processing.

Arduino send db value to Processing over serial port. If db value is higher than xx decibels ... Then, do this (Dispay LOL for exemple) !

Some documentation about connecting Arduino to Processing

I hope it helps,

Aurélien

Hey Aurélien,

a little question, do you think there would be an easy way to distinguish applause from laughter? They are two very distinct sounds. So it should be doable, but how would you do it?

Hi Kevin,

Yeah i think it's doable. By analysing the audio spectrum of each sound (laughter vs applause) and assigning db level + frequency range as a trigger for each case ?

Anyway, it is always simplier on the paper :slight_smile:

If you succeed I'd like to hear/see it in action!

So please keep us posted!