返回列表

24th Place Solution

686. PhysioNet - Digitization of ECG Images | physionet-ecg-image-digitization

开始: 2025-10-21 结束: 2026-01-22 医学影像分析 数据算法赛
```html 第 24 名解决方案

第 24 名解决方案:V19 + V16V18 集成 (19.59 SNR)

作者: Uday Bhatia, Rudr Pratap Singh
发布日期: 2026-01-25
竞赛排名: 24

方法:回归,而非分割

我们最初尝试了分割(预测二值轨迹掩码),但失败了——粗轨迹、重叠导联以及对亚像素精度的需求使其变得不切实际。相反,我们将此框架化为逐像素 y 坐标回归:对于每个 x 位置,预测 ECG 轨迹的连续 y 坐标。


数据策略

问题:Kaggle 的 Ground Truth (GT) 单位是毫伏,而不是像素。转换回来会引入对齐误差。

解决方案:主要使用具有像素级完美 Ground Truth 的合成 ECG进行训练,然后混入 Kaggle 数据进行领域适应。

我们将单独的行提取为独立的样本(数据量增加 4 倍),以基线为中心裁剪每一行(±250px),并仅使用信号区域(宽 3926px,无边距)。


架构

V16: 单导联回归基线

输入:[B, 3, 500, 3926] (单行裁剪)
  │
  ▼
ConvNeXt-Base 编码器 (ImageNet-22k 预训练)
  │
  ▼
带有跳跃连接的 U-Net 解码器
  │
  ▼
高度注意力机制 (y 轴上的 softmax)
  │
  ▼
1D 卷积回归头 → Sigmoid
  │
  ▼
输出:[B, 3926] 归一化 y 坐标

V18: 跨行优化器 (堆叠在 V16 之上)

获取 V16 的预测结果,并通过同时查看所有 4 行对其进行优化:

  • 从 V16 预测创建高斯“引导通道”(σ=15px)
  • EfficientNet-B0 编码器(4 通道:RGB + 引导)
  • 3 个跨行 Transformer 块,具有跨行自注意力机制
  • 输出小的残差修正(Tanh × 可学习缩放因子 ~0.1)

关键洞察:跨行注意力隐式地学习了爱因托芬定律 (II = I + III) 并捕捉行与行之间的不一致性。

V19: BiLSTM + 可变形卷积

输入:[B, 3, 500, 3926]
  │
  ▼
ConvNeXt-Base 编码器
  │
  ▼
带有可变形卷积的 U-Net 解码器 (最后 2 个阶段)
  │
  ▼
高度注意力机制
  │
  ▼
双向 LSTM (2 层,hidden=128)
  │
  ▼
线性头 → Sigmoid
  │
  ▼
输出:[B, 3926]

可变形卷积:学习自适应感受野以处理弯曲/扭曲的轨迹。
BiLSTM:捕捉整个 10 秒 ECG 的长程时间依赖性。


为什么集成有效:互补的失败模式

V16+V18 V19
优势 跨行一致性 长程时间依赖性
劣势 局部感受野 无跨行感知
失败于 基线漂移,节律一致性 跨行伪影,导联关系

这些架构具有不相关的误差(相关性约 0.3-0.4)。当取平均时,错误会相互抵消。

ensemble = 0.4 * V19 + 0.6 * V16V18  # 经验上的最佳比例

训练

损失函数

Loss = 1.0 × MaskedL1 + 0.2 × SNRLoss + 0.1 × GradientLoss
  • MaskedL1:有效区域上的像素精度
  • SNRLoss:直接优化竞赛指标 (-10*log10(signal²/noise²))
  • GradientLoss:一阶导数的平滑度约束

设置

  • AdamW (lr=1e-4, weight_decay=0.01)
  • 余弦退火调度 (Cosine annealing schedule)
  • 混合精度 (FP16) 配合梯度缩放
  • 重度增强 (噪声、模糊、颜色抖动、粗 Dropout)
  • 通过 DistributedDataParallel 进行多 GPU 训练

V18 训练:冻结 V16,训练优化器以预测小的残差修正。


后处理

  • Savitzky-Golay 平滑 (window=7, polyorder=2)
  • 爱因托芬定律校正 (α=0.25 误差分布)
  • 幅度钳位 (±10 mV)

结果

模型 验证集 SNR 公共排行榜
仅 V16 ~19.5 dB ~19.1
V16 + V18 ~19.7 dB ~19.5
仅 V19 ~20 dB ~19.5
集成 ~19.75

关键要点

  1. 对于亚像素轨迹提取,回归 > 分割
  2. 具有像素级 GT 的合成数据至关重要
  3. 架构多样性 → 不相关的误差 → 有效的集成
  4. 跨行注意力 (V18) 和 BiLSTM (V19) 完美互补
  5. 直接 SNR 损失优化有帮助

感谢阅读!

特别感谢 @hengck23 提供的 stage 0/1 流程

```
同比赛其他方案