Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
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ı
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ə:
Arduino Qaz Alarm Sistemi: 6 addım
Arduino Qaz Algılama Siqnal Sistemi: Hamıya salam! Hal -hazırda, tinkercad -da bir Arduino qaz aşkar edən siqnalizasiya sisteminin necə qurulacağını izah edəcəyəm. Bu dövrə yaxınlıqda yanğın, tüstü və ya qaz sızıntısı olub olmadığını müəyyən etmək üçün qaz sensorundan istifadə edir. LCD və həyəcan siqnalından istifadə edərək, bu dövrə də
Su İçməli Alarm Sistemi /Su Giriş Monitoru: 6 addım
Su İçməli Alarm Sistemi /Su Alma Monitoru: Özümüzü sağlam saxlamaq üçün hər gün kifayət qədər Su içməliyik. Həm də hər gün müəyyən miqdarda su içməyi təyin edən bir çox xəstə var. Təəssüf ki, demək olar ki, hər gün cədvəli qaçırdıq. Buna görə dizayn edirəm
SanityForce (Alarm Sistemi- Rpi): 7 addım
SanityForce (Alarm Sistemi- Rpi): İndi əşyalarınızı təhlükəsiz saxlamağın və ya qardaşlarınızı otaqdan kənarda saxlamağın bir çox yolu var, məsələn, kilidi taxmaq və ya başqa insanların əlçatmaz saxlaması. Bütün əsas şeyləri etməyə ehtiyacınız olmadığını, ancaq dönüş edə biləcəyinizi söyləsəm nə olar
Velosiped Kilidini Alarm Sistemi: 15 addım
Velosiped Kilidini Açan Xəbərdarlıq Sistemi: Salam hamı … !! Necəsən? Hamınızın evinizdə nəqliyyat vasitələri var. Avtomobilin təhlükəsizliyi hər kəs üçün vacibdir. Bənzər bir layihə ilə geri döndüm. Bu layihədə GSM Modulu və Arduino istifadə edərək velosiped kilidini açan bir xəbərdarlıq sistemi hazırladım. Velosipedin kilidini açanda
One Touch Alarm QADIN TƏHLÜKƏSİZLİK Sistemi: 5 addım
Tək Diqqətlə Siqnal QADINLARIN TƏHLÜKƏSİZLİK SİSTEMİ: Bugünkü Dünyada Qadınların Təhlükəsizliyi ölkədəki ən vacib məsələdir. Bu gün Qadınlar Təcavüzə məruz qalırlar və bəzən Təcili yardıma ehtiyac duyulur. Qadınların İnsanların Kömək edə biləcəyi Lazımlı Məkan yoxdursa, bu bizim ehtiyacımızdır