PROJECT TITLE : Get Me Through
Why this name?
The name of the project is just an exclamation to steer through the monotonous work, in today's world of spreading automation technologies.
OVERVIEW:
A Free, Offline, Real-Time, Open-source(MIT Licensed) web-app to assist organisers of any event in allowing only authorised/invited people using Face-Recognition Technology or QR Code.
It is made to automate the task of authenticating people and no longer need to check invitation cards, checking required apps installed(like in most College Fests) etc.
The project uses MaterializeCSS framework based on Google Material Design Guidelines.
The project is truly Offline and is built using the pre-trained dlib model which has 99.38% accuracy(adult people) in Label Faces in the Wild Dataset.
The person needs a leading browser(preferably Chrome) to use the web-app and UNIX based system MacOS or Linux to interact/use the project.
The User Interface of the Web App when opened on Google Chrome.
REQUIREMENTS
Barack Obama has been recognized with the face and his data cross-checked with the information stored in the MongoDB database, thus shown in green.
Shubham Malik(me) has his face verified thus the name is shown but the information couldn’t be cross-checked with the database as no such record was saved thus red colour.
There is a small blue icon showing QR Code which is to be used to read the QR Code in case the person can’t be identified or may be misidentified(in the case of children) name would be shown as Unknown(if not identified). The user has to halt the app so that the information stored doesn’t get updated as per real-time data. Click on the QR Code button to scan the code. The user is notified if the QR Code is legit and if the person is authenticated or not. The user then has to resume the app after QR Code scanning is done, so that data can be updated once again in real-time.
When the person is leaving check the Out button to log his outgoing time. Helpful notifications are shown to the user like while authentication, some error occurs etc.
Authenticating people this way, for free, NO INTERNET, no API limit so it should be a breeze.
In the future data insights feature would be added for the data analysis using the chart, graphs etc.
DIAGRAM
This is a high-level model of how the app functions. The power of JavaScript and Python is combined in a single app. The command can be train or run.
All of this happens inside the computer so no internet is required.
DATA STRUCTURES and ALGORITHMS
Currently, only face recognition uses the algorithms detecting faces, finding the encoding, matching the encoding with the known encodings using euclidean distance (face_recogntion python package is used for that which have these functions written). Dlib model used is pre-trained so no external algorithms are applied as of now. As far as the data structure is concerned Numpy arrays are used to store the multi-dimensional encoding information of face.
Currently, it uses Linear search to find the required encoding within allowed error limit in O(N) time. In the future, I would try to use the Binary Search to pull it down to O(logN). But the data is multi-dimensional (around 150) dimensions so it would take time.
TOOLS USED
REQUIREMENTS
- Node.js
- MongoDB
- Python3
- C++11
- Face Recognition
- MongoDB Database information cross-verify
- Information cross-check physically
Barack Obama has been recognized with the face and his data cross-checked with the information stored in the MongoDB database, thus shown in green.
Shubham Malik(me) has his face verified thus the name is shown but the information couldn’t be cross-checked with the database as no such record was saved thus red colour.
There is a small blue icon showing QR Code which is to be used to read the QR Code in case the person can’t be identified or may be misidentified(in the case of children) name would be shown as Unknown(if not identified). The user has to halt the app so that the information stored doesn’t get updated as per real-time data. Click on the QR Code button to scan the code. The user is notified if the QR Code is legit and if the person is authenticated or not. The user then has to resume the app after QR Code scanning is done, so that data can be updated once again in real-time.
When the person is leaving check the Out button to log his outgoing time. Helpful notifications are shown to the user like while authentication, some error occurs etc.
Authenticating people this way, for free, NO INTERNET, no API limit so it should be a breeze.
In the future data insights feature would be added for the data analysis using the chart, graphs etc.
DIAGRAM
This is a high-level model of how the app functions. The power of JavaScript and Python is combined in a single app. The command can be train or run.
All of this happens inside the computer so no internet is required.
DATA STRUCTURES and ALGORITHMS
Currently, only face recognition uses the algorithms detecting faces, finding the encoding, matching the encoding with the known encodings using euclidean distance (face_recogntion python package is used for that which have these functions written). Dlib model used is pre-trained so no external algorithms are applied as of now. As far as the data structure is concerned Numpy arrays are used to store the multi-dimensional encoding information of face.
Currently, it uses Linear search to find the required encoding within allowed error limit in O(N) time. In the future, I would try to use the Binary Search to pull it down to O(logN). But the data is multi-dimensional (around 150) dimensions so it would take time.
TOOLS USED
- Visual Studio Code
- Google Chrome Web Browser
- MongoDB Database
- RoboMongo
- One of a kind project, maybe only of its kind. No backup codes are there on the internet to consult if something goes wrong. Open-ended project.
- Stackoverflow community closed/downvoted similar type of questions “face recognition in Node.js”. It is a torch-bearer for all of those.
- Before this project: this(possible with 3rd party APIs), this(closed by community).
- After this project: this(relevant solution, my first upvote), this(answer edited to include this project).
- Got offers from 4 online publications to publish my post (where I shared my experience building this project, talking about how it works, why I did it, how I did it, what it means for me, whom it is for…).
- Published in Hacker Noon. Link to article
- 75+ stars, 10+ forks on GitHub
- Built in a few weeks. Open-Sourced on July 23, 2017. MIT Licensed.
- A great learning experience which I can’t get with already done projects.