竞赛总结:Kaggle 大脑活动模式分类!
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification
通过开发一个模型,对从危重病房患者记录的脑电图(EEG)信号进行检测和分类,从而实现对癫痫发作和其他有害脑活动的准确识别。参赛者需要利用机器学习和深度学习等技术,针对医院患者的EEG数据进行训练,以提高脑电图模式分类的准确性。
过有效地识别脑电图中的异常模式,可以更快速、准确地进行神经重症监护、癫痫治疗以及药物研发。这一领域的进展可能使医生和脑科研究人员能够更早地检测到癫痫发作或其他脑损伤,为患者提供更快速、更准确的治疗,对神经科学和医学研究有着潜在的革命性影响。通过这个比赛,参与者有机会推动EEG信号处理领域的创新,为神经重症护理、癫痫治疗以及药物研发等领域的发展贡献力量。
比赛的目标是利用机器学习和深度学习技术,自动分析危重病患者记录的脑电图(EEG)信号。其主要任务是检测和分类EEG数据中的特定模式,包括癫痫发作(SZ)、广泛周期性放电(GPD)、局限性周期性放电(LPD)、局限性节律性三相电流活动(LRDA)、广泛节律性三相电流活动(GRDA)以及“其他”。
提交的模型将根据预测概率与观察目标之间的Kullback-Leibler散度进行评估。Kullback-Leibler散度是一种衡量两个概率分布之间差异的度量。
对于测试集中的每个eeg_id,您需要为每个投票列预测一个概率。提交文件应包含标题,并采用以下格式:
eeg_id,seizure_vote,lpd_vote,gpd_vote,lrda_vote,grda_vote,other_vote
0,0.166,0.166,0.166,0.166,0.166,0.166
1,0.166,0.166,0.166,0.166,0.166,0.166
etc.
这是一个代码竞赛。测试集只提供了少量示例供下载。当评分您的提交时,测试文件夹将被替换为包含完整测试集的版本。
train.csv:训练集的元数据。专家标注员审查了50秒长的EEG样本以及匹配的涵盖相同时间窗口的10分钟窗口内的谱图,并标记了中央10秒。许多这些样本是重叠的,并已合并。train.csv
提供了元数据,允许您提取标记人员注释的原始子集。
eeg_id
- 整个EEG记录的唯一标识符。eeg_sub_id
- 适用于此行标签的特定50秒长子样本的ID。eeg_label_offset_seconds
- 合并的EEG开始和此子样本之间的时间。spectrogram_id
- 整个EEG记录的唯一标识符。spectrogram_sub_id
- 适用于此行标签的特定10分钟子样本的ID。spectogram_label_offset_seconds
- 合并的谱图开始和此子样本之间的时间。label_id
- 此标签集的ID。patient_id
- 捐赠数据的患者的ID。expert_consensus
- 共识标注者标签。仅为方便提供。[seizure/lpd/gpd/lrda/grda/other]_vote
- 给定脑活动类别的标注者投票计数。活动类别的全名如下:lpd
:局限性周期性放电,gpd
:广泛周期性放电,lrd
:局限性节律性三相电流活动,grda
:广泛节律性三相电流活动。这些模式的详细解释在此处提供。test.csv:测试集的元数据。由于测试集中没有重叠的样本,因此训练元数据中的许多列不适用。
eeg_id
spectrogram_id
patient_id
sample_submission.csv:
eeg_id
[seizure/lpd/gpd/lrda/grda/other]_vote
- 目标列。您的预测必须是概率。请注意,测试样本的标注者数量在3到20之间。train_eegs/ :一个或多个重叠样本的EEG数据。使用train.csv中的元数据选择特定的标注子集。列名是EEG导联的各个电极位置的名称,只有一个例外。EKG列用于记录来自心脏的心电图信号。所有EEG数据(包括训练和测试)都以每秒200个样本的频率收集。
test_eegs/ :确切的50秒EEG数据。
train_spectrograms/ :组装的EEG数据的谱图。使用train.csv中的元数据选择特定的标注子集。列名指示赫兹的频率和EEG电极的记录区域。后者简称为LL = 左侧横向; RL = 右侧横向; LP = 左侧经矢状; RP = 右侧经矢状。
test_spectrograms/ :使用确切的10分钟EEG数据组装的谱图。
example_figures/ :概览选项卡中使用的示例案例图像的较大版本。
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492560
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492254
这个团队的解决方案非常丰富多样,包括了1D和2D模型的集成,以及对不同类型数据的处理和训练方法的探索。
Yuji: 开发了基于Swin Transformer v2 Large的2D模型,使用专家投票数大于等于10的数据进行训练和微调,通过一系列微小的调整达到了CV得分为0.2318,然后进行了四种不同参数设置的模型变体,将它们集成得到了CV得分为0.2135的结果。
tattaka: 开发了四种不同的模型,包括使用Tiny Vision Transformer 21M、Caformer S18和ConvNExt Large作为2D骨干网络的模型,这些模型在训练过程中采用了丰富的数据增强和深度学习技术,如mixup、XYMasking、hflip、随机裁剪等,最终取得了一定的成绩。
bilzard: 初始方案是1D和2D模型的集成,但在团队合并后,他将主要精力放在了1D模型的开发上,主要关注于保持模型的对称性以及使用Channel Quality Factor(CQF)评估EEG通道质量等方面。在最终的提交中,他的1D模型取得了不错的CV得分。
yu4u: 开发了基于MobileNetV2的1D CNN模型,通过对原始EEG信号进行预处理,提取LL、RL、LP和RP特征,并在模型中使用了cutout、mixup、shuffle等数据增强技术,最终在CV得分上取得了一定成绩。
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492281
基于使用2D原始EEG信号模型和2D EEG谱图模型。他们没有使用Kaggle提供的10分钟谱图,因为在实验中它们一直表现出较差的交叉验证分数。他们使用了18个双极信号差异来训练所有模型,并发现EKG信号没有提升性能。
2D原始EEG:将每个(10000,)信号重新形状为(20, 500),使用步幅为20,然后vstack 18个信号以形成一个360x500的2D图像。他们训练了两种类型的模型,50秒和50/10秒模型。
2D STFT谱图:使用cusignal为每个信号生成谱图,并将它们vstack以形成一个2D图像。参数被选择为最终图像形状为(512, 512)。他们尝试了其他分辨率,但发现这是最佳的。他们训练了4种类型的模型 - 50秒,50/10秒,50/30/10秒,30/10秒。
2D多窗谱图:使用python代码生成EEG谱图,然后使用hstack,vstack和填充的组合创建(500, 372)图像。他们训练了两种类型的模型,50秒和50/10秒模型。
最终提交是这三种数据的加权混合,权重分别为0.2,0.65和0.15。
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492482
ishikei部分:
sqrt4kaido部分:
2g部分:
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492207
这个解决方案的关键在于使用更多信息的图像作为输入,这可以生成一个很好的单一模型,达到了LB 0.23和PB 0.29的分数。
最后,集成了20个模型。实际上,我的模型差异不大,集成仅将最佳单一模型从PB 2896提高到2866。我添加了一个使用Kaggle spec的弱模型。有趣的一点是,与使用简单的均值相比,使用optuna生成模型权重只能稍微提高CV,例如从0.206到0.2058,但在线LB和PB显示加权结果更好。
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/492301
https://www.kaggle.com/competitions/hms-harmful-brain-activity-classification/discussion/493093