Բովանդակություն:

Քնկոտության ահազանգման համակարգ `3 քայլ
Քնկոտության ահազանգման համակարգ `3 քայլ

Video: Քնկոտության ահազանգման համակարգ `3 քայլ

Video: Քնկոտության ահազանգման համակարգ `3 քայլ
Video: Deutsch für die Pflege - Hören & Verstehen 2024, Նոյեմբեր
Anonim
Քնկոտության ահազանգման համակարգ
Քնկոտության ահազանգման համակարգ

Ամեն տարի բազմաթիվ մարդիկ մահանում են մահացու ճանապարհատրանսպորտային պատահարների պատճառով ամբողջ աշխարհում, և քնկոտ մեքենա վարելը ճանապարհատրանսպորտային պատահարների և մահերի հիմնական պատճառներից մեկն է: Հոգնածությունը և միկրո քունը մեքենայի ղեկին հաճախ լուրջ վթարների հիմնական պատճառն են: Այնուամենայնիվ, հոգնածության նախնական նշանները կարող են հայտնաբերվել նախքան կրիտիկական իրավիճակի առաջացումը, և, հետևաբար, վարորդի հոգնածության հայտնաբերումը և դրա նշումը շարունակական հետազոտական թեմա է: Քնկոտություն հայտնաբերելու ավանդական մեթոդներից շատերը հիմնված են վարքագծի վրա, իսկ ոմանք աներես են և կարող են շեղել վարորդներին, իսկ ոմանք պահանջում են թանկարժեք տվիչներ: Հետևաբար, այս հոդվածում վարորդի քնկոտության հայտնաբերման թեթև, իրական ժամանակի համակարգը մշակվել և ներդրվել է Android հավելվածի վրա: Համակարգը գրանցում է տեսանյութերը և յուրաքանչյուր շրջանակում հայտնաբերում վարորդի դեմքը ՝ օգտագործելով պատկերի մշակման տեխնիկա: Համակարգն ունակ է հայտնաբերել դեմքի ուղենիշները, հաշվարկում է Eye Aspect Ratio (EAR) և Eye Closure Ratio (ECR) ՝ վարորդի քնկոտությունը հայտնաբերելու համար `հիմնված հարմարվողական շեմի վրա: Մեքենայական ուսուցման ալգորիթմներ են կիրառվել `առաջարկվող մոտեցման արդյունավետությունը ստուգելու համար: Էմպիրիկ արդյունքները ցույց են տալիս, որ առաջարկվող մոդելը կարող է 84% ճշգրտության հասնել անտառի պատահական դասակարգչի միջոցով:

Քայլ 1: Ձեզ անհրաժեշտ բաներ

1. ASԵASՈՐԻ ՊԻ

2. WEBCAM (C270 HD WEB CAM ավելի լավ արդյունքների համար)

Հնարավոր է, որ համակարգչային տարբերակում անհրաժեշտ լինեն որոշ փոփոխություններ ծածկագրում

Քայլ 2. Python Code With Eyes Shape Predictor Dataset (PC տարբերակ)

իրական ժամանակում տեսանյութում աչքերը շատ ավելի արդյունավետորեն հայտնաբերելու համար մենք կարող ենք օգտագործել այս ստորև ներկայացված.dat ֆայլը:

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

Ներբեռնեք.dat ֆայլը վերևի հղումից և գործարկեք ստորև տեղադրված Python ծածկագիրը

Python կոդ

scipy.spatial ներմուծման հեռավորություն imutils ներմուծումից face_utils ներմուծում imutils ներմուծում dlib ներմուծում cv2

def eye_aspect_ratio (աչք):

A = հեռավորություն. Էվկլիդյան (աչք [1], աչք [5]) B = հեռավորություն. Էվկլիդյան (աչք [2], աչք [4]) C = հեռավորություն. Էվկլիդյան (աչք [0], աչք [3]) ականջ = (A + B) / (2.0 * C) վերադարձ ականջի շեմ = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Տվյալների ֆայլը կոդի առանցքն է

(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) gray = cv2.cvtColor (շրջանակ, cv2. COLOR_BGR2GRAY) առարկաներ = հայտնաբերել (մոխրագույն, 0) առարկայի համար առարկա.: lEnd] rightEye = ձև [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ականջ = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (շրջանակ, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (շրջանակ, [rightEyeHull], -1, (0, 255, 0), 1) եթե ականջը = frame_check: cv2.putText (շրջանակ, "*************************************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (շրջանակ, «**************** ՀԱՇՎԵԼ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #տպագիր (" Dro wsy ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

Քայլ 3: Raspberry Pi Version

Ազնվամորի Pi տարբերակ
Ազնվամորի Pi տարբերակ
Ազնվամորի Pi տարբերակ
Ազնվամորի Pi տարբերակ

երբ անձինք փակում են նրա աչքերը, ապա ազնվամորու pi- ն ձեզ ահազանգ կտա

ՄԻԱԵՔ ձեր ազդանշանը 23 կապին (տես նկարը)

scipy.spatial ներմուծման հեռավորությունից

ներմուծեք RPi. GPIO- ն որպես GPIO

ժամանակից ներմուծել քուն

GPIO.setwarnings (Կեղծ)

GPIO.setmode (GPIO. BCM)

imutils- ից ներմուծել face_utils

ներմուծել imutils ներմուծել dlib ներմուծել cv2

բզզոց = 23

GPIO.setup (ազդանշան, GPIO. OUT)

def eye_aspect_ratio (աչք):

A = հեռավորություն. Էվկլիդյան (աչք [1], աչք [5]) B = հեռավորություն. Էվկլիդյան (աչք [2], աչք [4]) C = հեռավորություն. Էվկլիդյան (աչք [0], աչք [3]) ականջ = (A + B) / (2.0 * C) վերադարձ ականջի շեմ = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Տվյալների ֆայլը կոդի առանցքն է

(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 while True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) gray = cv2.cvtColor (շրջանակ, cv2. COLOR_BGR2GRAY) առարկաներ = հայտնաբերել (մոխրագույն, 0) առարկայի համար առարկա.: lEnd] rightEye = shape [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convexHull drawContours (շրջանակ, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (շրջանակ, [rightEyeHull], -1, (0, 255, 0), 1) եթե ականջը = frame_check: cv2.putText (շրջանակ, "*************************************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (շրջանակ, «**************** ՀԱՇՎԵԼ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #տպագիր (" Dro իմաստուն »)

GPIO.output (ազդանշան, GPIO. HIGH)

այլ ՝ դրոշ = 0

GPIO.output (ազդանշան, GPIO. LOW)

cv2.imshow («Շրջանակ», շրջանակ) բանալին = cv2.waitKey (1) & 0xFF if key == ord ("q"): ընդմիջում cv2.destroyAllWindows () cap.stop ()

Խորհուրդ ենք տալիս: