카메라와 웨어러블 센서를 이용한 운전자 자세측정시스템 개발
Copyright Ⓒ 2022 KSAE / 205-08
This is an Open-Access article distributed under the terms of the Creative Commons Attribution Non-Commercial License(http://creativecommons.org/licenses/by-nc/3.0) which permits unrestricted non-commercial use, distribution, and reproduction in any medium provided the original work is properly cited.
Abstract
With the recent development of IoT technology, it has become possible to obtain desired sensor data without time and space limitations. It has also become possible to easily interpret data and obtain useful information with the development of deep learning. In this study, we developed an IoT system that estimates the driver’s posture through the use of wearable sensors and deep learning-based image processing techniques for vehicle crash analysis.
Keywords:
Driver pose estimation, Internet of things, Embedded system, Computer vision, Sensor fusion, Bluetooth low energy키워드:
운전자 자세 추정, 사물인터넷, 임베디드 시스템, 컴퓨터 비전, 센서 퓨전, 블루투스 저전력1. 서 론
사물인터넷 기술의 발달로 인하여 시간과 공간의 제약 없이 원하는 센서 데이터를 얻는 것이 가능해졌다. 또한, 딥러닝의 발달로 인하여 손쉽게 데이터를 해석하여 유용한 정보를 얻어오는 것 또한 가능해졌다. 본 연구에서는 운전자의 자세를 웨어러블 센서 및 딥러닝 기반 영상처리 기법으로 추정하는 사물인터넷 시스템을 구축하였다.
최근에 운전자 자세 추정은 교통사고를 예방하기 위하여 운전자 졸음이나 부주의를 검출하는 목적으로 많이 연구되어 왔다.1-3) 대부분의 연구가 운전자의 얼굴 인식을 인식하고, 머리의 각도나 상체의 자세를 추정하고 이를 통해서 운전 집중도를 평가하는 것을 목적으로 한다. 반면 최근에 발전하는 딥러닝을 활용한 신체 자세 추정(HPE, Human pose estimation)을 차량에 적용하여, 신체 관절과 머리의 각도를 추정하고 ADAS(Advanced driver assistance systems)에 적용하려는 연구도 있다.4) 본 연구는 주행 중에 운전자의 관절 각도를 측정하는 시스템을 개발하는 것이 목적이며, 향후 이를 충돌시험과 해석에서 사고 전(Pre-Crash) 운전자 자세의 영향을 분석하거나 운전자의 승차 조향(Ride and handling) 시험과 해석 시 운전자 영향을 평가하는 데 활용할 예정이다.
카메라를 통한 운전자 자세 추정은 신체 자세 추정의 특별한 경우라 할 수 있다. 일반적인 HPE와 차이점은 차량 내 협소한 공간에 부착됨으로 인하여 카메라의 각도가 제한적이고, 착석 상태에서 보통은 골반 이상만 담긴 영상에서 상체의 자세만 추정할 수 있다. 본 연구에서는 이러한 알고리즘을 새롭게 개발하는 것이 아닌, 계층적 구조를 비교 분석하여 알맞은 알고리즘을 선정하는 것에 중점을 두었다. 이와 별도로 카메라를 이용한 영상 측정이 불가능한 골반 이하의 관절에 대해서는 웨어러블 굽힘(Wearable bending) 센서를 개발하여 관절의 각도를 직접 측정하였다.
2절에서는 HPE 알고리즘을 분류하고, 본 연구에서 선정한 내용을 기술하였다. 3장에서는 웨어러블 굽힘 센서 모듈과 깊이 카메라의 시스템 구성에 대해서 설명하였다. 4장에서는 HPE 알고리즘과 웨어러블 굽힘 센서를 통합하여 운용하기 위한 시스템의 구조에 대해 기술하였다. 끝으로 5장에서는 실제 주행환경에서 개발한 시스템을 사용하여 실험한 결과에 대해 설명하였다.
2. HPE 알고리즘의 선정과 자세 추정
최근의 HPE 관련 연구는 대부분 딥러닝을 기반으로 카메라 영상을 활용하는 경우가 대부분이다. 주어진 이미지 정보에서 사람의 자세를 추정하는 HPE 알고리즘은 Fig. 1과 같이 분류할 수 있다. HPE 알고리즘은 크게 2D 이미지 상에서 각 관절의 픽셀 좌표를 찾는 2D HPE5)와 공간상에서 3차원 좌표를 찾는 3D HPE6,7)로 가장 먼저 나누어진다. 본 연구에서는 운전자의 각 관절의 각도를 찾아내는 것이 목적이므로 3D HPE 알고리즘을 고려하였다.
입력이 되는 카메라나 센서 융합에 따라 다양한 방식의 알고리즘이 존재하는 데, 단안 카메라만을 이용한 방법8)과, 깊이 카메라,9) 관성센서10) 등의 부가적인 센서를 활용하는 방법으로 나뉜다. 본 연구에서는 연산 복잡성과 신뢰도, 상업적 사용이 가능한 라이센스 등을 고려하여, 깊이 카메라를 이용하는 방식을 선택하였다.
HPE는 개개인을 먼저 감지하여 관심 영역(Region of interest)을 특정한 뒤, 관심 영역내의 사람의 자세를 추정하는 탑 다운(Top down) 방식과,11,12) 각 신체부위를 따로 감지한 뒤, 클러스터링 알고리즘을 적용하여 자세를 추정하는 바텀 업(Bottom up) 방식13)으로도 구분할 수 있다. 이 중, 바텀 업 방식은 사람을 먼저 감지하는 과정이 없으므로 계산시간이 적지만, 여러 사람이 있을 경우, 관절부위를 각각의 사람으로 묶는 경우의 수가 많아 다른 사람의 신체 부위를 한 사람의 신체 부위로 묶는 등의 불안정적인 면을 보인다. 탑 다운 방식은 사람에 해당하는 관심 영역을 추출하는 연산이 필요하므로, 이에 필요한 연산시간이 추가로 필요하다는 단점이 있으며, 영상에서 사람 검출에 실패할 경우 자세를 추정할 수 없다는 단점이 존재한다. 차량내 운전자 자세 추정의 경우 이미 관심영역이 고정되어 있기 때문에 사람을 감지하여 관심 영역을 추출하는 과정이 필요하지 않다. 따라서, 탑 다운 방식의 단점이 문제 되지 않으므로 탑다운 방식의 알고리즘을 선정하였다.
HPE는 자세를 추정할 때에 미리 정의된 사람의 신체 정보를 사용하느냐에 따라서 모델 기반 HPE(Model based HPE) 및 모델 프리 HPE(Model free HPE)로 나누어진다. 본 연구의 운전자 자세 추정의 경우 신체의 하반신이 영상에 나타나지 않으므로 모델을 사용하는 경우 오류가 많이 발생하였다. 따라서 본 연구에서는 모델 프리 알고리즘을 고려하였다.
이러한 특성을 고려하여 본 연구에서는 깊이 카메라로부터 측정된 깊이 정보와 2D 이미지에서 추출한 운전자의 스켈레톤 정보를 이용하여 운전자의 각 관절 부위의 공간상의 좌표를 알아낼 수 있는 Skeleton Tracker (Cubemos사, 독일)를 선정하였다.
Skeleton Tracker는 Fig. 1의 계층적 구조에서 보았을 때 단안 카메라 기반의 2D HPE 및 깊이 카메라를 이용한 3D HPE에 해당한다. 해당 알고리즘은 RGB이미지를 딥러닝 기반의 특징점 추출 알고리즘의 입력으로 사용하고, 그 결과를 깊이 이미지와 퓨젼하여 각 신체부위의 공간상의 위치로 변환하는 방식으로 구현되어있으며, 다음과 같은 과정을 거친다(Fig. 2). 우선 깊이 카메라로부터 RGB 이미지와 깊이 이미지를 얻는다. RGB 이미지의 경우 운전자의 주요 신체부위 18개에 해당하는 특징점을 추정하는 신경망의 입력으로 사용되며, 해당 특징점에 대한 정보는 Fig. 3과 같다. 이후 깊이 이미지에서 해당 특징점의 픽셀 좌표에 해당하는 거리를 찾는데, 깊이 이미지의 경우 노이즈가 심하므로, 깊이 카메라의 측정 범위를 넘지 않는 값에 대해 중간값 필터를 사용하였다. 이후 얻어낸 깊이 값을 역투영(Deprojection) 알고리즘을 통하여 공간상의 위치로 변환하였으며, 해당 역투영 알고리즘의 깊이 카메라에서 제공하는 Realsense SDK(Intel사 미국)의 rs2_deproject_pixel_to_point를 사용하였다(Fig. 4). 이후 각 부위에 해당하는 점들을 이용하여 두 벡터가 이루는 각도를 식 (1)과 같이 연산하여 원하는 관절 부위의 각도를 산출하였다.
(1) |
3. 운전자 자세 추정 시스템의 구성
본 연구에서 개발한 시스템의 대략적인 구조는 Fig. 5와 같다. 운전자 자세 추정 시스템은 딥러닝 기반 영상처리 알고리즘을 통해 운전자의 자세를 파악할 수 있도록 하는 깊이 카메라 모듈과 BLE 통신 기반으로 운전자의 자세 정보를 전달하는 센서 모듈, 그리고 이러한 데이터를 한 대 모아서 사용자에게 전달할 수 있는 소프트웨어가 탑제된 Host 시스템으로 구성되어있다.14)
3.1 깊이 카메라 모듈
깊이 카메라 모듈(Fig. 6)의 경우 영상 기반의 HPE알고리즘을 이용하여 운전자 관절의 각도를 측정하기 위한 장비이다. 차량 앞 유리에 장착하여 운전자가 담겨있는 영상 정보를 얻을 수 있도록 하였다. USB 3.0 케이블을 이용한 유선통신을 통해 데이터를 전송 받으므로 BLE 통신 기반의 센서 모듈 보다 데이터를 일정한 시간에 얻어오는 것이 용이하다. 이러한 장점을 활용, 프로그램에서 영상 데이터의 시간을 기준으로, 웨어러블 굽힘 센서 노드로부터 온 데이터의 시간을 맞추는 방식으로 동기화를 진행하였다.
3.2 웨어러블 굽힘 센서 노드
웨어러블 벤딩센서를 통해 측정하기 어렵거나, 웨어러블 벤딩센서를 장착할 경우 운전에 방해가 될 수 있는 웨어러블 굽힘 센서 노드의 경우 운전자의 신체에 부착하여 각 관절의 각도를 측정할 수 있도록 개발하였다. Bendlabs사(미국)에서 개발한 실리콘 탄성중합체(Elastomer) 스트레인 측정 센서 및 nrf52832(Nordic Semiconductor사, 노르웨이) 기반의 MCU(Micro controller unit)를 사용하여 Fig. 7과 같은 회로를 구성하였으며, Fig. 8과 같이 부착하여 신체에 장착할 수 있도록 설계된 케이스로 구성되어있다.
해당 장비의 경우, 오랜 주행 시험 동안 사용할 수 있도록 BLE(Bluetooth low energy) 통신을 도입하고, MCU를 저전력 모드로 운용하여 CR2032 코인 배터리 하나로 10시간 이상 사용할 수 있도록 하였다.
또한 사용자의 편의를 위해 밸크로 타입의 스트랩과 의료용 양면테이프, 두 가지 방법의 장착이 가능하도록 설계하였다(Fig. 9). 이를 통해 팔꿈치와 무릎과 같은 부위는 스트랩을 이용해서, 척추와 목, 골반과 같은 부위는 의료용 양면 테이프를 통해 부착하여 원하는 신체 부위의 각도를 모두 측정할 수 있도록 하였다.
4. 소프트웨어 구조 및 알고리즘
본 연구에서 구축한 시스템은 깊이 카메라에서 들어온 영상을 이용하여 딥러닝 기반으로 자세를 추정하고 각 관절의 각도를 계산하는 알고리즘과 6개의 웨어러블 굽힘 센서 모듈로부터 온 데이터의 시간을 동기화하고 종합하는 백그라운드 시스템과 해석 엔지니어도 쉽게 사용할 수 있도록 구축한 GUI로 구성되어있다.
본 연구에서 개발한 시스템은 크게 MCU에서 굽힘 센서 데이터를 BLE로 전송하는 BLE Peripheral 펌웨어(Firmware), 호스트에서 BLE 센서 노드와 연결을 관리하고 데이터를 수신하는 BLE Central 쓰레드단, 깊이 카메라 모듈로부터 들어오는 데이터로부터 운전자 자세를 추정하고 관절 각도를 계산하여 각 데이터의 동기화를 수행하는 HPE 쓰레드이다. 또한 사용자가 통신과 설정을 수행하고 결과를 실시간으로 확인할 수 있는 GUI (Graphical user interface) 쓰레드도 개발하였다.
4.1 BLE Peripheral 구성
BLE Peripheral단은 웨어러블 굽힘센서 노드의 MCU를 구성하는펌웨어로, Fig. 10과 같이 크게 3가지의 요소로 구성되어있다. TaskBLETX의 경우 50 ms 주기의 타이머 인터럽트에 따라 I2C통신을 통해 굽힘 센서로부터 데이터를 읽은 뒤 BLE 통신을 통해 전송한다.
TaskBLEIndicator 및 TaskUserInputRX는 사용자의 편의 기능을 위해 구현된 요소이다. 각각 현재 장비가 Central 단과 페어링 되어 있는지 여부 및 호스트 시스템으로부터 사용자의 입력을 받아와 편의 기능(BLE 장비를 재부팅, 해당 노드를 식별하기 위해 LED 점멸 등)을 수행하는 기능을 수행한다.
4.2 BLE Central Thread 구성
BLE Central 쓰레드는 사용자가 호스트 PC에서 사용하는 프로그램의 백그라운드 시스템으로 동작하며, 각 BLE 장비의 통신을 관리하는 역할을 수행한다. BLE Central 단은 하나의 스레드로 비동기적으로 BLE 통신을 처리할 수 있도록 구현하였으며 Fig. 11과 같이 각 센서별로 Connection Manager, Notification Handler, User Input Manager를 두어 BLE통신 상태 관리 및 데이터 입출력을 할 수 있도록 하였다.
Connection manager의 경우, 2초마다 센서 노드와의 연결상태를 검사하고, 연결이 끊어질 경우 재연결을 시도하는 코루틴(Coroutin)으로, 차량 실험 중 예기치 못한 상황으로 인하여 BLE통신의 연결이 끊어져 데이터를 측정하지 못하는 상황을 방지한다. Notification handler는 각 디바이스로부터 측정값이 수신되는 이벤트가 발생했을 때 호출되는 콜백 함수로, 사용자가 지정한 센서 역할에 맞게 데이터를 라벨링 하여 RXbuffer에 저장하는 역할을 수행한다. User input manager는 GUI를 통해 사용자의 입력을 처리하는 코루틴으로, 사용자가 웨어러블 센서의 부착 위치 지정하면 각 센서를 식별하기 위해 LED를 점멸하는 명령어 송신하여 해당 센서 노드를 확인할 수 있게 한다. 사용자 편의 기능을 주로 수행하기 때문에 중요도가 떨어지기 때문에 이벤트가 발생할때마다 콜백함수를 호출하는 방식이 아닌, 0.5초에 한번씩 사용자의 입력을 검사하여 이를 처리하는 루프 형태로 구현하였다.
4.3 HPE Thread 구성
HPE 쓰레드는 100 ms에 한번 씩 동작을 수행하도록 Fig. 12와 같이 구현하였다. 깊이 카메라로부터 RGB 이미지와 깊이 이미지를 읽어들인 뒤 자세 추정 알고리즘을 통해 운전자의 자세를 추정하고, 다른 센서로부터 온 데이터를 이미지 데이터와 동기화 하는 작업을 수행한다.
우선 Pose Estimator를 통해 깊이 카메라 모듈에서 들어온 영상정보를 운전자의 자세 정보로 변환한다. 이후 BLE Central Thread를 통해 저장된 RXbuffer에서 가장 최근에 들어온 굽힘 센서 노드로부터 들어온 각도 정보와 Pose Estimator를 통해 추정된 운전자 자세 정보를 함께 csv 파일로 저장하고, 영상정보는 따로 mp4 파일로 저장한다.
4.4 GUI Thread 구성
운전자 자세 추정 시스템의 GUI는 PySide2를 사용하여 개발하였다. 해당 GUI를 통해 각 센서 노드와 호스트 PC 사이의 통신을 구축한 뒤(Fig. 13의 1,2,3,4버튼 사용.), BLE 기반의 센서의 경우 각 센서의 역할을 Fig. 13의 5번 콤보박스를 내려서 지정한다. 이때 선택한 MAC 주소에 해당하는 센서의 경우 LED를 3회 점멸하여 사용자가 식별할 수 있도록 하였다.
위 과정을 통하여 각 센서와 통신을 구축하고 각 센서의 부착 관절 위치를 지정한 뒤에는 Fig. 13의 Record 버튼 및 Save 버튼을 통해서 데이터를 녹화 및 저장할 수 있으며, Open Folder 버튼을 통해 저장된 파일을 볼 수 있도록 하였다.
프로그램 사용 중에는 백그라운드에서 일어나는 일을 사용자에게 알려줄 수 있도록 텍스트창에 현재 프로그램의 상태를 기록하도록 하였으며, 녹화 도중에는 Fig. 12의 15번 창을 통하여 현재 깊이 카메라 모듈을 통해 측정한 영상을 실시간으로 관찰할 수 있도록 하였다.
5. 실험 및 검증
5.1 벤딩센서 오차검증
웨어러블 벤딩센서의 오차검증을 위하여Fig. 14와 같이 전자식각도계에 부착형 벤딩센서모듈을 부착하여 실제값과 측정값을 비교하였다(Table 1).
실험 결과 벤딩센서의 경우 60°(150°)구간에서 가장 큰 오차를 보였으며, 전 구간에서 적은 오차를 보였다.
5.2 깊이 카메라 기반 자세추정 알고리즘 오차검증
깊이 카메라 기반의 자세추정 알고리즘의 오차검증을 위하여 Fig. 15와 같이 고정된 자세에서 영상기반의 자세추정치와 실제 관절의 각도를 비교하였다.
실험 결과 깊이 카메라 기반의 자세추정의 경우 벤딩센서 기반의 자세 추정보다 큰 오차가 남을 알 수 있으며, 10° 내외의 오차가 있음을 알 수 있다.
6. 결론 및 고찰
본 연구에서는 실제 운전자의 자세 정보를 기록하여 충돌 해석이나 승차-조향 시험 및 해석에서 분석하기 위한 목적으로 자세 추정 시스템을 개발하였다. 본 시스템의 경우 딥러닝 기반 영상처리를 통해 각 관절의 3차원 좌표를 추정하고 이를 활용하여 각 관절의 각도를 산출하였으며, 영상으로 추정이 어려운 하반신과 척추 하부의 각도를 측정하기 위하여 BLE 통신을 기반으로한 웨어러블 굽힘 센서 노드를 개발하여 운전자의 각 관절의 자세를 측정하였다. 호스트 시스템에서 영상 기반 추정 결과와 웨어러블 굽힘 센서의 측정 결과를 취합하여, 결과를 csv 파일 및 mp4 파일로 변화 저장하여 후속된 해석이나 시험에서 데이터를 쉽게 활용할 수 있도록 하였다. 본 연구에서 개발한 시스템은, 자동차라는 협소한 공간에서 운전자의 자세를 측정하고, 사용하기 쉬운 GUI를 제공하므로, 시험이나 해석 엔지니어가 쉽게 사용할 수 있도록 하였다. 실차 시험을 통해 개발된 시스템의 유용성을 검증하였다.
Acknowledgments
A part of this paper was presented at the KSAE 2022 Spring Conference
이 연구는 서울과학기술대학교 교내연구비의 지원으로 수행되었습니다.
References
- G. Borghi, M. Venturelli, R. Vezzani and R. Cucchiara, 2017 IEEE Conference on Computer Vision and Pattern Recognition(CVPR), pp.5494-5503, 2017.
- Z. Zhao, S. Xia, X. Xu, L. Zhang, H. Yan, Y. Xu, and Z. Zhang, “Driver Distraction Detection Method Based on Continuous Head Pose Estimation,” Computational Intelligence and Neuroscience, 2020. [https://doi.org/10.1155/2020/9606908]
- Y. -J. Lee, J. -S. Kim, W. -K. Yun and S. -J. Yoo, “Q-Traffic Accident Monitoring System Using Passenger Head Pose Estimation and Deep Learning,” The Journal of Korean Institute of Communications and Information Sciences, Vol.46, No.10, pp.1719-1728, 2021. [https://doi.org/10.7840/kics.2021.46.10.1719]
- Y. Liu, P. Lasang, S. Pranata, S. Shen and W. Zhang, “Driver Pose Estimation Using Recurrent Lightweight Network and Virtual Data Augmented Transfer Learning,” IEEE Transactions on Intelligent Transportation Systems, Vol.20, No.10, pp.3818-3831, 2019. [https://doi.org/10.1109/TITS.2019.2921325]
- A. Kendall, M. Grimes and R. Cipolla, “PoseNet: A Convolutional Network for Real-time 6-DOF Camera Relocalization,” IEEE International Conference on Computer Vision (ICCV), pp.2938-2946, 2015. [https://doi.org/10.1109/ICCV.2015.336]
- F. Xiong, B. Zhang, Y. Xiao, Z. Cao, T. Yu, J. T. Zhou and J. Yuan, “A2J: Anchor-to-Joint Regression Network for 3D Articulated Pose Estimation From a Single Depth Image,” Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pp.793-802, 2019. [https://doi.org/10.1109/ICCV.2019.00088]
- Q. Nie, Z. Liu and Y. Liu, “Unsupervised 3D Human Pose Representation with Viewpoint and Pose Disentanglement,” European Conference on Computer Vision(ECCV), 2020. [https://doi.org/10.1007/978-3-030-58529-7_7]
- Y. Rong, T. Shiratori and H. Joo, FrankMocap: Fast Monocular 3D Hand and Body Motion Capture by Regression and Integration, 2020. [https://doi.org/10.1109/ICCVW54120.2021.00201]
- G. Moon, J. Y. Chang, and K. M. Lee, “V2V-PoseNet: Voxel-to-Voxel Prediction Network for Accurate 3D Hand and Human Pose Estimation from a Single Depth Map,” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pp.5079-5088, 2018.
- F. Huang, A. Zeng, M. Liu, Q. Lai and Q. Xu, “DeepFuse: An IMU-Aware Network for Real-Time 3D Human Pose Estimation from Multi-View Image,” Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV), pp.429-438, 2020. [https://doi.org/10.1109/WACV45572.2020.9093526]
- J. Li, C. Wang, W. Liu, C. Qian and C. Lu, HMOR: Hierarchical Multi-Person Ordinal Relations for Monocular Multi-Person 3D Pose Estimation, 2020.
- Y. Cheng, B. Wang, B. Yang and R. T. Tan, Graph and Temporal Convolutional Networks for 3D Multi-person Pose Estimation in Monocular Videos, 2020. [https://doi.org/10.1609/aaai.v35i2.16202]
- A. Benzine, F. Chabot, B. Luvison, Q. C. Pham and C. Achard, “PandaNet: Anchor-Based Single-Shot Multi-Person 3D Pose Estimation,” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition(CVPR), pp.6856-6865, 2020. [https://doi.org/10.1109/CVPR42600.2020.00689]
- H. Lee, J. Choi, J. Song, H. Jo and C. Lee, “Development of IOT System for Driver Pose Estimation While Driving,” KSAE Spring Conference Proceedings, pp.1107-1108, 2022.