返回列表

[Update ] The 9th place solution with code

398. Global Wheat Detection | global-wheat-detection

开始: 2020-05-04 结束: 2020-08-19 作物智能识别 数据算法赛
[更新] 第九名解决方案及代码

[更新] 第九名解决方案及代码

作者: Miras Amir (Grandmaster), OrKatz (Master), QuantScientist (Master)
比赛: Global Wheat Detection (全球小麦检测)
排名: 第 9 名

简介

(本文由获胜团队共同撰写,详情见下文)

首先,我们要向获胜者以及所有提名者表示祝贺,感谢他们卓越的成就和持续的杰出表现,并期待目标检测算法领域迎来激动人心的时刻。

此外,非常感谢 Kaggle 和主办方举办这场有趣的比赛。特别感谢我的同事 @orkatz2 (Or Katz) 和 @solomonk (Shlomo Kashani,著有《Deep Learning Interviews》一书)。

代码

总结

我们的解决方案基于优秀的 MMDetection 框架 (https://github.com/open-mmlab/mmdetection)。我们评估并测试了众多模型,试图找到更适合小麦检测的模型。为什么?因为原始模型作者报告的 COCO mAP 分数与小麦数据集上的实际 mAP 并不总是存在直接的相关性。因此,实验显得尤为重要。我们在 MMDet 中评估的众多模型包括:

  • GFocal
  • ATSS
  • UniverseNet
  • DetectorRS
  • SOLO-v2(用于分割,但我们还是尝试了一下)

随后,我们训练了表现最佳的模型集成,它们是:

为了提高分数,我们对每个模型应用了一轮伪标签。此外,为了使模型具有更好的泛化能力,我们使用了大量的数据增强。

拼图

在主办方提供的原始语料库中,训练图像是从一组较大的原始图像中裁剪出来的。因此,我们收集并重组了原始拼图,生成了包含 1330 张拼图图像的语料库。我们采用的拼图收集算法基于 https://github.com/lRomul/argus-tgs-salt/blob/master/mosaic/create_mosaic.py。但我们未能成功收集拼图的边界框。主要是因为存在位于图像边界或附近的边界框。出于这个原因,除了训练图像外,我们还离线生成了拼图的裁剪图,并使用伪标签为它们生成了边界框。

验证方法

我们使用了 5 折的 MultilabelStratifiedKFold (https://github.com/trent-b/iterative-stratification),按边界框数量、边界框面积中位数和图像来源进行分层。我们保证了子折之间没有任何泄漏,因此一张拼图的图像仅用于特定的那一折。

参考论文

同比赛其他方案