Career/Drowsy Behavior Detection

개인 프로젝트 : 개발

김 정 환 2020. 12. 25. 00:28
반응형

1. 학습시키는 알고리즘

 

1) 데이터 묶기

    - 경로 저장 : Dictionary를 만들어서 'drowsy', 'normal'를 key로 설정하고 drowsy 이미지 경로와 normal 이미지 경로를 value로 저장합니다.

 

    - 데이터 분할 : Drowsy와 normal 이미지 데이터를 train : validation = 0.8 : 0.2로 분할합니다.

 

    - 묶음 : [normal, normal, normal, drowsy, normal, normal, normal, drowsy, ...] 형식으로 리스트에 이미지들의 경로를 저장힙니다. 즉, (A, A), (A, B)가 짝을 이루어 차례대로 정렬됩니다.

 

    - 데이터 가져오기 : Image와 numpy를 통해 이미지 경로에서 이미지 데이터를 가져옵니다.

 

    - 전처리 : 이미지 데이터를 pair로 묶어서 저장하기 전에 전처리를 해줍니다.

 

    - 레이블링 : (A, A)로 묶인 데이터의 label = 1, (A, B)로 묶인 데이터의 label = 0으로 설정

 

    - 섞기 : 묶여서 저장된 데이터에 random 라이브러리를 통해 shuffling 적용

    

 

2) 모델 학습시키기

    - 데이터 형식 바꾸기 : (A, A) / (A, B) 묶음 이미지들을 tensor로 바꾸기

 

    - Feature map 추출 : 한 쌍의 이미지 묶음을 넣고 feature map을 추출

 

    - Loss 값 계산 : margin = 1로 설정하고, 2개의 feature map과 label을 모두 contrastive loss에 입력

 

    - Back propagation : loss 값을 이용해서 back propagation 수행

 

 

 

2. 실시간 인식하는 알고리즘

    - 카메라를 통해 입력되는 실시간 데이터를 가지고 행동을 인식하는 알고리즘

    - 이미 학습된 모델을 가지고 진행

 

 

1) 실시간 인식

    - 전처리 : 카메라를 통해 들어온 이미지를 전처리(standardization, cropping, resize)

 

    - Feature map 추출 : (카메라에서 들어온 이미지, drowsy 이미지)를 묶음으로 만들고 모델에 넣어 feature map 추출

 

    - Euclidean distance 계산 : 두 feature map 사이의 Euclidean distance 계산

 

    - Threshold : Euclidean distance가 Threshold = 0.7 이하로 내려가면, 경고음을 생성

        + Theshold = 0.7의 기준은 10번의 테스트를 통해 평균적으로 0.7 정도에서 '카메라에서 들어온 이미지'의 행동이 'drowsy 이미지'와 비슷해지는 것으로 관찰되었기 때문이다. 

반응형