Career/Drowsy Behavior Detection

개인 프로젝트 : 설계

김 정 환 2020. 12. 21. 09:36
반응형

가장 먼저 사용자인 아버지의 요구분석을 했습니다. 

 

1. 뒷목을 마사지 행동 인식

2. 행동 인식 후, 경고음 

 

저는 이 과정에서 개인화라는 요소를 넣고 싶었습니다. 아버지의 뒷목 마사지 사진만 넣어서 학습시키면 문제해결이 너무 쉬웠습니다. 그리고 일반화가 되지 않았습니다. 왜냐하면, 사람들 마다 졸음을 깨기 위한 행동이 다르기 때문입니다. A라는 사람은 코를 만질 수도 있고, B라는 사람은 관자놀이를 마사지할 수 있기 때문입니다. 그래서 사용자의 행동을 자동으로 수집하여 학습하고, 최종적으로 개인화 행동 인식이 되도록 만들고 싶었습니다. 이를 위한 방법은 다음과 같습니다. 

 

모델 초기에 사용자는 자신의 졸음을 깨기 위한 행동을 몇 장 촬영하여 데이터를 넣어 줍니다. 이는 핸드폰의 지문 인식을 위해 초기에 자신의 지문을 인식 시키는 것과 동일합니다. 하지만 지문과 다르게 이미지는 고려해야 할 feature들이 너무 많기 때문에 데이터를 더 많이 필요로 합니다. 그래서 '눈을 이용한 졸음 운전 상태 인식'을 통해 운전자의 졸음 운전을 깨기 위한 행동 데이터를 수집하기로 했습니다.

 

눈 깜박임으로 졸음 운전 상태 인식 -> 경고음 발생 -> 1초 후, 운전자의 졸음을 깨기 위한 행동을 1초마다 2번(총 2초 동안 2장의 사진)을 촬영 -> 차량 운행 종료 신호 -> 이전에 학습한 모델에 추가된 데이터를 넣어 재학습 -> 모델 성능 향상

 

위 방법에는 치명적인 약점이 있습니다. 경고음 발생 1초 후에 운전자가 졸음을 깨기 위한 행동을 할 것이라는 보장이 없다는 것 입니다. 이러한 문제점에 대해서는 이후에 Human pose estimation이라는 알고리즘을 도입하면 지문 인식처럼 몇 장의 사진으로 few-shot learning이 가능하지 않을까 생각하게 되었습니다. 이 당시에는 그대로 진행하기로 했습니다.

 

 

 

다음으로 개발 과정을 계획했습니다.

 

2020.05 ~ 2020.08 : 기술 조사

2020.06 ~ 2020.07 : 데이터 수집

2020.06 ~ 2020.08 : 알고리즘 개발

 

 

 

다음으로 기술조사를 했습니다.

제가 필요한 기술들은 다음과 같았습니다.

 

1. Eye blink detection

2. Siamese Network

3. Contrastive Loss

 

Eye blink detection에 대한 간략한 설명을 하겠습니다. Facial landmarks를 사용하여 양쪽 눈의 위치를 찾습니다. 각 눈은 총 6개의 점으로 구성됩니다. 6개의 점을 이용하여 EAR(The Eye Aspects Ratio)를 구합니다. EAR 값이 특정 Threshold 이하로 내려가면 눈이 감겼다고 인식합니다. 자세한 설명은 여기를 참조하세요.

 

Siamese Network에 대한 간략한 설명을 하겠습니다. 다루어야 하는 클래스의 종류는 많지만 그에 비해 데이터를 많이 구할 수 없는 상황에서 클래스를 구분해내기 위해 고안된 신경망입니다. 두 개의 input 이미지 데이터를 입력 받아 벡터화 시킨 뒤에 두 벡터 간의 유사도를 반환(1 또는 0)합니다. 두 이미지가 같을 경우 1, 다를 경우 0을 반환합니다. 자세한 설명은 여기를 참조하세요.

Koch, Gregory. Siamese neural networks for one-shot image recognition. ICML Deep Learning Workshop, 2015

 

Contrastive Loss에 대한 간략한 설명을 하겠습니다. 벡터화된 두 이미지가 같은 클래스인 경우 두 이미지의 거리를 가깝게 하고, 벡터화된 두 이미지가 다른 클래스인 경우 두 이미지의 거리를 최소 Margin값 이상이 되도록 합니다. margin 값 사용자가 설정합니다 (보통 margin = 1). 

 

 

기술의 원리를 구글링과 논문을 통해서 공부했습니다. 필요한 소스코드는 Github에서 얻었습니다.

 

 

 

다음으로 개발 도구를 준비했습니다.

 

 

 

다음으로 데이터 수집을 진행했습니다.

반응형

'Career > Drowsy Behavior Detection' 카테고리의 다른 글

개인 프로젝트 : 문제 해결  (0) 2020.12.25
개인 프로젝트 : 개발  (0) 2020.12.25
개인 프로젝트 : 전처리  (0) 2020.12.24
개인 프로젝트 : 데이터 수집  (0) 2020.12.21
개인 프로젝트 : 시작  (0) 2020.12.21