Inhaltsverzeichnis:

Schläfrigkeitswarnsystem - Gunook
Schläfrigkeitswarnsystem - Gunook

Video: Schläfrigkeitswarnsystem - Gunook

Video: Schläfrigkeitswarnsystem - Gunook
Video: Diese 5 Hormone beeinflussen Ihren Alltag: Stimmung, Libido, Gewicht & Stoffwechsel - Darauf achten! 2024, Juli
Anonim
Müdigkeitswarnsystem
Müdigkeitswarnsystem

Jedes Jahr verlieren viele Menschen ihr Leben durch tödliche Verkehrsunfälle auf der ganzen Welt und schläfriges Fahren ist eine der Hauptursachen für Verkehrsunfälle und Todesfälle. Ermüdung und Mikroschlaf an den Fahrkontrollen sind oft die Hauptursache für schwere Unfälle. Erste Ermüdungserscheinungen können jedoch erkannt werden, bevor eine kritische Situation eintritt. Daher ist die Erkennung von Fahrermüdigkeit und deren Indikation ein fortlaufendes Forschungsthema. Die meisten traditionellen Methoden zur Erkennung von Schläfrigkeit basieren auf Verhaltensaspekten, während einige aufdringlich sind und den Fahrer ablenken können, während andere teure Sensoren erfordern. Daher wird in diesem Artikel ein leichtes Echtzeit-Erkennungssystem für die Müdigkeit des Fahrers entwickelt und in einer Android-Anwendung implementiert. Das System zeichnet die Videos auf und erkennt das Gesicht des Fahrers in jedem Bild durch den Einsatz von Bildverarbeitungstechniken. Das System ist in der Lage, Gesichtsmerkmale zu erkennen, berechnet das Augenwinkelverhältnis (EAR) und das Augenschlussverhältnis (ECR), um die Schläfrigkeit des Fahrers basierend auf adaptiven Schwellenwerten zu erkennen. Algorithmen des maschinellen Lernens wurden eingesetzt, um die Wirksamkeit des vorgeschlagenen Ansatzes zu testen. Empirische Ergebnisse zeigen, dass das vorgeschlagene Modell mit dem Random Forest-Klassifikator eine Genauigkeit von 84% erreichen kann.

Schritt 1: Dinge, die Sie brauchen

1. HIMBEERE PI

2. WEBCAM (C270 HD WEBCAM FÜR BESSERE ERGEBNISSE)

Die PC-Version erfordert möglicherweise einige Änderungen im Code

Schritt 2: Python-Code mit Eyes Shape Predictor Dataset (PC-Version)

Um Augen effektiv in einem Echtzeitvideo zu erkennen, können wir diese untenstehende.dat-Datei verwenden.

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

Laden Sie die.dat-Datei vom obigen Link herunter und führen Sie den folgenden Python-Code aus

Python-Code

from scipy.spatial import distancefrom imutils import face_utils import imutils import dlib import cv2

def eye_aspect_ratio (Auge):

A = Abstand.euklidisch(Auge[1], Auge[5]) B = Abstand.euklidisch(Auge[2], Auge[4]) C = Abstand.euklidisch(Auge[0], Auge[3]) Ohr = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20Detect = dlib.get_frontal_face_detector() Predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# DAT-Datei ist der Kern des Codes

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

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["rechtes_auge"] cap=cv2. VideoCapture(0) flag=0 während True: ret, frame=cap.read() frame = imutils.resize(frame, grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) Motive = erkennen(grau, 0) für Motiv in Motive: shape = vorhersagen(grau, Motiv) shape = face_utils.shape_to_np(shape)#converting to NumPy Array leftEye = shape[lStart: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.convexeHull drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = 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 if key == ord("q"): break cv2.destroyAllWindows() cap.stop()

Schritt 3: Raspberry Pi-Version

Raspberry Pi-Version
Raspberry Pi-Version
Raspberry Pi-Version
Raspberry Pi-Version

Wenn die Person die Augen schließt, wird der Himbeer-Pi Sie alarmieren

VERBINDEN Sie Ihren Summer an Pin 23 (siehe Bild)

aus scipy.spatial Importentfernung

RPi. GPIO als GPIO importieren

ab zeit importieren schlaf

GPIO.setwarnings(Falsch)

GPIO.setmode(GPIO. BCM)

aus imutils importieren face_utils

Imutils importieren Dlib importieren CV2 importieren

Summer=23

GPIO.setup(Summer, GPIO. OUT)

def eye_aspect_ratio (Auge):

A = Abstand.euklidisch(Auge[1], Auge[5]) B = Abstand.euklidisch(Auge[2], Auge[4]) C = Abstand.euklidisch(Auge[0], Auge[3]) Ohr = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20Detect = dlib.get_frontal_face_detector() Predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# DAT-Datei ist der Kern des Codes

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

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["rechtes_auge"] cap=cv2. VideoCapture(0) flag=0 während True: ret, frame=cap.read() frame = imutils.resize(frame, grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) Motive = erkennen(grau, 0) für Motiv in Motive: shape = vorhersagen(grau, Motiv) shape = face_utils.shape_to_np(shape)#converting to NumPy Array leftEye = shape[lStart: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.convexeHull drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = 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 (Summer, GPIO. HIGH)

sonst: Flagge = 0

GPIO.output (Summer, GPIO. LOW)

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