返回列表

38th solution: 1d models and 1d+2d models

600. HMS - Harmful Brain Activity Classification | hms-harmful-brain-activity-classification

开始: 2024-01-09 结束: 2024-04-08 临床决策支持 数据算法赛

第38名解决方案:1D模型与1D+2D模型

作者:Horikita Saku 团队(TmT、Ken_Ken_Pa、BladeRunner、HB)
发布时间:2024年4月10日
获得票数:27票

摘要

  • 1D模型(公开榜分数 ~0.26)
  • 1D+2D模型(公开榜分数 ~0.25)
  • 两阶段训练
  • 分别训练2D模型的骨干网络和1D+2D模型

TmT&Ken_Ken_pa 部分:1D模型

1D模型主要基于Wavenet,并使用注意力池化。首先在所有投票数据上训练,然后在投票数≥10的部分上训练。获得较好的模型后,进行伪标签预训练。

数据增强:

  • 翻转左右脑数据,在推理时同时使用翻转和未翻转的脑数据
  • 使用上采样复制样本较少的类别

BladeRunner 部分:2D模型

2D频谱图解决方案采用两阶段训练:

  • 第一阶段:在所有数据上训练
  • 第二阶段:仅在投票数>9的数据上训练

数据准备与预处理
使用Kaggle频谱图+EEG频谱图
每个eeg_id仅生成一个样本,数据从中间位置截取

  • kaggle_spec 形状:(512, 256, 1)
  • eeg_spec 形状:(512, 256, 1)
  • 合并后形状:(512, 512, 1)

EEG频谱图生成方法:梅尔频谱图

  • 高度 = 128
  • 宽度 = 256
  • n_fft = 1024
  • win_length = 128
  • fmin = 0.5
  • fmax = 20
  • USE_WAVELET = None

K折交叉验证: 5折,按患者分组

数据增强:

  • xymask
  • 随机亮度
  • mixup

模型:

  • tf_efficientnet_b1:CV 0.27,LB 0.29
  • tiny_vit_21m_512:CV 0.27,LB 0.29

训练细节:

  1. 损失函数:nn.KLDivLoss(reduction="batchmean")
  2. 学习率:3e-3
  3. 优化器:AdamW
  4. 学习率调度器:OneCycleLR

Horikita_Saku&HB 部分:1D+2D模型

  • 首先使用两阶段训练2D模型
  • 然后提取骨干网络,并在1D模型中使用注意力池化进行融合

这样做的原因是注意到1D模型和2D模型的梯度变化差异很大(最大差异达1e10倍),同时1D和2D模型拟合所需的学习率变化也不同(差异在1e10-1e100量级),因此采用了分别训练的思路。

梯度变化对比图

同时,对1D模型进行了一些改进。我们对EEG波形进行切片,例如10000→2000*5,然后在每个2000长度上分别进行卷积操作,而不是在整个10000长度上卷积,这带来了一定的性能提升。

测试时增强(TTA)
我们对大量模型使用TTA,以尽可能提升每个模型的性能。

排序Kaggle频谱图
Kaggle频谱图四个通道的顺序为['LL','RL','LP','RP'],而EEG的顺序是['LL','LP','RP','RR'],因此在一些模型中我们尝试重新排列Kaggle频谱图,使其与EEG的通道顺序保持一致。

同比赛其他方案