返回列表

41st place Solution (7th Public LB) YOLO-Z Inspired Model with Tracking

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

开始: 2021-11-22 结束: 2022-02-14 环境监测 数据算法赛
第41名方案 (Public LB 第7名) 基于YOLO-Z启发的模型与追踪

第41名方案 (Public LB 第7名) 基于YOLO-Z启发的模型与追踪

作者:outwrest | 发布日期:2022-02-15

首先我想说,我在数据科学方面并没有太多经验。我不完全了解数据科学中的所有门道,但我热爱学习和实验。就这次比赛而言,我学到了很多关于目标检测的知识,真的非常有趣!

数据

我对序列使用了 GroupKFold 分割,因为 Private LB 中的数据将是新的序列。验证模型的最佳方式(至少在我这个新手看来)是使用它未曾见过的新序列。我只在同一个折上进行模型训练,没有使用集成,也没有通过 OOF 预测来验证模型。

模型

我的解决方案主要围绕 YOLO-Z 论文展开,该论文研究了如何改进原始 YOLO5 架构在小目标检测方面的表现。看起来他们提出的模型在某种程度上已包含在 YOLO5v6 中。他们在实验中提到,将“宽度”乘数修改为下一层级(例如在 M 或 S 模型中使用 L 或 M 的“宽度”),在小目标检测中取得了更好的结果。由于 YOLO5v6 已经包含了更小的层(参见此讨论帖),我着手修改 YOLO5v6 模型以增加宽度乘数(看看效果是否优于原版)。这增加了参数数量,但没有增加层数。这样可以在保持比使用更大模型更低的推理时间的同时,兼顾两个层级的优势。

模型 层数 参数量 (M) FLOPs
YOLOv5s6 280 12.6 16.8
YOLOv5s6-wide 280 27.6 35.8
YOLOv5m6 378 35.7 50.0
YOLOv5m6-wide 378 62.6 86.5
YOLOv5l6 476 76.7 111.4

为了不必重新训练模型,我不得不使用下一个模型的迁移权重(如果我想用 YOLOv5s6-wide,就使用 YOLOv5m6 的权重,以此类推)。因为我删除了很多层,所以我仍然希望对权重进行预训练。

我只选择训练并使用了 YOLOv5s6-wide 和 YOLOv5m6-wide。

训练

因为“更宽”的模型删除了许多层,我认为重新训练有助于模型更好地拟合。经过一番搜索,我找到了基于此处列出的比赛的 Detecting Underwater Objects (DUO) 数据集。

我使用重数据增强训练了 100 个 epoch(参见 wandb 输出)。

我使用 COT 掩码数据集制作了 10,000 张“假”图像,将 COT 粘贴在不同透明度的位置上。我发现使用该数据集训练提高了最终模型的召回率(感谢 @alexandrecc)。但我不完全确定这是否对 Public LB 有帮助。请参阅此Notebook

同比赛其他方案