
실시간 딥러닝 모델 기반 운동 자세 피드백 프로그램
초록
코로나19 팬데믹은 일상에 큰 변화를 불러왔으며, 비대면 서비스와 건강 관리에 관한 관심을 높였다. 효과적인 운동을 위해서는 정확한 자세와 기술이 요구된다. 그러나 시간적·경제적 제약으로 전문적인 지도를 받기 어려워지면서 온라인 운동 보조 프로그램에 대한 수요가 증가하고 있다. 최근 딥러닝 기술의 발전으로 자세 추정 모델의 정확도와 효율성이 크게 향상되었다. 따라서 본 논문에서는 YOLOv8-pose를 활용한 실시간 자세 추정 및 피드백 프로그램을 제안한다. 본 프로그램은 실시간으로 사용자의 자세를 추정하고, 올바른 자세 유지를 지원하는 피드백을 제공함으로써 운동 효과를 극대화하는 데 이바지할 것이다.
Abstract
The COVID-19 pandemic has significantly changed daily life, increasing interest in contactless services and healthcare. As effective exercise requires precise posture and technique, temporal and economic constraints have made it difficult for individuals to receive professional guidance, leading to a growing demand for online exercise assistance programs. With recent advancements in deep learning technology significantly improving the accuracy and efficiency of posture estimation models, this paper proposes a real-time posture estimation and feedback system utilizing YOLOv8-pose. The proposed system estimates users' postures in real-time through webcam input and provides immediate feedback based on cosine similarity with expert reference data, thereby supporting the maintenance of correct posture and ultimately maximizing exercise effectiveness.
Keywords:
deep-learning, pose estimation, healthcare, computer vision, personal trainingⅠ. 서 론
코로나19 팬데믹은 우리의 일상생활과 사회적 구조에 많은 변화를 불러왔다. 사회적 거리 두기와 자가격리로 집에서 보내는 시간이 증가하게 되면서 비대면 활동이 증가했다. 이러한 비대면 활동의 확산은 코로나19가 잠잠해진 것과 다르게 일시적인 현상에 그치지 않고, 비대면 서비스의 지속적인 활용이라는 새로운 사회적 추세로 자리 잡았다. 동시에, 건강한 삶에 대한 관심이 증대되면서 신체 활동, 특히 건강 증진을 목적으로 하는 운동에 대한 수요가 증가한다.
효과적인 운동 수행을 위해서는 정확한 자세와 기술이 요구되며, 이는 부상 위험을 최소화하고 운동의 효율성을 극대화하기 위해 필수적이다. 따라서 전문가의 지도를 받으며 체계적으로 운동하는 것이 이상적이나, 현대인들은 시간적 제약과 경제적 부담으로 전문가의 지속적인 지도를 받기 어렵다. 이에 따라 비대면 환경에서 전문가의 지도를 대체하거나 보완할 수 있는 온라인 운동 보조 프로그램에 대한 필요성이 대두된다.
비대면 운동 보조 프로그램의 핵심 요소는 사용자의 자세를 정확하게 추정하고, 이를 바탕으로 피드백을 제공하여 전문가의 지도를 대체하는 것이다. 자세 추정 기술은 신체 각 부분의 위치를 분석하여 자세를 평가하는 기술로, 운동 분석, 재활치료, 인간-컴퓨터 상호작용 등 다양한 응용 분야에서 활용된다. 특히 최근 딥러닝 기술의 발전과 함께 자세 추정 모델의 정확도와 효율성이 크게 향상되어, 딥러닝 기반 자세 추정 기술을 온라인 운동 보조 프로그램에 적용하면, 전문가 없이도 사용자에게 효과적인 피드백을 제공할 수 있다.
자세 추정 분야에서 대표적인 딥러닝 모델들에는 PoseNet과 MoveNet이 있다. PoseNet은 TensorFlow.js 라이브러리를 기반으로 한 자세 추정 딥러닝 모델이다[1]. MoveNet은 Google Research에서 개발한 자세 추론 모델이다[2].
본 논문에서 제안하는 프로그램은 YOLOv8-Pose를 통해 사용자의 자세를 분석하고 실시간 피드백을 제공한다[3]. 제안하는 프로그램의 기여점은 다음과 같다.
- 실시간 자세 추정 및 피드백 제공: 사용자가 운동하는 동안 실시간으로 자세를 추정하고, 즉각적인 피드백을 제공하여 올바른 자세를 유지하도록 돕는다. 이를 통해 잘못된 자세로 인한 부상을 예방하고, 운동 효과를 극대화한다.
- 개인의 신체 능력에 기반한 일대일 맞춤 운동 프로그램 제공: 사용자의 운동 동작을 프레임 단위로 관찰하고 분석하여, 관절의 움직임을 중심으로 팔, 다리, 목, 허리 등을 정밀하게 분석한다. 분석된 결과를 바탕으로 사용자의 개인 신체 능력에 적합한 맞춤형 운동 피드백을 제공한다. 이 프로그램은 사용자 본인의 체형이나 골격구조 등 신체 구조를 고려한 맞춤 피드백을 제공하여 개인의 능력과 목표에 맞는 정확한 운동 자세를 유지할 수 있도록 돕는다.
Ⅱ. 관련 연구
자세 추정 분야의 대표적인 딥러닝 모델에는 PoseNet, MoveNet이 있다[1][2]. 이들은 실시간으로 사용자의 자세를 감지하고 분석한다. 분석된 결과를 기반으로 건강 관리나 운동 보조 프로그램에서 올바른 자세 유지를 위한 피드백을 지원하거나 개선하는 기능을 제공하는 것이 가능하다. 다음은 그 적용 사례이다.
2.1 PoseNet 기반 자세 추정
PoseNet은 이미지를 입력받아 사람의 신체 주요 부위의 위치와 방향을 추정하는 딥러닝 모델로, TensorFlow.js 기반으로 구현되어 있다[1]. PoseNet은 추가적인 기술 개발이나 그래프 최적화 없이도 실내 및 실외 환경에서 실시간 동작이 가능하며, 프레임 당 약 5ms의 계산 속도를 제공한다. 이전에는 사용자의 몸에 마커를 부착해야 했던 사용자 움직임 감지 기술과 달리, PoseNet은 노트북에 연결된 일반 웹캠만으로도 팔꿈치와 무릎의 각도 움직임 추정이 가능하다[5]. 그러나 복잡한 자세나 일부가 폐색된 경우 정확도가 낮아지는 한계점이 있다.
H. A. Hassan et al.[4]은 재활치료를 받는 환자를 돕기 위해 PoseNet 기반 재활 시스템을 제안한다. 개발한 시스템은 PoseNet 모델을 사용하여 환자의 골격 keypoint를 추출하고, 이를 전문가가 수행한 기준 keypoint와 비교하여 DTW(Dynamic Time Warping) 접근 방식으로 유사성을 계산한다. DTW는 시간 변화를 고려하여 두 시퀀스 간의 유사도를 측정하는 알고리즘이다[6].
2.2 MoveNet 기반 자세 추정
MoveNet은 Google Research에서 개발한 자세 추론 모델로, 사용자의 이미지를 입력받아 신체 17개 주요 지점의 좌표를 예측한다[2]. 그림 1은 MoveNet의 구조를 나타낸다[6].
이는 다음과 같은 구조로 이루어진다. MoveNet은 인코더와 디코더로 구성된 단일 네트워크 구조를 갖는다. 인코더 모듈은 입력 이미지로부터 다양한 수준의 특징을 추출하며, 디코더 모듈은 이를 기반으로 17개 관절의 위치를 (x, y) 좌표와 신뢰도로 예측한다. MoveNet은 경량화된 컨볼루션 연산을 기반으로 설계되어, 엔드 투 엔드 방식의 추론을 수행한다. 그러나 세밀한 동작 분석에서 관절 간 미세한 차이를 구분하는 데 한계가 존재한다.
J. H. Kim et al.[7]은 모바일 기기에서의 MoveNet 기반 사용자 운동 자세 피드백 프로그램을 제안한다. 그림 2는 MoveNet 기반 해당 프로그램의 알고리즘 순서도를 나타낸다.
이 프로그램은 MoveNet 모델을 통해 프레임마다 필요한 관절의 좌표를 찾고 이를 이용하여 관절 각도 계산을 진행한다. 상태변수 state를 통해 사용자가 운동 상태이면 자세 추정을 진행한다. 그림 2의 알고리즘은 프레임 단위로 조건을 확인하고 수행 결과를 저장 및 갱신하며 진행한다. 한 번의 운동 사이클이 끝나면 저장된 결과를 통해 가장 오류가 높은 부위에 대한 피드백을 제공한다.
Ⅲ. 본 론
3.1 제안 방법
본 연구에서는 딥러닝 기반 실시간 자세 추정 기법을 활용한 운동 보조 프로그램을 제안한다. 이 프로그램의 전체 프로세스의 구성은 그림 3과 같다.
본 논문에서는 YOLOv8-pose를 활용하여 전문가 영상의 자세 추정을 진행한다. YOLO(You Only Look Once) 모델을 기반으로 한 자세 추정 기술을 YOLO-pose라고 한다.
이 모델은 anchor를 사용해 사람들의 keypoints들을 묶는다. YOLOv8-pose 모델은 이미지에서 사람을 탐지하고, 각 사람 주위에 anchor를 생성한다. 이는 사람의 위치와 크기를 나타내며, 각 사람을 개별적으로 구분하는 역할을 한다. 이 모델은 각 anchor 내에서 keypoint의 위치를 예측하여 공간적으로 가까이 위치하는 사람의 keypoint 간의 식별이 가능하다[3]. 사람의 자세 추정을 위해서는 사람당 17개의 keypoints를 검출한다.
각 keypoint의 가시성을 근거로 keypoint의 신뢰도를 평가한다. keypoints 평가에 OKS(Object Keypoint Similarity) 손실함수를 통해 각 keypoint의 손실과 keypoint의 신뢰도에 대한 손실을 구한 후 마지막에 합한다[8]. 일반적으로 자세 추정 모델은 일부 신체 부위가 가려지면 정확도가 크게 떨어지지만 bounding box 밖에 keypoint가 있으면 안 된다는 제약 조건이 없는 YOLO-pose는 이러한 과정을 통해 가려진 부분의 key point도 효과적으로 예측하여 추정한다[7]. 이는 복잡한 환경에서도 안정적인 자세 추정을 가능하게 하며, 사용자의 다양한 운동 자세를 정확히 인식하게 한다.
실시간 자세 추정의 핵심은 모델의 연산 속도이다. 대부분의 자세 추정 시스템은 GPU를 필요로 한다. 하지만 YOLOv8-pose 모델은 가벼운 구조와 최적화된 연산 효율성을 가져 상대적으로 연산 자원이 적은 CPU에서도 효율적으로 작동한다. 이는 사용자가 별도의 고가 하드웨어 없이도 시스템을 활용할 수 있도록 하여 접근성을 크게 향상한다. 따라서 본 논문에서 제안하는 프로그램에서는 높은 계산 비용과 고성능 하드웨어 없이 폐색 객체를 효과적으로 탐지하는 YOLOv8-pose 모델을 활용하여 전문가 영상의 자세 추정을 진행한다.
전문가의 영상은 운동마다 자세 데이터를 수집하여 YOLOv8-pose로 전처리하고 자세 추정이 완료된 상태로 사용자에게 제공한다. 웹캠을 통해 실시간으로 입력받는 사용자의 영상도 YOLOv8-pose로 전달하여 프레임 단위로 자세 추정을 진행한다. 전문가 영상의 keypoint와 실시간 사용자 영상의 keypoint 간 코사인 유사도를 각 프레임 단위로 분석하고 이 결과를 바탕으로 사용자에게 유사도 기반 자세 피드백을 제공한다[5].
3.2 운동 영상 전처리
본 연구에서는 전문가의 운동 동작을 담은 영상을 수집하고, 이를 사전 전처리하여 자세 추정 모델의 입력으로 사용한다. 운동 영상 전처리 과정은 사용자가 더 직관적으로 운동을 따라 할 수 있도록 지원하는 데 목적이 있다. 운동 영상은 각 동작 유형별로 6초에서 10초 분량의 MP4 파일로 구성된다. 이 영상을 1fps 기준으로 분할하여 각 프레임을 추출하고, 추출된 프레임을 JPEG 형식으로 저장한다. 저장된 프레임들은 YOLOv8-pose 모델의 입력으로 활용된다.
YOLOv8-pose 모델은 각 프레임에 대해 신체 keypoint를 추출한다. keypoint는 특정 신체 부위의 2차원 좌표([x, y]) 또는 신뢰도까지 포함한 [x, y, visibility] 형태로 표현된다. 본 연구에서는 사람의 관절을 나타내는 17개의 keypoint를 기준으로 자세를 분석한다.
전문가 영상에 대해 추출된 keypoint 데이터는 후속 비교 분석을 위해 저장되며, 사용자의 자세와 유사도 비교 시 기준 데이터로 사용된다. 이 과정을 통해 전문가 영상은 자세 추정이 완료된 형태로 사용자에게 제공되어, 별도의 실시간 추정 없이 빠른 피드백 제공이 가능하게 된다.
3.3 자세 유사도 계산 알고리즘
다음은 본 논문에서 사용하는 두 동작의 자세 유사도를 계산하는 알고리즘이다.
알고리즘 1은 기존 전처리 된 영상과 실시간으로 사용자의 운동 영상을 코사인 유사도를 통해 계산하는 과정을 나타낸다[5]. 이는 실시간으로 전처리하는 과정을 나타내고 두 자세의 keypoint를 numpy 행렬로 정규화하여 각 프레임별로 유사도를 비교하여 평균 유사도를 비교하는 과정을 나타낸다[9]. 각 자세의 keypoint를 numpy 행렬에 추가한 후 keypoint의 유클리드 거리를 계산해서 평균을 계산한 후 similarities 리스트에 추가한다. 마지막으로 similarities 리스트의 전체 요소들의 평균을 계산하여 전체 자세의 유사도를 반환한다. 알고리즘 1은 사용자의 운동 자세의 정확도를 평가하기 위해 사용한다.
3.4 웹페이지
그림 4는 본 논문에서 제안하는 프로그램의 전체 프로세스이다.
웹페이지는 반응형 웹 디자인을 적용한 직관적인 인터페이스를 가진다. 따라서 특정 기기에 제한받지 않고 다양한 기기에서 자유롭고 유연하게 반응하며 복잡한 설정 없이 간단한 단계만으로 동작 분석 기능을 제공한다.
서버에서 일방적으로 사용자에게 정보를 제공하는 단방향 통신은 사용자에게 데이터를 받을 수 없어 실시간 사용자 자세에 대한 피드백이 이루어지지 못한다. 이를 극복하기 위해 본 논문에서 제안하는 프로그램은 WebSocket을 사용하여 사용자와 서버 간의 양방향 통신을 진행한다. WebSocket은 서버와 사용자가 웹을 통해 통신하는 방법을 정의하는 네트워크 프로토콜이다[10]. 양방향 웹 통신과 연결 관리의 복잡성을 대폭 간소화하여 웹 브라우저를 통한 여러 사용자 간의 실시간 동기화 개발이 가능하다[11]. 제안하는 프로그램은 WebSocket을 사용하여 사용자의 자세를 실시간으로 추출하고 유사도를 나타낸다[12].
3.1에서 전처리한 전문가의 영상을 REST API와 CRUD Querying을 통해 url 단위로 웹페이지로 전달한다. 사용자의 실시간 영상은 WebSocket을 통해 페이지에 업로드한다.
그림 5는 웹캠을 통해 사용자의 실시간 자세 추정 결과이다. 측면의 가려진 key point도 잘 잡는 것을 확인할 수 있다.
그림 6은 그림 5의 결과를 웹페이지에 업로드한 모습을 나타낸다. 알고리즘 1을 적용하여 사용자의 운동 자세의 정확도를 평가하고, 자세 추정 결과를 시각화하여 웹페이지에 제공한다.
3.5 실험 결과 및 성능 분석
본 연구에서는 제안하는 YOLOv8-pose 기반 운동 자세 피드백 프로그램의 성능을 정량적으로 평가하였다. 또한, 기존 대표적인 자세 추정 모델인 PoseNet 및 MoveNet과의 비교를 통해 제안 방법의 차별성과 우수성을 검증하였다.
성능 평가는 코사인 유사도(Cosine similarity)와 프레임당 추론 속도(FPS, Frames Per Second)를 기준으로 수행하였다. 모델 간 성능 비교 결과는 다음 표 1과 같다.
YOLOv8-pose 기반 프로그램은 평균 코사인 유사도 91.3%와 55FPS의 추론 속도를 기록하여, 기존 PoseNet 및 MoveNet 대비 높은 정확도와 실시간 처리 성능을 입증하였다. 특히 폐색 상황에서도 안정적으로 keypoint를 예측할 수 있는 강점을 보였다.
Ⅳ. 결 론
본 연구에서는 YOLOv8-pose를 기반으로 한 실시간 운동 자세 피드백 프로그램을 제안하였다. 제안한 시스템은 전문가 영상을 사전에 전처리하고, 사용자의 실시간 웹캠 영상을 YOLOv8-pose를 통해 분석하여, 전문가와 사용자의 자세 간 코사인 유사도를 계산하는 방식으로 운동 자세를 평가하고 피드백을 제공한다.
실험 결과, 제안한 프로그램은 평균 코사인 유사도 91.3%, 추론 속도 55FPS를 기록하여 기존 모델인 PoseNet과 MoveNet 대비 높은 정확도와 실시간 처리 성능을 보였다. 특히, 폐색 상황에서도 keypoint를 안정적으로 추정하여 다양한 운동 자세 환경에서도 견고한 성능을 확인할 수 있었다.
본 연구의 한계점으로는 전문가와 사용자 간 촬영 거리, 방향, 해상도 차이로 인해 발생하는 좌표 왜곡 문제를 완벽히 보정하지 못했다는 점이 있다. 향후 연구에서는 상대 좌표 변환 및 Skeleton alignment 기법을 적용하여 촬영 조건 차이를 보정할 계획이다[12].
Acknowledgments
본 연구는 과학기술정보통신부 및 정보통신기획평가원의 SW중심대학지원사업의 연구결과로 수행되었음(2021-0-01393)
References
-
A. Kendall, M. Grimes, and R. Cipolla, "PoseNet: A convolutional network for real-time 6-DOF camera relocalization", Proc. of the IEEE International Conference on Computer Vision (ICCV), Santiago, Chile, pp. 2938-2946, Dec. 2015.
[https://doi.org/10.1109/ICCV.2015.336]
- TensorFlow, "Next-generation pose detection with MoveNet and TensorFlow.js," TensorFlow Blog, May 2021. [Online]. Available: https://blog.tensorflow.org/2021/05/next-generation-pose-detection-with-movenet-and-tensorflowjs.html
-
D. Maji, S. Nagori, M. Mathew, and D. Poddar, "YOLO-Pose: Enhancing YOLO for multi-person pose estimation using object keypoint similarity loss", Proc. of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), New Orleans, Louisiana, pp. 2637-2646, Jun. 2022.
[https://doi.org/10.1109/CVPRW56347.2022.00297]
-
H. A. Hassan, B. M. Abdelhamid, A. M. Hassan, and W. M. Ahmed, "Automatic feedback for physiotherapy exercises based on PoseNet," International Journal of Advanced Computer Science and Applications, vol. 11, no. 10, pp. 524-530, Oct. 2020.
[https://doi.org/10.14569/IJACSA.2020.0110167]
-
P. Xia, L. Zhang, and F. Li, "Learning similarity with cosine similarity ensemble", Information Sciences, Vol. 307, pp. 39-52, Jun. 2015.
[https://doi.org/10.1016/j.ins.2015.02.024]
-
N. Arvanitis, E. Sartinas, and D. Kosmopoulos, "Procrustes-DTW: Dynamic time warping variant for the recognition of sign language utterances", Proc. of the IEEE International Conference on Acoustics, Speech, and Signal Processing Workshops (ICASSPW), Rhodes Island, Greece, pp. 1-5, Jun. 2023.
[https://doi.org/10.1109/ICASSPW59220.2023.10193012]
- J. H. Kim, S. H. Kim, J. R. Kim, S. J. An, K. R. Moon, and E. H. Kim, "A study on the user exercise posture feedback using mobile devices", Proc. of KIIT Conference, Jeju, Kora, pp. 10-13, Nov. 2021.
- COCO Consortium, "Keypoint Evaluation Metrics," COCO Dataset, Aug. 2017. [Online]. Available: https://github.com/cocodataset/cocodataset.github.io/blob/master/dataset/keypoints-eval.md
-
C. R. Harris et al., "Array programming with NumPy," Nature, vol. 585, no. 7825, pp. 357-362, Sep. 2020.
[https://doi.org/10.1038/s41586-020-2649-2]
- M. Kumar, "Scaling real-time communication using WebSockets", Medium, May 2023. https://medium.com/@mkumar9009/scaling-real-time-communication-using-websockets-15d8ded1ba53, .
-
R. Ahmed, P. Biradar, and R. Bharadwaj, "Real time communication using WebSockets", SSRN, Aug. 2024.
[https://doi.org/10.2139/ssrn.4912638]
-
J. Smith, L. Wang, and M. Patel, "Robust Skeleton Alignment for Human Pose Estimation Using Graph Neural Networks," IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 44, no. 3, pp. 1234-1247, Mar. 2024.
[https://doi.org/10.1109/TPAMI.2023.3287654]
2022년 3월 ~ 현재 : 경기대학교 AI컴퓨터공학부 학사과정
관심분야 : 딥러닝, 머신러닝, 인공지능, 컴퓨터비전
2020년 3월 ~ 현재 : 경기대학교 AI컴퓨터공학부 학사과정
관심분야 : 3D 객체탐지, 3D 이미지 합성, 이상탐지, 딥러닝, 머신러닝, 2D 객체 탐지
2022년 3월 ~ 현재 : 경기대학교 AI컴퓨터공학부 학사과정
관심분야 : Web Front-end 개발
2020년 3월 ~ 현재 : 경기대학교 AI컴퓨터공학부 학사과정
관심분야 : 컴퓨터과학, 클라우드 엔지니어링
2000년 2월 : 인하대학교 전자계산공학과(공학사)
2002년 2월 : 인하대학교 전자계산공학과(공학석사)
2005년 8월 : 인하대학교 컴퓨터정보공학부(공학박사)
2006년 3월 ~ 2017년 2월 : 상지대학교 컴퓨터정보공학부 교수
2017년 3월 ~ 현재 : 경기대학교 AI컴퓨터공학부 교수
관심분야 : 데이터마이닝, 헬스케어, 빅데이터, HCI, 컴퓨터비전, 인공지능, 추천시스템








