활동 개요

2026년 5월 27일에는 CareWave의 핵심 기술인 WiFi CSI 기반 Skeleton Pose 추정 모델의 성능을 개선했다. 기존에는 CSI 특징값 한 시점만 입력하여 Pose 좌표를 예측했지만, 이번 작업에서는 연속된 CSI 흐름을 입력으로 사용하는 Sequence 기반 학습 구조로 변경했다.

최종적으로 단일 입력 기반 모델에서 Sequence 기반 Conv1D-LSTM 모델로 개선하였고, MediaPipe 실제 Pose와 CSI 예측 Pose가 거의 유사한 형태로 출력되는 것을 확인했다.

WiFi CSI Pose Regression Skeleton Conv1D LSTM MediaPipe MAE

오늘 한 일 요약

  • 기존 CSI 기반 Pose Regression 모델의 한계 분석
  • 단일 CSI 입력 구조를 Sequence 입력 구조로 변경
  • 15-step CSI Sequence 데이터셋 생성
  • Conv1D + LSTM 기반 Pose Regression 모델 재구성
  • Huber Loss, EarlyStopping, ReduceLROnPlateau 적용
  • StandardScaler 기반 Sequence 정규화 방식 수정
  • 관절별 MAE 및 동작별 MAE 평가 코드 실행
  • MediaPipe 실제 Pose와 CSI 예측 Pose 비교 시각화
  • 예측 Skeleton smoothing 적용
  • 기존 모델 대비 MAE 약 29% 감소 확인

1. 기존 모델의 한계

기존 모델은 LSTM을 사용하고 있었지만, 실제 입력 형태는 (samples, 1, features) 구조였다. 즉 LSTM 구조를 사용했음에도 sequence 길이가 1이었기 때문에 시간 흐름을 충분히 학습하지 못했다.

기존 구조

CSI 특징값 1개 시점
    ↓
LSTM 모델
    ↓
현재 Pose 좌표 예측

이 방식은 CSI 데이터만으로 스켈레톤을 출력할 수 있다는 가능성은 보여주었지만, 사람의 행동이 시간에 따라 변화하는 연속적인 움직임이라는 점을 충분히 반영하지 못했다.

특히 낙상처럼 서 있음 → 중심 흔들림 → 급격한 하강 → 바닥 자세로 이어지는 행동은 한 순간의 CSI 값보다 연속적인 CSI 변화 흐름이 중요하다.

2. Sequence 기반 데이터셋 재구성

성능 개선을 위해 기존 단일 샘플 기반 데이터셋을 Sequence 기반 데이터셋으로 재구성했다. 기존에는 CSI 특징값 1개를 입력으로 사용했다면, 개선 후에는 연속된 15개 CSI 시점을 하나의 입력으로 묶었다.

기존 입력
X shape: (samples, 12)

개선 입력
X shape: (10657, 15, 12)

여기서 각 차원의 의미는 다음과 같다.

10657 → 전체 Sequence 샘플 수
15    → 한 입력에 포함되는 연속 CSI 시점 수
12    → 각 시점의 CSI 특징값 개수

즉 모델은 15개 시점의 CSI 변화 흐름을 보고 마지막 시점의 Pose 좌표를 예측하도록 학습되었다. 정답 데이터는 다음과 같이 구성되었다.

Y shape: (10657, 26)

26 = 13개 관절 × x,y 좌표 2개

선택한 관절은 nose, shoulders, elbows, wrists, hips, knees, ankles로 구성하였다. 이는 실제 사람 자세를 스켈레톤 형태로 표현하기 위한 최소 주요 관절이다.

3. 모델 구조 개선

개선된 모델은 Conv1D와 LSTM을 함께 사용하는 구조로 구성했다. Conv1D는 짧은 시간 구간에서 CSI 변화 패턴을 먼저 추출하고, LSTM은 그 변화가 시간에 따라 어떻게 이어지는지 학습한다.

개선 모델 구조

CSI Sequence Input (15, 12)
    ↓
Conv1D(64)
    ↓
BatchNormalization
    ↓
LSTM(128)
    ↓
Dropout
    ↓
