348. RSNA Intracranial Hemorrhage Detection | rsna-intracranial-hemorrhage-detection
首先,我要感谢整个团队的通力合作:@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值到归一化值的映射
从左到右:裁剪到[-400, 1000]范围的图像,脑窗(L:40, W:80),非线性变换
我们也尝试过固定窗口和可学习窗口,但我们的非线性变换效果最好,同时也最方便使用。
我们所有的模型都是各种2D CNN的变体,连续的切片作为图像通道输入网络,仅预测中间切片的类别。模型在5个折上进行训练,折之间没有患者重叠。作为优化器,我们使用了RAdam。对于数据增强,我们使用了标准的空间变换。任何涉及像素值变换的操作都会导致性能下降。
对于某些模型,切片(或切片组)分别通过网络骨干进行前向传播,然后将其特征图拼接并通过卷积层组合。由于这种处理5个切片的方法会使训练时间增加5倍,因此在前4个epoch中,模型仅在当前切片上进行训练,与其他切片相关的组合3D卷积权重设置为0。在随后的两个epoch中,模型在所有5个输入切片上进行训练。与单模型多输入相比,组合模型输出对结果的提升更大(约0.006-0.01)。
集成中所有模型的总结如下表所示。