This is an old revision of the document!


In order to engage users for longer term relationships it's important to be able to tell if you've met the user before, and recall past engagements.

  • Need to be able to tell which user is which
  • Replacement for rfid (which is too short range for unobtrusive use)
  • Distinguish between a few people (<10)
  • Use the camera and OpenCV's haar face finder
  • Communicate over yarp

Also provide a test competency to try out reusable standard stuff for lirec (yarp, cross platform development, etc)

  • Using squared sum of differences (SSD) to compare stored images with any faces found in the image.
  • Faces can be any size in the image, but are smoothly scaled into a standard resolution for comparison and storage
  • Two modes of operation

Calibration Mode

Look for all faces in the image, compare with stored faces and create a new identity if the difference is over a given threshold. Do this each frame until switched into detect mode.

  • Uses a maximum count of faces, in order to prevent storing too many false detections

Detection Mode

Look for all faces in the image, compare with stored faces and print the id number of the most similar stored face, if it's over a given threshold.

Demo Movie

* Adding user inteface for recording up to 10 people by pressing the number keys * Better output - rendering the recorded faces, and draws lines between them and the detected faces.

Added a simple message to tell other programs which user is in view, with a confidence metric.

/faceident user-id confidence-value

The program still needs to be driven by user input, calibrating it by recording people at startup.

New messages

Input port Bottle contents Meaning
/faceident-ctrl “train” ID Train for this user
/faceident-ctrl “detect” Switch out of training mode
/faceident-ctrl “save” sessionname
/faceident-ctrl “load” sessionname
/faceident-ctrl “clear” Clears all faces

Loading and saving is done quickly, for the review - and just consists of saving images as png files and a quickly hacked together ascii format for mapping the images to the id numbers.

Persistence across time via load and save to disk brings up problems - the computer vision will break when lighting changes too much, the saved faces will be too different from the visible ones. One possible workaround would be to lower the error threshold and sneakily recalibrate for the most likely user at the start of a new session.

====

  • lirec/faceident_dev_log.1243423633.txt.gz
  • Last modified: 2009-05-27 11:27
  • by davegriffiths