返回列表

9 Place solution: pretrain & semi-supervised & postprocessing & Trust both cv and lb

468. Sartorius - Cell Instance Segmentation | sartorius-cell-instance-segmentation

开始: 2021-10-14 结束: 2021-12-30 医学影像分析 数据算法赛
第9名方案:预训练 & 半监督 & 后处理 & 信任CV与LB

第9名方案:预训练 & 半监督 & 后处理 & 信任CV与LB

作者: ForcewithMe (Grandmaster) | 比赛排名: 第9名

感谢我所有的队友 @xiuqi0 @guohey @kevin1742064161 @gmhost!我们做到了!我们是大师!

在这里,我代表我的队友介绍我们的策略,其中大部分是他们的努力成果。

训练

  1. 预训练: 我们将 LIVECell 视为 1 个类别。在我们的实验中,1 个类别的效果优于 8 个类别。在比赛初期,预训练一个 R50 模型可以将成绩提升至金牌区。

  2. 半监督训练: 预训练后,我们有两个模型在 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。

  1. 处理破损掩码: 正如在训练和测试的标签中那样,astro 细胞有大量的破损掩码。因此,模型训练的结果也很容易预测出破损的掩码(掩码有轮廓,但轮廓中间有一部分时空缺失)。当我们使用分类模型判断图像是 astro 还是 Shsy5y 时,我们使用 cv2.findContours。破损掩码是根据外轮廓通过 cv2.fillconvexpoly() 生成的。

  2. NMS 和 NMW 对我们有效,Soft-NMS 和 WBF 无效。 NMW 比 NMS 稍好一点。

  3. 掩码权重:

    • 如果一个框与所有其他框的最大 IOU 超过某个阈值,则对其掩码进行加权;如果掩码的加权值大于另一个阈值,则将相应的像素设置为 1。
    • 与 NMW 相比,掩码加权的动机是一些掩码信息利用得太少(虽然 NMW 没有直接丢弃而是加权,但那些被集成框的信息肯定被削弱了)。掩码加权使得高重叠的 bboxes 在 NMW 之前合并,从而减少了信息丢失。但是,将此阈值设置得太低可能会导致信息冗余。这个参数是我们需要通过本地验证数据集调整的另一个参数。
  4. 丢弃错误分类的类别。 一张图中通常只有一种细胞,我们预先使用了分类网络进行分类。我们直接丢弃了错误分类的实例。

  5. 我们修改了 NMW 的源代码,原始代码返回了一些重复的 Bbox 和掩码。我们额外返回了一个索引来进行切片以进行加权。

  6. 加权 NMW, 辅助模型的分数乘以一个小于 1 的系数。

  7. 按类别加权 NMW(因为类别之间没有影响)。由于我们先使用分类模型,我们可以获得每张图像的类别。然后我们使用网格搜索来获得第 7 点提到的每个类别的权重。

在我们的最终提交中,我们选择了 LB 最高分的一个,以及另一个模型更多、LB 尚可且 CV 表现良好的模型。

同比赛其他方案