All Projects → vardanagarwal → Proctoring Ai

vardanagarwal / Proctoring Ai

Licence: mit
Creating a software for automatic monitoring in online proctoring

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Proctoring Ai

Paddledetection
Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Stars: ✭ 5,799 (+3641.29%)
Mutual labels:  ssd, face-detection, yolov3
Awesome Face Detection
Compare with various detectors - s3fd, dlib, ocv, ocv-dnn, mtcnn-pytorch, face_recognition
Stars: ✭ 106 (-31.61%)
Mutual labels:  opencv, face-detection, dlib
Add Christmas Hat
Add Christmas hat on one's head based on OpneCV and Dlib
Stars: ✭ 251 (+61.94%)
Mutual labels:  opencv, face-detection, dlib
Scriptsdump
The biggest dump of scripts ever!
Stars: ✭ 114 (-26.45%)
Mutual labels:  automation, hacktoberfest, opencv
Libfaceid
libfaceid is a research framework for prototyping of face recognition solutions. It seamlessly integrates multiple detection, recognition and liveness models w/ speech synthesis and speech recognition.
Stars: ✭ 354 (+128.39%)
Mutual labels:  opencv, face-detection, dlib
Attendance Using Face
Face-recognition using Siamese network
Stars: ✭ 174 (+12.26%)
Mutual labels:  opencv, face-detection, dlib
Facerecognition
Nextcloud app that implement a basic facial recognition system.
Stars: ✭ 226 (+45.81%)
Mutual labels:  hacktoberfest, face-detection, dlib
udacity-cvnd-projects
My solutions to the projects assigned for the Udacity Computer Vision Nanodegree
Stars: ✭ 36 (-76.77%)
Mutual labels:  nltk, face-detection, yolov3
Yoloface
Deep learning-based Face detection using the YOLOv3 algorithm (https://github.com/sthanhng/yoloface)
Stars: ✭ 339 (+118.71%)
Mutual labels:  opencv, face-detection, yolov3
Facemoji
😆 A voice chatbot that can imitate your expression. OpenCV+Dlib+Live2D+Moments Recorder+Turing Robot+Iflytek IAT+Iflytek TTS
Stars: ✭ 320 (+106.45%)
Mutual labels:  opencv, face-detection, dlib
Android Hpe
Android native application to perform head pose estimation using images coming from the front camera.
Stars: ✭ 46 (-70.32%)
Mutual labels:  opencv, face-detection, dlib
Predict Facial Attractiveness
Using OpenCV and Dlib to predict facial attractiveness.
Stars: ✭ 41 (-73.55%)
Mutual labels:  opencv, face-detection, dlib
Facer
Simple (🤞) face averaging (🙂) in Python (🐍)
Stars: ✭ 49 (-68.39%)
Mutual labels:  opencv, face-detection, dlib
Face Swap Android
Realtime Face Swap Android NDK app full source code. Developed with OpenCV (http://opencv.org) and Dlib C++ (http://dlib.net).
Stars: ✭ 111 (-28.39%)
Mutual labels:  opencv, dlib
Faster Mobile Retinaface
[CVPR 2020] Reimplementation of RetinaFace, faster and stronger.
Stars: ✭ 117 (-24.52%)
Mutual labels:  face-detection, mobilenet
Robovision
AI and machine leaning-based computer vision for a robot
Stars: ✭ 126 (-18.71%)
Mutual labels:  opencv, face-detection
Mobilenet Yolo
MobileNetV2-YoloV3-Nano: 0.5BFlops 3MB HUAWEI P40: 6ms/img, YoloFace-500k:0.1Bflops 420KB🔥🔥🔥
Stars: ✭ 1,566 (+910.32%)
Mutual labels:  face-detection, yolov3
Deepway
This project is an aid to the blind. Till date there has been no technological advancement in the way the blind navigate. So I have used deep learning particularly convolutional neural networks so that they can navigate through the streets.
Stars: ✭ 118 (-23.87%)
Mutual labels:  opencv, dlib
Awesome Python Scripts
A curated collection of some 😍 cool Python scripts.
Stars: ✭ 128 (-17.42%)
Mutual labels:  automation, hacktoberfest
Django Defectdojo
DefectDojo is an open-source application vulnerability correlation and security orchestration tool.
Stars: ✭ 1,926 (+1142.58%)
Mutual labels:  automation, hacktoberfest

Proctoring-AI

Project to create an automated proctoring system where the user can be monitored automatically through the webcam and microphone. The project is divided into two parts: vision and audio based functionalities. An explanation of some functionalities of the project can be found on my medium article.

Prerequisites

For vision:

Tensorflow>2 and < 2.4
OpenCV
sklearn=0.19.1 # for face spoofing. 
The model used was trained with this version and does not support recent ones.

For audio:

pyaudio
speech_recognition
nltk

Vision

It has six vision based functionalities right now:

  1. Track eyeballs and report if candidate is looking left, right or up.
  2. Find if the candidate opens his mouth by recording the distance between lips at starting.
  3. Instance segmentation to count number of people and report if no one or more than one person detected.
  4. Find and report any instances of mobile phones.
  5. Head pose estimation to find where the person is looking.
  6. Face spoofing detection

Face detection

Earlier, Dlib's frontal face HOG detector was used to find faces. However, it did not give very good results. In face_detection different face detection models are compared and OpenCV's DNN module provides best result and the results are present in this article.

It is implemented in face_detector.py and is used for tracking eyes, mouth opening detection, head pose estimation, and face spoofing.

An additional quantized model is also added for face detector as described in Issue 14. This can be used by setting the parameter quantized as True when calling the get_face_detector(). On quick testing of face detector on my laptop the normal version gave ~17.5 FPS while the quantized version gave ~19.5 FPS. This would be especially useful when deploying on edge devices due to it being uint8 quantized.

Facial Landmarks

Earlier, Dlib's facial landmarks model was used but it did not give good results when face was at an angle. Now, a model provided in this repository is used. A comparison between them and the reason for choosing the new Tensorflow based model is shown in this article.

It is implemented in face_landmarks.py and is used for tracking eyes, mouth opening detection, and head pose estimation.

Note

If you want to use dlib models then checkout the old-master branch.

Eye tracking

eye_tracker.py is to track eyes. A detailed explanation is provided in this article. However, it was written using dlib.

eye tracking

Mouth Opening Detection

mouth_opening_detector.py is used to check if the candidate opens his/her mouth during the exam after recording it initially. It's explanation can be found in the main article, however, it is using dlib which can be easily changed to the new models.

Mouth opening detection

Person counting and mobile phone detection

person_and_phone.py is for counting persons and detecting mobile phones. YOLOv3 is used in Tensorflow 2 and it is explained in this article for more details.

person counting and phone detection

Head pose estimation

head_pose_estimation.py is used for finding where the head is facing. An explanation is provided in this article

head pose estimation

Face spoofing

face_spoofing.py is used for finding whether the face is real or a photograph or image. An explanation is provided in this article. The model and working is taken from this Github repo.

face spoofing

FPS obtained

Functionality On Intel i5
Eye Tracking 7.1
Mouth Detection 7.2
Person and Phone Detection 1.3
Head Pose Estimation 8.5
Face Spoofing 6.9

If you testing on a different processor a GPU consider making a pull request to add the FPS obtained on that processor.

Audio

It is divided into two parts:

  1. Audio from the microphone is recording and converted to text using Google's speech recognition API. A different thread is used to call the API such that the recording portion is not disturbed a lot, which processes the last one, appends its data to a text file and deletes it.
  2. NLTK we remove the stopwods from that file. The question paper (in txt format) is taken whose stopwords are also removed and their contents are compared. Finally, the common words along with its number are presented to the proctor.

The code for this part is available in audio_part.py

To do

  1. Replace the HOG based descriptor by OpenCV's DNN modules Caffe model and it will also solve the issues created by side faces and occlusion.
  2. Replace the dlib based facial landmarks with the CNN based facial landmarks as used in head_pose_detector.
  3. Make a better face spoofing model as the accuracy is not good currently.
  4. Use a smaller and faster model inplace of YOLOv3 that can give good FPS on a CPU.
  5. Add a vision based functionality: face recognition such that no one else replaces the candidate and gives the exam midway.
  6. Add a vision based functionality: id-card verification.
  7. Update README with videos of each functionality and the FPS obtained.
  8. Add documentation (docstring) in functions in codes.

Problems

Speech to text conversion which might not work well for all dialects.

Contributing

If you have any other ideas or do any step of to do consider making a pull request . Please update the README as well in the pull request.

License

This project is licensed under the MIT License - see the LICENSE.md file for details. However, the facial landmarks detection model is trained on non-commercial use datasets so I am not sure if that is allowed to be used for commercial purposes or not.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].