This is the repository for group project of #sg_wonder_vision Face Detection team
in Secure and Private AI Scholarship Challenge from Facebook | Udacity.
In this project, one-shot learning with Siamese Network is implemented using PyTorch.
The objective of the project is to calculate the similarity between two facial images. We forseee this application being used for recognizing known faces like in a visual attendnce system or as a face based login.
This project uses Siamese neural network to do one shot learning.
Project Dataset
- For this project, we use the AT&T Database of Faces, which can be downloaded from here. Once you have downloaded and extracted the archieve, it will show s1-s40 folders and each having 10 different images per person. You can use any dataset. Each class must be in its own folder.
This require PyTorch v0.4 or newer, and torchvision. The easiest way to install PyTorch and torchvision locally is by following the instructions on the PyTorch site. You'll also need to install numpy and jupyter notebooks, the newest versions of these should work fine.Using the conda package manager is generally best for this,
conda install numpy jupyter notebook
If you haven't used conda before, please read the documentation to learn how to create environments and install packages.
If you don't want to download these dependencies locally, you can follow up alternative Google Colab
[Project.ipynb]
Face detection and face recognition is being employed by many companies in various applications. We are building this project with a focus toward the education domain.
The application would work as a visual attendance/login system allowing it to -
- Carry out the classroom attendance by recogninzing students present in the class.
- Allowing students to use their face for logging in to online course platforms, such as Udacity.
Achieved by using Siamese Network based on PyTorch
- This implementation quantifies the similarity between two faces.
Siamese Network is a special type of neural network and it is one of the popularly used one-shot learning algorithms. One-shot learning is a technique where model learn from one training example per class.
Unlike the general Deep Neural Networks, which require loads of data to effectively train a model, using siamese neural networks it is possible to train with very less training data. This 'one-shot' approach for learning on the data perfectly fits our application of face recognition where there are many faces to recognize, but working with limited resources, we have to keep the dataset small.
Siamese networks work by comparing two images being passed from the same CNN based branch and then calculating how close those two images are. This allows us to recognize faces by comparing two facial images. To learn more about Siamese Networks follow up this tutorial
Achieved by using Face Evolve Classifier . This is High-Performance Face Recognition Library based on PyTorch
- This implementation is based on MTCNN network.
- It provides bounding box and facial landmarks information and works well for detecting faces be it an individual facial image or a group image.
Achieved by using openCV and Python
- Using webcam and face detection models, we can track user in real time.
- A possible use case for this can be to calculate the time in which the user interacts with a course platform, watching course videos.
Our base application is ready and working and now we'll be working on this project to take it further and deploy it.
This application would allow to track students as they access the online course platform, enabling to gather metrics such as student attentiveness. These metrics would then be passed back to the course platform administrators. These metrics can be used to redesign course material so that it is better suited to students, providing a more of a 'personalized ecucation'.
While collecting metrics is beneficial to both parties, student privacy is a major concern here. Using differential privacy we can make sure that student privacy is protected.
- Abhishek Tandon (@Abhishek Tandon )
- Alejandro Galindo (@Alejandro Galindo )
- Seeratpal K. Jaura (@Seeratpal K. Jaura)
- Sourav Das (@Sourav)
- Agata Gruza (@Agata [OR, USA])
- Rupesh Purum (@Rupesh Purum )
- Joyce Obi (@Joyce Obi)
- Face recognition using Siamese Network- Suggested by @Abhishek Tandon
- OpenCV Face Recognition - Suggested by @Agata [OR, USA]
- Face detection using OpenCV and Python: A beginner's guide Suggested by @Seeratpal K. Jaura
- Face recognition with OpenCV, Python, and deep learning - Suggested by @Agata [OR, USA]
- Siamese Network - Suggested by @Alejandro Galindo
- Face Evolve - Suggested by @Abhishek Tandon
- Image Siamese Network