Skip to content

About

Personalized FOG (Freezing of Gait) Detection System for Parkinson's Disease using Multimodal Biosignals (sEMG, EEG, IMU) and Hybrid Deep Learning.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

[DeepL Translation of dalgona039/fog-detection-semg]

🧠 FOG Detection using Multimodal Biosignals (sEMG, EEG, IMU)

파킨슨병 환자의 보행 동결(FOG) 탐지를 위한 하이브리드 딥러닝 및 개인화 모델 연구 프로젝트

Python TensorFlow Poetry License

📋 프로젝트 개요 (Overview)

**보행 동결(Freezing of Gait, FOG)**은 파킨슨병 환자가 보행을 시작하거나 방향을 전환할 때 발이 바닥에 붙은 것처럼 움직이지 못하는 현상으로, 낙상 사고의 주원인이 됩니다.

본 프로젝트는 **58채널의 멀티모달 생체 신호(sEMG, EEG, IMU)**를 융합하여 FOG 이벤트를 실시간으로 탐지하는 딥러닝 시스템을 구축합니다. 특히, 환자 간 생체 신호의 편차가 심한 문제를 해결하기 위해 **'일반화 모델(Generalized)'**과 **'개인화 모델(Personalized)'**의 성능을 비교 분석하고, 최적의 탐지 전략을 제시합니다.

🎯 핵심 목표

  • Multimodal Fusion: sEMG(근전도), EEG(뇌파), IMU(관성) 데이터의 융합 분석
  • Model Comparison: CNN-LSTM(하이브리드) vs LSTM vs Random Forest 성능 비교
  • Personalization: 환자별 맞춤형 학습을 통한 FOG 탐지 정확도(Recall) 극대화 (92.5% 달성)

📊 데이터셋 (Dataset)

본 프로젝트는 Mendeley Data의 공개 데이터셋을 활용하였습니다.

  • 데이터셋 명: Multimodal Dataset of Freezing of Gait in Parkinson's Disease
  • 출처 (DOI): 10.17632/r8gmbtv7w2.3
  • 피험자: 파킨슨병 환자 12명
  • 데이터 구성 (총 58채널, 500Hz Sampling)
    • 🧠 EEG (25 ch): 뇌 활동 모니터링
    • 💪 sEMG (5 ch): 다리 근육(Gastrocnemius, Tibialis Anterior 등) 활동 측정
    • 👟 IMU (28 ch): 가속도(Acc), 자이로(Gyro) - 양발, 다리, 골반 부착

🏗️ 프로젝트 구조 (Directory Structure)

fog-detection-semg/
├── data/
│   ├── Labeled Data/          # 레이블링된 원본 데이터 (.txt, .csv)
│   ├── Preprocessed Data/     # 전처리(정규화, 다운샘플링) 완료된 데이터
│   └── Segmented Data/        # 시계열 윈도우(Sliding Window)로 분할된 데이터
├── notebooks/
│   ├── 01_initial_data_exploration.ipynb    # 데이터 EDA, 시각화, 클래스 불균형 확인
│   ├── 02_deep_learning_models.ipynb        # CNN-LSTM 및 LSTM 모델 학습 및 평가
│   ├── Randon_forest_pakinsin.ipynb         # Random Forest 기반 ML 분류 실험
│   ├── multimodal_fog_model.keras           # 학습 완료된 딥러닝 모델 파일
│   ├── model_history.npy                    # 학습 Loss/Accuracy 히스토리
│   ├── X_test_scaled.npy                    # 테스트용 입력 데이터 (전처리됨)
│   └── y_test.npy                           # 테스트용 정답 레이블
├── src/
│   └── fog_detection_semg/    # 데이터 로더 및 전처리 유틸리티 소스
├── tests/                     # 유닛 테스트 코드
├── pyproject.toml             # Poetry 의존성 설정 파일
└── README.md                  # 프로젝트 문서

🚀 시작하기 (Getting Started)

필수 요구사항 (Prerequisites)

  • Python: >= 3.12
  • Package Manager: Poetry

설치 및 실행 (Installation)

  1. 저장소 클론

    git clone <repository-url>
    cd fog-detection-semg
  2. Poetry를 이용한 의존성 설치

    poetry install
  3. 가상환경 활성화

    poetry shell
  4. Jupyter Lab 실행

    jupyter lab

🧪 연구 방법 및 실험 결과 (Methodology & Results)

1. 딥러닝 모델 아키텍처 (02_deep_learning_models.ipynb)

  • CNN-LSTM Hybrid:
    • Conv1D: 다채널 센서 데이터의 공간적 특징(Spatial Feature) 추출
    • LSTM: 시계열 데이터의 시간적 흐름(Temporal Feature) 학습
    • Dropout (0.3): 과적합 방지
  • Windowing: 1초 윈도우 (Window size 32 @ Downsampled 25Hz), 50% Overlap

2. 실험 결과: 일반화 vs 개인화

FOG 탐지의 난제인 '환자 간 개인차'를 극복하기 위한 비교 실험 결과입니다.

모델 접근 방식 알고리즘 결과 (Recall) 분석
일반화 모델
(Generalized)
CNN-LSTM ❌ Failure
(21 ~ 57%)
환자 A의 데이터로 B를 예측할 경우, 생체 신호 패턴의 차이로 인해 심각한 성능 저하 발생
개인화 모델
(Personalized)
LSTM ✅ Success
(92.5%)
특정 환자 데이터를 기반으로 미세 튜닝(Fine-tuning) 시 FOG 이벤트를 정확하게 포착

결론: 복잡한 모델보다 환자 맞춤형(Personalized) 학습 전략이 임상 적용에 훨씬 유효함을 입증했습니다.


📦 기술 스택 (Tech Stack)

  • Language: Python 3.12
  • Deep Learning: TensorFlow, Keras (>= 2.14.0)
  • Machine Learning: Scikit-learn, Imbalanced-learn (SMOTE 등)
  • Data Analysis: Pandas, NumPy, SciPy (Signal Processing)
  • Visualization: Matplotlib, Seaborn
  • Environment: Poetry, Jupyter Lab

🔬 사용 예시 (Usage)

학습된 .keras 모델을 로드하여 새로운 센서 데이터에 대한 추론을 수행할 수 있습니다.

import numpy as np
from tensorflow.keras.models import load_model

# 1. 모델 로드
model = load_model('notebooks/multimodal_fog_model.keras')

# 2. 테스트 데이터 로드 (형상: [samples, time_steps, features])
X_test = np.load('notebooks/X_test_scaled.npy')

# 3. 예측 수행
predictions = model.predict(X_test)
predicted_classes = (predictions > 0.5).astype(int)

print(f"Detected FOG Events: {np.sum(predicted_classes)}")

📝 개발 로드맵 (Roadmap)

  • 멀티모달 데이터 전처리 파이프라인 구축
  • CNN-LSTM 및 Random Forest 모델 비교 평가
  • 개인화 모델의 유효성 검증 (Recall 92.5% 달성)
  • 실시간 스트리밍 데이터 처리 (Real-time Inference)
  • 모바일/임베디드 환경을 위한 모델 경량화 (TFLite)
  • 웹 기반 보행 분석 대시보드 구축

🤝 기여하기 (Contributing)

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 라이센스 (License)

This project is licensed under the MIT License.


👨‍💻 작성자 (Author)

Lee Won Seok

About

Personalized FOG (Freezing of Gait) Detection System for Parkinson's Disease using Multimodal Biosignals (sEMG, EEG, IMU) and Hybrid Deep Learning.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages