Currently, the consumer and business market is full with mobile apps that can tag you (in some fashion) by analyzing faces on photos or video. These functions are used to give better information to you about the people you are meeting. Have you heard of Google Glasses yet? However on the developer side, how hard is to develop these kind of mobile apps?
A mobile developer faces several issues with this class of mobile apps. The first limitation is all the processing power and the limited storage of the mobile device. The next is the limited network bandwidth and connection instability, privacy and security concerns are the difficulties that need to be solved. Also, there are many methods and software development choices to achieve face recognition.
The main mobile development idea is to develop a module that can be used to identify people and adapted it to many mobile apps in the future.
Here are the main tasks in order to achieve face recognition that we need to follow as the next steps:
|Input image Analysis:||- Given the input image|
|- Find the faces in a bitmap graphic object|
|- Also returns Confidence, Eyes distance, Position of mid-point between the eyes, face's Pose.|
|Pre-Processing:||- Conversion to Gray Scale|
|- Histogram equalization: To alleviate background variation, illumination variation, etc.|
|- Ellipse mask: To concentrate on the face|
|Face Recognition:||- Eigen Faces, FisherFaces algorithms|
Eigenfaces is a set of eigenvectors used in solving the computer vision problem of human facial recognition.
A set of Eigenfaces can be generated by performing a mathematical process called Principal Component Analysis (PCA) on a large set of images depicting different human faces. Informally, Eigenfaces can be considered a set of "standardized face ingredients", derived from statistical analysis of many pictures of faces.
Linear Discriminant Analysis (LDA) (Fisherfaces)
PCA does not use class information; PCA projections are optimal for reconstruction from a low dimensional basis, they may not be optimal from a discrimination standpoint.
LDA is an enhancement to PCA Constructs a discriminant subspace that minimizes the scatter between images of same class and maximizes the scatter between different class images. FisherFaces can be defined as an optimization problem of two-dimensional warping specifying corresponding pixels between subjected images.
The data that we need to face recognition is:
~ The mean face vector
~ The Fisherfaces on which the mean subtracted test image should be projected
~ The weights of the Fisherfaces
Optimal time for various operations:
~ Face Detection – 0.9 sec
~ Preprocessing – 0.03 sec
~ Projecting onto the Eigen vector space – 0.4 sec (Variable), increases with the increase in the training database.
~ Detecting the min – 0.01 sec (Variable), similar growth.
~ Entire Process – 1.4 sec
~ Do the training and testing for a large database
~ The quantities to be considered
a) Computation time
b) False rejection
c) False acceptance
d) Correct rejection
e) Correct acceptance
Actually to make or create a module that do this specific task is really challenging. However, it is a good way to test your developer skills and patience, for some approach from modules on face recognition mobile apps I suggest to check these test videos:
The last video is my favorite one, it's about a complex face replacing app check it out:
About the Author
Francisco Morales is a Computer Systems Engineer with almost three years in web development, he excels in the development of digital image. He currently works at iTexico as Web Developer.