Skip to content

Latest commit

 

History

History
327 lines (220 loc) · 15.1 KB

File metadata and controls

327 lines (220 loc) · 15.1 KB

logo
Automated Attendance System (AAS)

• Efficiency • Integreity • Precision •

Description

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.

Built With

The following frameworks and libraries were used to build our Automated Attendance System (AAS):

  • Next
  • React
  • Python
  • TensorFlow
  • Keras
  • opencv
  • MySQL

Features

  • 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)

Prerequisites

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 and efficientnetb0_model in backend/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>"

Getting Started

Clone the project

  git clone https://github.com/notAnii/facial-recognition-attendance-system

Go to the project directory

  cd facial-recognition-attendance-system

Setting up using bash file

  ./setup.sh

or

  sh setup.sh

Setting up manually

Setup API

Setup and activate virtual environment

  python -m venv venv
  source venv/Scripts/activate

Install python packages

  pip install requirements.txt

Setup Client

Install yarn

  sudo npm install -g yarn

Go to the frontend directory

  cd frontend

Install frontend dependencies

  yarn install

Running Locally

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/

User Guide

After running the previous commands and the web app / API are running successfully, you will be greeted with a landing page

Landing page

landing

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.

Teacher log in page:

login

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.

Teacher dashboard page:

1

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.

Teacher's email page:

mail2

The final section and the most important one is the:

Teacher classes page

classes

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.

Search by day:

searchByDay

For each class, there are two options: View attendance and Start attendance.

When you click View attendance, this page will be displayed:

View attendance page

viewAttendance

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.

moveWeeks

Additionally, the teacher will be able to filter the list by present, absent, or excused students.

viewAttendance2

If a student has more than 3 absences:

4

An email will be sent automatically to that student saying that he/she failed the subject:

image

Searching Attendance Records

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.

Search by student name:

searchByStudentName

Search by student ID:

searchByStudentID

Recording Attendance

When a teacher starts a class and wants to record attendance, they can click the Start attendance button on this page: classes

Attendance recording will then begin:
startAttendance

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:

LogOut

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: landing

Admin log-in

logIn

Enter username 112233 and password admin to log in. After logging in, this page will be displayed:

Admin Home page

home

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:

Assign teacher to class page:

AssignTeacher

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:

3

Edit teacher classes page:

EditTeacherClasses

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:

Edit teacher classes page:

EditTeacherClasses(Edit)

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.

Delete teacher classes:

EditTeacherClasses(Delete)

If you click the Delete button, the class will be removed.

Now let's move on to the students:
home

In the students' section, we have three actions we can take. We will begin with the following:

Add student to class Page:

AddStudenttoclass

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:

2

Next, let's check the Edit Student Classes option on the Admin home page: home

Edit student classes Page:

EditStudentClasses

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:

Edit student classes page:

EditStudentClasses(Edit)

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.

Delete student classes:

EditStudentClasses(Delete)

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:

Edit student attendance page:

EditStudentAttendance

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.

Giving Credit to Contributors

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.