5/30/07

facial feature

I have written a program which can detect the locations of facial features including eyes, nose and mouth from a face image. (download)
The basic idea is to find the strong horizontal edges (using sobel operator) and generate connected components. The location of eyes, nose and mouth may be found from the larger connected components.
The code is written by java. You can execute the jar file using the following command: java -jar facial_location.jar directory_name
The program will read all images from that directory and output a file named features.txt.
In features.txt, the first string at each line is the image file name.
And then, the following 4 integers indicate the left-top conner coordinate and the right-bottom conner coordinate of the left eye. The locations of right eye, nose, and mouth are recorded in the same format (4 integers).

5/5/07

OpenCV on Face Detection Survey

I have been surveying OpenCV on face detection, and here is a simple report.

OpenCV (Open Source Computer Vision) is a C++ library of programming functions which includes a lot of useful functions on image processing, computer vision, learning, etc.

You can get information and tutorials on The Wiki of OpenCV. (PS. Chinese version)

I have worked on the application of face detection, and have writtern a testing program which successfully detects the front-face from input image.

To execute the program, you should install OpenCV library first. Please follow the following steps.
  1. Download and install OpenCV. You can find a windows version here. Note that you need to reboot your computer after the OpenCV has been installed.
  2. The face detecting program written by me can be found here. It is a win32 console application, and written by VC6.0. You can execute this program by the following command:
    face_detect.exe --cascade="haarcascade_frontalface_alt.xml" image.jpg
    In this program, two parameters are required. The first is the front-face classifier. OpenCV had trained a front-face classifier and can be found in OpenCV/data/haarcascades. The second is the test image.
  3. The results will show on the screen and the face image will be stored in the directory face/. (Please create the diretory face by yourself in the program path first.)
  4. You can also run the program by the following command:
    face_detect.exe --cascade="haarcascade_frontalface_alt.xml" image.txt
    You can list test image file names one per line in image.txt to do a batch process when you have a lot of test images.
  5. The VC6.0 workspace of this program is here. I'm not familiar in C++, so the program is rough. You can enhance the code by yourself. For example, do face detection on all image files in a directory. (To compile this program, check the tutorial of using OpenCV with Visual C++ 6.0)

I hope that our team members can try and read this program soon. We can discuss the next steps such as collecting training and testing images, selecting features and training models to be utilized, etc. on Wed (5/9).

5/1/07

Abstract - Personalized Beauty Detection System

Main Idea

In this project, we want to build a personalized model for beauty detection. Although some general rules are used to judge how a person looks, the perception of what a beauty should be could be different for everybody. Hence, by analyzing photos of persons who are recognized as beauties by a user, we can have an idea of the user’s preference.


Possible Applications

1. This design can be applied to online album to help a user filter photos that might contain beauties from his perspective.

2. Marriage clubs can use this design to choose a member some appropriate targets, whose appearances conforming to the member’s taste.


Practical Process


1. Build a database of beauties so that a user can select the ones that are considered as really beauties in his opinion. Also, a user can upload beauties’ photos, which are grouped according to their identifications.

2. Build a characteristic model for each beauty by analyzing all photos of her in our database.

PS1: In order to avoid the problem that a user’s perspective of beauties may contain very different beauty styles, we collect the beauties photos which are grouped according to their identification and generate face model for each beauty. If all the beauties photos are composed of a single model, we may not catch the truly attractive characteristics of each beauty but generate a mixed model that looks not pretty at all. Therefore, we will establish the characteristic models for each beauty.

PS2: We have not decided what feature will be utilized in this project. We will try several different features and do experiments to test the performances of different features.

3. Based on the information provided by the user, that is, the ones that are chosen as beauties by him, the preference of him can be learned.

4. Take some photos for testing, and display photos with higher scores on screen in order. After the results are shown, the weights of the models can be tuned through a relevance feedback mechanism with the user’s help.


Present Difficulties


1. What feature should be used to build the characteristic models?

2. Photos might diverge in both sharpness and brightness.

3. To remove the influence of background, a good face detection technique should be involved in.