विषयसूची:

तंद्रा चेतावनी प्रणाली: ३ चरण
तंद्रा चेतावनी प्रणाली: ३ चरण

वीडियो: तंद्रा चेतावनी प्रणाली: ३ चरण

वीडियो: तंद्रा चेतावनी प्रणाली: ३ चरण
वीडियो: हैली भजन || Rajasthani Bhajan Mala | राजस्थानी भजन माला | Sant Bhajana Nand | संत भजनानंद जी 2024, नवंबर
Anonim
तंद्रा चेतावनी प्रणाली
तंद्रा चेतावनी प्रणाली

हर साल दुनिया भर में घातक सड़क दुर्घटनाओं के कारण कई लोगों की जान चली जाती है और नींद में गाड़ी चलाना सड़क दुर्घटनाओं और मौत के प्राथमिक कारणों में से एक है। ड्राइविंग नियंत्रण में थकान और सूक्ष्म नींद अक्सर गंभीर दुर्घटनाओं का मूल कारण होती है। हालांकि, एक गंभीर स्थिति उत्पन्न होने से पहले थकान के शुरुआती संकेतों का पता लगाया जा सकता है और इसलिए, ड्राइवर की थकान का पता लगाना और उसका संकेत शोध का विषय है। उनींदापन का पता लगाने के अधिकांश पारंपरिक तरीके व्यवहार संबंधी पहलुओं पर आधारित होते हैं, जबकि कुछ दखल देने वाले होते हैं और ड्राइवरों को विचलित कर सकते हैं, जबकि कुछ को महंगे सेंसर की आवश्यकता होती है। इसलिए, इस पत्र में, एक हल्के वजन, वास्तविक समय चालक की उनींदापन पहचान प्रणाली विकसित और एंड्रॉइड एप्लिकेशन पर लागू की गई है। सिस्टम वीडियो को रिकॉर्ड करता है और इमेज प्रोसेसिंग तकनीकों को नियोजित करके हर फ्रेम में ड्राइवर के चेहरे का पता लगाता है। यह प्रणाली चेहरे के लैंडमार्क का पता लगाने में सक्षम है, अनुकूली थ्रेशोल्डिंग के आधार पर ड्राइवर की उनींदापन का पता लगाने के लिए आई एस्पेक्ट रेशियो (ईएआर) और आई क्लोजर रेशियो (ईसीआर) की गणना करती है। प्रस्तावित दृष्टिकोण की प्रभावकारिता का परीक्षण करने के लिए मशीन लर्निंग एल्गोरिदम को नियोजित किया गया है। अनुभवजन्य परिणाम प्रदर्शित करते हैं कि प्रस्तावित मॉडल यादृच्छिक वन वर्गीकरण का उपयोग करके 84% की सटीकता प्राप्त करने में सक्षम है।

चरण 1: चीजें जो आपको चाहिए

1.रास्पबेरी पीआई

2.वेबकैम (C270 HD वेब कैम बेहतर परिणामों के लिए)

पीसी संस्करण को कोड में कुछ बदलावों की आवश्यकता हो सकती है

चरण 2: आइज़ शेप प्रेडिक्टर डेटासेट के साथ पायथन कोड (पीसी संस्करण)

वास्तविक समय के वीडियो में आंखों का अधिक प्रभावी ढंग से पता लगाने के लिए, हम इस sbelow.dat फ़ाइल का उपयोग कर सकते हैं।

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

उपरोक्त लिंक से.dat फ़ाइल डाउनलोड करें और नीचे दिए गए पायथन कोड को चलाएं

पायथन कोड

scipy.spatial से आयात दूरी से imutils आयात face_utils आयात imutils आयात dlib आयात cv2

def eye_aspect_ratio(आँख):

