342. Open Images 2019 - Instance Segmentation | open-images-2019-instance-segmentation
祝贺所有获奖者。以下是我们的解决方案:
我们使用了 mmdetection,训练时使用 4 块 Tesla T4,TTA 推理时使用 8 块 Tesla T4。
共有 300 个类别,分为 3 个层级:
Carnivore 和 Reptile)对于 275 个叶子类别,我们训练了以这 275 个类别为标签的模型,并直接使用推理结果。
对于 25 个父类和祖父类,有两种方法获取预测结果:
Tortoise(乌龟)掩码,我们会添加一个 Turtle(海龟)预测(其父类)和一个 Reptile(爬行动物)预测(其祖父类),使用相同的掩码和分数。为了加快推理速度,我们从官方验证集中抽取了一个小子集,叶子模型使用 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 张/类 |
重平衡后,每个