1. 서 론
퇴행성관절염은 연골 손상의 마찰로 인해 발생하는 질병으로, 65세 이상 노인의 내원 빈도수 3위를 차지하며, 대부분의 노인들이 겪고 있는 흔한 관절질환이다[3,15,16]. 퇴행성 관절염의 진단은 보통 방사선 검사로 진행한다[9]. X-ray 촬영을 통한 방사선 검사는 전문 의료 기기를 통한 진료이므로 환자가 병원을 내원하여 이루어 진다. 하지만 퇴행성관절염으로 인한 무릎 통증 및 보행 장애는 대면 진료에 대한 어려움을 야기한다. 특히 코로나로 인해 비대면 진료의 중요성이 대두되며 기존 퇴행성 관절염 진단 방식 또한 변화해야 할 필요성이 커지고 있다. 이러한 문제를 해결하기 위해 본 연구에서는 3차원 보행 영상 기반 퇴행성 관절염 환자 분류 알고리즘을 제안하여, 퇴행성 관절염의 원격 진단을 가능하게 하는 것을 목표로 한다. 먼저, Azure Kinect DK Depth Camera를 통해 실시간 3차원 관절 좌표를 수집한다[1]. 수집한 관절 좌표 기반으로 보행 특성을 생성하고, 시각화 및 통계적 기법을 활용하여 퇴행성 관절염 보행 특성 6가지를 산출한다. 이후, Random Forest 분류기를 통해 앞서 산출 된 보행 특성을 독립변수로 한 퇴행성 관절염 환자 분류 알고리즘을 개발한다. 추가적으로 특성별 병적 분류 알고리즘을 통한 병적 원인 규명으로 퇴행성 관절염 진단 보조 역할을 가능하게 한다.
본 논문의 구성은 다음과 같다. 제2장에서 퇴행성 관절염 환자 분류 시스템 및 3D Depth Camera를 통한 관절좌 표 추출, 일원배치법에 대한 이론적 배경 및 선행 연구를 분석한다. 제3장에서는 3단계로 구성된 3차원 보행 영상 기반 퇴행성 관절염 환자 분류 알고리즘에 대한 방법론을 소개한다. 제4장에서는 방법론을 통해 수행한 실험의 결과에 대해 다루고, 제5장에서 연구의 결론 및 한계점에 대해 서술한다.
2. 이론적 배경
2.1 퇴행성 관절염 환자 분류 시스템
퇴행성 관절염은 대표적인 노인성 질환으로 치명적인 질병으로 분류가 되지는 않지만 대한민국을 비롯 일본 등 고령화 사회로 접어들은 국가들에서 이에 대한 예방 및 치료를 위하여 환자 분류에 대한 연구가 활발히 진행 중이다. 퇴행성 관절염 환자의 무릎 관절 X-ray 데이터를 딥러닝 모델에 적용하여 분류하는 연구가 진행되었다 [8]. 이 연구는 방사선 영상을 먼저 촬영한 후, 영상을 통 해 무릎 관절 간격이 줄어드는 정도와 연골 아래 뼈의 움직임을 관찰하는 방식이다. 해당 연구는 딥러닝 모델을 통해 시각적 변화를 객관적인 지표로 전달하는 것이 가능하다. 하지만 의료 데이터 수집 환경의 특성상, 데이터 수집에 대한 한계가 존재한다. 대표적으로 웨어러블 센서를 기반으로 걸음걸이 관련 물리량을 측정하여 퇴행성 관절염을 진단하는 연구가 진행되고 있다[10]. 이러한 센서 기반의 분석 방법은 데이터의 정확성이 높아 분석 결과에 좋은 영향을 준다. 하지만 퇴행성 관절염 진단을 위해 센서 장비를 갖춘 의료시설로의 방문이 필요하며, 보행이 불편한 환자들에게 있어 접근성에 대한 한계점이 존재한다.
2.2 3D Depth Camera
대표적으로 3D Depth Camera에서 사용하는 센서는 RGB-D와 ToF(Time-of-Flight)가 있다. RGB-D 카메라는 일반적인 디지털 카메라와 함께 깊이 센서를 통합하여 작동한다. 깊이 센서는 일반적으로 시간 차를 이용한 구조광 또는 레이저 투사를 사용하여 scene의 각 포인트에 대한 거리 정보를 측정한다. 이 거리 정보는 픽셀별로 캡처 되어 깊이 이미지로 표현된다. ToF(Time-of-Flight) 카메라는 광원, 광학 시스템, 이미지 센서로 구성된다. 광원은 일반적으로 적외선을 사용하며, 광원은 물체나 환경에 반사 되어 돌아오는 광을 측정한다. 광원은 단계적으로 켜지고 꺼지는 펄스를 생성하여 측정 시간을 정확하게 관리한다. 3D Depth Camera로부터 획득한 3차원 관절 좌표를 활용한 연구는 활발히 진행되고 있다.
RGB-D Camera를 이용한 선행 연구는 다음과 같다. Kinect v2 카메라의 RGB-D 센서를 사용하여 골관절염 환자의 보행 데이터를 수집하고, 관절좌표 13개를 사용하여 분석한 연구가 진행되고 있다[2]. RGB-D 센서는 깊이 데이터의 해상도가 Tof(Time-of-Flight) 센서보다 상대적으로 낮으며, 부분적인 움직임을 정확하게 감지하기 어렵다. 정밀한 관절좌표 추적이 필요한 경우 RGB-D 센서는 ToF(Time-of-Filght) 센서에 비해 정확한 데이터 수집에 한계가 있다. 또한 방법론에서 임상의의 경험에서 추출한 describable features와 convolutional LSTM network를 사용하여 자동으로 추출한 implicit features를 결합하여 골관절염을 정확하게 분류가 가능하다. 하지만 describable features 경우 보행거리, 무릎 각도 등으로 일반인들이 알 수 있는 특성이지만 implicit features은 딥러닝 모델에서 설명 하기 어려운 데이터 패턴이나 관련성을 나타내기 때문에 명확한 원인을 규명할 수 없다.
다른 선행 연구로는 RGB-D 센서를 통해 수집한 보행 데이터를 활용하여 연령과 성별 분류를 진행한다.[19]. 해당 연구는 실제 보행 데이터를 수집하였지만, RGB-D는 주변 조명에 매우 민감하며 실험 환경에 따라 센서 성능이 저하될 수 있다는 단점이 존재한다.
2.3 분산분석, 일원배치법
분산분석(Analysis of Variance)이란 통계학에서 두 개 이상 다수의 집단을 서로 비교하고자 할 때 집단 내의 분산, 총평균 그리고 각 집단의 평균차에 의해 생긴 집단 간 분산의 비교를 통해 만들어진 F분포를 이용하여 가설 검정을 하는 방법이다[4]. 다양한 시나리오에서 이를 사용하여 서로 다른 그룹의 평균 간에 차이를 통해 각 인자가 끼치는 영향을 분석할 수 있다. 그중 특성치에 대하여 하나의 인자(Factor)의 영향을 조사하기 위해 사용하는 가장 단순한 실험 계획법을 일원배치법(One-way ANOVA)이라 한다. 본 연구에서는 각 특성값이 정상보행, 병적보행 간 통계적으로 유의한 차이를 보이는가에 대해 일원배치법을 적용하여 p-value와 F-value를 통해 검증하고자 한다. 실제로 과제지향 균형운동이 퇴행성 슬관절염 환자의 보행 및 균형에 미치는 영향을 분석하는 연구에서 해당 통계적 기법이 사용되기도 하였다. 균형 운동의 전후로 각 실험 군 간 통계적 유의함을 일원 배치법을 통해 밝힌 바 있다[12].
3. 연구 방법
본 논문의 전체적인 연구 방법은 <Figure 1>과 같이 총 3단계로 구성된다.
3.1 데이터 수집
본 연구에서는 Microsoft사의 Azure Kinect DK를 활용 하여 보행자의 3차원 관절좌표(X,Y,Z)를 실시간으로 추적 한다. Azure Kinect DK는 ToF(Time-of-Flight) 센서 기반의 Depth Camera이며, 가상 현실, 게임, 로봇 공학 및 의료 영상 분야 등 높은 정확도를 요하는 현장 및 연구 분야에서 주로 사용된다[5,6,14]. Azure Kinect DK에서 제공하는 신체추적 SDK(Software Development Kit)는 각 신체 부위 또는 전신에 대한 올바른 해부학적 골격과 고유 ID를 제공하며, 신체 부위 및 고유 ID는 아래 <Table 1>과 같다. 실시간으로 추적한 관절 좌표를 초당 30프레임 단위로 추출하고 이를 CSV 형태로 저장하여 보행 데이터를 수집한다.
본 연구에서는 대상자들의 동의하에 20대 성인 50명(남 : 39명, 여 : 11명)의 보행 데이터를 수집하였다. 실제로 보행에 어려움을 겪고 있는 환자로부터 보행 데이터를 수집하는 것은 환자에 대한 고통이므로 실험 대상을 건강한 20대 성인으로 선정하였다. 퇴행성 관절염 환자의 보행 재현을 위해 의료 전문가의 지시하에 실험 대상자 교육을 진행하였으며, 데이터 수집 과정은 <Figure 2>와 같다. 대 상자는 2.4m의 직선거리를 보행하고, 보행 과정을 2.21m ~ 2.51m 떨어진 거리에서 Azure Kinect DK로 촬영한다. 대상자는 정상 보행, 병적 보행 각 10회씩 진행한다.
정상 보행과 병적 보행 차이는 다음과 같다. 정상 보행은 보행 시 몸통이 수직으로 유지되며, 균형을 잘 유지하는 것으로 보인다. 또한 일정한 보행 속도와 보폭이 유지되는 경향이 있다. 하지만 병적 보행에서는 몸통이 기울어진다는 특징을 보이며, 균형과 안정성이 감소되는 경향이 있다. 또한, 관절 통증과 강직성으로 인해 보행속도가 느려지고 보폭이 일정하지 않다[13]. 해당 기준을 정상 보행과 병적 보행의 기준으로 하여 보행 데이터 수집을 진행한다.
최종적으로 수집한 데이터는 정상 보행 데이터 500개와 병적 보행 데이터 500개의 데이터로 이루어져 있다. 총 보행 데이터 1,000개 중 학습 데이터 800개, 검증 데이터 200 개로 나누었으며, 이 때, 정상 보행 데이터와 병적 보행 데이터의 비율은 동일하게 구성한다.
3.2 특성 선정
정상 보행과 병적 보행 간 유의한 차이를 보이는 특성은 아래 3단계를 통해 선정한다.
첫째로 <Table 1>의 Landmarks를 통해 보행 특성을 생성한다. 시간의 따른 관절 좌표의 변화를 조합하여 “보행 속도”, “보행의 폭”, “양 발이 벌어진 각도”, “양 발목이 벌어진 거리”, “양 무릎이 벌어진 거리”, “양 골반이 벌어진 거리”, “발목의 꺾인 정도”, “무릎의 구부러짐 정도”, “골반의 각도”, “발목의 각도 변화량”, “무릎의 각도 변화량”, “골반의 각도 변화량”, “팔꿈치의 각도”, “팔꿈치의 각도 변화량”, “고개 숙임 정도”, “허리 숙임 정도”, “몸통 기울기 정도” 총 17개의 보행 특성을 생성한다[11,17,18]. 해당 보행 특성은 관련 연구들을 분석 이를 기반으로 하여 Azure Kinect DK가 제공하는 신체추적 SDK(Software Development Kit) 내 관절들로 추출한 보행 특성이다.
둘째로 특성별 시각화를 통해 정상 보행과 병적 보행 간 유의한 차이를 보이는 특성을 선정한다. 시각적으로 동일한 경향을 보이는 feature는 정상 보행과 병적 보행을 구 분할 수 없다고 판단하고 보행 특성에서 제외한다. 유의한 차이를 보이는 특성은 “보행속도”, “양 발목이 벌어진 거리”, “양 무릎이 벌어진 거리”, “무릎의 각도 변화량”, “팔 꿈치의 각도 변화량”, “고개 숙임 정도”, “허리 숙임 정도” 로 총 7개이다. <Figure 3>는 7개의 보행 특성 중 “보행속도”, “양 발목이 벌어진 거리”, “무릎의 각도 변화량”, “고개 숙임 정도”의 두 보행 간 유의한 차이가 존재하는 feature를 시각화한 것이다. 또한, XAXIS는 보행의 측정 시간을 나타내고 YAXIS는 각 보행 특성의 변동 값을 나타낸다.
마지막으로 선정한 특성의 유효성을 확인하기 위해 일원배치법으로 통계적 검증을 진행한다. 일원배치법이란 관심 있는 특성치에 대하여 한 가지 요인의 영향을 조사하는 단순한 완전랜덤화 실험계획법이다.
3.1절에서 언급하였듯 데이터는 보행 자세에 따라 구분하여 수집하였다. 이를 활용하여 Gait-Posture라는 한 가지 요인을 설정하였고 정상 보행, 병적 보행 두 가지의 수준을 설정하였다. 또한, 수집한 보행 데이터의 개수를 반복 수로 설정하고 수집된 데이터 값은 각 특성 식을 통해 계산된 값으로 구성된다. 모든 특성의 분산 내 자유도는 1이며 분산 간 자유도는 998이 된다. 분산분석에 따른 P-value와 F 검정 결과는 <Table 2>와 같으며, 7개의 특성 중 6개의 특성이 유의수준 1%에서 통계적으로 유의함을 보였다[7].
아래는 최종 선정된 6가지 특성에 대한 설명과 그 값을 산출하는 특성 식이다.
3.2.1 Standardized Velocity
실험 대상자 골반의 X좌표를 활용하여 보행속도를 산출한다. 골반은 전후 반동이 적은 관절로 보행 거리를 산출하는 데 적합하다. 실험 대상자의 보행과 동시에 측정되는 골반의 X좌표의 프레임별 차이 값을 합산하여 이동 거리를 계산한다. 이동 시간은 실험 대상자가 Azure Kinect 카메라에 인식되는 시간으로 정의하여 계산한다. 아래 수식은 이동 거리를 이동 시간으로 나누고 실험 대상자의 양쪽 다리 길이의 평균을 활용해 보행속도를 표준화하는 수식이다. PelvisXt 는 시간에 따른 골반의 X좌표를, Ti 는 프레임별 시간을, Aυerage Leg Lengtht = 0은 실험 대상자의 양쪽 다리길이의 평균을 의미한다.
3.2.2 Standardized Knee Diff Z
실험 대상자 양 무릎의 Z 좌표를 활용하여 양 무릎의 벌어진 정도를 산출한다. 실험 대상자의 보행과 동시에 측정되는 프레임별 왼쪽 무릎과 오른쪽 무릎 사이 거리의 평균을 계산한다. 아래 수식은 위 과정을 실험 대상자의 골반 너비를 활용해 표준화하는 수식이다. Knee Lz,Knee Rz 는 왼쪽(L), 오른쪽(R) 무릎의 Z좌표를, Ti 는 프레임별 시간을, Pelυis Lengtht = 0은 실험 대상자의 좌우 골반 Z좌표의 차이인 골반 너비를 의미한다.
3.2.3 Standardized Ankle Diff Z
실험 대상자 양 발목의 Z 좌표를 활용하여 양 발목의 벌어진 정도를 산출한다. 실험 대상자의 보행과 동시에 측정되는 프레임별 왼쪽 발목과 오른쪽 발목 사이 거리의 평균을 계산한다. 아래 수식은 위 과정을 실험 대상자의 골반 너비를 활용해 표준화하는 수식이다. Knee L,Rz는 왼쪽(L), 오른쪽(R) 무릎의 Z좌표를, Ti는 프레임별 시간을, Pelυis Lengtht = 0은 실험 대상자의 좌우 골반 Z좌표의 차이인 골반 너비를 의미한다.
3.2.4 Change of Knee Angle
실험 대상자 양 무릎, 발목, 골반의 X좌표를 활용하여 무릎의 각도 변화량을 산출한다. 엉덩이부터 무릎까지 길이를 A, 무릎부터 발목까지 길이를 B, 엉덩이부터 발목까지 길이를 C로 두어 law of cosines을 활용하여 무릎의 각도를 계산한다. 이를 프레임 별 계산된 값의 차이를 합산하고 이동 시간으로 나누어 양 무릎의 각도 변화량을 계산 한다. 아래 수식은 양 무릎의 각도 변화량의 평균값을 산출하는 수식이다. ΔAngleKneeL,KneeR은 law of cosines을 활용하여 프레임별로 계산한 왼쪽(L), 오른쪽(R) 무릎의 각도 변화량, Ti 는 프레임별 시간을 의미한다.
3.2.5 Amount of Head Lowering
실험 대상자의 머리, 골반의 X좌표를 활용하여 고개 숙임 정도를 산출한다. 실험 대상자의 고개가 숙여질수록 머리의 X좌표와 골반의 X좌표의 차이는 커지고, 고개를 들 수록 차이는 작아진다. 아래 수식은 각 프레임 별 머리의 X좌표와 골반의 X좌표의 차이 값을 평균을 계산한다. NeckX는 목의 X좌표를, PelυisX는 골반의 X좌표를, Ti 는 프레임별 시간을 의미한다.
3.2.6 Amount of Back Bending
실험 대상자의 가슴 중앙과 배꼽의 X좌표를 활용하여 허리 숙임 정도를 산출한다. 실험 대상자의 허리가 숙여질 수록 가슴 중앙의 X좌표와 배꼽의 X좌표의 차이는 커지고, 허리를 세울수록 차이는 작아진다. 아래 수식은 각 프레임 별 가슴 중앙의 X좌표와 배꼽의 X좌표의 차이 값을 평균을 계산한다. SpinNeck X 는 양쪽 가슴 중심의 X좌표를, NaυelX 는 배꼽의 X좌표를, Ti 는 프레임별 시간을 의미한다.
3.3 모델 학습
정상 보행과 병적 보행을 분류하기 위해 이진 분류 모델을 활용한다. 이진 분류는 10가지 머신러닝 모델을 사용 한다. SVM에서는 Linear SVM와 Gaussian Kernel SVM을 사용한다. Regression Classifier에서는 Logistic Regression Classifier을 사용한다. Tree 기반 모델로는 Decision Tree와 Random Forest를 사용한다. Boosting 기반 모델로는 Adaboost, Gradient Boost, LightGBM, XGBoost 모델을 사용한다. 최근접 이웃 분류 알고리즘으로 K-NN Classifier 모델을 사용한다. 모델 학습에 사용한 하드웨어는 NVIDIA RTX 4090 GPU, RAM 32GB이며, 모든 모델 학습은 동일한 환경에서 진행한다.
3.4 특성별 분류 알고리즘
병적으로 분류된 보행 결과를 세분화하기 위해 특성별 분류 알고리즘을 개발하였다. 특성별 분류 알고리즘은 3.2장에서 최종 선정된 6가지 보행 특성을 독립적으로 비교한다. 보행 특성의 값이 병적 보행의 평균값에 더 근접할 경우, 병적 보행 분류의 원인으로 정의한다. <Algorithm 1>은 Standardized Velocity의 특성별 분류 알고리즘을 설명한다.
3.2절의 6가지 보행 특성 수식을 통해 산출된 6가지 보행 특성별 1000개의 값을 기반으로 정상 보행 값 500개와 병적 보행 값 500개의 평균을 산출한다.
아래 수식의 Mean(N) 은 특성별 정상 보행의 평균값, Mean(A) 은 특성별 병적 보행의 평균값을 나타낸다. 수식 에서 NfeatureX 는 정상 보행 데이터의 특정 feature 값을 의 미하고, AfeatureX 는 병적 보행 데이터의 특정 feature 값을 의미한다. Ncount는 정상 보행 데이터의 개수, Acount는 병적 보행 데이터의 개수를 의미한다.
아래 수식은 특성별 병적 보행 평균값이 정상 보행의 평균값보다 클 때를 가정한 특성별 보행 분류 수식이다. Test Data의 특성 값이 두 평균값의 중앙보다 크거나 같을 때 병적으로, 기준점보다 작을 때 정상으로 분류한다. 반대로 특성별 병적 보행 평균값이 정상 보행의 평균값보다 작다면, 보행 분류는 반대로 진행된다.
4. 연구 결과
3.2장의 6가지 보행 특성을 기준으로 병적 보행을 분류 하는 실험을 진행하였다. 3.3장에서는 10가지 모델을 통해 학습을 진행하였고, 아래 <Table 3>은 10가지 모델에 대한 평가 지표이다. F1-score와 accuracy가 높은 모델을 고려하였으며, 병적 보행을 정상 보행으로 잘못 분류하는 경우를 최소화하기 위해 precision보다 recall 값을 우선으로 고려 하였다. <Table 3>의 결과를 통해 Random Forest 모델을 최종 선정하였다.
Random Forest를 통해 구분한 병적 보행은 특성별 분류 알고리즘을 통해 결과를 세분화한다. <Table 4>는 위 특성 별 분류 알고리즘의 결과 예시이다. Normal(정상 보행) 데이터의 평균과 Limp(병적 보행) 데이터의 Feature Value 평균을 통해 범위를 지정한다. Test Data의 각 Feature Value가 Normal Value와 Limp Value에 근접한 값에 해당하는 결과를 도출할 수 있다. Test Data 1는 정상 보행에 해당하는 데이터의 Feature Value이며 Test Data 2 하체에 문제가 있는 병적 보행 데이터의 Feature Value이다. Test Data 1는 모든 Feature Value가 Normal에 근접하여 모든 Feature가 정상임을 확인할 수 있다. Test Data 2의 경우 Standardized Velocity, Standardized Knee Diff Z, Standardized Ankle Diff Z, Change of Knee Angle의 Value가 Limp와 근접하였다. 위와 같이 특성별 분류 알고리즘으로 모델 판단 결과를 세분화함으로 써 병적 보행에 대한 원인을 규명하였다.
5. 결 론
본 연구는 보행자의 관절 좌표를 활용하여 정상 보행과 병적 보행을 높은 정확도로 구분하였고, 특성별 분류 알고리즘을 통해 병적 보행의 결과를 세분화하였다. Azure Kinect 카메라의 TOF 센서를 활용하여 보행자의 3차원 관절 좌표를 실시간 추적하였고, CSV 형태로 변환하여 분석 하였다. 수집한 관절 좌표를 활용하여 보행 특성을 생성하고, 시각화를 통해 정상 보행과 병적 보행 간 유의한 차이를 보이는 특성을 선정하였다. 이후 통계적 기법인 일원배치법을 통해 각 Feature의 유효성을 유의수준 1%에서의 검증을 완료하였다. 위 특성을 활용한 결과 97.52%의 Accuracy로 정상 보행과 병적 보행을 분류하였고 특성별 분류 알고리즘을 활용하여 병적 보행에 대한 결과를 세분화하였다.
최종 선정한 Random Forest 모델은 앙상블 모델로 학습 데이터에 따른 과적합을 최소화하여 안정성이 돋보이는 모델이다. 본 연구 환경에서 가장 좋은 성능을 보인 Random Forest를 최종 선정하였지만, 해당 결과는 연구의 실효성을 입증하기 위한 초기 실험 과정에서 추론한 결과 이다. 향후 연구로 데이터 추가 수집 및 관절 좌표 계측 오차 보정을 통한 시스템 고도화 과정이 필요하다. 이에 따른 각 모델의 성능변화는 불가피하며, 명확한 기준에 따른 모델 선정 과정이 필요하다. 센서 기반의 퇴행성 관절염 진단법은 개별 환자의 각각의 관절에 센서를 부착해야 하며, 이 과정은 시간 소비와 물리적 불편함을 수반한다. 또한, 높은 정확성을 보장하기 위해 고가의 센서가 필요하며 이는 실질적인 비용 부담이 발생한다. 본 연구는 Azure Kinect DK Camera를 통해 고비용의 장비와 번거로운 측정 과정 문제를 해결하였다. 또한, 통계적으로 검증된 보행 특성을 활용하여 높은 정확도의 예측 모델을 구축하고 세분화된 예측 결과를 제공하였다. 해당 연구를 활용하여 퇴행성 관절염, 근감소증 등과 같은 질환 예방이 가능할 것으로 기대된다.
본 실험은 20대 성인 남녀 50명을 대상으로 진행하였다. 향후 연구에서는 퇴행성 관절염 환자의 실제 보행 데이터를 체계적으로 수집하고, 이를 기반으로 한 신뢰성 있는 분류 시스템의 개발을 목표로 한다. 이를 위해 원격 진료를 가능하게 하는 기술을 적용하고 향상된 접근성을 제공하는 모빌리티 기반의 시스템의 도입을 계획하고 있다. 이런 기술적 혁신을 통해 퇴행성 관절염 환자들이 쉽게 참여 할 수 있는 환경을 조성하여 실제 환자 데이터의 수집이라는 목표를 달성할 것이다.