LSTM(64)
    ↓
Dropout
    ↓
Dense Layers
    ↓
Pose Coordinates Output (26)

기존 모델은 한 시점의 CSI 특징값만 보고 예측했지만, 개선 모델은 약 3초 동안의 CSI 흐름을 보고 마지막 시점의 자세를 예측한다. 이 구조를 통해 손 흔들기, 걷기, 앉기, 낙상처럼 시간 흐름이 중요한 동작을 더 잘 반영할 수 있게 되었다.

4. 학습 안정화 전략

성능 향상을 위해 모델 구조뿐 아니라 학습 방식도 함께 개선했다.

Huber Loss 적용

기존 MSE는 큰 오차에 매우 민감하기 때문에 CSI 노이즈나 Pose 좌표 튐에 영향을 크게 받을 수 있다. 따라서 개선 모델에서는 Huber Loss를 사용했다. Huber Loss는 작은 오차에는 민감하게 반응하고, 큰 오차에는 완만하게 반응하여 학습을 안정화한다.

EarlyStopping 적용

Validation Loss가 일정 기간 개선되지 않으면 학습을 멈추도록 설정했다. 이를 통해 훈련 데이터만 외우는 과적합을 방지했다.

ReduceLROnPlateau 적용

검증 성능이 정체될 경우 learning rate를 자동으로 줄이도록 설정했다. 초반에는 빠르게 학습하고, 후반에는 작은 learning rate로 세밀하게 조정할 수 있도록 했다.

ModelCheckpoint 적용

학습 중 validation loss가 가장 낮은 모델을 별도로 저장했다. 이를 통해 마지막 epoch 모델이 아니라 가장 성능이 좋았던 모델을 사용할 수 있도록 했다.

5. 예측 결과 Smoothing

CSI 기반 Pose 예측은 프레임마다 미세하게 흔들릴 수 있다. 특히 손목이나 발목처럼 움직임 범위가 큰 관절은 더 쉽게 튈 수 있다.

이를 줄이기 위해 예측 결과에 smoothing을 적용했다.

현재 표시 Pose =
이전 Pose × 0.7
+
현재 예측 Pose × 0.3

이 방식은 이전 프레임의 스켈레톤 형태를 일정 부분 유지하면서 현재 예측값을 반영하기 때문에, 애니메이션에서 관절이 갑자기 튀는 현상을 줄이고 더 자연스러운 움직임을 만들 수 있다.

6. 성능 평가 결과

개선 후 모델의 최종 평가 결과는 다음과 같다.

Test Loss: 8.4199e-05
Test MAE : 0.007867

전체 MAE : 0.007359
전체 MSE : 0.000152

기존 모델의 전체 MAE는 약 0.0104 수준이었고, 개선 후 전체 MAE는 약 0.00736으로 감소했다.

MAE 감소율

(0.0104 - 0.00736) / 0.0104 × 100
≈ 29.2%

즉 Sequence 기반 학습 구조를 적용하면서 기존 대비 약 29% 수준의 오차 감소를 확인했다. MediaPipe 좌표는 0~1 사이의 정규화 좌표이므로, 0.007 수준의 MAE는 실제 스켈레톤 시각화에서도 매우 작은 오차에 해당한다.

7. 관절별 및 동작별 성능 분석

관절별 평가에서는 어깨와 골반처럼 몸통에 가까운 관절이 상대적으로 안정적으로 예측되었다. 반면 손목과 발목은 움직임 범위가 크기 때문에 상대적으로 오차가 높게 나타났다.

관절별 MAE 예시

left_shoulder  : 0.0058
right_shoulder : 0.0057
left_hip       : 0.0059
right_hip      : 0.0057

left_wrist     : 0.0104
right_wrist    : 0.0102

동작별 평가에서는 standing, lying처럼 정적인 자세는 매우 낮은 오차를 보였다. 반면 walking, fall처럼 동작 변화가 크고 빠른 행동에서는 상대적으로 높은 오차가 나타났다.

동작별 MAE 예시

standing : 0.0025
lying    : 0.0027
walking  : 0.0108
fall     : 0.0168

다만 fall과 walking에서도 실제 영상의 자세 흐름과 유사한 스켈레톤 형태가 출력되었기 때문에, CSI 기반으로 행동의 전체 구조를 반영하는 데 성공했다고 볼 수 있다.

8. 개선 전후 비교 영상

아래 영상은 기존 단일 입력 기반 모델과 개선된 Sequence 기반 모델의 Pose 예측 결과를 비교하기 위한 영상이다.

개선 전: 단일 CSI 입력 기반 Pose 예측

기존 방식은 한 시점의 CSI 특징값만 사용했기 때문에 일부 구간에서 관절 위치가 흔들리거나 움직임 연속성이 부족하게 나타났다.

개선 후: Sequence 기반 Pose 예측

개선 후 모델은 연속된 CSI 흐름을 입력으로 사용하여 실제 MediaPipe Pose와 더 유사한 Skeleton 형태를 출력했다.

진행 중

  • 행동별 Skeleton 예측 결과 추가 확인
  • 실시간 CSI 입력을 모델에 연결하는 구조 검토
  • 웹 대시보드에서 Skeleton을 실시간 렌더링하는 방식 설계

내일 할 일

  • FastAPI에서 최종 모델과 scaler를 로드하는 추론 API 구성
  • 실시간 CSI 입력을 Sequence buffer로 쌓는 구조 설계
  • 예측된 26개 Pose 좌표를 JSON 형태로 반환하는 API 작성
  • 프론트엔드 대시보드에서 Skeleton canvas 렌더링 방식 검토

이슈

  • Fall, Walking 동작에서 상대적으로 MAE가 높게 나타남
  • 손목과 발목처럼 말단 관절에서 흔들림이 존재함
  • 현재는 저장된 CSI 데이터 기반 시각화이며, 실시간 대시보드 연동은 아직 필요함

잘된 점

  • 단일 CSI 입력 구조에서 Sequence 기반 구조로 개선했다.
  • Conv1D-LSTM 모델을 적용하여 CSI의 시간 흐름을 학습할 수 있게 했다.
  • 기존 대비 MAE 약 29% 감소를 확인했다.
  • MediaPipe 실제 Pose와 CSI 예측 Pose가 거의 유사하게 출력되었다.
  • 단순 행동 분류가 아니라 Skeleton Pose Regression 구조를 실제로 구현했다.

아쉬운 점

정적인 동작에서는 매우 안정적인 결과가 나왔지만, 낙상이나 걷기처럼 빠르게 변화하는 동작에서는 여전히 오차가 상대적으로 높게 나타났다. 특히 손목과 발목 같은 말단 관절은 움직임 범위가 크기 때문에 더 많은 보정이 필요하다.

또한 현재 결과는 저장된 CSI 데이터셋을 기반으로 한 오프라인 추론 결과이므로, 다음 단계에서는 실시간 CSI 스트리밍 데이터를 모델 입력으로 변환하고, 이를 웹 대시보드에 실시간 Skeleton으로 표시하는 작업이 필요하다.

정리

2026년 5월 27일 작업에서는 CareWave의 핵심 기술인 CSI 기반 Skeleton Pose 추정 모델의 성능을 개선했다. 기존에는 한 시점의 CSI 특징값만 보고 Pose를 예측했지만, 이번에는 연속된 15개 CSI 시점을 하나의 입력으로 구성하여 Sequence 기반 학습을 적용했다.

그 결과 기존 모델 대비 MAE가 약 29% 감소했고, 실제 MediaPipe Pose와 유사한 Skeleton을 CSI 데이터만으로 예측하는 데 성공했다. 이는 CareWave가 단순 낙상 감지 시스템을 넘어서, 카메라 없이 사람의 자세와 행동을 시각적으로 복원할 수 있는 시스템으로 발전할 수 있음을 보여주는 중요한 결과다.

기존 구조
CSI 단일 시점 → Pose 좌표 예측

개선 구조
CSI 15-step Sequence → Pose 좌표 예측

최종 결과
MAE 약 29% 감소
CSI 기반 Skeleton Pose 추정 성공

← CareWave 목록으로 돌아가기