Ask Your Question

Revision history [back]

It is not an implementation, but I would like to say some "tips" about drowsiness detection on drivers in order to help other people.

Detecting drowsiness in drivers is not an easy task. If you want to develop a robust algorithm, first step is to robustly detect the face and track it over time. Different illumination conditions and different poses should be taken into account. Using multiple cameras, the operational range of head pose can be tracked by mitigating failures under large head motions. In [1], head pose is estimated independently on each camera perspective and tracked over a wide operational range in the yaw rotation angle using both camera perspectives. In order to handle camera selection and hand-off, they had success with using the yaw as the camera hand-off cue. See also this publication: 'Continuous head movement estimator for driver assistance: Issues, algorithms, and on-road' [2]

  • [1] E. Ohn-Bar, A. Tawari, S. Martin, and M. M. Trivedi, \On surveillance for safety critical events: In-vehicle video networks for predictive driver assistance systems,"
  • [2] A. Tawari, S. Martin, and M. M. Trivedi, \Continuous head movement estimator for driver assistance: Issues, algorithms, and on-road evaluations," 2014.

Secondly, you should detect both eyes and mouth. For this task, you should detect the posistion of the eyes and mouth. You should check this publication: 'One millisecond face alignment with an ensemble of regression trees' [3]. There is also an open implementation of this paper or flandmarks (

  • [3] Kazemi, V., & Sullivan, J. (2014, June). One millisecond face alignment with an ensemble of regression trees. In Computer Vision and Pattern Recognition (CVPR), 2014 IEEE Conference on (pp. 1867-1874). IEEE.

Thirdly, you should analize eyes and mouth. You should check PERCLOS as and indicator of drowsiness. PERCLOS is recognized as the most effective vision-based fatigue evaluation method. But other characteristics can be extracted from eyes: PERCLOS, eyelid distance, eye blink rate, blink speed, gaze direction, eye saccadic movement are commonly cues used for detecting drowsiness.

PERCLOS is deffined as the measurement of the percentage of time eyes pupils are 80%, or more, occluded over a speciffied time interval. So, a cut-off value of 80% eyelid closure is proposed to calculate the proportion of time when eyes remain fully or almost fully closed. For example, in [4], PERCLOS and degree of mouth opening are extracted and SVM classifier is used to identify drowsiness.

  • [4] M. Sacco and R. A. Farrugia, \Driver fatigue monitoring system using support vector machines," in Communications Control and Signal Processing (ISCCSP), 2012 5th International Symposium on, pp. 1{5, IEEE, 2012.

As drowsiness often occurs after fatigue, yawning detection can be an important factor to take into account because it is a strong signal that the driver can be affected by drowsiness in a short period of time. The openness of the mouth can be represented by the ratio of its height and width.

For example, In [5], two cameras are used to detect fatigue in real time. One low camera is used to provide the head position and one high resolution is used to locate the mouth region. The ratio of mouth height and width was applied for yawning detection.

  • [5] L. Li, Y. Chen, and Z. Li, \Yawning detection for monitoring driver fatigue based on two cameras," in Intelligent Transportation Systems, 2009. ITSC'09. 12th International IEEE Conference on, pp. 1{6, IEEE, 2009.