All Projects → wihoho → Facerecognition

wihoho / Facerecognition

Implement face recognition using PCA, LDA and LPP

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Facerecognition

Machine-Learning-Models
In This repository I made some simple to complex methods in machine learning. Here I try to build template style code.
Stars: ✭ 30 (-85.44%)
Mutual labels:  pca, lda
ClassifierToolbox
A MATLAB toolbox for classifier: Version 1.0.7
Stars: ✭ 72 (-65.05%)
Mutual labels:  pca, face-recognition
deepvis
machine learning algorithms in Swift
Stars: ✭ 54 (-73.79%)
Mutual labels:  pca, lda
zAnalysis
zAnalysis是基于Pascal语言编写的大型统计学开源库
Stars: ✭ 52 (-74.76%)
Mutual labels:  pca, lda
NMFADMM
A sparsity aware implementation of "Alternating Direction Method of Multipliers for Non-Negative Matrix Factorization with the Beta-Divergence" (ICASSP 2014).
Stars: ✭ 39 (-81.07%)
Mutual labels:  pca, lda
Patternrecognition matlab
Feature reduction projections and classifier models are learned by training dataset and applied to classify testing dataset. A few approaches of feature reduction have been compared in this paper: principle component analysis (PCA), linear discriminant analysis (LDA) and their kernel methods (KPCA,KLDA). Correspondingly, a few approaches of classification algorithm are implemented: Support Vector Machine (SVM), Gaussian Quadratic Maximum Likelihood and K-nearest neighbors (KNN) and Gaussian Mixture Model(GMM).
Stars: ✭ 33 (-83.98%)
Mutual labels:  pca, lda
Quick-Data-Science-Experiments-2017
Quick-Data-Science-Experiments
Stars: ✭ 19 (-90.78%)
Mutual labels:  pca, lda
MachineLearning
โค้ดประกอบเนื้อหา Python Machine Learning เบื้องต้น [2020]
Stars: ✭ 28 (-86.41%)
Mutual labels:  pca, face-recognition
ml
经典机器学习算法的极简实现
Stars: ✭ 130 (-36.89%)
Mutual labels:  pca, lda
Machine Learning With Python
Python code for common Machine Learning Algorithms
Stars: ✭ 3,334 (+1518.45%)
Mutual labels:  pca, lda
Isl Python
Solutions to labs and excercises from An Introduction to Statistical Learning, as Jupyter Notebooks.
Stars: ✭ 108 (-47.57%)
Mutual labels:  pca, lda
Tf Insightface
A better tensorflow implementation of deepinsight, aiming at smoothly production ready for cross-platforms. Currently only with inference, training code later.
Stars: ✭ 191 (-7.28%)
Mutual labels:  face-recognition
Nlg Yongzhuo
中文文本生成(NLG)之文本摘要(text summarization)工具包, 语料数据(corpus data), 抽取式摘要 Extractive text summary of Lead3、keyword、textrank、text teaser、word significance、LDA、LSI、NMF。(graph,feature,topic model,summarize tool or tookit)
Stars: ✭ 175 (-15.05%)
Mutual labels:  lda
Movie rating prediction
Predict movie's IMDB rating
Stars: ✭ 177 (-14.08%)
Mutual labels:  face-recognition
Facegan
TF implementation of our ECCV 2018 paper: Semi-supervised Adversarial Learning to Generate Photorealistic Face Images of New Identities from 3D Morphable Model
Stars: ✭ 176 (-14.56%)
Mutual labels:  face-recognition
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (-4.37%)
Mutual labels:  face-recognition
Facerecognition guide
This is a guide to face recognition with Python, GNU Octave/MATLAB and OpenCV2 C++. Eigenfaces and Fisherfaces are explained in detail and implemented.
Stars: ✭ 188 (-8.74%)
Mutual labels:  face-recognition
Attendance Using Face
Face-recognition using Siamese network
Stars: ✭ 174 (-15.53%)
Mutual labels:  face-recognition
Dockerface
Face detection using deep learning.
Stars: ✭ 173 (-16.02%)
Mutual labels:  face-recognition
Human
Human: 3D Face Detection, Body Pose, Hand & Finger Tracking, Iris Tracking and Age & Gender Prediction
Stars: ✭ 172 (-16.5%)
Mutual labels:  face-recognition

Introduction Build Status HitCount

In this project, PCA, LDA and LPP are successfully implemented in Java for face recognition. After the system is trained by the training data, the feature space “eigenfaces” through PCA, the feature space “fisherfaces” through LDA and the feature space “laplacianfaces” through LPP are found using respective methods. Later in this report, W is used to represent the obtained feature space. Once W is obtained, training faces are projected to subspace defined by W to construct FaceDB. When an unknown face is needed to recognize, this test face is firstly projected onto subspace W. Afterward, the program finds the K nearest neighbors of the projected data in FaceDB. Finally, the class label is assigned to the test face according to the majority vote among the neighbors. This classification algorithm is known as K-nearest neighbor.

The below figure shows respective feature space:

Design

Because of the limitation of Markdown, I provide the pdf document for your reference.

Presentation: Slides

Setup

This is a maven project and uses lombok to generate certain Java classes like builder.

You may refer to https://stackoverflow.com/questions/41161076/adding-lombok-plugin-to-intellij-project on how to set up lombok in intelliJ or google for solutions to setup lombok in eclipse.

Usage

As many people asked me about this project, I decided to revamp this project into a maven project and release maven dependency to make this project easier to be used by others. In order to use this library, this first step is to add the below dependency.

<dependency>
  <groupId>com.github.wihoho</groupId>
  <artifactId>face-recognition</artifactId>
  <version>1.0</version>
</dependency>

After that, you may refer to com.github.wihoho.TrainerTest as below on the usage of the API.

// Build a trainer
Trainer trainer = Trainer.builder()
        .metric(new CosineDissimilarity())
        .featureType(FeatureType.PCA)
        .numberOfComponents(3)
        .k(1)
        .build();

...

// add training data
trainer.add(convertToMatrix(john1), "john");
trainer.add(convertToMatrix(john2), "john");
trainer.add(convertToMatrix(john3), "john");

trainer.add(convertToMatrix(smith1), "smith");
trainer.add(convertToMatrix(smith2), "smith");
trainer.add(convertToMatrix(smith3), "smith");

// train
trainer.train();

// recognize
assertEquals("john", trainer.recognize(convertToMatrix(john4)));
assertEquals("smith", trainer.recognize(convertToMatrix(smith4)));

Contact

I am open to collaboration in any forms. Kindly contact me with below email.

Acknowledgement

[1] Delac, K., Grgic, M., & Grgic, S. (2005). Independent comparative study of PCA, ICA, and LDA on the FERET data set. International Journal of Imaging Systems and Technology, 15(5), 252-260.
[2] Turk, M., & Pentland, A. (1991). Eigenfaces for recognition. Journal of cognitive neuroscience, 3(1), 71-86.
[3] Belhumeur, P. N., Hespanha, J. P., & Kriegman, D. J. (1997). Eigenfaces vs. fisherfaces: Recognition using class specific linear projection. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 19(7), 711-720.
[4] He, X., Yan, S., Hu, Y., Niyogi, P., & Zhang, H. J. (2005). Face recognition using laplacianfaces. Pattern Analysis and Machine Intelligence, IEEE Transactions on, 27(3), 328-340.
[5] bytefish, awesome project, https://github.com/bytefish/facerec.git
[6] ORL Database of Faces, http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html

License

MIT License

Copyright © 2016 wihoho [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].