ETRI에서 진행하는 과제에 연구연수생으로 참여하며 사용했던 객체인식에 대한 공부를 정리해보자 한다.
과제는 정리할 내용을 기반으로 응용하여 구현하였다.
운전자 부주의 탐지는 미래 자동차 산업의 핵심 기술이다.
정보통신산업진흥원에서 2023년 4월에 출간한 '품목별 ICT 시장동향-자율주행차 2023'을 보면 급성장 유망 기술 키워드에 운전자 모니터링 시스템이 2위에 랭크된 것을 확인할 수 있다.
2022년 '오픈소스 전문 프로젝트' 수업 시간에 온라인 강의 학습자의 졸음을 감지하는 모델을 만들어 알림을 제공해주는 서비스를 구현하였다. 마침 부서에서도 관련된 연구를 진행하기 때문에 전에 진행했던 내 프로젝트와 실제 연구소에서 진행하는 프로젝트의 과정, 결과, 사용하는 기술들을 면밀히 비교하며 관찰할 수 있었다.
기존의 연구들을 보면 얼굴을 탐지하고 EAR 등을 측정하여 졸음을 감지해낸다.
EAR을 간단히 설명하자면 눈 감김의 정도를 측정한 값이다. 이외에도 하품을 감지하기 위해 입 크기를 측정하는 방법이 있다. 또한 졸음 뿐 아니라 운전자의 흡연, 스마트폰 사용, 대화 등을 구별해낼 수 있다.
위의 운전자 졸음 감지에 대한 예시 논문을 보면 데이터셋을 눈에 맞춰 전처리를 진행한다.
이외에도 다양한 선행 연구들이 얼굴, 눈, 입 등에 맞춰 CNN을 사용하는 방향으로 진행되었다.
따라서 운전자 부주의 감지에서 중요한 것은 먼저 객체 탐지, 즉 운전자의 얼굴을 탐지하는 것이다.
아래의 그림은 객체 인식 모델의 발전 과정이다.
우리가 흔히 아는 YOLO를 비롯하여 최근까지도 많은 모델이 나왔고 sota를 찾아보면 정말 성능좋은 다양한 모델이 많았다.
다양한 객체 탐지 모델 중 내가 맨 처음 사용했던 것은 Haarcascade다. 임베디드 환경에서 돌릴 수 있는 가벼운 모델을 선택하려 했다.
https://github.com/opencv/opencv/tree/master/data/haarcascades
다음으로 시도해본 모델을 YOLO이다. 임베디드 환경에서 돌리기 위해 tiny YOLO v3 모델을 사용하였다.
이외에도 여러가지 모델을 사용하였고, 깃허브에 시도해본 모델들을 올려놓았다.
물론 성능은 별로였다.
https://github.com/kmg0157/drowsy_detection_binary
ETRI에서 경험은 좋았다. 2달이라는 짧은 기간이었지만 관련된 논문을 찾아보며 AI를 공부할 수 있었다. 또한 실제 연구원님들의 회의 과정을 통해 프로젝트들이 어떤 절차를 거쳐 기획되고 구현되는지를 확인할 수 있는 좋은 기회였다. 다양한 분야를 경험하고 싶기 때문에 앞으로 개인 프로젝트들을 기획할 때, 체계적인 방법으로 접근하도록 노력하겠다.