Daftar Isi:

Sistem Peringatan Mengantuk: 3 Langkah
Sistem Peringatan Mengantuk: 3 Langkah

Video: Sistem Peringatan Mengantuk: 3 Langkah

Video: Sistem Peringatan Mengantuk: 3 Langkah
Video: 3_Smart Anti Sleepy Device (Alat Pintar Anti Mengantuk)_JUARA 3 LKTI SE-JAWA 2024, Juli
Anonim
Sistem Peringatan Mengantuk
Sistem Peringatan Mengantuk

Setiap tahun banyak orang kehilangan nyawa karena kecelakaan lalu lintas yang fatal di seluruh dunia dan mengemudi dalam keadaan mengantuk adalah salah satu penyebab utama kecelakaan dan kematian di jalan. Kelelahan dan tidur mikro di kontrol mengemudi sering menjadi akar penyebab kecelakaan serius. Namun, tanda-tanda awal kelelahan dapat dideteksi sebelum situasi kritis muncul dan oleh karena itu, deteksi kelelahan pengemudi dan indikasinya adalah topik penelitian yang sedang berlangsung. Sebagian besar metode tradisional untuk mendeteksi kantuk didasarkan pada aspek perilaku sementara beberapa mengganggu dan dapat mengalihkan perhatian pengemudi, sementara beberapa memerlukan sensor yang mahal. Oleh karena itu, dalam makalah ini dikembangkan dan diimplementasikan sistem pendeteksi kantuk pengemudi yang ringan dan real time pada aplikasi Android. Sistem merekam video dan mendeteksi wajah pengemudi di setiap frame dengan menggunakan teknik pemrosesan gambar. Sistem ini mampu mendeteksi landmark wajah, menghitung Eye Aspect Ratio (EAR) dan Eye Closure Ratio (ECR) untuk mendeteksi kantuk pengemudi berdasarkan ambang batas adaptif. Algoritma pembelajaran mesin telah digunakan untuk menguji kemanjuran pendekatan yang diusulkan. Hasil empiris menunjukkan bahwa model yang diusulkan mampu mencapai akurasi 84% menggunakan pengklasifikasi hutan acak.

Langkah 1: Hal-hal yang Anda Butuhkan

1. RASPBERRY PI

2. WEBCAM (C270 HD WEB CAM UNTUK HASIL YANG LEBIH BAIK)

Versi PC mungkin memerlukan beberapa perubahan dalam kode

Langkah 2: Kode Python Dengan Dataset Prediktor Bentuk Mata (Versi PC)

untuk mendeteksi mata secara lebih efektif dalam video waktu nyata, kita dapat menggunakan file.dat di bawah ini.

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

Unduh file.dat dari tautan di atas dan jalankan kode python di bawah ini

kode python

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

def eye_aspect_ratio(mata):

A = jarak.euclidean(mata[1], mata[5]) B = jarak.euclidean(mata[2], mata[4]) C = jarak.euclidean(mata[0], mata[3]) telinga = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# File dat adalah inti dari kode

(lMulai, akhir) = face_utils. FACIAL_LANDMARKS_68_IDXS["mata_kiri"]

(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, lebar=450) abu-abu = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) subject = detect(abu-abu, 0) untuk subjek dalam subjek: shape = predict(abu-abu, subjek) shape = face_utils.shape_to_np(shape)#mengonversi ke NumPy Array leftEye = shape[lStart:lEnd] rightEye = bentuk[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull (mata kanan) cv2.convexHull 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()

Langkah 3: Versi Raspberry Pi

Versi Raspberry Pi
Versi Raspberry Pi
Versi Raspberry Pi
Versi Raspberry Pi

ketika orang menutup matanya maka raspberry pi akan memberi Anda peringatan

HUBUNGKAN buzzer Anda ke pin 23 (lihat gambar)

dari jarak impor scipy.spatial

impor RPi. GPIO sebagai GPIO

dari waktu impor tidur

GPIO.setwarnings(Salah)

GPIO.setmode(GPIO. BCM)

dari imutils impor face_utils

impor imutils impor dlib impor cv2

bel = 23

GPIO.setup(buzzer, GPIO. OUT)

def eye_aspect_ratio(mata):

A = jarak.euclidean(mata[1], mata[5]) B = jarak.euclidean(mata[2], mata[4]) C = jarak.euclidean(mata[0], mata[3]) telinga = (A + B) / (2.0 * C) return ear thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector() predict = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# File dat adalah inti dari kode

(lMulai, akhir) = face_utils. FACIAL_LANDMARKS_68_IDXS["mata_kiri"]

(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, lebar=450) abu-abu = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) subject = detect(abu-abu, 0) untuk subjek dalam subjek: shape = prediksi(abu-abu, subjek) shape = face_utils.shape_to_np(shape)#mengonversi ke NumPy Array leftEye = shape[lStart:lEnd] rightEye = bentuk[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull (mata kanan) cv2.convexHull 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(buzzer, GPIO. HIGH)

lain: bendera = 0

GPIO.output(buzzer, GPIO. LOW)

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

Direkomendasikan: