468. Sartorius - Cell Instance Segmentation | sartorius-cell-instance-segmentation
感谢我所有的队友 @xiuqi0 @guohey @kevin1742064161 @gmhost!我们做到了!我们是大师!
在这里,我代表我的队友介绍我们的策略,其中大部分是他们的努力成果。
预训练: 我们将 LIVECell 视为 1 个类别。在我们的实验中,1 个类别的效果优于 8 个类别。在比赛初期,预训练一个 R50 模型可以将成绩提升至金牌区。
半监督训练: 预训练后,我们有两个模型在 LB(Leaderboard)上得分为 0.332。使用 NMS 后达到了 0.334。我们使用该流程为提供的半监督训练数据生成了伪标签。在使用 resnext152 作为主干网络训练 cascade rcnn 后,我们达到了 0.338。
先分类。 我们的提交流程在本地验证集的某些图像中预测出了 2 个类别的实例(而在 ground truth 中,一张图像只有一种类型的细胞)。因此,我们在分割之前应用了 5 折 resnet34 进行分类。
我们在 0.338 的分数上停滞了大约 20 天。很奇怪的是,无论我们如何将其他模型与 0.338 的模型集成,得分都会变差。在应用了大量后处理之后,我们终于在 LB 上勉强突破了 0.338。
处理破损掩码: 正如在训练和测试的标签中那样,astro 细胞有大量的破损掩码。因此,模型训练的结果也很容易预测出破损的掩码(掩码有轮廓,但轮廓中间有一部分时空缺失)。当我们使用分类模型判断图像是 astro 还是 Shsy5y 时,我们使用 cv2.findContours。破损掩码是根据外轮廓通过 cv2.fillconvexpoly() 生成的。
NMS 和 NMW 对我们有效,Soft-NMS 和 WBF 无效。 NMW 比 NMS 稍好一点。
掩码权重:
丢弃错误分类的类别。 一张图中通常只有一种细胞,我们预先使用了分类网络进行分类。我们直接丢弃了错误分类的实例。
我们修改了 NMW 的源代码,原始代码返回了一些重复的 Bbox 和掩码。我们额外返回了一个索引来进行切片以进行加权。
加权 NMW, 辅助模型的分数乘以一个小于 1 的系数。
按类别加权 NMW(因为类别之间没有影响)。由于我们先使用分类模型,我们可以获得每张图像的类别。然后我们使用网格搜索来获得第 7 点提到的每个类别的权重。
在我们的最终提交中,我们选择了 LB 最高分的一个,以及另一个模型更多、LB 尚可且 CV 表现良好的模型。