Implementation of a system to detect fatigue using EAR (Eye Aspect Ratio).
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
Fatigue is a common problem among students, especially in long and intensive learning sessions. It can affect their performance, concentration, and well-being. Therefore, it is important to monitor and prevent fatigue in the classroom. In this project, we propose a system that can detect fatigue among students using cameras and a metric called eye aspect ratio (EAR). EAR is a measure of eye openness, calculated from the positions of six facial landmarks around the eye. A low EAR indicates that the eye is closed, while a high EAR indicates that the eye is open. By tracking the EAR values over time, we can determine the duration of eye closure, which is an indicator of fatigue. We aim to set a minimum threshold for EAR and alert the teacher or the supervisor when the fatigue is detected for a prolonged period. This system can help to improve the safety and the quality of learning in the classroom.
To implement this system, we will follow the steps outlined in the web page context. First, we will extract the images from a video of a learning session. Then, we will convert the images to gray scale and apply some noise removal and quality enhancement techniques. Next, we will use edge detection methods such as Canny or Sobel to find the contours of the eyes. After that, we will apply some morphological operations to refine the contours and segment the eyes. Then, we will use a facial landmark detector to locate the six points of interest (p1, …, p6) around each eye. The EAR is calculated from the formula:
where ∣∣⋅∣∣ denotes the Euclidean distance between two points. At each time instant t (e.g., t = 10s), we will compute the EAR and save it in a CSV file3. Finally, we will analyze the EAR data to detect the periods of prolonged fatigue. We will define some fatigue thresholds based on the EAR values and set up an alert mechanism to signal the moments when the fatigue is detected for a long time. This alert can be a visual or auditory notification for the teacher or the supervisor, so that they can take appropriate actions to ensure the safety and well-being of the students.
To get a local copy up and running follow these simple steps.
You need to have ffmpeg installed on your system, you can download it from the official website: https://www.ffmpeg.org/download.html
- For linux:
apt-get -y update && apt-get -y install ffmpeg
pip3 install --upgrade pip setuptools
pip3 install ffmpeg-python
- for Windows
- Install FFMPEG from here. Make sure to add it to system path. You can refer to this awesome tutorial for downloading and installing ffmpeg on windows youtube-tutorial.
1. Clone the repo
git clone https://github.com/Aeidle/EAR-Fatigue-Detection.git
2. Create a virtual environnement.
# In windows
python -m venv venv
venv\Scripts\activate
# In linux
python -m venv venv
source venv/bin/activate
Or even better use anaconda
conda create --name venv python=3.9
conda activate venv
3. Install the dependencies using pip :
pip install dlib_installation/dlib-19.22.99-cp39-cp39-win_amd64.whl
pip install -r requirements.txt
To run the application, you can simply execute the main file:
- using jupyter notebook (from video file)
just open main.ipynb
and execute all the cells.
make sure to use the correct path for your video cap = cv2.VideoCapture("videos/video3.MOV")
.
- using python and CLI (from live camera)
python app.py
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the MIT License. See LICENSE
for more information.
Adil Alami - @MeAeidle - aeidle.me@gmail.com
Project Link: https://github.com/Aeidle/Fatigue-Detection
LinkedIn: https://www.linkedin.com/in/adil-alami/