66yurimi99 / Z-ERO

졸음 운전 사고 방지를 위한 DMS 시스템과 자율주행 시스템(ZERO; Zㅔ발 Eyes Re-Open)
0 stars 0 forks source link

[DMS] 운전자 졸음 여부 판단 알고리즘 및 실행코드 #50

Closed jis0202 closed 1 year ago

jis0202 commented 1 year ago

AI model을 통해 운전자 눈감음 판단 후 정상, 졸음, 잠듬 3단계의 상태로 구분하는 알고리즘 및 실행 코드 작성 완료 했습니다. -OV.py 모델 실행 및 추론을 위한 OpenVINO 활용 파일 -DMS.py 추론 결과를 통한 운전자 상태 계산 알고리즘 파일 -main.py 실행용 main 파일

운전자 상태

-눈을 감은 채 지속되는 시간이 0.3초 이하면 정상 눈 상태 -지속시간이 0.3초를 초과하고 눈을 뜨면 이상 상태로 보고 cnt 증가 -cnt가 3 이상이면 졸음 상태로 판단 -눈 감음 지속시간이 3초 이상이면 잠듬 상태로 판단

-status = 0 (defalut): 정상 -status = 1: 졸음 -status = 2: 잠듬

close_time, blink_time = 0, 0
if self.pre_flag == 0 and cur_flag == 1:
    self.blink_start = time.time()
    self.close_start = time.time()
elif self.pre_flag == 1 and cur_flag == 0:
    self.blink_end = time.time()
elif self.pre_flag == 0 and cur_flag == 0:
    self.blink_start = 0
    self.blink_end = 0
elif self.pre_flag == 1 and cur_flag == 1:
    self.close_end = time.time()
close_time = self.close_end - self.close_start
blink_time = self.blink_end - self.blink_start
if blink_time <= 0.3 and blink_time > 0:
    self.cnt = 0
    #print("멀쩡")
elif blink_time > 0.3:
    self.cnt += 1
    print(self.cnt)
    if self.cnt >= 3:
        status = 1
        print("졸음!")
if close_time >= 3:
    status = 2
    print("잠듬!")
self.pre_flag = cur_flag