Automated Attendance System is a software solution designed to streamline the process of tracking attendance in educational institutions or workplaces using facial recognition technology. The system uses a camera to capture an image of each individual's face, and then uses advanced algorithms to identify and match the face with the stored data to record attendance.
The primary objective of this project is to create a more efficient and accurate system for taking attendance that eliminates the need for manual data entry and reduces the workload for instructors or HR personnel. The system can also help to prevent fraudulent attendance, reduce errors, and save time for both students and teachers.
The following frameworks and libraries were used to build our Automated Attendance System (AAS):
-
Teacher
- Start attendance recording
- View attendance (student/class)
- View attendance statistics
- Filter student attendance based on status (absent/present/excused)
- View upcoming classes
- Access email
-
Admin
- Enroll student
- Edit student classes
- Assign teacher to class
- Modify student attendance (override)
- Modify teacher class (add/remove)
Before you begin, you will need to have the following installed and configured on your system:
-
Python 3.10.0: You can download and install Python 3.10.0 from the official website: https://www.python.org/downloads/release/python-3100/
-
npm and Node.js: You can download and install these from the official website: https://nodejs.org/en/
-
Pretrained face recognition models: You will need to download two pretrained face recognition models from the following Google Drive link: Here. Once downloaded, you will need to place
vgg19_model
andefficientnetb0_model
inbackend/face_rec/models/
directory of the project. -
MySQL: You will need to have a MySQL server set up on your system to store data. You can download and install MySQL from the official website: https://dev.mysql.com/downloads/. To fill up database with required data, run the SQL commands present in
backend/api/database/sql.txt
-
A config.py file: You will need to create a config.py file in
backend/api/database/
with the necessary configurations. You can use the provided config.example.py file as a template.# Database connection settings HOST = "<host>" USERNAME = "<username>" PASSWORD = "<password>" DATABASE = "<database>"
Clone the project
git clone https://github.com/notAnii/facial-recognition-attendance-system
Go to the project directory
cd facial-recognition-attendance-system
./setup.sh
or
sh setup.sh
Setup and activate virtual environment
python -m venv venv
source venv/Scripts/activate
Install python packages
pip install requirements.txt
Install yarn
sudo npm install -g yarn
Go to the frontend directory
cd frontend
Install frontend dependencies
yarn install
Go to the project directory
cd facial-recognition-attendance-system
Start Client and Server
./script.sh
or
sh script.sh
Client runs on http://localhost:3000/ API runs on http://localhost:5000/
After running the previous commands and the web app / API are running successfully, you will be greeted with a landing page
This landing page provides a brief summary of what the web app is all about. If the teacher wants to log in, they need to click the "Log-in" button on the top right. After that, they will be directed to the login page.
To log in as a teacher, use these placeholder credentials:
Username: '123'
Password: 'teacher123'
Alternate user:
Username: '456'
Password: 'teacher456'
After successfully logging in, you will be directed to the teacher dashboard page.
On this page, you will see the teacher's name, their department, and their position. On the right-hand side, there is a bar graph that displays the number of classes per day on the y-axis
and the days of the week on the x-axis
.
Clicking on the email on the sidebar will open a new tab on the browser and direct you to your outlook.
The final section and the most important one is the:
On this page, all the classes that the teacher is teaching are displayed on the screen, along with additional details like subject name, time, and more. The teacher can use the search bar at the top to search the classes by day.
For each class, there are two options: View attendance
and Start attendance
.
When you click View attendance
, this page will be displayed:
On this page, all the students' attendance that was recorded in the class in week 1 will be listed on the screen. If you want to check the students' attendance for a different week, you can click the arrows at the bottom left of the screen.
Additionally, the teacher will be able to filter the list by present, absent, or excused students.
If a student has more than 3 absences:
An email will be sent automatically to that student saying that he/she failed the subject:
To search attendance records of a specific student, you can use the search bar on top and search by the student's name or student ID.
When a teacher starts a class and wants to record attendance, they can click the Start attendance
button on this page:
Attendance recording will then begin:
On this page, each student who enters the class will be marked as present, and the name of the student will pop up with the attendance percentage in blue, and the time the student's attendance was recorded. If the student's name is not there, then it means that the student is absent. If the student is excused absent, then the admin can change the student's attendance.
This completes the attendance recording process for teachers. To log in as an admin, you need to log out by clicking the teacher's name at the bottom of the sidebar:
After clicking log out, you will go back to the landing page, and then you will have to click on Admin on the top right:
Enter username 112233
and password admin
to log in. After logging in, this page will be displayed:
As you can see, the admin has full control of the system, so there are a lot of actions that the admin can perform. We will start with the:
To assign a teacher to a class, simply fill in the required details on the Assign teacher to class page, and the teacher will be assigned to another class. In this example, the teacher will be assigned to CSCI369 Friday class. And if the teacher is already assigned to that class, an error message will appear:
On this page, you can view all the classes that a teacher is teaching by entering their ID and clicking the search button. Next to each class, you have two options: Edit
and Delete
. If you select Edit Teacher Classes, you will be taken to the following page:
On this page, you can edit the teacher's classes by entering the subject code and changing the timing of the class. For example, if the teacher has been assigned to a Friday class by mistake, an administrator can change the class to Monday.
If you click the Delete button, the class will be removed.
Now let's move on to the students:
In the students' section, we have three actions we can take. We will begin with the following:
By filling out the required text fields, you can enroll a student into a class. If the student is already enrolled in that class, an error message will appear, indicating that the student is already enrolled in that class:
Next, let's check the Edit Student Classes option on the Admin home page:
On this page, you can view all the classes in which a student is enrolled by entering their ID and clicking the search
button. Next to each class, you have two options: Edit
and Delete
. If you select Edit
Student Classes, you will be taken to the following page:
On this page, you can edit a student's classes by entering the subject code and changing the timing of the class. For example, if a student is enrolled in a Monday class but wants to switch to a Friday class, an administrator can make the change.
In case a class needs to be removed, the user can click the Delete
button.
Finally, the last action we can do to a student is edit student attendance:
If a student was absent from the class, the attendance can be marked accordingly. However, if the student was unable to attend due to reasons such as illness or travel, the attendance status can be modified from absent to excused in this page.
When using this code in your own projects, we kindly ask that you give credit to the contributors who have contributed to this project. Proper attribution helps acknowledge their hard work and encourages open-source collaboration.
To give credit, you can include a mention or a link to this project's GitHub repository in your project's documentation or wherever appropriate.