💡
concept
【详细原理与应用】
**心电图(ECG)分析** 1. **心律失常检测** - 数据:MIT-BIH心律失常数据库 - 方法:1D CNN、LSTM、CNN+LSTM - 类别:正常窦性心律、房颤、室性早搏、房性早搏等 2. **心肌梗死检测** - 从12导联ECG中识别ST段抬高 - 方法:ResNet变体处理多导联信号 3. **心功能评估** - 从ECG预测射血分数(E...
📖 定义
心电图(ECG)分析
1. 心律失常检测
- 数据:MIT-BIH心律失常数据库
- 方法:1D CNN、LSTM、CNN+LSTM
- 类别:正常窦性心律、房颤、室性早搏、房性早搏等
2. 心肌梗死检测
- 从12导联ECG中识别ST段抬高
- 方法:ResNet变体处理多导联信号
3. 心功能评估
- 从ECG预测射血分数(EF)
- 方法:自监督预训练 + 下游回归
脑电图(EEG)分析
1. 癫痫发作检测
- 数据:CHB-MIT Scalp EEG Database
- 方法:CNN提取时频特征 + LSTM捕捉时间模式
- 挑战:发作间期和发作期信号差异微妙
2. 睡眠分期
- 将整夜EEG分为Wake/N1/N2/N3/REM五期
- 方法:多模态融合(EEG + EOG + EMG)
3. 脑机接口(BCI)
- 运动想象分类:左/右手/脚
- 方法:EEGNet(轻量级CNN)
可穿戴设备数据
1. 心率变异性(HRV)分析:评估自主神经功能
2. 活动识别:通过加速度计区分走路、跑步、睡眠等
3. 跌倒检测:老年人监护
# 示例: 用1D CNN进行心律失常检测
import torch
import torch.nn as nn
class ECG_CNN(nn.Module):
def __init__(self, num_classes=5):
super().__init__()
# 输入: [batch, 1, 1000] (10秒ECG信号, 采样率100Hz)
self.conv1 = nn.Conv1d(1, 32, kernel_size=16, stride=1, padding=8)
self.bn1 = nn.BatchNorm1d(32)
self.pool1 = nn.MaxPool1d(2)
self.conv2 = nn.Conv1d(32, 64, kernel_size=16, stride=1, padding=8)
self.bn2 = nn.BatchNorm1d(64)
self.pool2 = nn.MaxPool1d(2)
self.conv3 = nn.Conv1d(64, 128, kernel_size=16, stride=1, padding=8)
self.bn3 = nn.BatchNorm1d(128)
self.pool3 = nn.MaxPool1d(2)
# 全局平均池化 + 分类
self.global_pool = nn.AdaptiveAvgPool1d(1)
self.fc = nn.Sequential(
nn.Linear(128, 64),
nn.ReLU(),
nn.Dropout(0.5),
nn.Linear(64, num_classes)
)
def forward(self, x):
x = self.pool1(torch.relu(self.bn1(self.conv1(x))))
x = self.pool2(torch.relu(self.bn2(self.conv2(x))))
x = self.pool3(torch.relu(self.bn3(self.conv3(x))))
x = self.global_pool(x).squeeze(-1)
return self.fc(x)
# 测试
model = ECG_CNN(num_classes=5)
x = torch.randn(4, 1, 1000) # 4条10秒ECG
output = model(x)
print(f"ECG输入: {x.shape}")
print(f"分类输出: {output.shape}") # [4, 5]