Advanced Project - Automatic Facial Recognition Based Attendance System














































Advanced Project - Automatic Facial Recognition Based Attendance System



Hello, Rishabh here, this time I bring to you:

Continuing the series - 'Simple Python Project'. These are simple projects with which beginners can start with. This series will cover beginner python, intermediate and advanced python, machine learning and later deep learning.

Comments recommending other to-do python projects are supremely recommended.

Anyways, let's crack on with it!


Automatic Facial Recognition 

Based Attendance System


Facial Recognition Based Attendance System using Python, Tensorflow, Keras, SqlLite3, Tkinter, OpenCV for companies, schools, colleges, etc.

Source Code: https://github.com/rishabh-karmakar/Facial-Recognition-Based-Attendance-System

Medium: https://medium.com/@rishabh.rk1705/automatic-facial-recognition-based-attendance-system-bea3be8003fe

Watch the video for a better explanation.

Link: https://www.youtube.com/watch?v=Fmkfh_XTGDw



PS: Sorry for the bad quality, in case of any doubts refer to the below images

Automating attendance using Face Recognition via Neural Networks

The entire process of marking attendance in educational institutions, workplaces, when automized is the best and most cost-effective way of making it fool-proof and better.

This makes proxy attendance impossible and workplace ethics- trustworthy

This, while isnt the perfect way, its an attempt to do something similar

This is an implementation by me using various methods Via Multi-Threaded Cascaded Neural Networks

Technologies Used:
* Python
* Tensorflow
* Keras
* SqlLite3
* Tkinter
* OpenCV

Using MTCNN we mapped out the 128 feature map from each side of the face to create a 3D grid
like structure.

MTCNN

Note for working:
Download models and save at the models folder. PS: read models/readme.txt
Download models at: https://drive.google.com/file/d/0Bx4sNrhhaBr3TDRMMUN3aGtHZzg/view?usp=sharing


## All features and implementation:

1. Two-Step Verification:

Login Page made using Tkinter in Python 3, which is linked using a mysqllite3 database.
Once that verification is complete, you will be asked to verify yourself as admin using facial recognition. Only after these two steps will the admin menu open.

Main

Main

Webcam

2. The main interface:

This is the main interface in which you can see the main features and have
the necessary actions taken place.

Interface

3. Click to register a new student.

Add new student into the database and map his/her facial features.

It will be seen as something like this in the facerec_128D.txt file.

