Talaan ng mga Nilalaman:

Sistema ng Alerto ng Pag-aantok: 3 Mga Hakbang
Sistema ng Alerto ng Pag-aantok: 3 Mga Hakbang

Video: Sistema ng Alerto ng Pag-aantok: 3 Mga Hakbang

Video: Sistema ng Alerto ng Pag-aantok: 3 Mga Hakbang
Video: Bagyo at Baha | Disaster Preparedness 2024, Hulyo
Anonim
Sistema ng Alerto ng Pag-aantok
Sistema ng Alerto ng Pag-aantok

Taun-taon maraming mga tao ang nawawalan ng kanilang buhay dahil sa mga nakamamatay na aksidente sa kalsada sa buong mundo at ang pag-aantok sa pagmamaneho ay isa sa pangunahing sanhi ng mga aksidente sa kalsada at pagkamatay. Ang pagkapagod at micro na pagtulog sa mga kontrol sa pagmamaneho ay madalas na sanhi ng malubhang aksidente. Gayunpaman, ang mga paunang palatandaan ng pagkapagod ay maaaring napansin bago lumitaw ang isang kritikal na sitwasyon at samakatuwid, ang pagtuklas ng pagkapagod ng driver at ang pahiwatig nito ay patuloy na paksa ng pananaliksik. Karamihan sa mga tradisyunal na pamamaraan upang makita ang pag-aantok ay batay sa mga aspeto ng pag-uugali habang ang ilan ay mapanghimasok at maaaring makaabala ng mga driver, habang ang ilan ay nangangailangan ng mga mamahaling sensor. Samakatuwid, sa papel na ito, isang light-weight, real time driver's drowsiness detection system ay binuo at ipinatupad sa Android application. Itinatala ng system ang mga video at nakita ang mukha ng driver sa bawat frame sa pamamagitan ng paggamit ng mga diskarte sa pagproseso ng imahe. May kakayahang makita ang system ng mga landmark sa mukha, kinukalkula ang Eye Aspect Ratio (EAR) at Eye Closure Ratio (ECR) upang makita ang antok ng drayber batay sa adaptive threshold. Ang mga algorithm sa pag-aaral ng machine ay nagtatrabaho upang subukan ang pagiging epektibo ng iminungkahing diskarte. Ipinapakita ng mga resulta ng empirical na ang iminungkahing modelo ay magagawang makamit ang katumpakan ng 84% gamit ang random jung classifier.

Hakbang 1: Mga Bagay na Kailangan mo

1. RASPBERRY PI

2. WEBCAM (C270 HD WEB CAM PARA SA MAS MAAYONG RESULTA)

Maaaring kailanganin ng bersyon ng PC ang ilang mga pagbabago sa code

Hakbang 2: Python Code With Eyes Shape Predictor Dataset (Bersyon ng PC)

upang makita ang mga mata nang mas epektibo sa isang real time na video, maaari naming gamitin ang sbelow.dat file na ito.

drive.google.com/open?id=1UiSHe72L4TeN14VK…

I-download ang.dat file mula sa itaas na link at patakbuhin ang ibaba python code

Python code

mula sa scipy.spatial na distansya ng pag-import mula sa mga imutil na pag-import ng face_utils import imutils import dlib import cv2

def eye_aspect_ratio (mata):

A = distansya.euclidean (mata [1], mata [5]) B = distansya.euclidean (mata [2], mata [4]) C = distansya.euclidean (mata [0], mata [3]) tainga = (A + B) / (2.0 * C) ibalik ang thresh ng tainga = 0.25 frame_check = 20 tuklasin = dlib.get_frontal_face_detector () hulaan = dlib.shape_predictor (". / Form_predictor_68_face_landmarks.dat") # Ang file ng Dat ay ang pinakabuod ng code

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) flag = 0 habang True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) mga paksa = tuklasin (kulay-abo, 0) para sa paksa sa mga paksa: hugis = hulaan (kulay-abo, paksa) hugis = face_utils.shape_to_np (hugis) #pagpalit sa NumPy Array leftEye = hugis [lStart: lEnd] kananEye = hugis [rStart: rEnd] left taun = eye_aspect_ratio (leftEye) kanan taun = eye_aspect_ratio (rightEye) tainga = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull (rightEye) cv2 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) kung tainga = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! ********* ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF kung key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

Hakbang 3: Bersyon ng Raspberry Pi

Bersyon ng Raspberry Pi
Bersyon ng Raspberry Pi
Bersyon ng Raspberry Pi
Bersyon ng Raspberry Pi

kapag ipinikit ng mga tao ang kanyang mga mata pagkatapos bibigyan ka ng alerto ng raspberry pi

Ikonekta ang iyong buzzer upang i-pin ang 23 (tingnan ang larawan)

mula sa scipy.spasyo ng distansya ng pag-import

i-import ang RPi. GPIO bilang GPIO

mula sa oras mag-import ng pagtulog

GPIO.setwarnings (Mali)

GPIO.setmode (GPIO. BCM)

mula sa mga imutil ay mag-import ng mga face_util

i-import ang mga imutil i-import ang dlib import cv2

buzzer = 23

GPIO.setup (buzzer, GPIO. OUT)

def eye_aspect_ratio (mata):

A = distansya.euclidean (mata [1], mata [5]) B = distansya.euclidean (mata [2], mata [4]) C = distansya.euclidean (mata [0], mata [3]) tainga = (A + B) / (2.0 * C) ibalik ang thresh ng tainga = 0.25 frame_check = 20 tuklasin = dlib.get_frontal_face_detector () hulaan = dlib.shape_predictor (". / Form_predictor_68_face_landmarks.dat") # Ang file ng Dat ay ang pinakabuod ng code

(lStart, lEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) flag = 0 habang True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) mga paksa = tuklasin (kulay-abo, 0) para sa paksa sa mga paksa: hugis = hulaan (kulay-abo, paksa) hugis = face_utils.shape_to_np (hugis) #pagpalit sa NumPy Array leftEye = hugis [lStart: lEnd] kananEye = hugis [rStart: rEnd] left taun = eye_aspect_ratio (leftEye) kanan taun = eye_aspect_ratio (rightEye) tainga = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull (rightEye) cv2 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) kung tainga = frame_check: cv2.putText (frame, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (frame, "**************** ALERT! ********* ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print (" Dro wsy ")

GPIO.output (buzzer, GPIO. HIGH)

iba pa: flag = 0

GPIO.output (buzzer, GPIO. LOW)

cv2.imshow ("Frame", frame) key = cv2.waitKey (1) & 0xFF kung key == ord ("q"): masira ang cv2.destroyAllWindows () cap.stop ()

Inirerekumendang: