마주봄 · mmWave 알고리즘 비교 자료
· 승민
전처리 EMA + 분류 XGBoost, 정확도 75.1% (3명·녹화 9개). 처음 보는 사람 65.4~73.5%.
| 항목 | 내용 |
|---|---|
| 센서 | TI IWR6843 (3D People Tracking 펌웨어), 천장 2.7m 설치, 약 18 프레임/초 |
| 판정할 자세 (5종) | 섬, 침대 위 앉음, 걸터앉음, 누움, 옆누움 |
| 데이터 | 녹화 9개: lee 7개, vic 1개, kim 1개(11-12). 자세마다 60초씩 수집 |
| 평가 프레임 | mmWave 프레임 37,773개 (섬 8,173 · 침대 위 앉음 6,559 · 걸터앉음 6,988 · 누움 7,960 · 옆누움 8,093). lee 27,744 · vic 4,935 · kim 5,094 |
| 평가 방법 | 녹화 하나씩 빼고 시험 (Leave-one-recording-out, 9회). 학습에 쓰지 않은 녹화로만 정확도를 냄. 추가로 사람 하나씩 빼고 시험(Leave-one-person-out) |
| 지표 | 정확도(Accuracy), macro F1 (5개 자세의 F1 평균) |
프레임마다 환자 트랙 값 8개.
| 값 | 단위 | 뜻 | 어디서 나오나 |
|---|---|---|---|
| z | m | 몸 중심 높이 (바닥 기준) | 트랙 위치 (TLV 1010) |
| head_z | m | 머리 쪽 높이: 소속 반사점 높이의 90% 백분위 | 반사점 (TLV 1020 + 1011) |
| speed | m/s | 수평 이동 속도 | 트랙 속도 |
| vz | m/s | 세로 속도 | 트랙 속도 |
| npts | 개 | 그 사람에게 연결된 반사점 수 | 반사점 |
| bed_dist | m | 침대 영역까지 거리 (안이면 0) | 트랙 위치 + 침대 꼭짓점 |
| x | m | 방 안 좌우 위치 | 트랙 위치 |
| y | m | 방 안 앞뒤 위치 | 트랙 위치 |
EMA 선택 · 분류기는 XGBoost로 고정.
| 전처리 알고리즘 | 방법 | 정확도 | macro F1 | EMA와 정확도 차이 |
|---|---|---|---|---|
| 지수 평활 (EMA, α=0.1) | 새 값 10% + 직전 평활값 90% | 75.1% | 74.3% | — |
| 칼만 필터 (1차원) | 예측값과 측정값을 불확실성 비율로 섞음 | 74.2% | 73.3% | −0.8%p |
| Savitzky-Golay | 최근 1초에 2차 다항식을 맞추고 가장 최근 값을 씁 | 72.3% | 71.3% | −2.8%p |
| 이동 평균 (1초) | 최근 18프레임의 평균 | 72.3% | 71.7% | −2.8%p |
XGBoost 선택 · 전처리는 EMA로 고정.
| 분류 알고리즘 | 설정 | 정확도 | macro F1 | XGBoost와 정확도 차이 |
|---|---|---|---|---|
| XGBoost | 트리 300개, 학습률 0.05, 깊이 6, 히스토그램 분할, 자세별 균형 가중 | 75.1% | 74.3% | — |
| LightGBM | 트리 300개, 학습률 0.05, 잎 31개, 균형 가중 | 74.7% | 73.9% | −0.4%p |
| HistGradientBoosting | 트리 300개, 학습률 0.05, 균형 가중 | 74.6% | 73.7% | −0.5%p |
| MLP 신경망 | 은닉층 64-32, 조기 종료 | 73.2% | 72.7% | −1.9%p |
EMA + XGBoost가 16개 조합 중 1위 · 칸은 정확도.
| 전처리 \ 분류기 | XGBoost | HistGradientBoosting | CatBoost | MLP 신경망 |
|---|---|---|---|---|
| EMA | 75.1% | 74.6% | 72.9% | 73.2% |
| Savitzky-Golay | 72.3% | 75.0% | 73.8% | 72.6% |
| 칼만 필터 | 74.2% | 73.3% | 74.1% | 71.9% |
| 이동 평균 | 72.3% | 73.6% | 72.1% | 72.4% |
상위 5개 조합의 녹화별 꾸준함 (평균 순위는 낮을수록 좋음).
| 조합 | 정확도 | macro F1 | 녹화별 평균 순위 (낮을수록 좋음) | 상위 4위 안에 든 녹화 |
|---|---|---|---|---|
| EMA + XGBoost | 75.1% | 74.3% | 7.2 | 5 / 9 |
| Savitzky-Golay + HistGradientBoosting | 75.0% | 74.6% | 6.8 | 4 / 9 |
| EMA + HistGradientBoosting | 74.6% | 73.7% | 7.6 | 2 / 9 |
| 칼만 필터 + XGBoost | 74.2% | 73.3% | 6.9 | 1 / 9 |
| 칼만 필터 + CatBoost | 74.1% | 73.0% | 7.3 | 2 / 9 |
녹화 9개 전체의 자세별 대표값 · 분류 % = XGBoost 평균 확률.
| 구분 | 인풋 (RAW) | 전처리 (EMA) | 분류 | 아웃풋 |
|---|---|---|---|---|
| 높이 z (m) | 1.53 | 1.52 | 섬 (95%) | 섬 |
| 머리 높이 head_z (m) | 1.58 | 1.55 | ||
| 반사점 수 (개) | 8 | 9.7 | ||
| 프레임 수 | 8,173 | - | - | 8,173 |
| 맞힌 비율 | - | - | - | 96% |
| 가장 많이 틀린 판정 | - | - | - | 걸터앉음 1% |
| 구분 | 인풋 (RAW) | 전처리 (EMA) | 분류 | 아웃풋 |
|---|---|---|---|---|
| 높이 z (m) | 1.14 | 1.13 | 침대 위 앉음 (69%) | 침대 위 앉음 |
| 머리 높이 head_z (m) | 1.39 | 1.38 | ||
| 반사점 수 (개) | 12 | 12.2 | ||
| 프레임 수 | 6,559 | - | - | 6,559 |
| 맞힌 비율 | - | - | - | 68% |
| 가장 많이 틀린 판정 | - | - | - | 걸터앉음 14% |
| 구분 | 인풋 (RAW) | 전처리 (EMA) | 분류 | 아웃풋 |
|---|---|---|---|---|
| 높이 z (m) | 0.82 | 0.82 | 걸터앉음 (85%) | 걸터앉음 |
| 머리 높이 head_z (m) | 1.16 | 1.09 | ||
| 반사점 수 (개) | 7 | 9.8 | ||
| 프레임 수 | 6,988 | - | - | 6,988 |
| 맞힌 비율 | - | - | - | 86% |
| 가장 많이 틀린 판정 | - | - | - | 침대 위 앉음 10% |
| 구분 | 인풋 (RAW) | 전처리 (EMA) | 분류 | 아웃풋 |
|---|---|---|---|---|
| 높이 z (m) | 0.70 | 0.70 | 누움 (76%) | 누움 |
| 머리 높이 head_z (m) | 0.97 | 0.99 | ||
| 반사점 수 (개) | 9 | 10.3 | ||
| 프레임 수 | 7,960 | - | - | 7,960 |
| 맞힌 비율 | - | - | - | 79% |
| 가장 많이 틀린 판정 | - | - | - | 옆누움 17% |
| 구분 | 인풋 (RAW) | 전처리 (EMA) | 분류 | 아웃풋 |
|---|---|---|---|---|
| 높이 z (m) | 0.83 | 0.83 | 옆누움 (46%) | 옆누움 |
| 머리 높이 head_z (m) | 1.08 | 1.13 | ||
| 반사점 수 (개) | 9 | 9.5 | ||
| 프레임 수 | 8,093 | - | - | 8,093 |
| 맞힌 비율 | - | - | - | 46% |
| 가장 많이 틀린 판정 | - | - | - | 누움 29% |
사람별 정확도.
| 측정자 | 프레임 | 녹화 하나씩 빼고 시험 | 사람 하나씩 빼고 시험 | 가장 낮은 자세 (사람 빼고 시험) |
|---|---|---|---|---|
| lee | 27,744 | 76.9% | 65.4% (vic·kim 녹화 2개로만 학습) | 옆누움 48% |
| vic | 4,935 | 66.4% | 66.4% | 침대 위 앉음 17% |
| kim | 5,094 | 73.5% | 73.5% | 옆누움 23% |
측정자 3명·녹화 9개(lee 73%)라 상위 조합끼리의 차이(1%p 안팎)는 우연일 수 있습니다.
사람 차이가 커서, 다른 사람 녹화를 늘리는 것이 더 효과적입니다.
옆누움은 46%만 맞혔습니다. 높이 값만으로는 누움과 구별이 어렵습니다.
x·y 위치를 입력에 넣어, 침대 위치가 다른 방에서는 다시 학습해야 합니다.
카메라 관절을 함께 쓰면 93%입니다(참고용).
전처리 z-score + 판정 A+S 큰 쪽, 실제 녹화 정확도 90.1% (수정안 기준, 212구간).
| 항목 | 내용 |
|---|---|
| 판정 단위 | 걸음 6초 구간 하나 (약 109프레임) |
| D1 Pi 데이터 | 병실 Pi 보행 구간 130개 (10월 28~31일, 여러 사람). 저하는 인위로 넣음 (예: 속도 −20%, 흔들림·속도 변동 +20%) |
| D2 실제 걸음 | lee·kim 2명, 같은 고리(약 1.7 × 3.3 m)를 멈추지 않고 걸음. 11-05: lee 48구간 · 11-12: lee 209구간, kim 56구간 |
| D3 가상 환자 | 실제 데이터의 분포·상관을 따라 만든 10명, 사람마다 10회 반복 |
| AUC | 저하 구간을 평소 구간보다 더 위험하게 매길 확률 (0.5 = 찍기, 1 = 완벽) |
| 검출률 | 헛알람을 5%로 맞춘 문턱에서 저하 구간을 잡은 비율 |
| 정확도 | 평소는 ‘정상’, 천천히·종종걸음은 ‘주의 이상’이면 맞음. 기준선은 같은 녹화 묶음의 평소 구간 |
환자 트랙의 최근 6초 이력 (약 109프레임).
| 값 | 단위 | 뜻 |
|---|---|---|
| t | 초 | 프레임 시각 |
| x, y | m | 방 안 위치 (바닥 기준 좌표) |
| z | m | 몸 중심 높이 |
| speed | m/s | 수평 이동 속도 (레이더 추적기 값) |
z-score 선택 · 판정은 A 위험 방향 합으로 고정 · 칸은 AUC (괄호: 헛알람 5% 문턱 검출률).
① 6초 이력 → 보행 지표 4개 (속도 · 속도 변동 · 흔들림 · 멈춤 비율) ② 지표마다 본인 평소와 비교해 표준화
| 전처리(표준화) 알고리즘 | 계산 | 실제 천천히 (D2, 11-05) | 실제 종종걸음 (D2, 11-05) | 인위 저하 20% (D1) | 가상 환자 6개 상황 평균 AUC (D3) | z-score와의 검출률 차이 (실제 천천히) |
|---|---|---|---|---|---|---|
| z-score — 선택 | (값 − 평균) ÷ 표준편차 | 0.97 (94%) | 1.00 (100%) | 0.63 (22%) | 0.783 | — |
| Min-Max | (값 − 평균) ÷ (최댓값 − 최솟값) | 0.96 (94%) | 1.00 (100%) | 0.63 (18%) | 0.775 | 0%p |
| 베이즈 예측확률 | 기록 수를 반영한 t 분포에서 ‘평소일 확률’ | 0.95 (72%) | 0.99 (100%) | 0.63 (22%) | 0.783 | −22%p |
| 로버스트 스케일러 | (값 − 중앙값) ÷ 사분위수 범위 | 0.92 (56%) | 1.00 (100%) | 0.62 (13%) | 0.765 | −38%p |
A+S 큰 쪽 선택 · 전처리는 z-score로 고정.
A = 위험한 방향으로 벗어난 z만 더한 값 (속도는 느려질 때, 속도 변동·흔들림·멈춤 비율은 커질 때) · S = 속도가 평소보다 느려진 정도 (−z 속도)
| 분류(판정) 알고리즘 | 방법 | D3 평균 AUC | D3 최저 AUC | D3 좋아짐에 반응 (낮을수록 좋음) | D1 인위 저하 20% | D2 실제 걸음 정확도 (11-05) | A+S 큰 쪽과의 최저 AUC 차이 |
|---|---|---|---|---|---|---|---|
| A+S 큰 쪽 — 선택 | A와 S를 각각 표준화해 큰 값 | 0.815 | 0.68 | 0.29 | 0.65 (17%) | 97.9% | — |
| A+S 합 | 표준화한 A와 S를 더함 | 0.815 | 0.66 | 0.27 | 0.66 (23%) | — | −0.02 |
| A 위험 방향 합 | 위험 쪽으로 벗어난 z만 더함 | 0.783 | 0.64 | 0.33 | 0.63 (22%) | 64.6% | −0.04 |
| 양방향 |z| 합 (예전 방식) | 방향 없이 |z|를 더함, 문턱 3 | 0.737 | 0.58 | 0.58 | 0.46 (2%) | 97.9% | −0.10 |
실제 보행 녹화 212구간의 걷기 방식별 대표값 (수정안 기준) · 값은 중앙값.
| 구분 | 인풋 (RAW, 6초) | 전처리: 보행 지표 | 전처리: z-score | 분류 (점수) | 아웃풋 (대표 판정) |
|---|---|---|---|---|---|
| 속도 (m/s) | 이동 경로 5.17 m 순이동 1.39 m | 0.828 | +0.14 | A 0.88 · S −0.14 → 점수 −0.02 | 정상 |
| 속도 변동 | 0.273 | −0.06 | |||
| 흔들림 (m) | 0.041 | +0.01 | |||
| 멈춤 비율 | 0.00 | 0.00 | |||
| 6초 구간 수 | 112 | - | - | - | 112 |
| 판정 단계 | - | - | - | - | 정상 104 · 주의 6 · 경고 2 |
| 주된 경보 이유 | - | - | - | - | 속도 느림 (경보 8개 중 6) |
| 맞힌 비율 | - | - | - | - | 92.9% (정상이면 맞음) |
| 구분 | 인풋 (RAW, 6초) | 전처리: 보행 지표 | 전처리: z-score | 분류 (점수) | 아웃풋 (대표 판정) |
|---|---|---|---|---|---|
| 속도 (m/s) | 이동 경로 3.62 m 순이동 1.78 m | 0.523 | −4.65 | A 5.48 · S 4.65 → 점수 4.65 | 위험 |
| 속도 변동 | 0.266 | +0.25 | |||
| 흔들림 (m) | 0.035 | −0.17 | |||
| 멈춤 비율 | 0.00 | 0.00 | |||
| 6초 구간 수 | 55 | - | - | - | 55 |
| 판정 단계 | - | - | - | - | 위험 38 · 경고 15 · 주의 1 · 정상 1 |
| 주된 경보 이유 | - | - | - | - | 속도 느림 (54개 중 53) |
| 맞힌 비율 | - | - | - | - | 98.2% (주의 이상이면 맞음) |
| 구분 | 인풋 (RAW, 6초) | 전처리: 보행 지표 | 전처리: z-score | 분류 (점수) | 아웃풋 (대표 판정) |
|---|---|---|---|---|---|
| 속도 (m/s) | 이동 경로 3.52 m 순이동 1.48 m | 0.502 | −5.60 | A 7.80 · S 5.60 → 점수 6.13 | 위험 |
| 속도 변동 | 0.271 | +0.10 | |||
| 흔들림 (m) | 0.030 | −0.39 | |||
| 멈춤 비율 | 0.00 | 0.00 | |||
| 6초 구간 수 | 45 | - | - | - | 45 |
| 판정 단계 | - | - | - | - | 위험 33 · 정상 12 |
| 주된 경보 이유 | - | - | - | - | 속도 느림 (33개 중 32) |
| 맞힌 비율 | - | - | - | - | 73.3% (주의 이상이면 맞음) |
점수 2 이상 주의 · 3 이상 경고 · 4 이상 위험.
지금 방식은 대부분 판정 불가, 수정안은 모든 녹화 판정.
| 측정자 · 녹화 | 6초 구간 (평소 / 천천히 / 종종) | 평균 속도 m/s (평소 / 천천히 / 종종) | 지금 검사 통과 | 수정안 검사 통과 |
|---|---|---|---|---|
| lee 11-05 | 19 / 19 / 10 | 0.77 / 0.47 / 0.29 | 1 / 7 / 2 | 16 / 15 / 2 |
| lee 11-12 ① (평소 5분 포함) | 116 / 18 / 19 | 0.81 / 0.45 / 0.37 | 6 / 11 / 9 | 76 / 15 / 14 |
| lee 11-12 ② | 19 / 18 / 19 | 0.95 / 0.73 / 0.51 | 0 / 6 / 12 | 10 / 13 / 16 |
| kim 11-12 | 19 / 18 / 19 | 0.91 / 0.55 / 0.77 | 0 / 6 / 1 | 10 / 12 / 13 |
| 판정 규칙 (문턱) | 지금 검사 (판정 가능 1묶음, 26구간) | 수정안 전체 (212구간) | 수정안 lee (177구간) | 수정안 kim (35구간) |
|---|---|---|---|---|
| A+S 큰 쪽 ≥ 2 (지금 서버) | 100% | 90.1% | 94.9% | 65.7% |
| S 속도만 ≥ 2 | 100% | 91.0% | 96.0% | 65.7% |
| A 위험 방향 합 ≥ 2 | 65.4% | 90.1% | 96.6% | 57.1% |
| 양방향 |z| 합 ≥ 3 (예전) | 84.6% | 87.7% | 90.4% | 74.3% |
실제 걸음은 2명(lee, kim)의 연기한 걸음이라, 실제 환자 기록은 없습니다.
평소 속도가 녹화마다 달라(lee 0.65~0.95 m/s), 여러 날의 평소 걸음으로 기준선을 잡아야 합니다.
보폭 지표가 없어 속도는 그대로이고 보폭만 줄어든 걸음은 잡지 못합니다(kim 종종걸음).
D2(11-05) 결과의 97.9%는 보행 검사를 거치지 않은 값입니다.
걷기 전후 멈춤이 6초 구간에 섞이면 헛알람이 납니다.
좁은 방에서는 6초 구간 대부분이 보행 검사에서 탈락합니다 (5분 걷기 97개 중 2개 통과).
직진성 검사를 3초 단위로 (앞·뒤 3초 모두 0.5 이상이면 통과)
흔들림을 진행 방향 기준으로 (길 모양은 빼고 몸의 출렁임만)
걷기 253구간 / 걷지 않음 696구간.
| 직진성 기준 | 걸기 통과 (11-12 고리, 209구간) | 걸기 통과 (11-05 원, 44구간) | 걸지 않음 통과 (696구간, 낮을수록 좋음) |
|---|---|---|---|
| 지금: 6초 전체 ≥ 0.5 | 21.1% | 22.7% | 1.1% |
| 6초 전체 ≥ 0.4 | 40.7% | 52.3% | 2.4% |
| 6초 전체 ≥ 0.3 | 70.8% | 75.0% | 3.0% |
| 6초 전체 ≥ 0.2 | 95.7% | 95.5% | 6.6% |
| 직진성 검사 없음 | 100% | 95.5% | 12.4% |
| 수정안: 3초 단위 ≥ 0.5 | 68.9% | 68.2% | 1.0% |
| 흔들림 계산 | 평소 걸기 곧은 구간 중앙값 (7개) | 평소 걸기 휘어진 구간 중앙값 (147개) |
|---|---|---|
| 지금 (6초 시작점→끝점 직선) | 0.290 m | 0.453 m |
| 수정안 (진행 방향 기준) | 0.045 m | 0.043 m |
| 방식 | 판정한 구간 | 판정 못한 녹화 묶음 | A+S 큰 쪽 정확도 |
|---|---|---|---|
| 지금 | 26 | 4개 중 3개 (평소 기준선 부족) | 100% (lee 1묶음만) |
| 수정안 1 + 2 | 212 | 없음 | 90.1% (lee 94.9%, kim 65.7%) |