Progress (1-04-2014)

Today I have finished migrating my project to a windows machine. Talking with Fabio led me to discover some errors in the code, it got stuck when i was using the OpCV function mulTransposed(). When I fixed this a new error appeared: "OpenCV Error: Insufficient memory (Failed to allocate 3665441028 bytes)". I have now started researching on how to solve this error.

About Fisherfaces

I started to implement FisherFaces about a month ago. At this moment, I have succesfully implemented PCA for small matrices. The biggest simple matrix (not a proper image) I've tested has 5X5.
When it comes to proper images, i've encountered that my computer might not be good enough to obtain the eigenvalues of big matrices, when I run the code with a set of sample faces, my computer freezes after starting the PCA, more especificaly, it freezes when starting the eigenvalue decomposition of the matrices. I plan to run the code in a different machine, to see if  the error is a code error or if  it is just my computer not being able to handle it. If the latter is true, I would consider obtaining theeigenvalues via Matlab.


Over this summer I've read this list of CV papers:

  • [1] The SVM-minus Similarity Score for Video Face Recognition- L.Wolf & N.Levy
  • [2] In Defense of Sparsity Based Face Recognition- W.Deng, J.Hu & J.Guo
  • [3] Face Recognition in Movie Trailers via Mean Sequence Sparse Representation-based Classification- E.Ortiz, A.Wright & M.Shah
  • [4] Fusing Robust Face Region Descriptors via Multiple Metric Learning for Face Recognition in the Wild- Zhen Cui et. al.
  • [5] Towards Pose Robust Face Recognition -D.Yi, Z.Lei & S.Li
  • [6] Single-Sample Face Recognition with Image Corruption and Misalignment via Sparse Illumination Transfer- L.Zhuang
  • [7] Facial feature detection using Haar Classifiers - P.Wilson & Dr. J. Fernandez
  • [8] Robust and Efficient Parametric Face Alignment -G. Tzimiropoulos
  • [9] A Practical Transfer Learning Algorithm for Face Verification -X.Cao
  • [10] Self-taught Learning: Transfer Learning from Unlabeled Data - R.Raina
  • [11] Face Recognition: A Literature Survey - W. Zao
  • [12] PCA vs. LDA - A.Martinez & A.kak
  • [13] Local Linear Regression (LLR) for Pose Invariant Face Recognition - X.Chai
  • [14] Toward Pose-Invariant 2-D Face Recognition Through Point Distribution Models and Facial Symmetry- D.Gonzalez-Jimenez & J. Alba-Castro
  • [15] Face Recognition Using Eigenfaces -M.Turk & A.Pentland
  • [16] Eigenfaces vs. Fisherfaces: Recognition Using Class Specific Linear Projection- P.Belhumeur
  • [17] Two-Dimensional PCA: A New Approach to Appearance-Based Face Representation and Recognition -J.Yang
  • [18] Face Description with Local Binary Patterns Application to Face Recognition - T.Ahonen
  • [19] Face Authentication Using Adapted Local Binary Pattern Histograms -Y.Rodriguez
  • [20] Robust Face Recognition via Sparse Representation -JWright
  • [21] Extended SRC Undersampled Face Recognition via Intraclass Variant Dictionary - W.Deng
  • [22] Gabor Feature Based Classification Using the Enhanced Fisher Linear Discriminant Model for Face Recognition - C.Liu
  • [23] Robust, accurate and efficient face recognition from a single training image: An uniform pursuit approach - W.Deng
 Out of those, we decided to implement the Sparsity Based algorithm discussed in [2]. To do that, first I will implement Fisherfaces, as practice and to use as a comparator with the algorithm I'll be writing.

Work over the summer

I started working on this project in December 2013. First, I had to learn Android programming. I knew iOS and Java programming so after a few tutorials and guides i was able to make a rudimentary app. After that, I moved onto what is going to be the backbone of the project, OpenCV.

Open Source Computer Vision (OpenCV) is an open source library for computer vision. Its built focusing on speed and eficiency and its written in C++. It has a variety of wrappers, including a Java and Android wrapper, wich are the ones that i will be using.

OpenCV was a bit more challenging than Android, as i had to learn how to link native code (C++) with the Java code, while understanding the C++ code. But by the end of December I had managed to construct an app that detects faces on real time. Then I moved on to choosing what algorithm I would use.

As I mentioned before, I will be using an sparisty based Face Recognition algoritm. I will also implement the FisherFaces algorithm to use as a control algoritm. February I spent implementing Fisherfaces.

Aim of the Thesis

My aim for this thesis is to create an Android app. This app will be getting a live feed of what the user is seeing. Through that live feed, it would detect faces and compare them against a database of people know by the user. If the detected face is know, the phone will play an audio file tailored to each users neccesities. Normally this would be the name of the person in front of the user. After the app is made, we will explore the possibilities of expanding the algorithm for object detection.

And it Begins...


This post marks the start of my thesis at University of Sydney. I will be researching machine learning algorithms for copmputer vision and posting the progress I make in this blog.