返回列表

12th place solution - YOLOv5 + Optical flow tracker

476. TensorFlow - Help Protect the Great Barrier Reef | tensorflow-great-barrier-reef

开始: 2021-11-22 结束: 2022-02-14 环境监测 数据算法赛
第12名方案 - YOLOv5 + 光流追踪

第12名方案 - YOLOv5 + 光流追踪

作者:D.Imanishi (Grandmaster) | 比赛排名:第12名

首先,我要感谢主办方组织了如此激动人心的比赛。我很高兴能在这场激烈的竞争中坚持下来!

检测模型训练

因为我只使用了 Kaggle Kernel 的 GPU,所以我希望减少显存使用和训练时间。因此,我将训练图像放大了两倍(2560x1440),并将它们分割成四张 1280x720 的图像。之后,我丢弃了不包含边界框的分割图像。这意味着训练尺寸为 1280。在推理阶段,使用了 2560 的尺寸。通过这样做,我认为其结果与使用 2560 尺寸进行训练的结果几乎相同,但减少了显存使用。

  • 模型:YOLOv5m6
  • 验证:4 折 Group-Kfold(按序列分组)
  • 尺寸:1280 尺寸,配合 x2 放大和 4 张分割图像
  • 增强:主要修改了 "hyp.scratch.yaml",包括 flipud p=0.5, mixup p=0.5, rot90 p=0.5。为了实现 rot90,我修改了 "augmentations.py"。

追踪

我复用了我在 NFL 比赛 中编写的基于光流的追踪代码。利用光流,可以根据前一帧的检测结果估计下一帧的边界框。因此,即使检测模型丢失了目标,它也可以继续追踪。根据截止该帧为止的追踪计数,我改变了在丢失检测条件下继续追踪的帧数,其最大值为 5 帧。

最终提交的选择

在我的交叉验证(CV)中,我注意到将训练尺寸和推理尺寸从原始 1280x720 尺寸同等放大,对 CV 分数和 LB 分数都有贡献。然而,在训练和推理之间使用不同的尺寸(例如训练 2560 和推理 3840)仅对 LB 分数有贡献,却导致 CV 分数下降。所以我怀疑存在过拟合的可能性,并选择了以下四次提交。

1. 最佳 Public LB
  • 以下 3 个模型的集成:
    • 4 折中 Public LB 分数最好的 2 个模型,推理尺寸为 3840(训练尺寸的 x1.5 放大)
    • @freshair1996 分享的 YOLOv5s 模型(分数 0.665),推理尺寸为 6400
  • TTA(测试时增强):原始、左右翻转、上下翻转 (*)
  • 集成:3 个模型 x 3 个 TTA 通过 WBF 进行集成
    (*) TTA 模式受到 9 小时运行时间的限制。如果使用更多的 TTA 模式,将会获得更高的分数。
2. 最佳 CV
  • 所有 4 折模型,推理尺寸为 2560(= 训练尺寸)
  • TTA:原始、左右翻转、上下翻转、旋转 90 度
  • 集成:4 个模型 x 4 个 TTA 通过 WBF 进行集成
3. CV 和 Public LB 的折中
  • 4 折中 Public LB 分数最好的 2 个模型
  • TTA:2 种推理尺寸 (2560, 3840) x 原始、左右翻转、上下翻转
  • 集成:2 个模型 x 2 种尺寸 x 3 个 TTA 通过 WBF 进行集成
4. TensorFlow EfficientDet

为了获得 TensorFlow 奖项,我训练了 EfficientDet-D2 模型,但它的 Private LB 分数是 0.543...

分数如下。

提交 Private LB (含追踪) Private LB (不含追踪) Public LB (含追踪) Public LB (不含追踪)
1 0.712 0.697 0.718 0.703
2 0.708 0.700 0.621