kaggle Competition-Detect Player Contacts from Sensor and Video Data TOP 9%铜牌solo比赛经验

本文回顾了一次Kaggle竞赛,参赛者利用多模态信息来检测运动员碰撞。比赛初期采用目标检测和图像分类算法,后期尝试了EfficientNet等不同backbone,结合TTA和模型融合提升分数。前几名选手使用了3DCNN和创新的传感器数据处理方法。比赛强调了数据特征处理和3DCNN在视频分析中的重要性。
摘要由CSDN通过智能技术生成

目录

前言

一、比赛介绍及初步思路分析

二、比赛过程

1.初期方案选择

2.分数涨点过程

3. 大神方案总结

总结


前言

在寒假期间偶然之间看到kaggle有场cv赛,是利用多模态信息来检测比赛中运动员的碰撞。感觉和我的研究方向还比较符合(多模态信息融合和姿态检测)便想着参加积累一些大神对于这一类视觉任务的经验。

一、比赛介绍及初步思路分析

比赛简介:

举办方希望能够自动识别球员经历接触的所有时刻。如果我们能够可靠地检测到球员相互接触以及球员身体接触地面的时刻,那么这场比赛就算成功。目前,举办方使用其跟踪系统监控大量有关赛季期间球员负荷的统计数据。联盟有一个预测球员之间接触的解决方案,但它只利用球员跟踪数据。本次比赛希望通过除了跟踪数据之外还包括视频来提高预测能力。

初步思路分析:

1. 我们的目标是在一帧图片中检测球员是否发生接触,那么应该是属于分类任务。

2. 比赛中一帧图片中有很多球员,那么应该是先定位再进行后续任务。

3. 举办方提供了视频数据来提高预测能力,那么针对视频中的动作分类应该要考虑时序信息。

4. 跟踪的传感器数据和视频数据属于不同模态的数据,应该考虑多模态数据融合。

由于时间、算力的限制(距离比赛只剩三个星期了,而且处理的是视频数据),我并没有考虑动作分类中视频分类算法(比如slowfast)。

二、比赛过程

1.初期方案选择

首先我们需要定位每位球员,目标检测算法可以派上用场。但举办方提供的数据中有每一位球员头盔的位置信息,我们可以直接利用这个来定位球员。然后寻找一个图像分类算法进行分类,最后再进行多模态数据融合。在code区找到一个大神公布的代码和我的思想几乎相同, 仔细看代码可以发现他的想法具体实现:

首先将视频用ffmpeg分帧,利用球员头盔位置裁剪周围256*256的视图,再将该帧前后24帧的裁剪视图在通道维度上拼接组成2.5D数据输入resnet50分类网络进行分类。需要注意的是,这个代码用了举办方提供的两种视图(即从不同视角拍摄的球员),因此在resnet输出了通道为500*2的tensor。

下图是本次比赛用到的部分跟踪数据,将数据读取出来输入到一个简单的mlp模型中再与resnet的输出相加便成了最终的输出向量,这个输出向量的通道维度为32+500*2。

在测试阶段还用了TTA。

上述便是我整个模型的基准方案。在LB上的分数是0.670

2.分数涨点过程

基准方案的分数是0.670,没记错的话应该排在300多名。

1.我使用了efficientnet替换原来的resnet,但是发现和resnet的分数差不多,找了很久的原因有次尝试在数据增强那删掉了对比度的增强,那时候想的是这个对本次比赛的作用不大,然后efficientnet的分数就飙升到了0.683。我没想到数据增强会对最终结果影响这么大。(但是在比赛结束后我看大神们的数据增强部分都有这个对比度,我很迷惑)。

2. 当分数到达0.683时,排名也来到了90多名。之后在逛discussion时发现有人说他过拟合了,我当时想虽然这个场景确实单一,但数据集经过取帧裁剪后也有5200k images应该不会过拟合,不过最后还是试了试,没想到确实有过拟合的现象,在第8轮的时候达到最高值0.690。排名来到了70多名。下图是efficientnetb3模型的测试结果: 

3. 之后又寻找了各个backbone训练,其实到这个阶段时间已经剩的不多了,而完整的训完一个backbone的10轮需要两天左右(其中swintransformer预估得4天)因此我只能粗略了将backbone训上几轮提交结果看下降趋势。loss也可以作为参考值。其中试过的backbone模型有convnext、regnet、swintransformer、hrnet。这些模型分数都比较差,其中swintransformer稍微好一点但是收敛太慢了。之后将目标就全在efficientnet系列上,且效果都不错,最后采用的efficientnetb2a、efficientnetb3、efficientnetb5。

4. 在TTA阶段,原图和增强后的图片本因设置五五开最稳妥,但尝试了九一开,二八开后,发现二八开分数最高。

5. 到了后期,分数排名掉的非常快,但是我算力限制(一块3090ti)已经卷不动了,因此能做的只有模型融合,其中两个模型efficientnetb2a、efficientnetb3融合,三个模型efficientnetb2a、efficientnetb3、efficientnetb5融合,比例采取的是平均分。最终模型分数到了0.700。

6. 在最终提交的时候总怕自己的模型过拟合了(虽然LBpublic和LBprivate数据集分布差不太大),但是保底提交了一个0.697,一个0.700的模型,最后结果显示成绩没有波动。

3. 大神方案总结

参加完比赛后我就觉得应该有更好的特征选择方案以及更好的基准模型。

1. 本次比赛中前几名几乎都使用了3DCNN模型,这看来在时空动作分类上很有效。

2. 第二名将跟踪数据编码成了图像中的一个通道。即将传感器数据转换成了图像数据,这非常的有趣。

3. 使用XGBOOST对传感器数据进行特征工程。

4. 在模型融合阶段使用了transformer、LSTM模型。


总结

参加这次比赛对于数据的应用有了进一步的了解,同时也发现对数据特征的处理十分重要,在视频信息中,3DCNN效果确实不错。XGBOOST在传感器一类的数据建模上也十分不错。我欠缺的知识还有很多。路漫漫其修远兮~

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值