{%u201C**Rishabh**%u201D: {%u201C**Left**%u201D: [[-0.08857411891222, -0.013328742235898972, 0.045192185789346695, 0.06593235582113266, 0.07181892544031143, -0.02451349049806595, -0.0008240576717071235, -0.10689839720726013, 0.004937916528433561, 0.13439585268497467, -0.1266225427389145, 0.06688152998685837, -0.07906737178564072, -0.2503505051136017, -0.09821527451276779, 0.00887088943272829, 0.07310174405574799, 0.04754112288355827, 0.039231643080711365, -0.048129040747880936, 0.08559799194335938, 0.03705426678061485, -0.049444954842329025, 0.021733097732067108, -0.131277933716774, 0.13494974374771118, -0.04066428169608116, -0.011854524724185467, 0.062259819358587265, 0.0764424279332161, 0.09991776943206787, -0.04010583832859993, 0.036400649696588516, -0.08750853687524796, -0.005311599466949701, -0.06827758252620697, -0.08045513182878494, -0.04325050488114357, 0.0635976567864418, -0.08059954643249512, -0.10530292987823486, 0.015154648572206497, -0.11859557032585144, 0.09017852693796158, 0.05019151791930199, 0.09819871932268143, -0.05376705154776573, 0.12599189579486847, -0.10198838263750076, 0.10567402094602585, 0.03724795952439308, -0.023543009534478188, -0.025222115218639374, -0.02436627447605133, 0.06199340894818306, 0.05257124826312065, 0.09913825988769531, -0.15212902426719666, -0.043736133724451065, -0.11437535285949707, -0.19793258607387543, -0.2234376072883606, -0.030257174745202065, -0.003642328782007098, -0.016683151945471764, 0.059480536729097366, -0.028783461079001427, 0.010495315305888653, -0.02444811910390854, -0.06459680944681168, -0.034520987421274185, -0.06521014124155045, -0.028651727363467216, -0.00240131001919508, 0.09791675209999084, 0.03393810614943504, -0.11461859941482544, 0.04570923373103142, -0.09382005780935287, 0.023104486986994743, -0.12004870176315308, -0.09294884651899338, -0.11523831635713577, -0.040725890547037125, 0.10595870763063431, 0.01619560830295086, -0.06328869611024857, 0.09463641047477722, -0.14613036811351776, 0.1686006635427475, 0.02015562355518341, 0.08080480247735977, 0.06503424793481827, 0.04643187299370766, 0.04240923002362251, -0.14089588820934296, 0.05210058018565178, 0.06557077914476395, -0.09871061891317368, -0.20630748569965363, 0.06267132610082626, -0.020570171996951103, 0.04313775524497032, -0.08636415749788284, -0.11732497811317444, -0.032937780022621155, -0.09599996358156204, -0.01282432209700346, 0.003398689441382885, -0.028353899717330933, -0.03610304743051529, 0.07928384095430374, -0.05412999913096428, 0.06276759505271912, 0.09186709672212601, 0.08638894557952881, 0.01919158361852169, -0.07579809427261353, 0.0243211816996336, 0.07186244428157806, 0.052790567278862, -0.11808109283447266, -0.021565617993474007, -0.010558109730482101, 0.0045998296700417995, -0.17246980965137482, 0.0031077908352017403, 0.10488221049308777]], %u201C**Right**%u201D: [[-0.12322423607110977, -0.09166958183050156, 0.0030119975563138723, 0.07374182343482971, 0.03698710724711418, -0.05573098734021187, -0.04385635256767273, -0.05670739337801933, -0.030628273263573647, 0.0965498685836792, -0.1603952795267105, 0.044863514602184296, -0.09822320193052292, -0.21349085867404938, -0.07051543891429901, 0.004292635712772608, 0.10493224114179611, 0.06687428802251816, 0.01295499037951231, -0.07349883019924164, 0.05057000368833542, 0.020694905892014503, -0.027202999219298363, -0.02207556739449501, -0.0919264480471611, 0.11229139566421509, -0.05143684148788452, 0.027473922818899155, 0.08050292730331421, 0.09868771582841873, 0.11485501378774643, -0.015976151451468468, 0.10177667438983917, -0.11236434429883957, -0.016733890399336815, -0.005377459805458784, -0.10113469511270523, -0.022559013217687607, 0.032608501613140106, -0.05285423621535301, -0.12459512799978256, 0.0313110277056694, -0.13205775618553162, 0.057603076100349426, 0.09496308118104935, 0.10811097919940948, -0.05295582115650177, 0.16086789965629578, -0.14587527513504028, 0.10840559005737305, 0.06493332982063293, 0.0071846661157906055, -0.013227133080363274, -0.00119835848454386, 0.07649098336696625, 0.06774774938821793, 0.01602318324148655, -0.10919184237718582, 0.014698031358420849, -0.12906238436698914, -0.17284737527370453, -0.2420649230480194, -0.05963245779275894, 0.009172102436423302, 0.03936951979994774, 0.006963794119656086, -0.04228965938091278, 0.03055589459836483, -0.0529898963868618, -0.13618960976600647, -0.07230045646429062, -0.09350531548261642, 0.008212929591536522, -0.05667538568377495, 0.09826629608869553, 0.044655390083789825, -0.10776958614587784, 0.04083753749728203, -0.0769808441400528, 0.0015262780943885446, -0.11382219940423965, -0.04048719257116318, -0.1647450029850006, -0.013006428256630898, 0.06237463653087616, -0.018204638734459877, -0.07192468643188477, 0.0846826583147049, -0.15275610983371735, 0.19314837455749512, 0.0426262728869915, 0.12794964015483856, 0.019906241446733475, 0.019699309021234512, -0.034911222755908966, -0.09784211963415146, 0.05271156132221222, 0.027143143117427826, -0.08809338510036469, -0.13904356956481934, 0.0515521876513958, 0.01055392436683178, 0.05781266465783119, -0.10861864686012268, -0.1330457329750061, -0.05695170536637306, -0.09640974551439285, -0.011350560002028942, 0.06401976197957993, -0.04768972471356392, -0.07988857477903366, 0.07721281796693802, -0.04194026067852974, 0.03974579647183418, 0.15303140878677368, 0.05464969202876091, 0.04337718337774277, -0.06133032962679863, 0.030452147126197815, 0.05700261518359184, 0.048203643411397934, -0.12868882715702057, -0.03181086853146553, 0.01268375851213932, 0.02336101047694683, -0.1532122939825058, 0.015040037222206593, 0.1001887172460556]], %u201C**Center**%u201D: [[-0.10967082530260086, -0.06298966705799103, -0.011383222416043282, 0.11461437493562698, 0.03760898485779762, -0.007656498812139034, -0.030709397047758102, -0.10834655165672302, 0.007725639268755913, 0.12123774737119675, -0.14156821370124817, 0.028559843078255653, -0.0785200372338295, -0.22912156581878662, -0.08861233294010162, -0.04266420751810074, 0.10166534036397934, 0.03897407650947571, 0.0028791308868676424, -0.0385410413146019, 0.10671200603246689, -0.004739650525152683, -0.05746972933411598, -0.01709706336259842, -0.08726881444454193, 0.15067297220230103, 0.0029882092494517565, 0.015119166113436222, 0.0757543072104454, 0.057988062500953674, 0.10776271671056747, 0.013821783475577831, 0.07379657030105591, -0.11738615483045578, -0.029304908588528633, -0.056877341121435165, -0.12034665793180466, -0.04799569025635719, 0.047891829162836075, -0.07885117828845978, -0.10633303225040436, -0.002672838978469372, -0.11268853396177292, 0.0616154707968235, 0.07286091893911362, 0.10876667499542236, -0.06929004192352295, 0.1699533313512802, -0.10778924822807312, 0.08526410907506943, 0.06398101150989532, -0.010307646356523037, -0.00972981657832861, -0.013310537673532963, 0.1242566630244255, 0.06968270987272263, 0.05530219152569771, -0.1308509111404419, 0.05558321252465248, -0.1440255045890808, -0.2014542520046234, -0.23179376125335693, -0.020311595872044563, 0.025337493047118187, 0.012508675456047058, 0.023336704820394516, -0.05754031613469124, -0.02776341140270233, -0.07715149223804474, -0.11648695915937424, -0.07794658839702606, -0.1122051402926445, 0.017184695228934288, -0.02500501275062561, 0.060275837779045105, 0.03202875703573227, -0.07855446636676788, 0.04930829629302025, -0.08615235239267349, 0.028393523767590523, -0.1189601719379425, -0.06144094467163086, -0.13767829537391663, -0.021015029400587082, 0.09078904986381531, -0.00970941036939621, -0.10330627113580704, 0.0704386904835701, -0.14051242172718048, 0.12551555037498474, 0.042997896671295166, 0.0928570032119751, 0.01946619525551796, 0.036238349974155426, 0.020949648693203926, -0.13063529133796692, 0.06630231440067291, 0.038655202835798264, -0.11432863026857376, -0.20290106534957886, 0.05083588510751724, -0.03496573865413666, 0.0733042061328888, -0.040517449378967285, -0.14749570190906525, -0.03399404510855675, -0.05033278092741966, -0.008389569818973541, 0.0652705654501915, -0.030615858733654022, -0.0401158481836319, 0.04068402200937271, -0.06507669389247894, 0.08976959437131882, 0.11061953753232956, 0.06556890904903412, 0.03285010904073715, -0.05539695546030998, 0.027370641008019447, 0.06945658475160599, 0.06850945949554443, -0.10180337727069855, -0.008417774923145771, -0.010144680738449097, -0.023704135790467262, -0.11576569080352783, 0.0737953707575798, 0.09932660311460495]]}}

