In the world we live in today, the very idea of coming in close contact with another person causes a reaction never before seen in such a seemingly benign activity. Years ago, we thought that by the year 2020, everything would be controlled by robots and security cameras. What if we took the problem the pandemic poses in the present, and used the solution given by our imagination in the past, to create a safe, automated future?
What it does
The program takes an image of a student or worker (obtained from a webcam, security camera, Zoom, or any other source) and compares the image against a set of known people who may be students in the school or employees in the office. The program shows if the image matches or not and saved the results in a CSV file.
How we built it
Using Python's face_recognition and NumPy libraries, along with Pandas, Pillow, OpenCV, and CMake.
Challenges we ran into
OpenCV was not compatible with the latest Python 3.9. After downgrading it to Python 3.4, OpenCV still failed to run natively on Windows, along with problems with CMake. I had previously installed a Ubuntu Windows Subsystem for Linux (WSL) on my computer, and upon opening VSCode, a pop-up came asking me if I wanted to try to open a VSCode WSL window. This integration of the Ubuntu subsystem worked and allowed me to develop the project. Ubuntu has Python 184.108.40.206 which is compatible with OpenCV and had support for other utilities like Pillow to help.
Furthermore, I realized at the last minute, the assumption that images in the same folder can be referenced simply in the program. The reference showed inconsistent behavior and it seemed that the directory given for the faces folder was based on the local username. I fixed it by building the full paths by referencing the current directory.
Other than that, there were minor problems resolved with debugging.
Accomplishments that we're proud of
I was able to complete the project, and get it to work with VcXsrv. It allows me to continue to build other projects with integrated Windows and Ubuntu environments and Visual Studio IDE.
What we learned
How to use VSCode, face_recognition libraries, Pillow, Pandas, NumPy, WSLs, VcXsrv. Also, that what we may take for granted can throw up unexpected challenges.
What's next for Automated Face Recognition Attendance System in Python?
A system such as this deployed ethically and with privacy, controls can be adapted to both improve services and security. It would reduce administrative time and increase instruction time in schools and increase efficiency in workplaces. For the project, the next important step is the ability to integrate with input sources like a webcam. This will provide it a source of images to match. Further, the input source may be a live stream from a camera, and building the recognition system to match against a series of moving images.