A Matlab code is written to moniter the status of a person and sound an alarm in case of drowsiness. i have already trained the SVM classifier with Fatigue and Non Fatigue samples.
How to run??
1. Unzip and place the 'Sleep' folder in the path of Matlab.
2. Turn on your webcam, go to command window and type 'imaqtool' to find the supported adaptors.
3. Open main.m and go to line no. 17 and change the adaptor name to the supported one.
(Usually 'winvideo',1 is supported in all windows versions).
4. Now run main.m
5. Place yourself at a distance such that your face is visible in the window
6. Non Fatigue Status: The default status, appears when your eyes are wide open and mouth is closed
7. Fatigue Status: When eyes are closed and mouth is opened for several seconds, the alarm sounds a beep.
8. Make sure the room is well lit
Note: The model is not trained to work perfectly under dark or very low dim light conditions, I will upload a much better code once I get better results with an efficient set of features.
Cite the following if you are using my work:
[1] Manu, B. N. "Facial features monitoring for real time drowsiness detection." Innovations in Information Technology (IIT), 2016 12th International Conference on. IEEE, 2016.
IEEE Paper Download link: https://www.researchgate.net/publication/315685957_Facial_Features_Monitoring_for_Real_Time_Drowsiness_Detection
PPT Download link: https://www.researchgate.net/publication/315686000_Facial_Features_Monitoring_for_Real_Time_Drowsiness_Detection_PPT
Suggestions and comments are always welcome,
Thanks in advance,
Manu B.N
Manu BN (2021). Drowsiness Detection using a Binary SVM Classifier (https://www.mathworks.com/matlabcentral/fileexchange/55152-drowsiness-detection-using-a-binary-svm-classifier), MATLAB Central File Exchange. Retrieved .
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Create scripts with code, output, and formatted text in a single executable document.
Hey Manu B N,
I got an error because svmtrain and svmclassify functions have been removed by Matlab new version.
Error using ClassificationSVM (line 249)
Use fitcsvm to train an SVM model.
Error in main (line 197)
species = ClassificationSVM(svmStruct,Feature);
Could you please help me to fix this error.
sir, can you explain me how to connect webcam to mathlab
Sir, plz send me the code to the following email id
harshitha5557@gmail.com
sir, where is the main.m file we cant see in Sleep folder
can u plz tell which algorithm used in your code.like viola jones etc....
Even though eyes are opened I got msg like fatigue only .Can you please suggest the solution for it?Please help me out
nsuwamiya@gmail.com
I got this message when I run the program(Use fitcsvm to train an SVM model).Can you please help me out.
ajjoy2000@gmail.com
I got this message when I run the program (Use fitcsvm to train an SVM model.) can you please help me?
BMBM.12@hotmail.com
You can submit the source code. For my homework
salih1142322@gmail.com
I have a problem you see mathwork has removed svmspacify and added classificationsvm,fitcsvm, and compactclassificationsvm so which one should I use and how to change things around because I am new to MatLab and I don't know many things about it and I am using this for a project in my study for my college and my doctor is an idiot because he thinks image processing is the same as computer vision but it is not.
Sir, canu send me the code
Can you send me the code esutes27@gmail.com
please send the code to priyankanair983@gmail.com
can you send me the source code to rasnaravi205@gmail.com
please send the code to michealtraj@gmail.com
In output it is always showing 'fatigue' after 10 seconds. Though my eye is open it is showing eye as closed. What is the reason?
I tried in both matlab 2014a and 2016a.
Can you send me the solution for this?
my mail id is mahaboob111410@gmail.com
Thank you. This code for live video works for me. Is it possible to get similar code for pretaken video in dim light or night mode light. Kindly help with the upgraded coding.
Plz snd me the code
Can u plz send code to tusharpuri54@gmail.com
Can u plz send code to meghnak71@gmail.com
please send this code to csk14at1a04@gmail.com
I have a technical problem: I am not able to extract correctly the files form .zipx (even if renamed in .zip). All the .m file present an error while the DB can be extracted....
Is it possible to have a new .zip? From an hosting server link maybe..
Thanks in advance for you attention and collaboration.
Bests,
Fra
hi
can you send data base name ?
Kudos Manu!!!
could you please tel me how to get the output and how many images should be given
Sir how can I modify this code to include a webcam instead of using the default laptop camera
Can someone please give me this source code here, , I am new to matlab and dont know much functionalities, like how to place sleep in matlab path folder. Please help. Thankyou
Rename sleep.zipx to sleep.zip.
It will work
Can you please send me the source code (feranto31@hotmail.com). When i unzip the "Sleep.zip", i have Sleep.zipx and i dont know what to do with this file.
not getting output.. its showing error at
faceDetector = vision.CascadeObjectDetector;
sir can u giv a code for automatic region of interest selection ?is thre any database to get echocardiographic videos in which there is a tumor or thrombus in heart?
sir can u giv a code for automatic region of interest selection
Undefined variable "vision" or class "vision.ShapeInserter
For skin segmentation.
Thanks for the rating.
Hello, first congratulate you on your work. Could you tell me what the skin_seg2.m function is? Thanks and best regards
nice work, Plz attach the dataset, if possible. Thanks very much.
I will add a detailed documents regarding training and databases also once my paper is published.
According to documentation,
6. Non Fatigue Status: The default status, appears when your eyes are wide open and mouth is closed
7. Fatigue Status: When eyes are closed and mouth is opened for several seconds, the alarm sounds a beep.
But at my side, it is not even running properly why its is giving output eyes not detected again and again secondly, where is SVM training file and DATABASE?
I cant find the file provided here.Can you please send me the source code.
fathi.kaf@gmail.com
??? Undefined function or variable 'vision'.
Error in ==> main at 35
faceDetector = vision.CascadeObjectDetector;
showing ths plus video output window not opening and cam light is ON
@rafik,@Mugilan: Why cant you download the code provided here ??
can you please send me the source code
freedom-king2016@hotmail.com
can you please send me the source code, mugilan930311@hotmail.com
@Faizal, Tibarius: I'm coming up with a document on that so plz wait as i'm super busy.
@ pawan: It's all Viola Jones. I wonder what Nose Detection is doing in your code??? How does it help decide the drowsiness???
Hi Mr Manu, thanks for your code. It work great.
For further use of your code, can u guide us how to train our own SVM?
Thank you.
Hi,can anybody tell me about the algorithm which is used in the following code? like viola jones,template matching etc.
it would be greatly appericiated if u could help me.
thank you!!!
clc
clear all;
close all;
% initialize webcam (read instructions if required 'README_TO_SET_YOUR_CAMERA.m')
vobj=videoinput('winvideo',1,'YUY2_640x480','ReturnedColorSpace','rgb');
figure('Name','My Custom Preview Window');
uicontrol('string','close','callback','close(gcf)');
% create an image object for previewing
vidRes=get(vobj,'VideoResolution');
nBands=get(vobj,'NumberOfBands');
hImage=image(zeros(vidRes(2),vidRes(1),nBands));
preview(vobj,hImage);
%pause
% coordinates to draw lines
rs=vidRes(2);
cs=vidRes(1);
C1=floor(cs/6);
C2=floor(267*cs/320);
C3=floor(0);
C4=floor(cs);
R1=floor(rs/4);
R2=floor(rs/2);
R3=floor(3*rs/4);
R4=floor(rs);
x1=[C1 C1];
x2=[C2 C2];
x3=[C3 C3];
x4=[C4 C4];
x5=[C3 C4];
y1=[0 rs];
y2=[R1 R1];
y3=[R2 R2];
y4=[R3 R3];
y5=[R4 R4];
%draw lines
line(x1,y1,'color','r','LineWidth',2)
line(x2,y1,'color','r','LineWidth',2)
%line(x3,y1,'color','g','LineWidth',2)
%line(x4,y1,'color','g','LineWidth',2)
line(x5,y2,'color','g','LineWidth',2)
line(x5,y3,'color','g','LineWidth',2)
line(x5,y4,'color','g','LineWidth',2)
%line(x5,y5,'color','w','LineWidth',2)
% write text
text1=text(19*cs/96,rs/8,'FOREHEAD REGION','color','r');
text2=text(19*cs/96,3*rs/8,'EYE REGION','color','r');
text3=text(19*cs/96,5*rs/8,'NOSE REGION','color','r');
text4=text(19*cs/96,7*rs/8,'MOUTH REGION','color','r');
% initialize flags
FlagForHead=0;
FlagEyes=0;
FlagNose=0;
FlagMouth=0;
cnt=0;
% initialize vision toolbox
shape=vision.ShapeInserter('BorderColor','Custom','CustomBorderColor',[255 255 0]);
EyeDetector1=vision.CascadeObjectDetector('EyePairSmall');
NoseDetector=vision.CascadeObjectDetector('Nose');
MouthDetector1=vision.CascadeObjectDetector('Mouth');
%% press any key while you are ready
for i=1:50 % for 200 frames, increse/decrese if required
I2=getsnapshot(vobj);
pause(0.5)
FirstSeg=imcrop(I2,[C1 0 C2-C1 R1]);
% figure(2),subplt(1,2,1);imshow(FirstSeg);
BlackDetect=(FirstSeg(:,:,1)<70)&(FirstSeg(:,:,2)<70)&(FirstSeg(:,:,3)<70);
BW1=imfill(BlackDetect,'holes');
BW2=bwareaopen(BW1,2000);
%subplot(1,2,2),imshow(BW2);
[Matl Nr]=bwlabel(BW2);
if Nr~=0
FlagForHead=1;
else
FlagForHead=0;
end
SecondSegment=imcrop(I2,[C1 R1 C2-C1 R2-R1]);
figure(3),subplot(1,2,1),imshow(SecondSegment);
bbox_eye1=step(EyeDetector1,SecondSegment);
I_Eye=step(shape,SecondSegment,int32(bbox_eye1));
if isempty(bbox_eye1)~=1
FlagEyes=1;
EyeRegion=imcrop(SecondSegment,[bbox_eye1(1,1),bbox_eye1(1,2),bbox_eye1(1,3),bbox_eye1(1,4)]);
subplot(3,2,1),imshow(I_Eye),title('EYE INPUT');
subplot(1,2,2),imshow(EyeRegion),title('EYE REGION');
else
FlagEyes=0;
end;
ThirdSegment=imcrop(I2,[C1 R2 C2-C1 R3-R2]);
% figure(4),subplot(1,2,1),imshow(ThirdSegment);
bbox_Nose1=step(NoseDetector,ThirdSegment);
I_Nose=step(shape,ThirdSegment,int32(bbox_Nose1));
if isempty(bbox_Nose1)~=1
FlagNose=1;
%
NoseRegion=imcrop(ThirdSegment,[bbox_Nose1(1,1),bbox_Nose1(1,2),bbox_Nose1(1,3),bbox_Nose1(1,4)]);
%subplot(3,2,5),imshow(I_Nose),title('Nose INPUT');
%subplot(1,2,2),imshow(NoseRegion),title('Nose REGION');
else
FlagNose=0;
end;
FourthSegment=imcrop(I2,[C1 R3 C2-C1 R4-R3]);
%figure(5),subplot(1,2,1),imshow(FourthSegment);
bbox_Mouth1=step(MouthDetector1,FourthSegment);
I_Mouth=step(shape,FourthSegment,int32(bbox_Mouth1));
if isempty(bbox_Mouth1)~=1
FlagMouth=1;
%
MouthRegion=imcrop(FourthSegment,[bbox_Mouth1(1,1),bbox_Mouth1(1,2),bbox_Mouth1(1,3),bbox_Mouth1(1,4)]);
% subplot(3,2,3),imshow(I_Mouth),title('MOUTH INPUT');
% subplot(1,2,2),imshow(MouthRegion),title('MOUTH REGION');
else
FlagMouth=0;
end;
if ((FlagForHead==1)&&(FlagEyes==1)&&(FlagNose==1)&&(FlagMouth==1))
disp('Normal Condition')
cnt=0;
else
disp('possible drowsiness detection')
cnt=cnt+1;
end
if cnt>5
cnt=0;
disp('drowsiness confirmed')
end
end
I would like to make a training set and a test set with my own images and to train the SVM classifier, but I don't know how to implement this.
Sure, Plz be a little more specific
Hi, can you please help with a tutorial or documents on how to train myself the SVM? Thank you
Works like a charm!!!
dependencies(?)
Perfectly working code...............