Skip to content

dalgona039/gait-analysis-project

Repository files navigation

Walk-Fit: 딥러닝 기반 보행 분석 및 요추 질환 임상 의사결정 지원 시스템 (CDSS)

Python TensorFlow DuckDB Streamlit Keras Tuner Poetry License

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 대시보드: 의료진과 환자가 보행 대칭성과 이상 여부를 직관적으로 확인할 수 있는 웹 인터페이스 제공.

📊 데이터셋 (Dataset)

본 프로젝트는 Kuopio Gait Dataset을 기반으로 학습 및 검증되었습니다.

데이터셋 구성

  • 피험자: 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)
  • Target Output:

    • 골반 3축 가속도 (pelvis_ax, pelvis_ay, pelvis_az)
  • 데이터 전처리:

    • DuckDB를 활용한 고속 데이터 로딩 및 정규화 (Min-Max Scaling)
    • 시계열 윈도우 슬라이딩 (100 timesteps)

라이센스

  • CC BY 4.0 (Creative Commons Attribution 4.0 International)

🛠 주요 기능 및 아키텍처

1. 시스템 파이프라인

  1. Data Ingestion: DuckDB를 이용한 고속 데이터 처리 및 정규화 (Min-Max Scaling).
  2. Model Training: Keras Tuner(Hyperband)를 이용한 하이퍼파라미터 최적화.
  3. Anomaly Detection: 예측 오차(MAE) 기반의 임계값 설정을 통한 이상 보행 탐지.
  4. Visualization: Streamlit 기반의 실시간 히트맵 및 시계열 그래프 시각화.

2. 딥러닝 모델 아키텍처

공간적 특징과 시계열 특징을 동시에 학습하기 위해 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)

🚀 설치 (Installation)

본 프로젝트는 의존성 관리를 위해 Poetry 사용을 권장합니다.

Poetry 사용 (권장)

# 가상환경 생성 및 패키지 설치
poetry install

pip 사용

# requirements.txt를 이용한 설치
pip install -r requirements.txt

💻 사용법 (Usage)

1. 모델 학습 (Training)

DuckDB를 통해 데이터를 로드하고 모델을 학습시킵니다. 학습 결과는 Results/ 폴더에 저장됩니다.

poetry run gait-train

또는

python src/gait_analysis/main.py

2. 웹 애플리케이션 실행 (Web App)

Streamlit 기반의 보행 분석 대시보드를 실행합니다.

poetry run gait-app

또는

streamlit run src/gait_analysis/frontend.py
  • 실행 후 브라우저에서 http://localhost:8501 접속.
  • 참고: 브라우저 환경에 따라 초기 로딩 속도가 다를 수 있습니다.

3. 보행 데이터 분석 테스트

gait_sample/ 폴더에 포함된 샘플 데이터를 웹 앱에 업로드하여 테스트할 수 있습니다.

  • real_normal_gait.csv: 정상 보행 샘플
  • real_abnormal_gait.csv: 비정상(병적) 보행 샘플

📋 데이터 형식 (Data Format)

사용자 데이터를 업로드할 경우, 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 호환 의존성 리스트

📦 의존성 (Dependencies)

  • 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

📝 배포 (Distribution)

# 패키지 빌드
poetry build

# PyPI 배포
poetry publish

📄 라이센스

MIT License


👨‍💻 작성자

Lee Won Seok

About

AI-powered Gait Analysis & CDSS for Lumbar Disease using Virtual Sensor Modeling (Conv1D-LSTM).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages