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 이미지'와 비슷해지는 것으로 관찰되었기 때문이다.
'Career > Drowsy Behavior Detection' 카테고리의 다른 글
개인 프로젝트 : 테스트 (0) | 2020.12.25 |
---|---|
개인 프로젝트 : 문제 해결 (0) | 2020.12.25 |
개인 프로젝트 : 전처리 (0) | 2020.12.24 |
개인 프로젝트 : 데이터 수집 (0) | 2020.12.21 |
개인 프로젝트 : 설계 (0) | 2020.12.21 |