ए = दूरी। यूक्लिडियन (आंख [1], आंख [5]) बी = दूरी। यूक्लिडियन (आंख [2], आंख [4]) सी = दूरी। यूक्लिडियन (आंख [0], आंख [3]) कान = (ए + बी) / (2.0 * सी) रिटर्न ईयर थ्रेश = 0.25 फ्रेम_चेक = 20 डिटेक्ट = dlib.get_frontal_face_detector () प्रेडिक्ट = dlib.shape_predictor(.\shape_predictor_68_face_landmarks.dat")# डेट फाइल कोड की जड़ है

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

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["right_eye"] cap=cv2. VideoCapture(0) flag=0 जबकि सही है: ret, फ्रेम=cap.read() फ्रेम = imutils.resize(frame, धूसर = cv2.cvtColor (फ्रेम, cv2. COLOR_BGR2GRAY) विषय = विषयों में विषय के लिए (ग्रे, 0) का पता लगाएं: आकार = भविष्यवाणी (ग्रे, विषय) आकार = face_utils.shape_to_np (आकार) # NumPy Array में कनवर्ट करना leftEye = आकार [lStart:lEnd] rightEye = आकार [rStart: rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) Ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull cv2.convexHull drawContours (फ्रेम, [बाएं आई हल], -1, (0, 255, 0), 1) cv2.drawContours (फ्रेम, [दाएं आई हल], -1, (0, 255, 0), 1) अगर कान = फ्रेम_चेक: सीवी 2.putText (फ्रेम, "****************ALERT!****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (फ्रेम, "****************ALERT! *********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #प्रिंट ("Dro" wsy") और: ध्वज = 0 cv2.imshow ("फ़्रेम", फ़्रेम) कुंजी = cv2.waitKey(1) और 0xFF यदि कुंजी == ord("q"): cv2.destroyAllWindows() cap.stop() तोड़ें

चरण 3: रास्पबेरी पाई संस्करण

रास्पबेरी पाई संस्करण
रास्पबेरी पाई संस्करण
रास्पबेरी पाई संस्करण
रास्पबेरी पाई संस्करण

जब लोग अपनी आँखें बंद कर लेते हैं तो रास्पबेरी पाई आपको अलर्ट कर देगी

अपने बजर को 23 पिन करने के लिए कनेक्ट करें (चित्र देखें)

scipy.spatial आयात दूरी से

RPI. GPIO को GPIO के रूप में आयात करें

समय से आयात नींद

GPIO.चेतावनी (गलत)

GPIO.सेटमोड (GPIO. BCM)

imutils से face_utils आयात करें

आयात imutils आयात dlib आयात cv2

बजर=23

GPIO.setup (बजर, GPIO. OUT)

def eye_aspect_ratio(आँख):

ए = दूरी। यूक्लिडियन (आंख [1], आंख [5]) बी = दूरी। यूक्लिडियन (आंख [2], आंख [4]) सी = दूरी। यूक्लिडियन (आंख [0], आंख [3]) कान = (ए + बी) / (2.0 * सी) रिटर्न ईयर थ्रेश = 0.25 फ्रेम_चेक = 20 डिटेक्ट = dlib.get_frontal_face_detector () प्रेडिक्ट = dlib.shape_predictor(.\shape_predictor_68_face_landmarks.dat")# डेट फाइल कोड की जड़ है

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

(rStart, rEnd) = face_utils. FACIAL_LANDMARKS_68_IDXS["right_eye"] cap=cv2. VideoCapture(0) flag=0 जबकि सही है: ret, फ्रेम=cap.read() फ्रेम = imutils.resize(frame, धूसर = cv2.cvtColor (फ्रेम, cv2. COLOR_BGR2GRAY) विषय = विषयों में विषय के लिए (ग्रे, 0) का पता लगाएं: आकार = भविष्यवाणी (ग्रे, विषय) आकार = face_utils.shape_to_np (आकार) # NumPy Array में कनवर्ट करना leftEye = आकार [lStart:lEnd] rightEye = आकार [rStart: rEnd] leftEAR = eye_aspect_ratio(leftEye) rightEAR = eye_aspect_ratio(rightEye) Ear = (leftEAR + rightEAR) / 2.0 leftEyeHull = cv2.convexHull(leftEye) rightEyeHull = cv2.convexHull cv2.convexHull drawContours (फ्रेम, [बाएं आई हल], -1, (0, 255, 0), 1) cv2.drawContours (फ्रेम, [दाएं आई हल], -1, (0, 255, 0), 1) अगर कान = फ्रेम_चेक: सीवी 2.putText (फ्रेम, "****************ALERT!****************", (10, 30), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) cv2.putText (फ्रेम, "****************ALERT! *********** *****", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #प्रिंट ("Dro" डब्ल्यूएसआई")

GPIO.output (बजर, GPIO. HIGH)

अन्य: झंडा = 0

GPIO.output (बजर, GPIO. LOW)

cv2.imshow("Frame", फ्रेम) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break cv2.destroyAllWindows() cap.stop()

सिफारिश की: