返回列表

8th place solution + code

348. RSNA Intracranial Hemorrhage Detection | rsna-intracranial-hemorrhage-detection

开始: 2019-09-18 结束: 2019-11-13 医学影像分析 数据算法赛
第8名解决方案 + 代码

第8名解决方案 + 代码

作者:Maciej Budyś 及团队成员
原文发布时间:2019-11-24

首先,我要感谢整个团队的通力合作:@meanshift, @tgilewicz, @nordberdt, @dmytropoplavskiy,很高兴能与你们一起参加这次竞赛。以下是我们解决方案和实验的总结。

代码地址:https://github.com/ambrzeski/kaggle-rsna-2019

预处理

机架倾斜校正

为了减少头部CT扫描期间辐射对患者眼睛的影响,有时扫描会使用倾斜的机架进行。这类研究的切片在y轴上没有正确对齐,导致3D体积出现变形,在矢状面上清晰可见。为了校正这种变形,必须通过剪切变换在y轴上移动切片。剪切角度可以从“Image Orientation (Patient)”DICOM字段中确定。

机架倾斜校正对比 机架倾斜校正前后的矢状面视图。

我们观察到机架倾斜在该数据集中相当普遍,在训练集中超过50%的研究出现这种情况,在stage1测试集中则高达90%。我们没有测量机架倾斜校正对模型性能的具体影响。据推测,当将切片作为通道输入2D模型时,影响可能不大,但在使用更广泛的3D上下文时,这可能会产生影响,特别是考虑到剪切角度在不同研究之间是变化的。

窗宽窗位

首先,HU值被裁剪到[-400, 1000]范围。然后,我们不使用固定大小的窗口,而是应用非线性变换,拉伸最有价值的HU范围并压缩不太重要的范围。变换函数的具体形状是我们手动设计的。我们尝试将该函数建模为数据集中像素值直方图的累积分布函数,但手动设置数值允许我们增强包含出血的特定范围,因此效果稍好一些。

HU值映射 从HU值到归一化值的映射 窗宽窗位对比 从左到右:裁剪到[-400, 1000]范围的图像,脑窗(L:40, W:80),非线性变换

我们也尝试过固定窗口和可学习窗口,但我们的非线性变换效果最好,同时也最方便使用。

模型

我们所有的模型都是各种2D CNN的变体,连续的切片作为图像通道输入网络,仅预测中间切片的类别。模型在5个折上进行训练,折之间没有患者重叠。作为优化器,我们使用了RAdam。对于数据增强,我们使用了标准的空间变换。任何涉及像素值变换的操作都会导致性能下降。

对于某些模型,切片(或切片组)分别通过网络骨干进行前向传播,然后将其特征图拼接并通过卷积层组合。由于这种处理5个切片的方法会使训练时间增加5倍,因此在前4个epoch中,模型仅在当前切片上进行训练,与其他切片相关的组合3D卷积权重设置为0。在随后的两个epoch中,模型在所有5个输入切片上进行训练。与单模型多输入相比,组合模型输出对结果的提升更大(约0.006-0.01)。

模型架构

集成中所有模型的总结如下表所示。