Career/Drowsy Behavior Detection

개인 프로젝트 : 개선

김 정 환 2020. 12. 25. 17:56
반응형

1. 속도

    - '개인 프로젝트 : 테스트' 편에서 보았듯이 영상이 다소 느리게 보여짐을 볼 수 있었습니다. 속도를 향상 시키기 위해서 2가지를 생각해 보았습니다.

 

1) 얕은 망 사용

    - 적용했던 CNN 망의 깊이는 10 layers이었습니다. Hyper parameter tuning을 성능 평가를 했을 때, layer의 개수는 성능에 그다지 큰 영향을 미치지 않았습니다. 따라서 layer의 개수를 줄인다면 영상의 처리 속도를 향상시킬 수 있습니다.

 

 

 

2. 정확도

    - 문제 : '일반 운전 행동'과 '졸음을 깨기 위한 행동'을 구분하긴 하지만, 때때로 구분이 잘 안되었습니다. 테스트 과정에서 분명히 '졸음을 깨기 위한 행동'으로 오른손을 뒷목으로 가져가지만, Dissimilarity는 그대로 인 것을 확인할 수 있었습니다. 그리고 잠시 후, 오른손이 살짝 밑으로 내려오고 나서 Dissimilarity가 0.7 이하로 내려가는 것을 관찰할 수 있었습니다.

 

 

    - 원인 : 원인은 2가지라고 생각했습니다.

        + 첫 번째 원인 : 모델에는 2가지 이미지가 한 쌍으로 들어갑니다. 하나는 카메라에서 실시간으로 들어오는 이미지, 다른 하나는 '졸음을 깨기 위한 행동 이미지' 입니다. 현재 '졸음을 깨기 위한 행동 이미지'는 계속 1장으로 고정입니다. 따라서 이 1장과 유사한 행동만 인식하게 됩니다.

 

        + 두 번째 원인 : 전처리를 했다고 해도, 색상과 명도가 영향을 미칠 수 있다고 생각합니다. 예를 들어서, 여름에 반팔을 입은 데이터는 팔꿈치까지 살색입니다. 그리고 이 데이터로 학습시킨 모델이 있다고 합시다. 그러면 겨울에는 손까지만 살색을 보이기 때문에 모델이 인식을 못할 수 있습니다.

 

 

    - 해결

        + 첫 번째 해결 방법 : 모델에 이미지를 입력할 때, '졸음을 깨기 위한 행동 이미지' test set 데이터를 만들고, 이곳에서 무작위로 가져와 카메라에서 실시간으로 들어온 이미지와 한 쌍을 이루어 모델에 입력합니다. 

 

        + 두 번째 해결 방법 : Human pose estimation 딥러닝을 사용합니다. Human pose estimation은 인간의 골격을 인식하여 skeleton으로 보여주는 딥러닝 기술입니다. 아래 이미지를 보면 인간의 몸을 18개의 점과 선으로 표현하고 있습니다. 

Skeleton을 이용하면 이미지의 색상, 명도에 영향을 받지 않고 운전자의 행동을 인식할 수 있다는 것 입니다. 따라서 유으미한 feature을 추출할 수 있기 때문에 정확도가 향상될 것입니다. 현재 이 방법을 적용해보기 위해서 공부중입니다. 적용을 완료한 후에 다시 업로드 하겠습니다. 공부 내용을 이곳에서 보실 수 있습니다.

반응형