▲ Full Demo Video
code: https://github.com/soohyun123/Automatic-Cheating-Detection-for-Online-Webcam-Exam
pseudocode:
While loop takes video frames:
Face Detection (OpenCV)
if # of faces == 0:
"ALERT!! No student"
if # of faces > 1:
"ALERT!! More than one student"
if # of faces == 1:
Hand Detection (Deep Learning, YOLO model)
if # of hands == 0:
"ALERT!! No hands"
else:
Draw yellow boxes for detected hands.
Take the face detected part of the image frame and convert to 64×64 gray scale.
Face Landmark Detection (Deep Learning, VGG-5 network, output: landmark coordinates)
Convert the obtained landmark coordinates to the original image frame size.
Head Pose Estimation (Perspective-n-Point algorithm, output: translation, roataion vector)
Draw a green rectangle around the face inclined at the same angle as the face.
Draw a green straight line that points in the same direction as the face.
if Horizontal Angle of Face > 20:
"ALERT!! Looking Right"
if Horizontal Angle of Face < -20:
"ALERT!! Looking Left"
Out the frame with messages and figures
In the global Covid-9 pandemic, as universities are doing online semesters, exams are also being conducted online. When conducting a real-time online exam using webcams, a small number of supervisors have to monitor the webcam videos of many students. It is not only a burdensome task for the supervisors, but it is also easy to miss some students' abnormal behaviors.
Suppose an exam supervision assistant system based on deep learning generates warning messages when it detects abnormal behaviors of students. In that case, supervisors will be able to supervise exams much more conveniently and thoroughly. This project aimed to build such an exam supervision assistance system.
For face detection, OpenCV library was used.
For hand detection, a pretrained weight was used: https://github.com/cansik/yolo-hand-detection.
For face landmark detection, VGG-5 network was trained with an open dataset: https://github.com/junhwanjang/face_landmark_dnn.