468. Sartorius - Cell Instance Segmentation | sartorius-cell-instance-segmentation
首先恭喜获胜者,也感谢 Sartorius 和 Kaggle 举办这次比赛!
虽然第11名是一个不错的成绩,但我们还是有点失望,因为我们在榜首待了一个月,在最后几周也一直保持在前5名。我们知道我们不会赢,但这次排名的下滑对我们来说相当意外,我们至今还没完全弄清楚原因。
我们的模型在公共排行榜上的表现优于私有排行榜,这可能存在轻微的域偏移(更多的皮质细胞?更多的小细胞?更多的大细胞?我们永远无法得知……),这突显了我们流程中的弱点。
无论如何,以下是解决方案中我觉得值得一提的几个有趣点,完整代码在 GitHub:https://github.com/TheoViel/kaggle_sartorius
此外,我们的推理代码在这里:https://www.kaggle.com/theoviel/sartorius-inference-final
在比赛结束前两周,我们切换到了一个我们认为可靠的验证设置:按照 Livecell 论文中的做法,按 plate(板)& well(孔)进行拆分。

这可能是我们排名下滑的原因之一?我们最好的私有 LB 分数(0.349,公共 0.339)是在切换到上述方案之前的最佳 CV 分数。不过,我们最终的分数 0.348 是在这个设置下的最佳 CV 分数(公共 0.342)。
我们只使用配备单张 RTX 2080 Ti 的机器,因此我们必须发挥创造力,以便能够在高分辨率图像上进行训练并检测小细胞。我们使用了基于 Mask-RCNN 的模型,并依赖 mmdet,但仅用于模型定义和增强,流程的其余部分是手工打造的,这使得实验更加方便。

我们在三个阶段平均不同模型和不同翻转的预测结果,这些阶段是上面边框较粗的方框。
该方案在集成时并没有真正使用 NMS,因为 NMS 可能比较棘手。因此我们堆叠了一堆模型。每种细胞类型我们使用了 6 个模型。
我们在 CV 上进行了大量的超参数调整:NMS 阈值、RPN 和 bbox_head 参数、置信度阈值、最小细胞尺寸、掩码阈值。