Mündəricat:

Yuxululuq Alarm Sistemi: 3 addım
Yuxululuq Alarm Sistemi: 3 addım

Video: Yuxululuq Alarm Sistemi: 3 addım

Video: Yuxululuq Alarm Sistemi: 3 addım
Video: Bütün Günü, İşdə və Yolda YUXULU Olmaq Nəyin Əlamətidir? - 5 SƏBƏB 2024, Iyul
Anonim
Yuxululuq Alert Sistemi
Yuxululuq Alert Sistemi

Hər il dünyada ölümcül yol qəzaları səbəbiylə bir çox insan həyatını itirir və yuxusuz avtomobil idarə etmək yol qəzalarının və ölümlərinin əsas səbəblərindən biridir. Sürücülük idarəetmə sistemindəki yorğunluq və mikro yuxu çox vaxt ciddi qəzaların kök səbəbidir. Bununla birlikdə, yorğunluğun ilk əlamətləri kritik bir vəziyyət yaranmadan əvvəl aşkar edilə bilər və buna görə də sürücünün yorğunluğunun aşkarlanması və onun göstəricisi davam edən tədqiqat mövzusudur. Yuxululuğu aşkar etmək üçün ənənəvi üsulların çoxu davranış aspektlərinə əsaslanır, bəziləri müdaxilə edir və sürücülərin fikrini yayındıra bilər, bəziləri isə bahalı sensorlar tələb edir. Buna görə də, bu yazıda, Android tətbiqində yüngül, real vaxt sürücünün yuxululuq aşkarlama sistemi hazırlanır və tətbiq olunur. Sistem, videoları işlədir və hər bir kadrda sürücünün üzünü görüntü işləmə texnikasından istifadə edərək algılar. Sistem, uyğunlaşma həddinə əsaslanaraq sürücünün yuxululuğunu aşkar etmək üçün üz nişanələrini aşkar edə, göz aspekt nisbətini (EAR) və gözlərin bağlanma nisbətini (ECR) hesablaya bilir. Təklif olunan yanaşmanın effektivliyini yoxlamaq üçün maşın öyrənmə alqoritmlərindən istifadə edilmişdir. Empirik nəticələr göstərir ki, təklif olunan model təsadüfi meşə təsnifatçısı ilə 84% dəqiqliyə nail ola bilir.

Addım 1: Lazım olan şeylər

1. Raspberry PI

2. WEBCAM (Daha yaxşı nəticələr üçün C270 HD WEB CAM)

Pc versiyası kodda bəzi dəyişikliklərə ehtiyac duya bilər

Addım 2: Gözlər Şəkil Yedəkləyici Dataset ilə Python Kodu (PC versiyası)

real vaxt videoda gözləri daha təsirli şəkildə aşkar etmək üçün bu.dat faylını istifadə edə bilərik.

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

Yuxarıdakı linkdən.dat faylını yükləyin və aşağıdakı python kodunu işlədin

Python kodu

scipy.fəza idxal məsafəsindən imutils idxalından face_utils idxal imutils idxal dlib idxal cv2

def eye_aspect_ratio (göz):

A = məsafə. Evklid (göz [1], göz [5]) B = məsafə. Evklid (göz [2], göz [4]) C = məsafə. Evklid (göz [0], göz [3]) qulaq = (A + B) / (2.0 * C) geri dönmə qulağı = 0.25 frame_check = 20 təsbit = dlib.get_frontal_face_detector () proqnozlaşdır = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat faylı kodun mahiyyətidir

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

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) bayraq = 0 isə True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (çərçivə, cv2. COLOR_BGR2GRAY) subyektləri = subyektlərdə mövzu üçün təsbit (boz, 0): forma = proqnozlaşdırma (boz, mövzu) forma = üz_utils.şəkil_to_np (forma)#NumPy Arrayına çevirmək SolEye = forma [lBaşla: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHye = cv2.convex drawContours (çərçivə, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (çərçivə, [rightEyeHull], -1, (0, 255, 0), 1) əgər ear = frame_check: cv2.putText (çərçivə, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (çərçivə, "**************** XƏBƏRDARLIQ! *********** ***** ", (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 if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

Addım 3: Raspberry Pi versiyası

Raspberry Pi versiyası
Raspberry Pi versiyası
Raspberry Pi versiyası
Raspberry Pi versiyası

insanlar gözlərini bağladıqda moruq pi sizə xəbərdarlıq verəcək

Zil səsini 23 pininə bağlayın (şəklə baxın)

scipy.fəza idxal məsafəsindən

GPO olaraq RPi. GPIO idxal edin

vaxtdan idxal yuxu

GPIO.setwarnings (Yanlış)

GPIO.setmode (GPIO. BCM)

from imutils import face_utils

idxal imutils idxal dlib idxal cv2

səs siqnalı = 23

GPIO. quraşdırma (səs siqnalı, GPIO. OUT)

def eye_aspect_ratio (göz):

A = məsafə. Evklid (göz [1], göz [5]) B = məsafə. Evklid (göz [2], göz [4]) C = məsafə. Evklid (göz [0], göz [3]) qulaq = (A + B) / (2.0 * C) geri dönmə qulağı = 0.25 frame_check = 20 təsbit = dlib.get_frontal_face_detector () proqnozlaşdır = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat faylı kodun mahiyyətidir

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

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS ["right_eye"] cap = cv2. VideoCapture (0) bayrağı = 0 isə True: ret, frame = cap.read () frame = imutils.resize (frame, width = 450) grey = cv2.cvtColor (çərçivə, cv2. COLOR_BGR2GRAY) subyektləri = mövzularda mövzu üçün təsbit edin (boz, 0): forma = proqnozlaşdırma (boz, mövzu) forma = face_utils.shape_to_np (forma)#NumPy Arrayına çevirmək SolEye = forma [lStart: lEnd] rightEye = forma [rStart: rEnd] leftEAR = eye_aspect_ratio (leftEye) rightEAR = eye_aspect_ratio (rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull (leftEye) rightEyeHye = cv2.convex drawContours (çərçivə, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (çərçivə, [rightEyeHull], -1, (0, 255, 0), 1) əgər ear = frame_check: cv2.putText (çərçivə, "**************** ALERT! ****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (çərçivə, "**************** XƏBƏRDARLIQ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #çap (" Dro wsy ")

GPIO.çıxış (səs siqnalı, GPIO. HIGH)

başqa: bayraq = 0

GPIO.output (səs siqnalı, GPIO. LOW)

cv2.imshow ("Çərçivə", çərçivə) açarı = cv2.waitKey (1) & 0xFF əgər açar == ord ("q") olarsa: cv2.destroyAllWindows () cap.stop ()

Tövsiyə: