403. OSIC Pulmonary Fibrosis Progression | osic-pulmonary-fibrosis-progression
我没想到能赢得这场比赛,所以我没有立刻准备好我的解决方案或代码。我已经把我的代码在这里公开了:https://github.com/GreatGameDota/OSIC-Pulmonary-Fibrosis-Prediction
像往常一样,我要感谢Kaggle举办了另一场精彩的比赛,也要感谢主办方组织了这次比赛!
对我来说这是一场有趣的比赛,因为我看到其他人都只在使用表格数据。我完全没有表格数据比赛的经验,而且我喜欢计算机视觉(CV),所以我有点固执,强迫自己使用CT扫描。虽然我糟糕的LB(公开排行榜)分数曾让我感到气馁,但我坚持了下来,结果证明这是一个正确的决定!
好了,以下是解决方案详情:
图像分辨率:512x512
对于每次扫描,我加载了所有的dicom文件,然后将它们转换为HU(Hounsfield Units)。接着我裁剪了所有图像并将它们重塑为50x512x512的大小。做完这些后,我将每张图像窗口化为三个部分。关于窗口化的详细解释,请查看这篇帖子(我使用了那里分享的相同函数和窗口值,非常感谢Ian Pan!)。得到三张窗口化图像后,我简单地将它们保存为png格式。
每张图像看起来类似于这样:
我在这里公开了我使用的数据集:https://www.kaggle.com/greatgamedota/osic-windowed-lung-images
关于元数据,我使用了来自 @ulrich07 的基准内核中相同的元数据,但我只使用了基础的Percent值,因为它提高了我的CV(交叉验证)与LB再到PB(私有排行榜)的相关性。
没有使用表格/元数据增强。
在训练时,我移除了6个完整的患者,因为他们的CT扫描是损坏的。然后我通过随机打乱患者并使用GroupKFold将每个患者分配到一个折中。
在训练过程中,我随机选择一个唯一的患者,并从10-40张图像中随机选择一张(因为前10张和后10张图像不包含任何肺部信息)。然后我设置每次迭代持续 4 * 患者数量。对于验证,我只选择第15张图像,因为它是通常包含最多信息的中间图像。
对其FVC预测值和置信度进行简单的平均。
我的最终提交是3