返回列表

7th place solution

342. Open Images 2019 - Instance Segmentation | open-images-2019-instance-segmentation

开始: 2019-07-11 结束: 2019-10-01 计算机视觉 数据算法赛
第7名方案

第7名方案

作者:Bo, jvc2688
比赛:Open Images 2019 - Instance Segmentation

祝贺所有获奖者。以下是我们的解决方案:

代码库与硬件

我们使用了 mmdetection,训练时使用 4 块 Tesla T4,TTA 推理时使用 8 块 Tesla T4。

模型设置

共有 300 个类别,分为 3 个层级:

  • 275 个叶子类别
  • 23 个父类别
  • 2 个祖父类别(CarnivoreReptile

对于 275 个叶子类别,我们训练了以这 275 个类别为标签的模型,并直接使用推理结果。

对于 25 个父类和祖父类,有两种方法获取预测结果:

  • 。使用叶子模型的预测结果,并“扩展”到父类和祖父类。例如,如果叶子模型预测了一个 Tortoise(乌龟)掩码,我们会添加一个 Turtle(海龟)预测(其父类)和一个 Reptile(爬行动物)预测(其祖父类),使用相同的掩码和分数。
  • 。我们训练仅以 23 个父类为标签的模型,并扩展到 2 个祖父类。注意,对于这些模型,我们需要在训练前创建实例分割的层级扩展(如此处所述)。

验证集

为了加快推理速度,我们从官方验证集中抽取了一个小子集,叶子模型使用 2844 张图像,父类模型使用 3841 张图像。我们使用验证分数来决定何时调整学习率以及选择最佳检查点。

验证分数显著高于 LB(排行榜)。对于 275 个叶子类别,我们的验证分数超过 0.8。尽管如此,验证集和 LB 之间的差异是稳定的。

训练集重平衡

Open Images 数据集在 300 个类别之间极度不平衡。我们对叶子模型的训练数据进行了如下重平衡:按图像数量降序排列 275 个类别。因此类别 #0 是最大的类别。

组别 类别 原始每类图像数 重平衡策略
1 #241 至 #274 150-13 过采样 x10
2 #64 至 #240 1500-150 过采样至 1500 张/类
3 #24 至 #63 6k-1500 无重平衡
4 #0 至 #23 89k-6k 欠采样至 6k*

重平衡后,每个 epoch 大约有 45 万张图像。

*对于欠采样,我们每个 epoch 使用不同的随机种子,以便向模型提供尽可能多的图像。此外,这个 6k 的数字是一个粗略目标。在实际采样中,前几个类别最终会有更多的图像,因为许多图像有多个标签,而且在完成第 1-3 组采样后,顶部类别已经有超过 6k 的图像。

类似地,对于父类模型,对 23 个类别进行排序:

组别 类别 重平衡策略
1 #10 至 #22 上采样至 10k 张/类
2 #5 至 #9 无重平衡
3 #0 至 #4 欠采样至 30k 张/类

重平衡后,每个

同比赛其他方案