Facial Recognition Security App
A security app that uses biometric data to protect other apps. Utilizes a Siamese neural network and facial recognition to verify if a user is authorized to use a protected app.
Type
Security
Stack
Python PyQt5 TensorFlow Jupyter Notebook
Repository
Project Purpose and Goal
The purpose of this project was to create a security application that utilized biometric data and machine learning to protect other applications selected by the user.
Stack & Explanation
Python was used to build this project because of its cross-platform capabilities and its ability to leverage multiple libraries for machine learning development. Additionally, the PyQt5 GUI framework was utilized to create the graphical interface for its wide variety of tools and customization when it came to designing windows and implementing functionality.
The data model was developed using Jupyter notebook because of its ability to visualize data and quickly prototype with cells of code that are able to run individually. The TensorFlow library was also used for its versatility, with it being able to train, save, and load data models. The model used was a Siamese neural network for its ability to analyze the distance, or similarity, between two images which was used to determine if the user's webcam image matched saved identification images.
Code formatting and linting was handled by Black and Pylint to adhere to the PEP 8 style guide and for their customization options.
Problems and Thought Process
During development I came across an issue with certain libraries not supporting my current python version and with the program slowing down when multithreading. I originally began the project using python 3.13 which supported PyQt5 but not TensorFlow, which only supported versions 3.8-3.11. To fix this I decided to use python 3.11 as it supports PyQt5, TensorFlow, and most of the other libraries being used at the time. I additionally had an issue where the thread that monitors what apps were open and the thread that captured the user's camera were significantly slowing down the data model's calculations when verifying images. Because of this I chose to stop each tread while the model was working, and re-start those threads when the model is finished to improve performance.
My goal when developing this app was to implement a modular design that could be easily modified and added onto with additional windows and features to enhance the user's security.