Სარჩევი:

ძილიანობის გაფრთხილების სისტემა: 3 ნაბიჯი
ძილიანობის გაფრთხილების სისტემა: 3 ნაბიჯი

ვიდეო: ძილიანობის გაფრთხილების სისტემა: 3 ნაბიჯი

ვიდეო: ძილიანობის გაფრთხილების სისტემა: 3 ნაბიჯი
ვიდეო: ჯენიფერ გეიზი - "უკიდურესი სიმაღლე" - აუდიო წიგნი 2024, ივლისი
Anonim
ძილიანობის გაფრთხილების სისტემა
ძილიანობის გაფრთხილების სისტემა

ყოველწლიურად ბევრი ადამიანი იღუპება სიცოცხლეში ფატალური ავტოსაგზაო შემთხვევების გამო მთელს მსოფლიოში და ძილიან ძრავას წარმოადგენს საგზაო შემთხვევებისა და სიკვდილის ერთ -ერთი მთავარი მიზეზი. დაღლილობა და მიკრო ძილი მართვის დროს ხშირად სერიოზული უბედური შემთხვევების ძირეული მიზეზია. თუმცა, დაღლილობის საწყისი ნიშნები შეიძლება გამოვლინდეს კრიტიკული სიტუაციის წარმოქმნამდე და, შესაბამისად, მძღოლის დაღლილობის გამოვლენა და მისი მითითება კვლევის მიმდინარე თემაა. ძილიანობის გამოვლენის ტრადიციული მეთოდების უმრავლესობა ემყარება ქცევის ასპექტებს, ზოგი კი ინტრუზიულია და შეიძლება მძღოლების ყურადღების გამახვილება, ზოგი კი ძვირადღირებულ სენსორებს მოითხოვს. ამრიგად, ამ ნაშრომში შემუშავებულია და რეალურ დროში მძღოლის ძილიანობის გამოვლენის სისტემა შემუშავებულია და დანერგილია Android აპლიკაციაზე. სისტემა აფიქსირებს ვიდეოებს და აღმოაჩენს მძღოლის სახეს ყველა ჩარჩოში გამოსახულების დამუშავების ტექნიკის გამოყენებით. სისტემას შეუძლია სახის ნიშნების გამოვლენა, გამოთვლის თვალის ასპექტის თანაფარდობას (EAR) და თვალის დახურვის კოეფიციენტს (ECR), რათა დაადგინოს მძღოლის ძილიანობა ადაპტირებულ ზღურბლზე დაყრდნობით. გამოყენებულია მანქანათმცოდნეობის ალგორითმები შემოთავაზებული მიდგომის ეფექტურობის შესამოწმებლად. ემპირიული შედეგები აჩვენებს, რომ შემოთავაზებულ მოდელს შეუძლია ტყის შემთხვევითი კლასიფიკატორის გამოყენებით მიაღწიოს სიზუსტეს 84%.

ნაბიჯი 1: ის, რაც გჭირდებათ

1. ჟოლოს პი

2. WEBCAM (C270 HD WEB CAM უკეთესი შედეგებისთვის)

კომპიუტერის ვერსიას შეიძლება სჭირდება ცვლილებები კოდში

ნაბიჯი 2: Python Code With Eyes Shape Predictor Dataset (PC ვერსია)

რეალურად რეალურ დროში ვიდეოში თვალების გამოვლენის მიზნით, ჩვენ შეგვიძლია გამოვიყენოთ ეს ქვემოთ მოცემული ფაილი.

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

ჩამოტვირთეთ.dat ფაილი ზემოთ ბმულიდან და გაუშვით ქვემოთ პითონის კოდი

პითონის კოდი

scipy.spatial იმპორტის მანძილი imutils იმპორტი face_utils იმპორტი imutils იმპორტი dlib იმპორტი cv2

def eye_aspect_ratio (თვალი):

A = მანძილი. ევკლიდი (თვალი [1], თვალი [5]) B = მანძილი. ევკლიდი (თვალი [2], თვალი [4]) C = მანძილი. ევკლიდიანი (თვალი [0], თვალი [3]) ყური = (A + B) / (2.0 * C) დაბრუნების ყური thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat ფაილი არის კოდის არსი

(l დაწყება, ბოლოს) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]

(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, width = 450) ნაცრისფერი = cv2.cvtColor (ჩარჩო, cv2. COLOR_BGR2GRAY) სუბიექტები = საგნების ამოცნობა (ნაცრისფერი, 0) საგნებში: ფორმა = პროგნოზირება (ნაცრისფერი, საგანი) ფორმა = face_utils.shape_to_np (ფორმა)#NumPy მასივის კონვერტაცია 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 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (ჩარჩო, "******************************************", (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) #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: ჟოლოს ვერსია

ჟოლოს ვერსია
ჟოლოს ვერსია
ჟოლოს ვერსია
ჟოლოს ვერსია

როდესაც ადამიანები დახუჭავენ თვალებს, ჟოლოს პი მოგცემთ გაფრთხილებას

დაუკავშირდით თქვენს ზუმერს 23 პინზე (იხილეთ სურათი)

scipy. სივრცული იმპორტის მანძილიდან

იმპორტი RPi. GPIO როგორც GPIO

დროიდან იმპორტი ძილის

GPIO.setwarnings (ყალბი)

GPIO.setmode (GPIO. BCM)

imutils– დან face_utils იმპორტი

იმპორტი imutils იმპორტი dlib იმპორტი cv2

ზუზერი = 23

GPIO.setup (ზარი, GPIO. OUT)

def eye_aspect_ratio (თვალი):

A = მანძილი. ევკლიდი (თვალი [1], თვალი [5]) B = მანძილი. ევკლიდი (თვალი [2], თვალი [4]) C = მანძილი. ევკლიდიანი (თვალი [0], თვალი [3]) ყური = (A + B) / (2.0 * C) დაბრუნების ყური thresh = 0.25 frame_check = 20 detect = dlib.get_frontal_face_detector () predict = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# Dat ფაილი არის კოდის არსი

(l დაწყება, ბოლოს) = face_utils. FACIAL_LANDMARKS_68_IDXS ["left_eye"]

(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, width = 450) ნაცრისფერი = cv2.cvtColor (ჩარჩო, cv2. COLOR_BGR2GRAY) სუბიექტები = საგნების ამოცნობა (ნაცრისფერი, 0) საგნებში: ფორმა = პროგნოზირება (ნაცრისფერი, საგანი) ფორმა = face_utils.shape_to_np (ფორმა)#NumPy მასივის კონვერტაცია 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 drawContours (frame, [leftEyeHull], -1, (0, 255, 0), 1) cv2.drawContours (frame, [rightEyeHull], -1, (0, 255, 0), 1) if ear = frame_check: cv2.putText (ჩარჩო, "******************************************", (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) #print (" Dro ცუდ ")

GPIO.output (ზარი, GPIO. HIGH)

სხვა: დროშა = 0

GPIO.output (ზარი, GPIO. LOW)

cv2.imshow ("ჩარჩო", ჩარჩო) გასაღები = cv2.waitKey (1) & 0xFF თუ გასაღები == ord ("q"): შესვენება cv2.destroyAllWindows () cap.stop ()

გირჩევთ: