Мазмұны:

Ұйқышылдық туралы ескерту жүйесі: 3 қадам
Ұйқышылдық туралы ескерту жүйесі: 3 қадам

Бейне: Ұйқышылдық туралы ескерту жүйесі: 3 қадам

Бейне: Ұйқышылдық туралы ескерту жүйесі: 3 қадам
Бейне: Өлді деп жерлемек болған еді. Бірақ Алланың қалауымен тірілген Бала 2024, Желтоқсан
Anonim
Ұйқышылдық туралы ескерту жүйесі
Ұйқышылдық туралы ескерту жүйесі

Жыл сайын бүкіл әлемде адам өліміне әкелетін жол -көлік оқиғалары салдарынан көптеген адамдар өмірін жоғалтады және ұйқысыз көлік жүргізу жол -көлік оқиғалары мен өлімінің негізгі себептерінің бірі болып табылады. Басқару машинасындағы шаршау мен микро ұйқы көбінесе ауыр жазатайым оқиғалардың негізгі себебі болып табылады. Алайда, шаршаудың алғашқы белгілерін сыни жағдай туындағанға дейін анықтауға болады, сондықтан жүргізушінің шаршауын анықтау және оның көрсеткіші зерттеудің өзекті тақырыбы болып табылады. Ұйқышылдықты анықтаудың дәстүрлі әдістерінің көпшілігі мінез -құлық аспектілеріне негізделген, ал кейбіреулері интрузивті және жүргізушілердің назарын аударуы мүмкін, ал кейбіреулері қымбат сенсорларды қажет етеді. Сондықтан, бұл жұмыста Android қосымшасында жеңіл, нақты уақыт режимінде жүргізушінің ұйқышылдықты анықтау жүйесі әзірленген және енгізілген. Жүйе бейнелерді жазады және суретті өңдеу әдістерін қолдана отырып, әр кадрда жүргізушінің бетін анықтайды. Жүйе бейімделу шегіне негізделген жүргізушінің ұйқышылдықты анықтау үшін бет белгілерін анықтай алады, көздің аспектілік қатынасын (EAR) және көздің жабылу коэффициентін (ECR) есептейді. Ұсынылған әдістің тиімділігін тексеру үшін машиналық оқыту алгоритмдері қолданылды. Эмпирикалық нәтижелер ұсынылған модель кездейсоқ орман жіктеуішті қолдану арқылы 84% дәлдікке қол жеткізе алатынын көрсетеді.

1 -қадам: Сізге қажет заттар

1. РЕППЕРРИ ПИ

2. WEBCAM (жақсы нәтижеге арналған C270 HD WEB CAM)

Компьютерлік нұсқаға кодты өзгерту қажет болуы мүмкін

2 -қадам: Python коды, көздің пішінін болжайтын деректер жиынтығы (ДК нұсқасы)

нақты уақыттағы бейнеде көзді тиімді анықтау үшін біз осы.dat файлын қолдана аламыз.

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

Жоғарыдағы сілтемеден.dat файлын жүктеп алып, төмендегі питон кодын іске қосыңыз

Python коды

scipy.кеңістіктік импорттық қашықтықтан imutils импорт face_utils импорт имутил импорт dlib импорт cv2

def eye_aspect_ratio (көз):

A = қашықтық.евклидтік (көз [1], көз [5]) В = қашықтық.евклидтік (көз [2], көз [4]) С = қашықтық.евклидтік (көз [0], көз [3]) құлақ = (A + B) / (2.0 * C) қайтару құлақ жиегі = 0.25 frame_check = 20 анықтау = dlib.get_frontal_face_detector () болжам = dlib.shape_predictor («. / Пішін_предиктор_68_face_landmarks.dat»)# 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) жалаушасы = 0, ал True: ret, frame = cap.read () frame = imutils.resize (кадр, ені = 450) сұр = cv2.cvtColor (жақтау, cv2. COLOR_BGR2GRAY) субъектілер = пәндер бойынша пән үшін анықтау (сұр, 0): нысан = болжау (сұр, тақырып) пішін = face_utils.shape_to_np (пішін)#NumPy массивіне айналдыру leftEye = пішін [lСтарт: lEnd] rightEye = пішін [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex drawContours (кадр, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = 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 нұсқасы

Raspberry Pi нұсқасы
Raspberry Pi нұсқасы
Raspberry Pi нұсқасы
Raspberry Pi нұсқасы

адамдар көзін жұмған кезде таңқурай пи сізге ескерту береді

Дыбыстық сигналды 23 түйрегіне жалғаңыз (суретті қараңыз)

кеңістіктік импорттық қашықтықтан

GPO ретінде RPi. GPIO импорттау

уақыттан бастап ұйқы импортталады

GPIO.setwarnings (жалған)

GPIO.setmode (GPIO. BCM)

imutils -ден импорт face_utils

имутил импорт dlib импорт cv2 импорт

дыбыстық сигнал = 23

GPIO. орнату (дыбыстық сигнал, GPIO. OUT)

def eye_aspect_ratio (көз):

A = қашықтық.евклидтік (көз [1], көз [5]) В = қашықтық.евклидтік (көз [2], көз [4]) С = қашықтық.евклидтік (көз [0], көз [3]) құлақ = (A + B) / (2.0 * C) қайтару құлақ жиегі = 0.25 frame_check = 20 анықтау = dlib.get_frontal_face_detector () болжам = dlib.shape_predictor («. / Пішін_предиктор_68_face_landmarks.dat»)# 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) жалаушасы = 0, ал True: ret, frame = cap.read () frame = imutils.resize (кадр, ені = 450) сұр = cv2.cvtColor (жақтау, cv2. COLOR_BGR2GRAY) субъектілер = пәндер бойынша пән үшін анықтау (сұр, 0): нысан = болжау (сұр, тақырып) пішін = face_utils.shape_to_np (пішін)#NumPy массивіне айналдыру leftEye = пішін [lStart: lEnd] rightEye = пішін [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHull = cv2.convex drawContours (кадр, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = 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 «)

GPIO. шығысы (дыбыстық сигнал, GPIO. HIGH)

басқасы: жалауша = 0

GPIO. шығысы (дыбыстық сигнал, GPIO. LOW)

cv2.imshow («Frame», frame) key = cv2.waitKey (1) & 0xFF if key == ord («q»): break cv2.destroyAllWindows () cap.stop ()

Ұсынылған: