【论文阅读笔记】DCNet:用普通卷积 + 可变形卷积的组合做 12 导联 ECG 分类

1 阅读5分钟

亮点不只是用了可变形卷积(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

设计逻辑:

  1. 先用普通卷积:3×1 核沿时间轴提取导联内的时序特征。

  2. MaxPool (1×4):只在时间维度降采样,保留 12 个导联的空间维度。

  3. 最后用可变形卷积:在经过时序抽象后的特征图上,用 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 层普通卷积。

消融结果:加权平均准确率(%)

image.png

这张表说明了几件事:

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 类心律。

逐类准确率(%)

image.png

最值得关注的: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 个采样点,足够做波形识别同时减少计算量。

核心结论

  1. 数据结构决定卷积设计。ECG 有两个异质的轴(导联内时间、导联间关系),​用不同类型的卷积分别处理比一刀切更有效。

  2. 消融实验才是真正的证据。整体基准说"DCNet 好",消融实验说"这个特定配置好,周围的配置差很多"。

  3. 先做时序抽象,再做跨导联融合。DCN block 里的顺序不是随意的,而是有明确的信号处理逻辑。


论文: Yuntao Xie et al. "Automatic 12-Leading Electrocardiogram Classification Network with Deformable Convolution", IEEE EMBC 2021.

IEEE Xplore 论文链接