亮点不只是用了可变形卷积(Deformable Convolution),而是把普通卷积和可变形卷积做了针对 ECG 数据结构的分工组合——普通卷积负责导联内的时序特征提取,可变形卷积负责导联间的空间关联建模。这个组合的设计逻辑和消融实验的结果,才是这篇论文最值得看的部分。
问题:标准 CNN 在 12 导联 ECG 上的瓶颈
12 导联心电图不是 12 条独立的信号。它们是同一个心脏电活动在不同空间轴上的投影。比如右束支传导阻滞(RBBB),诊断标准是 V1 出现宽 R' 波同时 Lead I 出现宽 S 波。诊断依赖的是导联之间的关系。
标准 1D CNN 沿时间轴滑动卷积核,能提取单导联内的波形特征(P 波、QRS 波群、ST 段等),但没有机制去学习"V1 的某个特征和 Lead II 的某个特征同时出现意味着什么"。
直接上 2D 卷积?12 行的"图像"上用固定矩形核,几何上并不匹配——12 个导联不是按空间规则排列的像素网格。
可变形卷积:让网络自己学"去哪里看"
标准卷积在固定网格位置采样:
y(p) = Σ w(k) * x(p + p_k)
可变形卷积给每个采样位置加一个可学习的偏移量 Δp_k:
y(p) = Σ w(k) * x(p + p_k + Δp_k)
偏移量由另一个卷积层从输入特征图上预测出来,端到端训练。采样位置变成小数时用双线性插值。
关键:网络不仅学"看什么",还学"去哪里看"。在 12×T 的 ECG 特征图上,偏移量可以把采样点从当前导联的行移到另一个导联的行——这就是跨导联关联建模的机制。
DCN Block:分工明确的模块设计
DCNet 没有把所有卷积都换成可变形的,而是在每个 block 里做了刻意的分工:
DCN Block 结构
==============
输入: 12 × T × C_in
│
▼
┌─────────────────────┐
│ 普通 1D Conv (3×1) │ ← 导联内时序特征
│ BatchNorm + ReLU │
├─────────────────────┤
│ 普通 1D Conv (3×1) │ ← 更深层时序特征
│ BatchNorm + ReLU │
├─────────────────────┤
│ MaxPool (1×4) │ ← 时间维度降采样
│ │ (保留全部 12 导联)
├─────────────────────┤
│ 可变形 Conv (3×3) │ ← 跨导联空间关联
│ BatchNorm + ReLU │ (偏移量端到端学习)
└─────────────────────┘
│
▼
输出: 12 × (T/4) × C_out
设计逻辑:
-
先用普通卷积:3×1 核沿时间轴提取导联内的时序特征。
-
MaxPool (1×4):只在时间维度降采样,保留 12 个导联的空间维度。
-
最后用可变形卷积:在经过时序抽象后的特征图上,用 3×3 核做跨导联融合。
顺序很重要——可变形层看到的是处理过的时序特征,不是原始信号。先做时序抽象,再做跨导联比较,逻辑上更合理。
完整网络结构
输入: 12 × 7500(12 导联, 30s @ 250Hz)
│
├── DCN Block 1: 通道 1→32, 维度 12×7500 → 12×1875
├── DCN Block 2: 通道 32→64, 维度 12×1875 → 12×469
├── DCN Block 3: 通道 64→128, 维度 12×469 → 12×118
├── DCN Block 4: 通道 128→256,维度 12×118 → 12×30
│
├── Global Average Pooling: 12×30×256 → 256
├── Dense: 256 → 9
└── Softmax → 9 类预测
通道翻倍、时间维度每个 block 缩 4 倍。导联维度始终保持 12——可变形卷积跨导联工作但不会减少它们。
消融实验:真正讲故事的部分
论文测了 3×3 的网格:3/4/5 个 DCN block × 每个 block 1/2/3 层普通卷积。
消融结果:加权平均准确率(%)
这张表说明了几件事:
4 block + 2 层是一个明显的尖峰,比其他所有配置高 3-5 个百分点。设计空间不是平滑的"越多越好",而是有一个尖锐的最优点。
深度本身没用。从 4 个 block 加到 5 个,准确率从 86.3% 掉到 81.1%。过多层数带来的优化难度超过了表示能力的收益。
block 内层数的影响是非线性的。4-block 配置下,1 层卷积是整张表最差的(77.4%),2 层是最好的(86.3%),3 层回落到 82.9%。1 层卷积在可变形层之前做的时序抽象不够;3 层可能过度抽象,丢失了可变形层需要的导联特异性信息。
大多数配置聚集在 81-82%。真正的故事不是"可变形卷积有用",而是"正确的普通+可变形组合才是关键"。
基准测试:逐类结果
数据集:CPSC-2018,5850 条 12 导联记录,9 类心律。
逐类准确率(%)
最值得关注的:PAC 类别 DCNet 71.6% vs LSTM 18.3%,差了 53 个百分点。房性早搏的特征是各导联间微妙的 P 波时序差异——恰好是可变形卷积跨导联采样能捕获的模式。
实现细节
框架: PyTorch 1.4
优化器: SGD, momentum 0.5
学习率: 0.0001
训练轮次: 100 epochs
批大小: 8
数据预处理:
原始采样率: 500 Hz → 降采样到 250 Hz
时长: 填充/截断到 30 秒(7500 个采样点)
输入形状: 12 × 7500
数据集: CPSC-2018, 5850 条记录
划分: 60% 训练 / 20% 验证 / 20% 测试
批大小 8 + 学习率 0.0001 + SGD 是比较保守的配置,可能是因为可变形卷积的偏移量参数对训练过程比较敏感。250 Hz 降采样下每个 QRS 波群约 20-25 个采样点,足够做波形识别同时减少计算量。
核心结论
-
数据结构决定卷积设计。ECG 有两个异质的轴(导联内时间、导联间关系),用不同类型的卷积分别处理比一刀切更有效。
-
消融实验才是真正的证据。整体基准说"DCNet 好",消融实验说"这个特定配置好,周围的配置差很多"。
-
先做时序抽象,再做跨导联融合。DCN block 里的顺序不是随意的,而是有明确的信号处理逻辑。
论文: Yuntao Xie et al. "Automatic 12-Leading Electrocardiogram Classification Network with Deformable Convolution", IEEE EMBC 2021.