返回列表

1st place solution [MIT-Compliant]

398. Global Wheat Detection | global-wheat-detection

开始: 2020-05-04 结束: 2020-08-19 作物智能识别 数据算法赛
第一名解决方案 [MIT-Compliant]

第一名解决方案 [MIT-Compliant]

作者:DungNB (Grandmaster)
发布时间:2020-08-05

感谢主办方举办了这场有趣的比赛!
祝贺大家,这是我第一次获得单人金牌。由于已经有很多优秀的公开 Notebook 发布了,我将保持我的解决方案简单简短。
特别感谢 @rwightman 提供的精彩代码库 (https://github.com/rwightman/efficientdet-pytorch)

摘要

  • 自定义 Mosaic 数据增强
  • MixUp
  • 重度数据增强
  • 数据清洗
  • EfficientDet
  • Faster RCNN FPN
  • 多尺度模型融合:Weighted-Boxes-Fusion,特别感谢 @zfturbo
  • 测试时增强 (HorizontalFlip, VerticalFlip, Rotate90)
  • 伪标签

数据处理

  • 自定义 Mosaic 增强:
    Mosaic 是一种数据增强方法,将 4 张训练图像组合成一张进行训练(而不是像 CutMix 那样组合 2 张)。我没有随机裁剪图像的一部分,而是创建了如下所示的自定义 mosaic 增强以保留边界信息:
    Mosaic Augmentation

  • MixUp:
    MixUp

  • 重度增强:
    RandomCrop, HorizontalFlip, VerticalFlip, ToGray, IAAAdditiveGaussianNoise, GaussNoise, MotionBlur, MedianBlur, Blur, CLAHE, Sharpen, Emboss, RandomBrightnessContrast, HueSaturationValue

    应用 mosaic, mixup 和增强后的示例:
    Augmentation Examples

  • 外部数据
    我使用了 2 个外部数据源:
    * wheat spikes (链接),关于许可证请参考 (详情)
    * wheat 2017 (链接) 相关讨论 (详情)。
    我为所有图像创建了标注(边界框)并裁剪为 1024x1024。我联系了作者以确保没有许可证问题。

  • 数据清洗
    * 删除了微小的边界框(宽度或高度 < 10px)
    * 修复了过大的边界框

模型

  • 5 折交叉验证,分层 K 折,按来源分割 (usask_1, arvalis_1, arvalis_2...)
  • 优化器:EfficientDet 使用 Adam(初始学习率 5e-4),Faster RCNN FPN 使用 SGD(初始学习率 5e-3)
  • 学习率调度器:余弦退火
  • 使用 nvidia-apex 进行混合精度训练

性能表现

验证集

同比赛其他方案