Мазмуну:

Уйкусуздукту эскертүү системасы: 3 кадам
Уйкусуздукту эскертүү системасы: 3 кадам

Video: Уйкусуздукту эскертүү системасы: 3 кадам

Video: Уйкусуздукту эскертүү системасы: 3 кадам
Video: Аял кантсе, эркекти тошокто кандырат? 2024, Ноябрь
Anonim
Уйкусуздукту эскертүү системасы
Уйкусуздукту эскертүү системасы

Жыл сайын дүйнө жүзү боюнча өлүмгө алып келген жол кырсыгынан көптөгөн адамдар өмүрлөрүн кыйышат жана уйкусурап айдоо жол кырсыктарынын жана өлүмдүн негизги себептеринин бири болуп саналат. Айдоочулук башкаруудагы чарчоо жана микро уйку көп учурда олуттуу кырсыктардын түпкү себеби болуп саналат. Бирок, чарчоонун баштапкы белгилери оор кырдаал жаралганга чейин аныкталышы мүмкүн, демек, айдоочунун чарчоосу жана анын көрсөткүчү изилдөө темасы болуп саналат. Уйкусуроону аныктоонун салттуу ыкмаларынын көбү жүрүм -турум аспектилерине негизделген, кээ бирлери интрузивдүү жана айдоочулардын көңүлүн алагды кылышы мүмкүн, кээ бирлери кымбат сенсорлорду талап кылат. Ошондуктан, бул макалада жеңил, салмактуу, реалдуу убакытта айдоочунун уйкусуздугун аныктоо системасы иштелип чыккан жана Android тиркемесине киргизилген. Система видеолорду жазат жана сүрөттү иштетүү ыкмаларын колдонуу менен ар бир кадрда айдоочунун жүзүн аныктайт. Система жүздүн белгилерин аныктоого жөндөмдүү, адаптивдүү босогонун негизинде айдоочунун уйкусуроосун аныктоо үчүн Eye Aspect Ratio (EAR) жана Elos Close Ratio (ECR) эсептейт. Сунушталган ыкманын эффективдүүлүгүн текшерүү үчүн машиналарды үйрөнүү алгоритмдери колдонулган. Эмпирикалык жыйынтыктар сунушталган модель кокус токой классификаторун колдонуу менен 84% тактыкка жетүүгө жөндөмдүү экенин көрсөтүүдө.

1 -кадам: Сизге керектүү нерселер

1. РЕППЕРРИ ПИ

2. WEBCAM (C270 HD WEB CAM МЫКТЫ ЖЫЙЫНТЫКТАР ҮЧҮН)

Компьютердин версиясына кодго кээ бир өзгөртүүлөр талап кылынышы мүмкүн

2 -кадам: Python Code with Eyes Shape Predictor Dataset (PC Version)

реалдуу убакыт видеосунда көздү эффективдүү аныктоо үчүн, биз бул.dat файлын колдоно алабыз.

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

Жогорудагы шилтемеден.dat файлын түшүрүп, төмөндөгү питон кодун иштетиңиз

Python коду

scipy.космодук импорттук аралыктан

def eye_aspect_ratio (көз):

A = аралык.евклиддик (көз [1], көз [5]) В = аралык.евклиддик (көз [2], көз [4]) С = аралык.евклиддик (көз [0], көз [3]) кулак = (A + B) / (2.0 * C) кайтуу кулагы кыркуу = 0.25 frame_check = 20 аныктоо = dlib.get_frontal_face_detector () болжам = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# 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 while True: ret, frame = cap.read () frame = imutils.resize (frame, туурасы = 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.convex drawContours (кадр, [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 (кадр, "**************** АЛЕРТ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #басып чыгаруу (" Dro wsy ") else: flag = 0 cv2.imshow (" Frame ", frame) key = cv2.waitKey (1) & 0xFF if key == ord (" q "): break cv2.destroyAllWindows () cap.stop ()

3 -кадам: Raspberry Pi версиясы

Raspberry Pi версиясы
Raspberry Pi версиясы
Raspberry Pi версиясы
Raspberry Pi версиясы

адамдар көзүн жумганда, малина пи сизге эскертүү берет

Зумерди 23 -пинге туташтырыңыз (сүрөттү караңыз)

scipy.космостук импорттук аралыктан

GPO катары RPi. GPIO импорттоо

Убакытты импорттоо

GPIO.setwarnings (False)

GPIO.setmode (GPIO. BCM)

imutils импорт face_utils

импорт имутил импорт длиб импорт cv2

коңгуроо = 23

GPIO.setup (ызы -чуу, GPIO. OUT)

def eye_aspect_ratio (көз):

A = аралык.евклид (көз [1], көз [5]) В = аралык.евклид (көз [2], көз [4]) С = аралык.евклиддик (көз [0], көз [3]) кулак = (A + B) / (2.0 * C) кайтуу кулагы кыркуу = 0.25 frame_check = 20 аныктоо = dlib.get_frontal_face_detector () болжам = dlib.shape_predictor (". / Shape_predictor_68_face_landmarks.dat")# 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 while True: ret, frame = cap.read () frame = imutils.resize (frame, туурасы = 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.convex drawContours (кадр, [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 (кадр, "**************** АЛЕРТ! *********** ***** ", (10, 325), cv2. FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2) #басып чыгаруу (" Dro wsy ")

GPIO.output (ызылдак, GPIO. HIGH)

башка: желек = 0

GPIO.output (ызылдак, GPIO. LOW)

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

Сунушталууда: