İçindekiler:

Uyuşukluk Uyarı Sistemi: 3 Adım
Uyuşukluk Uyarı Sistemi: 3 Adım

Video: Uyuşukluk Uyarı Sistemi: 3 Adım

Video: Uyuşukluk Uyarı Sistemi: 3 Adım
Video: Endokrin Sistem-3 Tiroit ve Paratiroit Bezi | Ayt Biyoloji Konu Anlatımı 11. Sınıf | 2024 2024, Temmuz
Anonim
Uyuşukluk Uyarı Sistemi
Uyuşukluk Uyarı Sistemi

Her yıl dünya çapında birçok insan ölümcül trafik kazaları nedeniyle hayatını kaybetmekte ve uykulu araç kullanmak trafik kazalarının ve ölümlerin başlıca nedenlerinden biridir. Sürüş kontrollerindeki yorgunluk ve mikro uyku, genellikle ciddi kazaların temel nedenidir. Bununla birlikte, kritik bir durum ortaya çıkmadan önce yorgunluğun ilk belirtileri tespit edilebilir ve bu nedenle sürücü yorgunluğunun tespiti ve bunun göstergesi devam eden bir araştırma konusudur. Uyuşukluğu tespit etmek için kullanılan geleneksel yöntemlerin çoğu davranışsal yönlere dayanırken, bazıları müdahalecidir ve sürücülerin dikkatini dağıtabilir, bazıları ise pahalı sensörler gerektirir. Bu nedenle, bu yazıda, Android uygulaması üzerinde hafif, gerçek zamanlı bir sürücü uyuşukluk tespit sistemi geliştirildi ve uygulandı. Sistem videoları kaydeder ve görüntü işleme tekniklerini kullanarak her karede sürücünün yüzünü algılar. Sistem, yüzdeki önemli noktaları tespit edebiliyor, Adaptif eşiklemeye dayalı olarak sürücünün uykusunu algılamak için Göz En Boy Oranı (EAR) ve Göz Kapatma Oranı (ECR) hesaplıyor. Önerilen yaklaşımın etkinliğini test etmek için makine öğrenme algoritmaları kullanılmıştır. Ampirik sonuçlar, önerilen modelin rastgele orman sınıflandırıcı kullanarak %84 doğruluk elde edebildiğini göstermektedir.

Adım 1: İhtiyacınız Olan Şeyler

1. Ahududu PI

2. WEBCAM (DAHA İYİ SONUÇLAR İÇİN C270 HD WEB CAM)

PC sürümü kodda bazı değişikliklere ihtiyaç duyabilir

Adım 2: Eyes Shape Predictor Dataset ile Python Kodu (PC Versiyonu)

gerçek zamanlı bir videoda gözleri çok daha etkili bir şekilde algılamak için aşağıdaki.dat dosyasını kullanabiliriz.

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

.dat dosyasını yukarıdaki bağlantıdan indirin ve aşağıdaki python kodunu çalıştırın

Python kodu

scipy.uzaydan içe aktarma uzaklığı imutils'den içe aktarma face_utils içe aktarma imutils içe aktarma dlib içe aktarma cv2

def eye_aspect_ratio(göz):

A = uzaklık.öklid(göz[1], göz[5]) B = uzaklık.öklid(göz[2], göz[4]) C = uzaklık.öklid(göz[0], göz[3]) kulak = (A + B) / (2.0 * C) dönüş kulak eşiği = 0.25 frame_check = 20 tespit = dlib.get_frontal_face_detector() tahmin = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Dat dosyası kodun özüdür

(lBaşlat, lBitiş) = face_utils. FACIAL_LANDMARKS_68_IDXS["left_eye"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["right_eye"] cap=cv2. VideoCapture(0) flag=0 iken True: ret, frame=cap.read() frame = imutils.resize(frame, grey = cv2.cvtColor(çerçeve, cv2. COLOR_BGR2GRAY) konular = konulardaki konu için algıla(gri, 0): şekil = tahmin(gri, konu) şekil = face_utils.shape_to_np(shape)#NumPy Dizisine dönüştürme leftEye = şekil[lStart:lEnd] rightEye = şekil[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) kulak = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convex drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) kulak = frame_check: cv2.putText(frame, "****************ALERT!****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(çerçeve, "****************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()

3. Adım: Raspberry Pi Sürümü

Ahududu Pi Sürümü
Ahududu Pi Sürümü
Ahududu Pi Sürümü
Ahududu Pi Sürümü

Kişiler gözlerini kapattığında ahududu pi size uyarı verecektir.

Buzzer'ınızı pim 23'e BAĞLAYIN (resme bakın)

scipy.spatial'den içe aktarma mesafesi

RPi. GPIO'yu GPIO olarak içe aktar

zamandan içe uyku

GPIO.setwarnings(Yanlış)

GPIO.setmode(GPIO. BCM)

imutils'den face_utils'i içe aktar

imutils'i içe aktar dlib'i içe aktar cv2'yi içe aktar

zil=23

GPIO.setup(buzzer, GPIO. OUT)

def eye_aspect_ratio(göz):

A = uzaklık.öklid(göz[1], göz[5]) B = uzaklık.öklid(göz[2], göz[4]) C = uzaklık.öklid(göz[0], göz[3]) kulak = (A + B) / (2.0 * C) dönüş kulak eşiği = 0.25 frame_check = 20 tespit = dlib.get_frontal_face_detector() tahmin = dlib.shape_predictor(".\shape_predictor_68_face_landmarks.dat")# Dat dosyası kodun özüdür

(lBaşlat, lBitiş) = face_utils. FACIAL_LANDMARKS_68_IDXS["left_eye"]

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["right_eye"] cap=cv2. VideoCapture(0) flag=0 iken True: ret, frame=cap.read() frame = imutils.resize(frame, grey = cv2.cvtColor(çerçeve, cv2. COLOR_BGR2GRAY) konular = konulardaki konu için algıla(gri, 0): şekil = tahmin(gri, konu) şekil = face_utils.shape_to_np(shape)#NumPy Dizisine dönüştürme leftEye = şekil[lStart:lEnd] rightEye = şekil[rStart:rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) kulak = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convex) drawContours(frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours(frame, [rightEyeHull], -1, (0, 255, 0), 1) kulak = frame_check: cv2.putText(frame, "****************ALERT!****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText(çerçeve, "****************ALERT!*********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #print ("Dro" wsy")

GPIO.output(buzzer, GPIO. HIGH)

başka: bayrak = 0

GPIO.output(buzzer, GPIO. LOW)

cv2.imshow("Çerçeve", çerçeve) anahtar = cv2.waitKey(1) & 0xFF ise anahtar == ord("q"): break cv2.destroyAllWindows() cap.stop()

Önerilen: