返回列表

22nd place solution: Yolov5l + Deepsort + CPD registration

461. NFL Health & Safety - Helmet Assignment | nfl-health-and-safety-helmet-assignment

开始: 2021-08-10 结束: 2021-11-02 运动员表现 数据算法赛
第22名方案:Yolov5l + Deepsort + CPD registration

第22名方案:Yolov5l + Deepsort + CPD registration

作者:Phat Tran
比赛排名:第22名

恭喜所有的获胜者!

我的最佳私有测试集分数是 0.804,但我的交叉验证(CV)分数并没有我选定的 notebook 那么高。

我的解决方案流程

1. Yolov5l

  • 我在 9000 张全分辨率图像上训练了单个 yolov5l 模型,并在从 10 个训练视频中提取的约 4000 张图像上进行了验证。
  • 我的提交结果是具有最高 mAP 的 3 个检查点的集成。
  • 我也尝试了 Yolov5l6 和 yolov5x,但训练时间太长,所以我放弃了 :))

2. Deepsort

  • 我使用 Deepsort 特征提取器(使用预训练权重 ckpt.t7)为每个头盔框提取特征,并将其保存到磁盘以供第 4 步使用。

3. 点集配准

  • 我简单地使用了来自 https://github.com/neka-nat/probreg 的 CPD 非刚性配准,将边界框坐标转换到追踪点平面。
  • 对于每张图像,我以 10 度为步长在 -45 度到 +45 度之间进行旋转,以寻找具有最小倒角距离的变换。
  • 然后我使用匈牙利算法分配标签,成本矩阵是每个头盔坐标与追踪点之间的距离。

4. 后处理

  • 对于每个头盔边界框,我从前一帧/下一帧收集所有具有相同 deepsort 聚类的边界框,并通过将边界框置信度与头盔特征的余弦相似度(来自第 2 步)相乘来为每个标签分配分数,如下所示:
cosine = np.dot(feats, feats.T).T[0,1:]
score = row.conf.dot(cosine)

然后重新分配具有最高分数的标签。

同比赛其他方案