Using which we can recognise the face and add in the database.

4. Give attendance.

In its application, the camera will be open and faces will be recorded and analysed in real-time and if the present name will be marked as present in the xlxs sheet.

Attendance:

XLXS_Demo

XLXS DEMO

Creating an optimum solution and a better society.
Viola!

## Note: check Testing.txt
Run in following order:

!python main.py
!python Auth.py
!python screen.py

Further more:

  • To add new entry: !python Add_New.py
  • To verify and give to existing: !python Recog.py
  • To check attendance in terminal: !python attendance.py

Tested in Following Versions:

* OS: Ubuntu 19.04
* tensorflow == 1.15.0
* keras == 2.3.0
* tkinter == 8.6
* numpy == 1.16.1
* opencv == 4.1.2 
* python == 3.7.4
* pyttsx3 == 2.71


Additional Highlights:

  • As the next day arises, it is automatically stored in a new tab in the xlxs sheet so files aren't overwritten
  • Seeing attendance or editing requires a master face print which can be set earlier so students cant change their records.
  • Multiple times and multiple faces are taken into consideration
  • Future Scope: Setting in and out timing as well so as to create a proxy payroll system as well.

End.

Please comment below any questions or article requests.
Like the articles and Follow me to get notified when I post another article.

Cheers!


More Articles of Rishabh Karmakar:

