返回列表

39th solution

433. HuBMAP - Hacking the Kidney | hubmap-kidney-segmentation

开始: 2020-11-16 结束: 2021-05-10 医学影像分析 数据算法赛
第39名方案

第39名方案

作者: snowballball | 比赛: HuBMAP - Kidney Segmentation

感谢 Kaggle 和主办方团队举办如此有趣的比赛,也感谢大家分享你们的聪明才智!很高兴能在我的第一次医学分割比赛中获得第一枚奖牌,我从中学到了很多。

我的笔记本基于 hubmap-tf-with-tpu-efficientunet-512x512-trainhubmap-tf-with-tpu-efficientunet-512x512-submhubmap-tf-with-tpu-efficientunet-512x512-tfrecs,此外我自己做了一些改进和探索。(感谢 @wrrosa 分享这些优秀的笔记本)

以下是我的方案简介:

数据集

使用 1024x1024 的窗口大小和 512 的重叠大小对原始 tiff 图像进行切割,然后调整为 320x320 的图像。

将数据集分为 5 折,并使每折的训练样本总和几乎相同。

使用 d48-hand-labelled 作为外部数据(感谢 @carnozhao!)

注意:
我也尝试了其他窗口大小和重叠大小的组合,例如 1024-256、1536-512 和 1560-320,但没有获得更好的 CV 和 LB。
我没有尝试 1024-512,因为对我来说训练时间太长了。
相比随机拆分,均等的 k-fold 拆分给出了稍好的 CV 和公共 LB。
使用 d48-hand-labelled 有助于在 d488c759a 和其他公共测试图像上获得更好的公共 LB(约 0.001)。
我也尝试添加 @baesiann外部数据集,但公共 LB 较低。

模型

带有 EfficientB3 编码器的 U-Net。

注意:
我也尝试了 LinkNet 作为分割框架和其他编码器(如 EfficientB0~B2、Resnet50 和 Swin-Transformer),但没有获得更好的 CV 和公共 LB。

损失函数

交叉熵,并使用 Lovasz Softmax 进行微调。

在评估方面,计算全局 Dice 分数,而不是每个图块的平均 Dice 分数。

注意:
使用 Lovasz Softmax 微调在公共 LB 上带来了 0.003+ 的提升。
我也尝试了其他损失函数,如 Tversky loss、Focal Tversky loss 和 BCE Jaccard loss,但没有获得更好的 CV 和公共 LB。
使用全局 Dice 分数时,更好的 CV 通常意味着更好的公共 LB。

优化器

Adam + SAM (Sharpness-Aware Minimization,锐度感知最小化)

注意:
对我来说,SAM 提供了更稳定的 CV 和公共 LB。
我也尝试了 Ranger 作为优化器,但得到了更好的 CV 和更差的公共 LB。

训练数据打乱

在每个 epoch 之间打乱每折中的训练文件。

注意:
TFRecordDataset 的输入文件顺序是固定的,我相信在训练过程中进行更充分的打乱会有所帮助。

中心裁剪推理

像处理训练数据集一样切割测试图像。对每个测试图块的预测掩码进行 1/2 的中心裁剪,然后将每个图块掩码拼接在一起作为最终掩码。

注意:
中心裁剪推理是获得高 LB 分数的关键思路。它带来了约 0.005+ 的提升。
我曾尝试裁剪 1/4 的预测掩码,虽然私有 LB 更高(0.948),但公共 LB 几乎相同。

模型集成

因为模型集成没有提供

同比赛其他方案