DeepCPD:WiFi CSI信号的儿童检测低成本方案

DeepCPD:WiFi CSI信号的儿童检测方案

论文信息

  • 标题: DeepCPD: Deep Learning Based In-Car Child Presence Detection Using WiFi
  • 来源: IEEE Journal of Selected Areas in Sensors, 2025
  • 链接: https://arxiv.org/abs/2505.01973

WiFi感知技术原理

CSI信号基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# WiFi CSI感知原理
CSI_SENSING_PRINCIPLE = {
"csi_definition": "Channel State Information(信道状态信息)",
"measurement": "WiFi信号在子载波上的幅度和相位",
"dimensions": ["时间", "子载波", "发射天线", "接收天线"],

"sensing_mechanism": {
"static_environment": "CSI稳定",
"human_presence": "人体反射导致CSI变化",
"vital_signs": "呼吸/心跳引起周期性CSI变化"
},

"advantages": [
"利用现有WiFi硬件(无需额外传感器)",
"穿透遮挡物(毯子/座椅)",
"隐私保护(无图像)",
"全光照条件工作"
],

"challenges": [
"分辨率低(vs mmWave雷达)",
"环境噪声干扰",
"WiFi标准差异"
]
}

CPD检测流程

graph LR
    A[WiFi设备] -->|发送信号| B[CSI采集]
    B -->|预处理| C[去噪+归一化]
    C -->|特征提取| D[深度学习模型]
    D -->|分类| E{儿童检测}
    E -->|检测到| F[触发警告]
    E -->|无检测| G[继续监测]

核心算法详解

CSI预处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import numpy as np
from typing import Tuple

class CSIPreprocessor:
"""
CSI信号预处理器

去噪、归一化、特征提取
"""

def __init__(self,
n_subcarriers: int = 56,
n_tx: int = 2,
n_rx: int = 2):
self.n_subcarriers = n_subcarriers
self.n_tx = n_tx
self.n_rx = n_rx

def preprocess(self,
csi_raw: np.ndarray,
window_sec: float = 5.0,
sample_rate: float = 100.0) -> np.ndarray:
"""
预处理CSI数据

Args:
csi_raw: 原始CSI数据 (T, N_sub, N_tx, N_rx, 2)
window_sec: 分析窗口(秒)
sample_rate: 采样率

Returns:
csi_features: 预处理后的特征图
"""
window_samples = int(window_sec * sample_rate)

# 提取幅度
amplitude = np.abs(csi_raw[-window_samples:, :, :, :, 0] +
1j * csi_raw[-window_samples:, :, :, :, 1])

# 去除直流分量
amplitude = amplitude - np.mean(amplitude, axis=0, keepdims=True)

# 归一化
amplitude = amplitude / (np.std(amplitude) + 1e-6)

# 滤波(低通滤波去除高频噪声)
from scipy.signal import butter, filtfilt
b, a = butter(4, 0.3, btype='low')
amplitude_filtered = filtfilt(b, a, amplitude, axis=0)

return amplitude_filtered

def extract_features(self, csi_clean: np.ndarray) -> np.ndarray:
"""
提取特征

Args:
csi_clean: 清洗后的CSI数据

Returns:
features: 特征向量
"""
features = []

# 时域特征
features.append(np.mean(csi_clean, axis=0).flatten())
features.append(np.std(csi_clean, axis=0).flatten())
features.append(np.max(csi_clean, axis=0).flatten())
features.append(np.min(csi_clean, axis=0).flatten())

# 频域特征(FFT)
fft_result = np.fft.fft(csi_clean, axis=0)
features.append(np.abs(fft_result).mean(axis=0).flatten())

# 组合特征
features = np.concatenate(features)

return features


class DeepCPD_Model(nn.Module):
"""
DeepCPD深度学习模型

基于CSI特征检测儿童存在
"""

def __init__(self,
input_dim: int = 1024,
hidden_dim: int = 256):
super().__init__()

self.classifier = nn.Sequential(
nn.Linear(input_dim, hidden_dim),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(hidden_dim, 128),
nn.ReLU(),
nn.Dropout(0.3),
nn.Linear(128, 64),
nn.ReLU(),
nn.Linear(64, 2) # [无儿童, 有儿童]
)

def forward(self, features: torch.Tensor) -> torch.Tensor:
"""
前向传播

Args:
features: CSI特征向量 (B, input_dim)

Returns:
logits: 分类输出 (B, 2)
"""
return self.classifier(features)

性能对比

方案 成本 准确率 遮挡穿透 隐私
mmWave雷达 $25-35 94%
WiFi CSI $5-10 88%
摄像头 $15-20 96%
超声波 $10-15 75% ⚠️

IMS开发落地指导

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# WiFi CPD部署方案
WIFI_CPD_DEPLOYMENT = {
"hardware": {
"wifi_chip": "Intel 5300 / Atheros AR9300",
"antenna": "MIMO 2×2",
"cost": "$5-10(利用现有WiFi)"
},

"software": {
"csi_extraction": "Linux CSI Tool",
"model_size": "500KB",
"inference_time": "30ms"
},

"suitable_vehicles": [
"经济型车型",
"已有WiFi模块车型",
"成本敏感方案"
]
}

总结: WiFi CSI是CPD的低成本替代方案,适合成本敏感车型。虽然准确率略低于mmWave雷达(88% vs 94%),但成本优势明显($5-10 vs $25-35),且隐私友好。


DeepCPD:WiFi CSI信号的儿童检测低成本方案
https://dapalm.com/2026/07/14/2026-07-14-deepcpd-wifi-csi-child-presence-detection-low-cost/
作者
Mars
发布于
2026年7月14日
许可协议