Yet another Eigenfaces project using Matlab.
The Eigenfaces are used to compute similarities between images, and to recognize individuals automatically with given pictures, using a computer. The given pictures represent faces of individuals, and are useable as such (no need to crop them, for example).
- Dataset: 40 individuals, 10 pictures per individuals. Images found in the website http://www.cl.cam.ac.uk/.
- Database: will contain some pictures & information about the guys we want to recognize. The DB will be initialised & created by a script ("./scripts/do_learning.m"), in a .csv format.
- Test scripts: when the database is filled with data about individuals, it could be interesting to test the results of algorithms, in other words: test the efficiency of the recognition.
If you want to learn more about Eigenfaces, I strongly encourage you to visit the website http://scholarpedia.org/article/Eigenfaces
All the functions & usages are well documented in code. Read below if you want to have a quick overview of functionalities.
- Clone this repos,
- Take a look at "./att_faces". This folder contains the images we will work with.
- Take a look at "./results". This folder contains results for previous executions.
- Take a look at "./data". This folder contains DB for a previous execution.
- Load script "./overall_accuracy.m". This script will load all the subscripts and run the algorithm, with the following parameters:
- l.17: range of E's size you want to test
- As supplied, the script will do the "Overall Accuracy" test, with random image selection and natural image selection to fill the database.
You want to customize further your use of the scripts?
- If you want to do the learning independently:
- Load the function "./scripts/do_learning.m"
usage: [image_loaded] = do_learning(number_of_images,randomize,size_E)
randomize
is a boolean; it will create a database with randomly loaded (or not) images. Note that a trace of loaded images is kept and this function is tested.number_of_images
: number of images per individual to take for the DB.size_E
: size of truncated Eigenvecteurs we will use to compute the descriptors.
- If you want to test an image separately:
- Load the function "./scripts/test_learning.m"
usage: [first_candidate_class] = test_learning(path,size_of_db,display_result)
path
is the path of the image you want to test.size_of_db
is the number of images per individuals which have been stored in the DB you want to use.display_result
(0 / 1): whether you want to show the nearest neighbours or not.
Complete result datasets can be found in "./results" folder.