An out of the box face recogniton python package designed for experiments with real-time face mask detection.
- Getting Started
- Folders Description
- Usage
- Resources
- Acknowledgements
Make sure your present working directory is the root of the project and run the commands below. This will create a virtual environment for the project and install all required packages using environment.yml file.
$ conda env create
$ conda activate
Contains a package designed as a system for experimenting with face recognition.
mask_no_mask_classifier.ipynb a jupyter notebook that covers experiments with transfer learning to determine the best model in terms of face mask detection
mask_recognizer.py a program that uses frsystem and the best model (Xception) obtained from the notebook to classify a face mask on webcam.
face_recognizer.py a program that uses frsystem to classify known faces on webcam.
mask_face_recognizer.py a program that uses frsystem and the face mask model to detect known faces without a mask on webcam.
Adding known faces to the database that the system will recognize is possible through the following two methods:
Manual
-
Webcam - adding a known face through the webcam. When webcam window pops up, hit ENTER to take a picture of your face. Hit ESC to quit.
-
File - adding a known face from a .jpg file
Example with manual
from frsystem.frs import FaceRecognitionSystem
EMBEDDING_MODEL = "facenet"
WEIGHTS = "util/facenet_keras.h5"
DB = "data/db.pkl"
EMBEDDINGS = "data/embeddings.pkl"
frs = FaceRecognitionSystem(embedding_model=EMBEDDING_MODEL,
weights=WEIGHTS,
db_file=DB,
embeddings_file=EMBEDDINGS)
frs.addFaceToDatabase("Elon Musk", method="camera") # default method is "file"
Folder Loop
The following directory structure is required to process images through a folder loop. For accurate face recognition add at least 5 images per person.
jpg/
Elon Musk/
- face1.jpg # image names can be anything
- face2.jpg
- face3.jpg
- face4.jpg
- face5.jpg
Johnny Ive/
- face1.jpg
...
- face5.jpg
Example with folder loop
from frsystem.frs import FaceRecognitionSystem
EMBEDDING_MODEL = "facenet"
WEIGHTS = "util/facenet_keras.h5"
DB = "data/db.pkl"
EMBEDDINGS = "data/embeddings.pkl"
BASE = "jpg/"
frs = FaceRecognitionSystem(embedding_model=EMBEDDING_MODEL,
weights=WEIGHTS,
db_file=DB,
embeddings_file=EMBEDDINGS)
frs.addFacesUsingLoop(BASE)
After running the command below, the webcam window will pop up and display frames with detected face identities. If the person in the camera was not added to the database, it will say "Unknown".
$ python3 frsapp/face_recognizer.py
Running the following command will display a webcam window with detected face masks ("Mask"/"No Mask").
$ python3 frsapp/mask_recognizer.py
Running the following command will display a webcam window with detected face masks. If a face mask is not present on the face, it will detect person's name if known, otherwise "Unknown" label will be displayed.
$ python3 frsapp/mask_face_recognizer.py
Introduction to Python for Data Sceince
Manipulating Data Frames with pandas
Data Types for Data Science in Python
Introduction to Deep Learning with Keras
Advanced Deep Learning with Keras
Modern Face Recognition with Deep Learning
Illustrated: 10 CNN Architectures
A Comprehensive Hands-on Guide to Transfer Learning with Real-World Applications in Deep Learning
ImageNet: VGGNet, ResNet, Inception, and Xception with Keras
How to Configure Image Data Augmentation in Keras
Face Mask Detector with OpenCV, Keras/TensorFlow, and Deep Learning
This project is a part of James Rocco Research Scholarship provided by Lake Forest College and was carried out under the supervision of Prof. Arthur Bousquet PhD.