DuckDB와 Hybrid Deep Learning(Conv1D-LSTM)을 활용한 가상 센서 기반 보행 이상 감지 시스템
Walk-Fit은 웨어러블 센서 데이터와 딥러닝 기술을 활용하여 보행 패턴을 정량적으로 분석하고, 요추 질환 환자의 임상 의사결정을 돕기 위해 개발된 시스템입니다.
기존의 보행 분석은 고가의 장비(Motion Capture System)나 주관적인 설문(VAS, ODI)에 의존해야 하는 한계가 있었습니다. 본 프로젝트는 발(Foot)에 부착된 IMU 센서 데이터만을 이용하여 골반(Pelvis)의 움직임을 예측하는 '가상 센서(Virtual Sensor)' 모델을 구축하고, 예측값과 실제값의 오차(Reconstruction Error)를 분석하여 보행의 이상 유무를 진단합니다.
- 가상 센서 모델링: 양발의 가속도 데이터로 골반의 움직임을 예측 (Multi-Input Multi-Output Regression).
- 하이브리드 딥러닝: 공간적 특징 추출(Conv1D)과 시계열적 특징 추출(LSTM)을 결합한 모델 아키텍처 적용.
- CDSS 대시보드: 의료진과 환자가 보행 대칭성과 이상 여부를 직관적으로 확인할 수 있는 웹 인터페이스 제공.
본 프로젝트는 Kuopio Gait Dataset을 기반으로 학습 및 검증되었습니다.
- 데이터셋명: Kuopio gait dataset: motion capture, inertial measurement and video-based sagittal-plane keypoint data from walking trials
- 출처: Zenodo - 10.5281/zenodo.10559504
- 발행: University of Eastern Finland (2024)
- 논문: Data in Brief, Vol 56, 110841 (2024)
- 피험자: 51명 (성인, 남녀 혼합)
- 수집 기간: 2022-2023년, HUMEA Laboratory, Kuopio, Finland
- 조건: 맨발(barefoot) 보행 측정
- 데이터 용량: 총 23.3 GB (3개의 ZIP 파일로 분할)
본 프로젝트는 Movella Xsens MTw Awinda IMU 센서 데이터를 활용합니다:
| 위치 | 센서 ID | 샘플링 레이트 |
|---|---|---|
| 골반 (Pelvis) | B42DA3 | 100 Hz |
| 우측 대퇴 (Right Femur) | B42DA2 | 100 Hz |
| 좌측 대퇴 (Left Femur) | B42D4D | 100 Hz |
| 우측 경골 (Right Tibia) | B42DAE | 100 Hz |
| 좌측 경골 (Left Tibia) | B42D53 | 100 Hz |
| 우측 발 (Right Foot) | B42D48 | 100 Hz |
| 좌측 발 (Left Foot) | B42D51 | 100 Hz |
-
IMU 데이터 (
imu_extracted/):calibratedAcceleration: 보정된 3축 가속도 (중력 포함)freeAcceleration: 자유 가속도 (중력 제거)rotationMatrix: 회전 행렬quaternion: 쿼터니언time: 타임스탬프 (100Hz)
-
Motion Capture 데이터 (
mocap/):- 3D 마커 궤적 (C3D 형식)
- 지면 반력 및 모멘트 (Force Plate)
-
비디오 데이터 (
openpose/):- OpenPose BODY_25 모델 기반 관절 키포인트 (JSON)
-
Input Features:
- 좌측 발 3축 가속도 (
lf_ax,lf_ay,lf_az) - 우측 발 3축 가속도 (
rf_ax,rf_ay,rf_az)
- 좌측 발 3축 가속도 (
-
Target Output:
- 골반 3축 가속도 (
pelvis_ax,pelvis_ay,pelvis_az)
- 골반 3축 가속도 (
-
데이터 전처리:
- DuckDB를 활용한 고속 데이터 로딩 및 정규화 (Min-Max Scaling)
- 시계열 윈도우 슬라이딩 (100 timesteps)
- CC BY 4.0 (Creative Commons Attribution 4.0 International)
- Data Ingestion: DuckDB를 이용한 고속 데이터 처리 및 정규화 (Min-Max Scaling).
- Model Training: Keras Tuner(Hyperband)를 이용한 하이퍼파라미터 최적화.
- Anomaly Detection: 예측 오차(MAE) 기반의 임계값 설정을 통한 이상 보행 탐지.
- Visualization: Streamlit 기반의 실시간 히트맵 및 시계열 그래프 시각화.
공간적 특징과 시계열 특징을 동시에 학습하기 위해 CNN-LSTM 하이브리드 모델을 채택했습니다.
Input (100 timesteps, 6 features: L/R Foot Acc)
↓
Conv1D (32 filters) → 공간적 패턴 추출
↓
MaxPooling1D → 차원 축소 및 중요 특징 보존
↓
LSTM (80 units) → 시계열적(시간 흐름) 패턴 학습
↓
Dropout (0.2) → 과적합(Overfitting) 방지
↓
Dense (3 outputs) → 예측된 골반 가속도 (Pelvis Acc X, Y, Z)
본 프로젝트는 의존성 관리를 위해 Poetry 사용을 권장합니다.
# 가상환경 생성 및 패키지 설치
poetry install# requirements.txt를 이용한 설치
pip install -r requirements.txtDuckDB를 통해 데이터를 로드하고 모델을 학습시킵니다. 학습 결과는 Results/ 폴더에 저장됩니다.
poetry run gait-train또는
python src/gait_analysis/main.pyStreamlit 기반의 보행 분석 대시보드를 실행합니다.
poetry run gait-app또는
streamlit run src/gait_analysis/frontend.py- 실행 후 브라우저에서 http://localhost:8501 접속.
- 참고: 브라우저 환경에 따라 초기 로딩 속도가 다를 수 있습니다.
gait_sample/ 폴더에 포함된 샘플 데이터를 웹 앱에 업로드하여 테스트할 수 있습니다.
real_normal_gait.csv: 정상 보행 샘플real_abnormal_gait.csv: 비정상(병적) 보행 샘플
사용자 데이터를 업로드할 경우, CSV 파일은 아래 컬럼을 반드시 포함해야 합니다. (최소 100개 이상의 타임스텝 필요)
| 구분 | 컬럼명 | 설명 |
|---|---|---|
| Input (Left) | lf_ax, lf_ay, lf_az |
왼발 가속도 (x, y, z) |
| Input (Right) | rf_ax, rf_ay, rf_az |
오른발 가속도 (x, y, z) |
| Target | pelvis_ax, pelvis_ay, pelvis_az |
골반 가속도 (x, y, z) |
모델의 예측값(가상 골반 움직임)과 실제 센서값의 **평균 절대 오차(MAE)**를 기준으로 상태를 판정합니다.
- 🟢 정상 (Normal): MAE < 3.0
- 🟡 관찰 필요 (Warning): 3.0 ≤ MAE < 4.0
- 🔴 비정상/위험 (Abnormal): MAE ≥ 4.0
.
├── src/
│ └── gait_analysis/
│ ├── main.py # 모델 학습 및 튜닝 엔트리포인트
│ ├── frontend.py # Streamlit 웹 대시보드 구현
│ └── run_app.py # 앱 실행 래퍼 스크립트
├── Results/
│ ├── train_stats.json # 데이터 정규화 통계 정보
│ ├── Training_history.csv # Epoch별 학습 손실 기록
│ └── save_trial.csv # Keras Tuner 하이퍼파라미터 탐색 로그
├── gait_sample/ # 테스트용 샘플 데이터셋
├── best_model.weights.h5 # 학습 완료된 최적 모델 가중치
├── pyproject.toml # Poetry 의존성 설정 파일
└── requirements.txt # pip 호환 의존성 리스트
- Python: 3.9 (3.9.7 제외)
- Core: TensorFlow (^2.14.0), Keras Tuner (^1.4.0)
- Data: DuckDB (^0.9.0), NumPy, Pandas
- Web/Viz: Streamlit (^1.28.0), Plotly (^5.17.0), Matplotlib
# 패키지 빌드
poetry build
# PyPI 배포
poetry publishMIT License
Lee Won Seok
- Kyung Hee University, Dept. of Biomedical Engineering
- Email: icpuff83@khu.ac.kr