558. Vesuvius Challenge - Ink Detection | vesuvius-challenge-ink-detection
我们非常感谢组织方举办了这场非常有趣的比赛。诚挚感谢主办方和Kaggle团队。特别感谢Yannick和Max,与你们合作非常愉快!对我们所有人来说,这都是第一次参加Kaggle比赛。
在本次比赛提交中,我们使用了nnU-Net框架,这是医学图像分割领域公认的强者。nnU-Net的成功已得到验证:它被应用于MICCAI 2020的10个挑战赛中的9个获胜方案、MICCAI 2021的7个中的5个,以及AMOS 2022挑战赛的第一名。
为了处理给定任务的三维特性,我们设计了自定义网络架构:一个在跳跃连接中使用挤压激励(SE)模块的3D编码器2D解码器U-Net模型。我们采用片段级归一化并选择32个切片进行训练,使补丁大小扩展至32x512x512。我们将每个片段分为25块并训练五折交叉验证。我们只提交在验证数据上表现良好的模型。最终提交时,我们集成了两个模型中第0折和第2折的权重。一个模型使用批量大小2和权重衰减3e-5训练,另一个使用批量大小4和权重衰减1e-4训练。在测试时增强中,我们对所有轴进行镜像操作,并进行平面内90°旋转,使每个模型对每个补丁生成总共8个独立预测。
对于两次提交,我们采用了两种不同的后处理技术。第一种方法是将网络softmax输出的阈值从0.5提高到0.6。第二步进行连通分量分析,剔除softmax 95百分位值低于0.8的所有实例。第二种方法是在第一个模型的softmax输出上使用现成的2D U-Net模型,补丁大小为2048x2048。输出被调整为1024x1024进行推理,然后再放大到2048x2048。此举目的是利用更高分辨率的输入捕获更多结构元素,例如字母的形状。我们对两者都很遗憾,因为它们只提升了公共测试集的结果。

如前所述,我们选择了在跳跃连接中使用SE模块的3D编码器2D解码器U-Net模型。因此,所选切片仍被网络视为3D输入体积。通过编码器后,特征在所有层级(即跳跃连接)上映射到2D,使用特定的加权方式。该网络一个独特之处是编码器每个阶段包含四个卷积来处理困难的3D输入,而解码器只有两个卷积块。
映射最初使用简单的平均操作执行,但后来通过挤压激励进行了优化。然而,我们不是像通常在通道维度上应用SE来突出重要通道,而是在每个层级(即跳跃连接)对所有通道但在x维度上应用一个SE模块。这导致特征空间中切片的加权,因此在后续使用平均操作聚合时,每个切片具有不同的贡献度。
在预处理阶段,我们将每个片段裁剪成25个部分,并确保它们包含相等数量的数据点(mask.png中标注为前景的区域)。此过程用于创建五折交叉验证。
对于32个切片的选择,我们计算了每个片段的强度分布。从这些分布中,我们确定最小值和最大值,并计算它们的中点。然后我们围绕选定的中心切片裁剪32个切片。下图显示了各个片段的强度分布,图中的垂直线代表最大和最小强度值之间的中点。

为了进一步预处理数据,我们应用z-score标准化来归一化强度值。此外,我们将强度值裁剪在0.5和99.5百分位以去除极端异常值。最后,我们对每个片段进行归一化以确保数据集间的一致性。
以下是训练流程中的一些细节。
大部分情况下,我们使用了nnU-Net提供的开箱即用的增强技术,这是一个专门为医学图像分割设计的框架。这些技术构成了我们数据增强管道的基础。然而,我们针对特定任务和数据特性进行了一些修改和添加:
批量大小4,权重衰减1e-4。第0折。

批量大小4,权重衰减1e-4。第2折。

批量大小2,权重衰减3e-5。第0折。

批量大小2,权重衰减3e-5。第2折。

我们决定仅提交第0折和第2折模型的集成,因为它们在验证数据上的表现优于其他折叠。这两折与其他折叠之间的Dice分数差异显著,差距约0.1。因此,我们认为第0折和第2折模型的集成是最可靠有效的最终提交方案(我们真是傻瓜)。
此外,我们决定在推理过程中加入测试时增强(TTA)技术。TTA对每个补丁进行所有轴的镜像操作和平面内90°旋转。通过执行这些增强,每个模型对每个补丁生成总共8个独立预测。
为了在公共测试集上取得更好结果,一位充满孤注一掷决心的团队成员一头扎进了高级后处理领域。这位勇士制定了一个大胆的计划:将softmax输出的阈值从平凡的0.5提升到大胆的0.6。但这只是个开始!
这位无畏者不顾谨慎, embarked on a quest to conduct a connected component analysis, mercilessly discarding all instances with a lowly softmax 95th percentile value below the illustrious threshold of 0.8.
这位勇敢的冒险家带着一丝疯狂,测试了无数个阈值组合,决心找到提升所有折叠验证分数的金钥匙。这种对验证改进的不懈追求永无止境。
在公共测试集上,这一无畏的努力带来了0.05 Dice分数的显著提升,提振了整个团队的希望和士气。这一意外的改进注入了新的兴奋和乐观情绪。
然而, fate would have it, on the ultimate battlefield of the 50% final, the outcome took a peculiar twist. The gains dwindled ever so slightly, with a meager decrease of -0.002 dice points. 虽然在激烈的竞争中,每位小数点都至关重要。
抱歉各位。
第二种方法是在第一个模型生成的softmax输出上使用2048x2048补丁大小的2D U-Net模型。随后,模型输出被调整为1024x1024用于推理,然后放大到原始分辨率2048x2048。此策略的目的是利用更高分辨率的输入数据捕获更精细的结构细节,包括字母的复杂形状。该模型的训练数据来自我们各种模型对原始训练数据的推理结果。
这是谁的主意?
再次抱歉。
更多细节和代码将随后发布, cheers!