반응형

Career/Drowsy Behavior Detection 8

개인 프로젝트 : 개선

1. 속도 - '개인 프로젝트 : 테스트' 편에서 보았듯이 영상이 다소 느리게 보여짐을 볼 수 있었습니다. 속도를 향상 시키기 위해서 2가지를 생각해 보았습니다. 1) 얕은 망 사용 - 적용했던 CNN 망의 깊이는 10 layers이었습니다. Hyper parameter tuning을 성능 평가를 했을 때, layer의 개수는 성능에 그다지 큰 영향을 미치지 않았습니다. 따라서 layer의 개수를 줄인다면 영상의 처리 속도를 향상시킬 수 있습니다. 2. 정확도 - 문제 : '일반 운전 행동'과 '졸음을 깨기 위한 행동'을 구분하긴 하지만, 때때로 구분이 잘 안되었습니다. 테스트 과정에서 분명히 '졸음을 깨기 위한 행동'으로 오른손을 뒷목으로 가져가지만, Dissimilarity는 그대로 인 것을 확인할 ..

개인 프로젝트 : 테스트

1. 테스트 아버지가 운전하시는 모습을 촬영하여 테스트 데이터로 사용했습니다. Dissimilarity가 0.7 이하로 내려가면 경고음이 울리도록 설정해 놓았습니다. 2. 개선 점 - 영상을 처리하는데 다소 시간이 걸려서 실시간으로 다소 부족하다고 생각합니다. 따라서 영상 처리 속도를 높이기 위한 방법을 생각해 보았습니다. 이 내용은 다음 포스트 '개인 프로젝트 : 개선' 편에서 확인하실 수 있습니다.

개인 프로젝트 : 문제 해결

1. Loss 값 증가 - 문제 : Loss 값이 갑자기 증가하는 현상 관찰 - 해결 : Adam Opimizer의 문제 해결 * 'Loss increases after some epoch'이라는 문장으로 검색 시도 * 문제 해결 사이트 1 * 문제 해결 사이트 2 * 문제 조사 : 제가 사용했던 Adam optimizer은 stability issue를 가지고 있습니다. 왜냐하면, 분모로 제곱평균제곱근(RMS : Root Mean Square)를 사용하고 있기 때문입니다. 제곱평균제곱근은 이전의 gradients에 영향을 받기 때문에 gradients이 0에 가까워 지면, 분모는 엄청 작아지게 됩니다. 분자에 비해 분모가 엄청나게 작아지면 loss값이 갑자기 커져버리는 현상이 발생합니다. 그래서 Ada..

개인 프로젝트 : 개발

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를 통해 이미지 경로에서 이미지 데이터를 가져옵니다. - ..

개인 프로젝트 : 전처리

1. 유의미하지 않은 features 제거 1) 문제 - 같은 행동을 취하고 있는 두 이미지의 Euclidean distance가 2.3, 그리고 다른 행동을 취하고 있는 두 이미지의 Euclean distance가 2.4로 전혀 구별하지 못했습니다. 2) 해결 - Coursera 강의에서 배운 meaningful features가 생각이 났습니다. 그래서 구글에 meaningful feature extraction라는 키워드로 검색을 진행했습니다. - 검색 결과, 저의 이미지에는 쓸모 없는 부분이 너무 많다는 사실을 알 수 있었습니다. 아래의 예시를 보면, 아버지가 행동하고 있는 범위는 사진의 절반 만으로도 충분히 볼 수 있습니다. 가운데를 기준으로 오른쪽은 실제로 쓸모 없는 부분입니다. - 따라서 유..

개인 프로젝트 : 데이터 수집

데이터 형태 운전자의 행동을 관찰할 수 있는 영상 예시 1차 데이터 수집 촬영 상황 - 야간에 촬영한 어두운 사진 - 주간에 촬영한 밝은 사진 - 비오는 날 촬영한 우중충한 사진 - 터널 안 - 터널 밖으로 나오는 순간(갑자기 밝아짐) 운전자의 행동 - 일반 주행 모습 - 졸음을 깨기 위한 행동 모습 촬영 위치 - 룸미러 오른쪽 - 차량 계기판 - 차량 계기판 위쪽 선반 촬영 방식 - 동영상으로 촬영 - 촬영 상황 3가지 (야간, 주간, 비오는 날 + 터널 지역 적용)에 촬영 위치 3가지를 적용하여 총 9가지 상황에서 10분 씩 3번 촬영 테스트 결과 - 어두운 상황에서 일반 카메라로 인식이 어려워서 주간 영상을 활용하기로 결정 * 해결 방법 : 이미지 처리, 야간 카메라 사용 - 계기판 위 선반에서 촬..

개인 프로젝트 : 설계

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

개인 프로젝트 : 시작

프로젝트 명 : 행동 기반 졸음운전 인식 동기 : 아버지의 일을 도와 함께 일하던 어느 날, 차에서 조시는 모습을 보았습니다. 이러한 일이 몇 번 있었고 그 모습을 관찰한 결과, 아버지는 졸음이 오기 전에 높은 확률로 뒷목을 마사지 하셨습니다. 따라서 '뒷목 마사지 -> 졸음'이라는 과정이 발생한다는 것을 알았고, 아버지에게 도움이 되는 프로그램을 개발하고 싶어서 이 프로젝트를 시작했습니다. 뿐만 아니라, 저의 개발 역량의 성장을 도모할 것 같아서 시작했습니다. 차별성 : 행동 기반 인식을 통한 효과적인 졸음 상태 탈출 이미 많은 졸음운전 알고리즘이 논문과 오픈소스로 나와있습니다. 대부분은 눈의 상태를 이용한 인식 방법입니다. 예를 들어, 1초에 45frame인 카메라를 통해 1초 안에 눈을 감고 있는 ..

반응형