476. TensorFlow - Help Protect the Great Barrier Reef | tensorflow-great-barrier-reef
感谢 Kaggle 主办这场有趣的比赛,也感谢我的队友们的所有努力。这也是我第一次参加检测比赛,感谢社区分享的所有知识。
就像方案的标题一样,我们的解决方案中没有什么花哨的东西 : )
我们的方案完全基于 YOLOv5,我认为这次比赛有三个关键点:训练/验证集划分、分辨率 和 运气。
在比赛初期,我们看到有一种非常可靠的划分数据集的方法叫“子序列”。在几次提交后,LB(排行榜)不够稳定,所以最后我们使用了 video_id 3折划分,因为那个时候我们猜测 LB 和 Private(私有榜单)数据可能是完全不同的视频序列,此外,CV(交叉验证)分数现在几乎与 LB 呈正相关。
有效的增强方法,继承了 YOLOv5 的默认增强,我们增加了:
随机旋转90度会在 CV 和 LB 上提升约 0.02,并且它也有利于不同旋转角度的模型集成。
YOLOv5 s/m/l/x 的多样性并不是很大,所以为了速度和性能的平衡,我们只使用了 YOLOv5l6 模型。
根据 YOLOv5 文档,训练时加入 10% 的背景会产生最好的结果,但根据我们的实验,0% 的背景产生了最好的结果。
YOLOv5 内置了多尺度开关,据我所知,缩放在检测中非常重要,特别是对于基于锚框的检测方法,所以我们直接启用了它。
后处理主要关注跟踪。我们没有使用现有的跟踪方法(效果不好),而是使用了一种更简单的方法,我称之为“关注区域”。它的运作方式如下:
T=0.15 和 S=0.1 是一个可靠的选择,该方法将 CV 和 LB 都提升了约 0.01。
在 @sheep 发布了高分辨率技巧后,我们知道一个模型用不同分辨率推理会有巨大的差异。根据我们的实验,单模型用 2400 分辨率训练并用 4800 分辨率推理会获得最高的 LB 约 0.73,我们在这里需要小心,因为 CV 并不准确。
| 训练分辨率 | 推理分辨率 | 平均 OOF F2 | LB |
|---|---|---|---|
| 2400 | 1280 | 0.4384 | - |
| 2400 | 1800 | 0.6342 | - |
| 2400 | 2400 | 0.6865 | ~0.6 |
| 2400 | 3200 |