02 / MODEL & EVALUATION
모델 설계·검증
같은 Wi-Fi 신호에서 인원 범주와 보행을 따로 읽다
두 논문을 참고해 0~5명 분류부터 시도했습니다. 새 수집 회차에서 성능이 떨어지자 인원 범주와 정적·보행을 분리하고, 각 모델의 성능과 실패 조건을 확인했습니다.
- ROLE
- 5인 팀 · 장비·수집·전처리·모델 실험·검증 참여
- PERIOD
- 2026년 7~10월
- STATUS
- 팀 졸업 연구 · 결과 정리
- TOOLS
- Python · PyTorch · scikit-learn · Wi-Fi CSI
- 선행 연구와 과제 분리
- 인원 범주 SVM
- 정적·보행 V6
두 논문에서 두 과제로
Person-in-WiFi와 DensePose From WiFi
두 연구는 Wi-Fi CSI에서 신체 윤곽과 자세를 추정했습니다.
초기 모델은 Person-in-WiFi의 입력 변환을 가져와 0~5명 분류에 적용했습니다.
자세히 보기접기
Person-in-WiFi와 DensePose From WiFi
초기 모델은 Person-in-WiFi의 입력 변환을 가져와 0~5명 분류에 적용했습니다.
Person-in-WiFi (ICCV 2019)는 연속된 CSI 표본을 2차원 특징 지도로 펼친 뒤, 잔차 합성곱과 U-Net을 통해 신체 윤곽과 관절 위치·연결을 추정했습니다. 카메라에서 얻은 정답으로 학습하고, 추론에는 Wi-Fi 신호를 넣었습니다.
DensePose From WiFi는 진폭과 보정된 위상을 따로 인코딩한 뒤 결합해, 신체 24개 영역의 표면 좌표까지 추정했습니다. 같은 배치의 평균 정밀도(AP) 43.5가 학습하지 않은 배치에서는 27.3으로 떨어졌고, 세 명 이상이 동시에 등장하면 개인별 신호를 분리하기 어려웠다고 보고했습니다.
우리는 DensePose From WiFi를 선행 연구로 검토하고, 실제 기준 모델은 Person-in-WiFi의 공간 변환과 잔차 합성곱·U-Net을 응용해 처음부터 학습했습니다. 수집 장비에서 나온 6개 링크의 진폭을 5시점씩 읽어 96×96 특징 지도로 변환하고, 단일 U-Net과 전역 평균 풀링 뒤에 0~5명 분류기를 붙였습니다. 2초 구간은 짧은 입력 조각들의 분류 확률을 평균해 판단했습니다.
같은 신호에서 인원수와 보행을 분리한 이유
수집 회차를 분리하자 초기 U-Net의 개발 정확도는 22.97%였습니다.
인원수와 이동 여부에 별도 정답을 붙이고 각각 학습·평가했습니다.
자세히 보기접기
같은 신호에서 인원수와 보행을 분리한 이유
인원수와 이동 여부에 별도 정답을 붙이고 각각 학습·평가했습니다.
초기 U-Net은 원본 녹화가 겹치지 않도록 나눈 14세션·5,716구간에서 개발 정확도 22.97%를 기록했습니다. 별도로 남긴 자유 활동 녹화에서는 66/1,024구간(6.45%)을 맞혔습니다. 실제 인원이 2~4명이던 자유 활동 평가에서 예측의 56.74%가 5명으로 몰렸습니다.
별도 통계 분류기의 진단에서도 같은 세션을 섞어 나누면 98.31%, 세션 하나를 통째로 빼면 17.28%였습니다. 한 번의 녹화에서 잘 맞는 특징이 새 녹화의 인원수까지 설명하지 못했습니다. 강의실, 날짜, 채널, 배치가 인원 조건과 함께 바뀐 회차가 있어 어떤 요인이 오류를 일으켰는지 따로 가려내기 어려웠습니다.
같은 네 사람도 앉아 있을 때와 걸을 때 신호가 달라집니다. 반대로 빈 방과 사람이 가만히 있는 방에서는 둘 다 시간에 따른 변화가 작을 수 있습니다. 몇 명이 있는가와 누군가 걷고 있는가는 서로 다른 질문입니다. 인원은 방별 진폭 특징으로 범주를 추정하고, 보행은 진폭·위상 변화와 직전 흐름으로 판별하도록 나눴습니다.
인원수 범주 모델
강의실별 CSI로 0명·1~2명·3명 이상 분류
2초 구간에서 진폭 특징 265개를 뽑아 강의실별 RBF SVM을 학습했습니다.
같은 녹화의 앞뒤를 나눈 시험에서 G304 85.57%, G308 100%였습니다.
자세히 보기접기
강의실별 CSI로 0명·1~2명·3명 이상 분류
같은 녹화의 앞뒤를 나눈 시험에서 G304 85.57%, G308 100%였습니다.
발표에 사용한 인원 모델의 출력은 0명·1~2명·3명 이상입니다. 각 강의실에 맞춰 모델을 따로 학습했습니다. 2초의 CSI 진폭을 보정하고 64 Hz로 재표본화한 뒤, 6개 링크와 30개 부반송파 그룹에서 시간 변동·링크별 통계·부반송파별 평균 등 265개 특징을 계산했습니다. 학습 데이터로 정한 10~90백분위 범위로 특징을 스케일링하고, RBF SVM으로 세 범주의 경계를 학습했습니다.
인원 조건별 자료를 시간순으로 나눠 앞 80%로 학습하고 뒤 20%를 시험했으며, 경계 전후 15초는 제외했습니다. G304는 510/596구간(85.57%), G308은 521/521구간(100%)을 맞혔습니다. 같은 원본 녹화의 앞뒤가 학습과 시험에 들어갈 수 있으므로 이 수치는 해당 강의실과 수집 조건에서의 분류 결과입니다.
G304에서는 실제 3명 구간 140개 중 81개(57.86%)만 3명 이상으로 맞혔습니다. 3명 이상 전체 결과보다 경계에 걸친 3명 조건의 오류가 컸습니다.
아래 그림은 G308에서 고른 세 인원 범주의 수집 영상과 같은 시간대의 실측 CSI입니다. 6번 링크는 0명 예시에서 가장 높았고, 2번 링크는 1~2명 예시에서 가장 높았습니다. 인원 범주가 바뀔 때 링크마다 진폭의 변화 방향이 달랐습니다. 모델은 30개 부반송파 그룹의 여러 특징을 함께 사용합니다.
| 실제 인원 범주 | G304 | G308 |
|---|---|---|
| 0명 | 59 / 59 | 105 / 105 |
| 1~2명 | 123 / 145 | 212 / 212 |
| 3명 이상 | 328 / 392 | 204 / 204 |
| 전체 | 510 / 596 · 85.57% | 521 / 521 · 100% |
- 입력2초 CSI 진폭
6개 링크 × 30개 부반송파 그룹 · 64 Hz
- 특징진폭 특징 265개
전체 변동 · 링크 통계 · 부반송파별 평균
- 분류G304 전용 RBF SVM
0명 · 1~2명 · 3명 이상
G308 전용 RBF SVM0명 · 1~2명 · 3명 이상
강의실을 지정해 해당 방에서 학습한 스케일러와 분류기를 사용했습니다.
G308 인원 범주별 수집 장면과 실측 CSI
정적·보행 모델
왜 주판단기와 보조판단기를 나눴나
주판단기는 현재 2초를, 보조판단기는 직전 흐름까지 읽습니다.
문맥으로 놓친 보행을 찾되, 오경보가 늘어나는 구간은 보정기에서 다시 봅니다.
자세히 보기접기
왜 주판단기와 보조판단기를 나눴나
문맥으로 놓친 보행을 찾되, 오경보가 늘어나는 구간은 보정기에서 다시 봅니다.
보행은 2초 구간의 경계에 걸치기도 합니다. G304의 문맥 실험에서는 현재 2초만 보면 보행 8/12구간, 직전 문맥을 더하면 9/12구간을 찾았습니다. 정적 오경보는 두 경우 모두 3/202구간이었습니다. 현재 구간의 변화가 약해도 직전에 이어지던 보행이 판별의 근거가 될 수 있었습니다.
주판단기는 6개 링크의 진폭·위상이 100 ms 사이에 얼마나 바뀌는지 계산한 뒤, 현재 2초를 MLP와 여러 시간 폭의 1차원 CNN으로 읽습니다. 보조판단기는 같은 CSI 인코더로 현재와 직전 2초·4초 구간을 각각 읽고, 구간 사이의 특징 차이까지 묶어 최대 6초의 흐름에서 보행을 다시 확인합니다.
직전 문맥을 포함한 판정은 다른 방에서 오경보를 늘리기도 했습니다. G304 V2를 G308에 바로 적용했을 때 주경로와 주·보조 결합은 모두 보행 4/5구간을 찾았지만, 정적 오경보는 22/302에서 39/302로 늘었습니다. 보조 경로의 보행 후보를 다시 걸러야 했습니다.
V5에서는 기존 두 경로를 고정하고, 두 점수·이력 유무·물리 특징 24개를 입력받는 482개 파라미터의 보정기를 학습했습니다. V6에서는 보행 후보를 정적으로 뒤집으려는 상황에서 이력이 부족하거나 경계에 가까우면 판단 보류(U)를 반환하는 규칙을 추가했습니다. 같은 V6 모델과 규칙을 두 강의실에 적용했습니다.
- 입력2초 CSI 변화
진폭·위상 100 ms 차분 · 100 Hz · 결측 마스크
- 판단주판단기
현재 2초 · MLP + 다중 스케일 1D CNN · 128 → 64 → 2
보조판단기현재·직전 2초·4초 · 특징 차이를 묶어 640 → 64 → 2
- 재검사공통 보정기
두 점수 + 이력 유무 + 물리 특징 24개 · 27 → 16 → 2
- 출력S 정적
분명한 보행 없음
D 보행분명한 실내 이동
U 판단 보류보행 취소 판단의 경계·이력 부족
V6의 보류 규칙은 V5 보정기의 가중치를 유지한 채 추가했습니다.
주·보조 판단과 V6 보류 구조
1 / 2같은 4인 녹화에서 정적과 보행 비교
같은 G304 4인 녹화에서 정적과 보행의 실측 CSI를 같은 눈금으로 비교했습니다.
공통 V6는 G304 보행 9/12, G308 보행 4/5구간을 검출했습니다.
자세히 보기접기
같은 4인 녹화에서 정적과 보행 비교
공통 V6는 G304 보행 9/12, G308 보행 4/5구간을 검출했습니다.
그림은 같은 G304 4인 녹화에서 골랐습니다. 자리에 머문 6초와 실제로 걸은 6초의 웹캠 장면, 그리고 대표 부반송파 그룹의 6개 링크를 한 눈금에 놓았습니다. 유효 시점의 로그 진폭 차분 RMS는 정적 0.067, 보행 0.121로, 이 두 예시에서는 보행 구간의 변화가 컸습니다. 표의 성능은 전체 기존 시험 구간에서 계산했습니다.
공통 V6는 G304에서 보행 9/12구간(75%), G308에서 4/5구간(80%)을 검출했습니다. G308의 동일한 307개 구간에서 G304 V2를 바로 적용했을 때와 비교하면, 보행 검출 4/5는 유지하면서 정적 오경보가 39건에서 9건으로 줄었습니다. G304에서는 비교군이 맞혔던 보행 한 구간을 더 놓쳤습니다.
G304는 날짜를 분리했고, G308은 같은 원본 녹화 안에서 학습과 시험 구간을 나눴습니다. G308은 모두 정적으로 분류해도 전체 정확도가 98.37%인 시험입니다. 그래서 보행 검출률·정적 오경보율·전체 보류율을 함께 봤고, 보류한 보행도 검출률의 분모에 넣었습니다.
| 평가 | G304 | G308 |
|---|---|---|
| 보행 검출 | 9 / 12 · 75.00% | 4 / 5 · 80.00% |
| 정적 오경보 | 0 / 202 · 0.00% | 9 / 302 · 2.98% |
| 전체 보류 | 1 / 214 · 0.47% | 8 / 307 · 2.61% |
G304 같은 4인 녹화의 정적·보행 장면과 실측 CSI
1 / 2기대와 한계
방과 장비가 바뀌면 무엇이 무너졌나
가중치를 고정한 V6는 외부 EHUNAM에서 동적 구간 21.18%를 검출했습니다.
링크 구성과 정답의 의미가 달라지면 자체 강의실의 결과를 그대로 적용하기 어렵습니다.
자세히 보기접기
방과 장비가 바뀌면 무엇이 무너졌나
링크 구성과 정답의 의미가 달라지면 자체 강의실의 결과를 그대로 적용하기 어렵습니다.
다른 장비의 데이터에서도 동작하는지 보기 위해 공개 EHUNAM의 단일 링크 입력을 기존 모델 형식에 맞췄습니다. 가중치와 정규화를 고정한 상태로 주 수신기 47,510구간을 평가했습니다. 동적 검출은 7,010/33,098구간(21.18%)이었고 정적 오경보율은 0.32%, 보류율은 1.67%였습니다.
외부 자료의 동적에는 기계 작동도 포함됩니다. 자체 자료의 동적은 사람의 보행입니다. 링크 수와 장비, 공간, 정답의 의미가 함께 달라졌으므로 검출 저하의 원인을 하나로 특정하기 어렵습니다. 가중치를 그대로 옮기는 방식으로는 안정적인 외부 감지가 어려웠습니다.
자체 시험에도 놓친 보행이 남았습니다. G304에서 보행을 놓친 한 2초 구간의 대표 링크 묶음 RMS는 0.115로, 검출한 보행 시연의 0.121에 가까웠습니다. G308에서 놓친 보행은 직전의 연속 구간이 없어 보조판단기에 충분한 이력을 줄 수 없었습니다. 변화량이 큰 보행도 놓칠 수 있고, 보조 경로의 도움은 연속 기록을 확보할 수 있는지에 달려 있었습니다.
자체 환경과 외부 자료의 평가 범위
1 / 2카메라 없이 어디까지 감지할 수 있나
환경이 정해진 공간에서는 영상 입력 없이 재실 범주와 보행을 살필 가능성을 봤습니다.
새 방에서도 쓰려면 인원·행동·배치를 분리해 수집하고 원본 회차 단위로 검증해야 합니다.
자세히 보기접기
카메라 없이 어디까지 감지할 수 있나
새 방에서도 쓰려면 인원·행동·배치를 분리해 수집하고 원본 회차 단위로 검증해야 합니다.
이번 실험에서 기대할 수 있는 것은 공간을 촬영하지 않고 빈 방 여부나 뚜렷한 보행을 확인하는 감지 기능입니다. 장비와 배치가 정해진 공간에서는 인원 범주를 보조 정보로 쓸 가능성도 봤습니다. 감지 단계에서 영상 입력을 빼면 집 안의 일상을 촬영하는 부담을 줄일 수 있습니다.
가장 아쉬웠던 점은 같은 녹화에서는 높던 점수가 새 회차에선 크게 떨어졌다는 것입니다. 2초 구간을 많이 만들어도 서로 같은 방·채널·배치에서 이어진 관측입니다. 인원수마다 독립 녹화가 적은 상태에서는 모델이 사람 수와 함께 나타난 세션의 특징을 외우기 쉬웠습니다. 보행 시험도 G304 12구간, G308 5구간이어서 한 구간의 오답이 검출률을 크게 바꿉니다.
다시 실험한다면 같은 방과 장비에서 인원수·자리·행동을 번갈아 바꿔 반복 수집하고, 방이나 채널을 바꿀 때는 다른 조건을 고정해 비교하겠습니다. 새 날짜와 새 방에서 모은 원본 회차를 별도 시험으로 남겨, 정적 오경보와 놓친 보행, 판단 보류를 함께 보겠습니다. 그래야 집을 촬영하지 않고도 필요한 변화를 얼마나 꾸준히 포착하는지 판단할 수 있습니다.