Name Views Likes
TRAINING MACHINE LEARNING MODEL WITH TENSORFLOW CLOUD 1323 1
Implement Graph in Python 1419 9
Simple Python Projects Make a multi-colored rainbow pattern in Python 1480 10
Python - Synthetic Data Generator for Machine Learning and Artificial Intelligence 1400 9
Simple Python Projects Simple Zodiac Sign Teller 2468 10
Advanced Project Analysis with Sentiment Classification using Bidirectional Recurrent Neural Network 1114 10
Implement all 2D and 3D types plots in Python 898 9
Intermediate Python Project Snake Game Pygame 1253 10
Problem - Validating Credit Card Numbers Hackerrank 2525 9
Simple Python Projects Live Talking Counting Clock - Pyttsx3, Tkinter 1104 10
Intermediate Python Projects Optical Character and Text Recognizer from Live Images 954 7
Advanced Python Projects Predicting and Forecasting Stock Market Prices 1875 6
Python Escape Sequences 2366 1
Intermediate Project Iris Data Classification 836 10
Advanced Python Projects CIFAR-10 Image Classification using Deep Learning 3016 9
Chaining comparison operators 795 9
Implement Circular Singly Linked List 1853 9
Simple Python Projects Code to mask white pixels in a gray scale image - OpenCV 1004 10
Machine Learning - Simple Linear Regression in Python 1715 9
Advanced Project Sentiment and WordCloud Analysis of Online Reviews 1561 12
CNN vs. RNN vs. ANN 42 10
Advanced Python Project Credit Card Fraud Detection 1624 10
Simple Python Projects Simple Fortune Teller Game 3266 10
Advanced Project - Automatic Facial Recognition Based Attendance System 9297 9
Python for Data Science 1029 9
Advanced Project Deep Dream AI 1265 10
Problem - Basic Spell Checker Hackerrank 1065 9
Save and Load Machine Learning Models in Python with scikit-learn 2121 9
Immutable Objects in Python 789 1
Advanced Python Projects Image Caption Generator using CNN and LSTM 4321 10
Intermediate Python Project Speed Typing in Python 1394 10
Python Bytearray 849 1
Problem - Linear Algebra using Numpy Hackerrank 2986 9
Intermediate Project Sentiment and WordCloud Analysis of Women E-Commerce 1011 10
Deep Learning - Activation and Loss Function 1028 6
Advanced Python Project Breast Cancer Classification using SVR 1429 10
Python Simple and Fast Text to Speech 1103 9
Intermediate Python Project Find most similar word using Word2Vec 988 10
Implement Binary Tree in Python 911 9
Advanced Python Project Next Alphabet or Word Prediction using LSTM 2006 12
Simple Python Projects Simple Guessing Game 1123 10
Using Voluptuous in Python 1277 1
Use of Ternary operator for conditional assignment. 1262 9
Advanced Project Forest Fire Prediction using SVR Random Forest and Deep NN 2954 10
Python - All about lambda functions 1062 9
Advanced Python Project Smiling Face Detector using CNN 1341 10
Implement 1D, 2D and 3D CNN in Python 1551 9
Floor Division in Python 984 1
Advanced Python Projects IMDB Movie Review Sentiment Analysis 1144 10
Mutable Objects in Python 707 1
Implementing Command Line Arguments 1818 9
OpenCV - ModuleNotFoundError - No Module Named 1513 9
Pandas - ModuleNotFoundError - No Module Named Pandas and Functions Explained 17160 5
Machine Learning - Decision Tree in Python 1243 9
Python time sleep function 868 1
Plotting Histogram in Python 1629 1
Machine Learning - Polynomial Regression in Python 1224 9
Solve Knapsack Problem Using Dynamic Programming 3068 10
Python - Symbolic regression classification generator 1628 9
Simple Python Project Mario Shooter Game 1535 4
Using Defaultdict in Python 811 1
CNN vs ANN vs RNN 1444 6
Generate Polynomial Functions and Random Function Generator - Python 2231 10
Machine Learning - Multiple Linear Regression in Python 1094 11
Implementing Multi-line Strings 751 9
Basic Date and Time in Python 898 1
Intermediate Python Projects Tensorflow Live Object Detection 1159 7
Web crawling using Python and Scrapy 1121 6
Simple Python Projects Code to mask white pixels in a coloured image - OpenCV 1927 10
Intermediate Project Titanic Classification using Decision Tree 927 10
Simple Python Projects Multiplayer Tic-Tac-Toe 1302 11
Advanced Python Projects Analysing Music Trends and Recommendations 1657 7
Simple Python Projects Select Region of Interest - OpenCV 1867 10
Advanced Python Project Handwritten Digit Recognizer 2239 11
Advanced Python Projects Python Chatbot using NLTK and Keras 3049 7
OpenCV - ModuleNotFoundError - No Module Named cv2 and Algorithms Explained 1316 5
Simple Python Projects Convert colour image to gray scale and apply cartoon effects - OpenCV 1005 10
Intermediate Python Project Detection of Real or Fake News 1243 10

Comments